linux安全機制與加密工具使用

一、加密需要和安全機制
1.不加密流量的易受攻擊性
密碼/數據嗅探
數據操作
驗證操作
相當于郵寄明信片
2.不安全的傳統協議
telnet、FTP、POP3等等;不安全密碼http、sendmail、NFS等等;不安全信息Ldap、NIS、rsh等等;不安全驗證
3.NIST定義的安全屬性:美國國家標準與技術研究院
1) 保密性:
    數據保密性
    隱私性2)完整性:不可篡改
    數據完整性
    系統完整性3)可用性
4.安全攻擊:STRIDE
Spoofing(假冒)、Tampering(篡改)、Repudiation(否認)、Information Disclosure(信息泄漏)、
Denial of Service(拒絕服務)和Elevation of Privilege(提升權限)
5.安全機制:
加密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制、公證
6.安全服務
認證
訪問控制
數據保密性
連接保密性
無連接保密性
選擇域保密性
流量保密性
數據完整性
不可否認性
7.設計基本原則
使用成熟的安全系統
以小人之心度輸入數據
外部系統是不安全的
最小授權
減少外部接口
缺省使用安全模式
安全不是似是而非
從STRIDE思考在入口處檢查
從管理上保護好你的系統
二、安全算法與加密方法概念解析
1.安全算法
常用安全技術
    認證
    授權
    安全通信
    審計
密碼算法和協議:
    對稱加密
    公鑰加密
    單向加密
    認證協議
Linux系統:OpenSSL, gpg(pgp協議的實現)
2.對稱加密算法
1)對稱加密:加密和解密使用同一個密鑰
    DES:Data Encryption Standard,56bits    3DES:
    AES:Advanced (128, 192, 256bits)
    Blowfish,Twofish
    IDEA,RC6,CAST52) 特性:    1、加密、解密使用同一個密鑰,效率高    2、將原始數據分割成固定大小的塊,逐個進行加密3)缺陷:    1、密鑰過多    2、密鑰分發    3、無法實現數據來源確認
3.非對稱加密算法
1)公鑰加密:密鑰是成對出現
    公鑰:公開給所有人;public key
    私鑰:自己留存,必須保證其私密性;secret key
 2)特點:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然
功能:
3)數字簽名:主要在于讓接收方確認發送方身份
4)對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰后發送給對方
5)數據加密:適合加密較小數據
6)缺點:密鑰長,加密解密效率低下
7)算法:
    RSA(加密,數字簽名),DSA(數字簽名),ELGamal
8)基于一對公鑰/密鑰對
    用密鑰對中的一個加密,另一個解密
9)實現加密:
    接收者
        生成公鑰/密鑰對:P和S
        公開公鑰P,保密密鑰S
    發送者
        使用接收者的公鑰來加密消息M
        將P(M)發送給接收者
    接收者
        使用密鑰S來解密:M=S(P(M))
10)實現數字簽名
    發送者
        生成公鑰/密鑰對:P和S
        公開公鑰P,保密密鑰S
        使用密鑰S來加密消息M
        發送給接收者S(M)
  接收者
        使用發送者的公鑰來解密M=P(S(M))
11)結合簽名和加密使用或者分離簽名

wKioL1fnvtujZ7jVAABdWzTda0w576.png

4.單向散列
1)將任意數據縮小成固定大小的“指紋”
    任意長度輸入
    固定長度輸出
    若修改數據,指紋也會改變(“不會產生沖突”)
    無法從指紋中重新生成數據(“單向”)2)功能:數據完整性3)常見算式
    md5: 128bits、sha1: 160bits、sha224sha256、sha384、sha5124)常用工具
    md5sum | sha1sum [ --check ] file
    openssl、gpg
    rpm -V5)find ./ -type f -exec md5sum {} \;常用來分析兩套文件系統的文件變化情況
5.密鑰交換
1)密鑰交換:IKE(Internet Key Exchange )
    公鑰加密:
    DH (Deffie-Hellman):2)DH    1、A: a,p協商生成公開的整數a,大素數p
        B: a,p    2、A:生成隱私數據:x (x<p ),計算得出a^x%p,發送給B
        B:生成隱私數據:y,計算得出a^y%p,發送給A    3、A:計算得出(a^y%p)^x = a^xy%p,生成為密鑰

B:計算得出(ax%p)y = a^xy%p, 生成為密鑰

6.CA和證書
1)PKI: Public Key Infrastructure
    簽證機構:CA(Certificate Authority)
    注冊機構:RA( registry Authority)
    證書吊銷列表:CRL(Certificate   revoke  list)
    證書存取庫:2)X.509:定義了證書的結構以及認證協議標準
    版本號、序列號、簽名算法、頒發者、有效期限、主體名稱、主體公鑰、CRL分發點、擴展信息、發行者簽名 
3)證書類型
    證書授權機構的證書
    服務器
    用戶證書4)獲取證書兩種方法:
    使用證書授權機構
        生成簽名請求(csr)
        將csr發送給CA
        從CA處接收簽名5)自簽名的證書
    自已簽發自己的公鑰
6.安全協議
1)SSL: Secure Socket Layer
    TLS: Transport Layer Security        1995:SSL 2.0 Netscape        1996: SSL 3.0
        1999: TLS 1.0
        2006: TLS 1.1           
        RFC(Request For Comments )4346
        2008:TLS 1.2 當前使用        2015: TLS 1.3
    功能:機密性,認證,完整性,重放保護2)兩階段協議,分為握手階段和應用階段
    握手階段(協商階段):客戶端和服務器端認證對方身份(依賴于PKI體系,利用數字證書進行身份認證),
    并協商通信中使用的安全參數、密碼套件以及主密鑰。后續通信使用的所有密鑰都是通過MasterSecret生成。
    應用階段:在握手階段完成后進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信。3)SSL/TLS protocol 安全套接字層/傳輸層安全性協議圖示

wKioL1fnvwTy-uk0AALjtw5tIoI496.png

4)ssl/TLS協議過程
   Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換; 
   ChangeCipherSpec 協議:一條消息表明握手協議已經完成
   Alert 協議:對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別,fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續,只是會給出錯誤警告
   Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等。
   HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP over SSL”或“HTTP over TLS”,對http協議的文本數據進行加密處理后,成為二進制形式傳輸5)協議請求與回應過程圖示

wKiom1fnvxjjG___AAG8qiixLqo254.png

二、常用加密工具使用詳解
1.OpenSSL開源項目
1)三個組件:
    openssl: 多用途的命令行工具
    libcrypto: 加密算法庫
    libssl:加密模塊應用庫,實現了ssl及tls
2)openssl命令
    兩種運行模式:交互模式和批處理模式
    opensslversion:程序版本號
    標準命令、消息摘要命令、加密命令
    標準命令:        enc, ca, req, ...        enc查看命令的詳細使用方法
 3)對稱加密
    工具:opensslenc, gpg
    算法:3des, aes, blowfish, twofish
4)enc命令:man enc
    加密:
        openssl enc -e -des3 -a -salt -in /tmp/fstab -out fstab.cipher
    解密:
      openssl enc -d -des3 -a -salt -in fstab.cipher -out fstab  
5)opensl dgst -md5 fstab==md5sum fstab
6)單向加密:
    工具:md5sum, sha1sum, sha224sum,sha256sum…
    openssldgst
7)dgst命令:man dgst
    openssldgst -md5 [-hex] /PATH/TO/SOMEFILE
    openssldgst -md5 fstab 
    md5sum /PATH/TO/SOMEFILE
8)MAC: Message Authentication Code,單向加密的一種延伸應用,用于實現網絡通信中保證所傳輸數據的完整性機制
    CBC-MAC
    HMAC:使用md5或sha1算法
9)生成用戶密碼:
    passwd命令:man sslpasswd
    opensslpasswd -1 -salt SALT(最多8位)
    opensslpasswd -1 –salt centos
10)生成隨機數:man sslrand
    opensslrand -base64|-hex NUM
    NUM: 表示字節數;-hex時,每個字符4位,出現的字符數為NUM*2
11)公鑰加密
    算法:RSA, ELGamal
    工具:gpg, opensslrsautl(man rsautl)
12)數字簽名
    算法:RSA, DSA, ELGamal
13)密鑰交換
    算法:dh
    DSA: Digital Signature             Algorithm
    DSS:Digital Signature  Standard
    RSA:
14)密鑰生成過程
    生成密鑰對兒:man genrsa
    生成私鑰:
        openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
        (umask077; openssl genrsa -out key.pri –des 2048)
    從私鑰中提取出公鑰:
        openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
        openssl rsa -in aaa.key -pubout -out aaa.pub  
   隨機數生成器:偽隨機數字
        鍵盤和鼠標
        塊設備中斷
        /dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
        /dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞
2.OpenSSL的CA機制
1)PKI:Public Key Infrastructure
    CA:證書認證
    RA:證書注冊
    CRL:證書吊銷
    證書存取庫2)建立私有CA:
    OpenCA
    openssl3)證書申請及簽署步驟    1.生成申請請求    2.RA核驗    3.CA簽署    4.獲取證書4)創建CA和申請證書
        openssl的配置文件:/etc/pki/tls/openssl.cnf
    (1) 創建所需要的文件
        touch /etc/pki/CA/index.txt
        echo 01 > /etc/pki/CA/serial
    (2)CA自簽證書
        生成私鑰
        cd /etc/pki/CA/
        (umask066; openssl genrsa -out /etc/pki/CA/private/cakey.pem2048)
        生成自簽名證書
            openssl req -new  -x509 –key /etc/pki/CA/private/cakey.pem -days 7300
                -out /etc/pki/CA/cacert.pem
                -new: 生成新證書簽署請求;
                -x509: 專用于CA生成自簽證書;
                -key: 生成請求時用到的私鑰文件;
                -days n:證書的有效期限;
                -out /PATH/TO/SOMECERTFILE: 證書的保存路徑
    (3)頒發證書
        (a) 在需要使用證書的主機生成證書請求;
             給web服務器生成私鑰
            (umask066; openssl genrsa -out/etc/httpd/ssl/httpd.key 2048)
            生成證書申請文件
            openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
        (b) 將證書請求文件傳輸給CA   
        (c) CA簽署證書,并將證書頒發給請求者;
           opensslca -in /tmp/httpd.csr –out /etc/pki/CA/certs/httpd.crt -days 365 
            注意:證書中國家,省,公司名稱必須和CA一致(配置文件中有定義,如果想要不一致也可以,則可以去修改配置文件完成)
        (d) 查看證書中的信息:
            openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|subject|serial|dates
      (4) 吊銷證書
        (a) 在客戶端獲取要吊銷的證書的serial
            openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
        (b) 在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致
            吊銷證書:
            openssl ca -revoke /etc/pki/CA/newcerts/ SERIAL.pem
            注:在index.txt中保存的證書信息前是V為有效證書,如果是R則為已吊銷的證書
                在文件/etc/pki/CA/newcerts中有每個證書對應的序列號
        (c) 生成吊銷證書的編號(第一次吊銷一個證書時才需要執行)
            echo 01 > /etc/pki/CA/crlnumber
         (d) 更新證書吊銷列表
            openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl
            查看crl文件
                openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text
                注:客戶端中配置的有關于證書的吊銷列表從互聯網哪里下載,以保證證書的有效性
3.應用程序RPM
1)文件完整性的兩種實施方式2)被安裝的文件
    MD5單向散列
    rpm -versify package_name(or -V)3)發行的軟件包文件
    GPG公鑰簽名
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
    rpm --checksig pakage_Pfile_name(or -K)
4.gpg工具的使用
1)使用gpg實現對稱加密
    對稱加密file文件
        gpg -c file
        ls file.gpg
    解密file
        gpg -o file2 -d file.gpg
    注:如果加密和解密在同一臺主機上,解密的時候不需要輸入密碼2)使用gpg工具實現公鑰加密
    在hostA主機上生成公鑰/私鑰對
        gpg --gen-key
    在hostA主機上查看公鑰
        gpg --list-keys
    在hostA主機上導出公鑰wang.pubkey
        gpg -a --export -o wang.pubkey
    從hostA主機上復制公鑰文件到需加密的B主機上
        scp wang.pubkey hostB
    在需加密數據的hostB主機上生成公鑰/私鑰對
        gpg --list-keys
        gpg --gen-key 
    在hostB主機上導入公鑰
        gpg --import wang.pubkey
        gpg--list-keys
    用從hostA主機導入的公鑰,加密hostB主機的文件file,生成file.gpg
        gpg -e -r wangedu file
         file file.gpg
    復制加密文件到hostA主機
        scp fstab.gpg hostA
    在hostA主機解密文件
        gpg -d file.gpg
        gpg -o file -d file.gpg
    刪除公鑰和私鑰
         gpg --delete-secret-keys wangedu
        gpg --delete-keys wangedu

原創文章,作者:提著醬油瓶打醋,如若轉載,請注明出處:http://www.www58058.com/49149

(0)
提著醬油瓶打醋提著醬油瓶打醋
上一篇 2016-09-25
下一篇 2016-09-25

相關推薦

  • 提問的智慧

    譯文 譯文: 捷克語 丹麥語 愛沙尼 亞語 法語 德語 希伯來語 匈牙利語 意大利語 日語 波 蘭語 俄語 西班牙語 瑞典語 土 耳其語. 如果你想復制、鏡像、翻譯或引用本文,請參閱我的 復制須知. 棄權申明 …

    Linux干貨 2015-03-20
  • 網卡別名及多網卡配置

    網卡別名 對于要在不同網段環境中使用的設備有很大的幫助。     要使用網卡別名首先要關閉NetworkManager這個服務,防止在后續操作中引起不必要的沖突。 [root@laodeng6 ~]# chkconfig NetworkManager off [root@laod…

    Linux干貨 2016-09-06
  • N25-第七周博客作業

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; 查看當前分區情況 [root@han ~]# fdisk -l Disk /dev/sda: 42…

    Linux干貨 2017-02-23
  • bash編程基礎(二)補

       bash腳本編程         腳本文件格式:         第一行,頂格:#!/bin/bash         注釋信息:#         代碼注釋:  …

    Linux干貨 2016-12-23
  • 馬哥教育網絡20期+第六周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s/^[[:space:]]/#&/ 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白…

    Linux干貨 2016-07-07
  • 8.16

    for 循環是相對比較簡單的循環,任何一個循環里面都可以嵌套循環,用for可以解決簡單邏輯上的任何循環 。 有兩種基本格式:for i in " ";do         或者dor((i=0;i<=9;i++))可以嵌套if或者while等循環 if循環。最重要的是判斷的條件,if意為如果什…

    Linux干貨 2016-08-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-26 12:04

    文章分類很明確,層次感很強,內容也很豐富,繼續保持。

欧美性久久久久