本節索引:
一、網絡安全基本概念
二、加密技術
1.對稱加密
2.非對稱加密
三、認證技術
1.數字簽名
2.數字證書
四、安全套接層協議SSL與OpenSSL
五、操作:搭建私有根CA,并向CA申請證書
一、網絡安全基本概念
信息安全防護的目標有:
保密性 Confidentiality
信息不泄露給非授權用戶、實體或過程,或供其利用的特性。
完整性 Integrity
數據未經授權不能進行改變的特性。即信息在存儲或傳輸過程中保持不被修改、不被破壞和丟失的特性。
可用性 Usability
可被授權實體訪問并按需求使用的特性。即當需要時能否存取所需的信息。例如網絡環境下拒絕服務、破壞網絡和有關系統的正常運行等都屬于對可用性的攻擊;
可控制性Controlability
對信息的傳播及內容具有控制能力。
不可抵賴性 Non-repudiation
不可抵賴性包括對自己行為的不可抵賴及對行為發生的時間的不可抵賴。通過進行身份認證和數字簽名可以避免對交易行為的抵賴,通過數字時間戳可以避免對行為發生的抵賴。
對于運維工程師最關鍵的兩個工作職責:保證數據安全性、保證高可用性
安全防護環節
物理安全:各種設備/主機、機房環境
系統安全:主機或設備的操作系統
應用安全:各種網絡服務、應用程序
網絡安全:對網絡訪問的控制、防火墻規則
數據安全:信息的備份與恢復、加密解密
管理安全:各種保障性的規范、流程、方法
生產環境中可能遇到的安全攻擊
Spoofing 假冒
假冒指的是某個實體(人或系統)發出含有其他實體身份信息的數據信息,假扮成其他實體,從而以欺騙方式獲取一些合法用戶的權利和特權。
Tampering 篡改
篡改消息是指一個合法消息的某些部分被改變、刪除,消息被延遲或改變順序,通常用以產生一個未授權的效果。如修改傳輸消息中的數據,將“允許甲執行操作”改為“允許乙執行操作”。
Repudiation 否認
Information Disclosure 信息泄漏
竊聽是網絡攻擊中最常用的手段。目前應用最廣泛的局域網上的數據傳送是基于廣播方式進行的,這就使一臺主機有可能受到本子網上傳送的所有信息。
Denial of Service 拒絕服務
拒絕服務即常說的DoS(Deny of Service),會導致對通訊設備正常使用或管理被無條件地終端。通常是對整個網絡實施破壞,以達到降低性能、終端服務的目的。這種攻擊也可能有一個特定的目標,如到某一特定目的地(如安全審計服務)的所有數據包都被組織。
Elevation of Privilege 提升權限
黑客可能通過一些漏洞來執行一些遠程代碼,來在你的系統中得到權限,當黑客得到管理者權限之后,就會通過一些特權命令或者提全程序來得到root權限。來達到控制你的系統的目的。
二、加密技術
加密技術是電子商務采取的基本安全措施,交易雙方可根據需要在信息交換的階段使用。加密技術分為兩
類,即對稱加密和非對稱加密。
1.對稱加密
對稱加密:加密key1與解密key2用的是用一把密鑰
優勢:速度快、效率高,適合加密大量的數據
特性:將原始數據分割成固定大小的塊,逐個進行加密
缺點:密鑰過多;密鑰分發;數據來源無法確認
算法:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5等
對稱加密命令:
1)gpg命令:
對稱加密file文件
???????? gpg -c file
???????? ls file.gpg
在另一臺主機上解密file
?????? gpg -o file -d file.gpg
2)openssl命令:
對稱加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
幫助:man enc
加密:
???????? openssl enc -e -des3 -a -salt -in testfile
????????????????? -out testfile.cipher
解密:
???????? openssl enc -d -des3 -a -salt –in testfile.cipher
????????????????? -out testfile
???????? openssl ?
2.非對稱加密
使用一對密鑰來分別完成加密和解密操作,其中一個公開發布(即公鑰),另一個由用戶自己秘密保存(即私鑰)
舉例來講,Alice要與Bob進行通信:
Alice —> Bob
Alice:public-A(公鑰),secret-A(私鑰)
Bob:public-B(公鑰),secret-B(私鑰)
公鑰公開,私鑰不可公開,只有自己有
公鑰加密—>需要對應私鑰解密
優點:解決了對稱加密無法確認數據來源,密鑰過多的缺點
缺點:加密效率低、速度慢、密碼長,適合加密較小的數據
算法:RSA(加密、數字簽名),DSA(數字簽名),ELGamal
data—加密Pb(data)—解密Sb{Pb(data)}—data??? 加密功能
data—加密Sa(data)—解密Pa{Sa(data)}—data???? 數據來源功能
非對稱算法DES和對稱算法RSA和大概對應關系:
加密算法? 文件大小? 加密后大小? 加密所需時間? 解密所需時間
DES ? ? ? ? ? 1G ? ? ? ? ? ? ? 2G ? ? ? ? ? ? ? ? ? ?4m ? ? ? ? ? ? ? ? ? 8m
RSA ? ? ? ? ? 1G ? ? ? ? ? ? ? 1G ? ? ? ? ? ? ? ? ? ?1m ? ? ? ? ? ? ? ? 64hour
非對稱加密命令:
1)gpg命令:
在hostB主機上用公鑰加密,在hostA主機上解密
在hostA主機上生成公鑰/私鑰對
注:此步驟必須在圖形界面下進行
???????? gpg –gen-key????????? rng_tools
在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 wangx file
???????? file file.gpg
復制加密文件到hostA主機
???????? scp fstab.gpg hostA:
在hostA主機解密文件
???????? gpg -d file.gpg
???????? gpg -o file -d file.gpg
刪除公鑰和私鑰
???????? gpg –delete-keys wangx
???????? gpg –delete-secret-keys wangx
2)openssl命令:
生成密鑰對:man genrsa
生成私鑰
???????? openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
???????? (umask 077; openssl genrsa –out test.key –des 2048)
openssl rsa -in test.key –out test2.key 將加密key解密
從私鑰中提取出公鑰
???????? openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
???????? openssl rsa –in test.key –pubout –out test.key.pub
三、認證技術
認證技術是用電子手段證明發送者和接收者身份及其文件完整性的技術,即確認雙方的身份信息在傳送或存儲過程中未被篡改過。
要想解釋數字簽名的原理,先來了解hash單向散列和digest摘要概念:
單向散列:將任意數據縮小成固定大小的“指紋”
特性:
任意長度輸入
固定長度輸出
若修改數據,指紋也會改變(“不會產生沖突”)
法從指紋中重新生成數據(“單向”)
功能:數據完整性
常見hash算法:
md5: 128bits、sha1: 160bits、sha224
sha256、sha384、sha512
常用工具:
md5sum | sha1sum [ –check ] file
openssl、gpg
rpm -V
digest摘要=hash(data)
經過hash算法得出的結果我們稱為摘要,摘要單向不可推,即只拿到摘要digest是無法反推出數據的
特性:數據不變,摘要不變;數據有小變化,則摘要完全改變,雪崩效應
digest長度固定大小
md5:128
shal:160
1.數字簽名
數字簽名:對數據進行hash計算后的摘要進行私鑰加密。
也稱電子簽名,如同出示手寫簽名一樣,能起到電子文件認證、核準和生效的作用。
即:Sa{hash(data)}
數字證書完整流程:
客戶端:
1.對原文進行hash運算得到摘要digest
hash(data)
2.將摘要用本方私鑰加密得到數字簽名
Sa{hash(data)}
3.連同原文同簽名一起發送
data+Sa{hash(data)}
服務器端:
1.接收到原文與簽名后,用客戶端公鑰解鎖摘要
pa–>hash(data)
2.再對原文進行hash計算
hash(data)
3.計算后的摘要與解鎖摘要對比;如相同,則未被篡改;如不同,則發生過篡改
pa–>hash(data)對比 hash(data)
2.數字證書
數字證書是一個經證書授權中心(CA)數字簽名的包括公鑰擁有者信息以及公鑰的文件。
數字證書的最主要構成包括一個用戶公鑰,加上密鑰所有者的用戶身份標識符,以及用戶信任的證書權威機構(CA)簽名
數字證書相關概念:
簽證機構:CA(Certificate Authority)
注冊機構:RA
證書吊銷列表:CRL
X.509:定義了證書的結構以及認證協議標準
版本號
序列號
簽名算法
頒發者
有效期限
主體名稱
根CA:普通CA上端還有其他CA認證,一個CA認證鏈的最頂端稱為根CA或Root CA,Root CA自己給自己簽名。
數字證書類型:
普通域名證書:www.tmall.com 只簽名一個網站地址
泛域名證書:*.tmall.com??????????? 簽名一類網站地址
數字證書獲?。?/strong>
a)使用證書授權機構
生成簽名請求(csr)
將csr發送給CA
從CA處接收簽名
b)自簽名的證書
自己簽發自己的公鑰
適用于公司內部網絡加密,互聯網中不認可
四、安全套接層協議SSL與OpenSSL
SSL協議位于傳輸層和應用層之間,由SSL記錄協議、SSL握手協議和SSL警報協議組成的。
SSL握手協議被用來在客戶與服務器真正傳輸應用層數據之前建立安全機制。當客戶與服務器第一次通信時,雙方通過握手協議在版本號、密鑰交換算法、數據加密算法和Hash算法上達成一致,然后互相驗證
對方身份,最后使用協商好的密鑰交換算法產生一個只有雙方知道的秘密信息,客戶和服務器各自根據此秘密信息產生數據加密算法和Hash算法參數。
SSL記錄協議根據SSL握手協議協商的參數,對應用層送來的數據進行加密、壓縮、計算消息鑒別碼MAC,然后經網絡傳輸層發送給對方。
SSL警報協議用來在客戶和服務器之間傳遞SSL出錯信息。
Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等
HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP over
SSL”或“HTTP over TLS”,對http協議的文本數據進行加密處理后,成為二
進制形式傳輸
OpenSSL:
OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程序供測試或其它目的使用。
三個組件:
openssl:多用途的命令行工具,包openssl
libcrypto:加密算法庫,包openssl-libs
libssl:加密模塊應用庫,實現了ssl及tls,包nss
openssl命令:
兩種運行模式:交互模式和批處理模式
openssl version:程序版本號
標準命令、消息摘要命令、加密命令
標準命令:
enc, ca, req, …
對稱加密與非對稱加密命令上面已經提到,介紹下openssl的其他功能:
單向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum…
openssl dgst
dgst命令:
幫助:man dgst
???????? openssl dgst -md5 [-hex默認] /PATH/SOMEFILE
???????? openssl dgst -md5 testfile
???????? md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code,單向加密的一種延伸應用,用于實現
網絡通信中保證所傳輸數據的完整性機制
CBC-MAC
HMAC:使用md5或sha1算法
生成用戶密碼:
passwd命令:
幫助:man sslpasswd
???????? openssl passwd -1 -salt SALT(最多8位)
???????? openssl passwd -1 –salt centos
生成隨機數:
幫助:man sslrand
???????? openssl rand -base64|-hex NUM
NUM: 表示字節數;-hex時,每個字符為十六進制,相當于4位二進制,出現的字符數為NUM*2
隨機數生成器:偽隨機數字
鍵盤和鼠標,塊設備中斷
/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞
五、操作:搭建私有根CA,并向CA申請證書
一、建立Root CA
1.生成私鑰
???????? vim /etc/pki/tls/openssl.conf
? ? ? ? (umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
2.自簽名證書
? ? ? ? openssl ? req ? -new ? -x509 ? -key ? /etc/pki/CA/private/cakey.pem ? -out ? /etc/pki/CA/cacert.pem -days ? 3650
-x509代表自己給自己前面
交互式填寫:
國家:CN
省份:beijing
城市:beijing
公司名稱:magedu
部門:M30
Common name:Magedu.com
查看生成的簽名證書
???????? openssl x509 -in cacert.pem? -noout -text
????????
二、用戶或服務器
1.生成私鑰
???????? (umask 066;openssl genrsa -out app.key 1024)
2.生成證書申請
???????? openssl req -new -key app.key -out app.csr
交互式填寫:
國家:CN
省份:beijing
城市:beijing
公司名稱:magedu
部門:M30
Common name:app.Magedu.com
注:國家,省份,公司必須一致才能申請成功
3.將申請文件發給CA
???????? scp app.csr?? CA:IP
三、CA頒發證書
touch /etc/pki/CA/index.txt ????????????? 建立已頒發證書信息列表文件;V:生效;R:吊銷;
echo 0F > /etc/pki/CA/serial ???? 建立證書序列號
openssl ca -in app.csr -out /etc/pki/CA/certs/app.crt -days 100
四、證書發送給客戶端
???????? scp app.crt?? Client:IP
五、應用軟件使用證書
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98805