加密/解密:
加密協(xié)議:加密解密使用同一秘鑰:3des,aes
公鑰加密:公鑰私鑰對
數(shù)字簽名,密鑰交換
RSA,DSA數(shù)據(jù)簽名算法(DSS數(shù)據(jù)簽名標(biāo)準(zhǔn))
單向加密:
md5,sha1,sha256,sh512(MD5輸出128bit,SHA1輸出160bit,SHA256輸出256bit)
密鑰交換:
DH:Deffie-Hellman
具體過程參照下面的SSL握手
===================================================
SSL:secure socket layer
ssl:sslv3現(xiàn)版本
IETF:tlsv1.0對位sslv3 tlsv1.2現(xiàn)在
ssl握手:
客戶端->服務(wù)端:客戶端自身支持的算法,請求服務(wù)器數(shù)字證書
服務(wù)端->客戶端:服務(wù)器端支持加密算法,發(fā)送數(shù)字證書(客戶端驗證信息后,數(shù)字證書中得到服務(wù)端公鑰,加密發(fā)送服務(wù)器)
客戶端驗證數(shù)據(jù):1.服務(wù)器名字與證書名字是否一致;2.用本地緩存的對應(yīng)信任CA公鑰,解密證書,查看是否一致;3.檢察證書內(nèi)容是否被篡改,單向加密碼驗證;4.看證書是否到期;5看證書是否到期
客戶端->服務(wù)端端:加密數(shù)據(jù)發(fā)給客戶端,對稱秘鑰交換,之后對稱秘鑰加密通訊
數(shù)字證書:
CA:簽發(fā)安全證書,確保數(shù)據(jù)安全性
===============================================
openssl:
組成部分:
libcrypto:加密解密文件
libssl:ssl協(xié)議實(shí)驗
openssl:多用途命令行工具,自定義
gpg:pgp規(guī)范的實(shí)現(xiàn)
openssl加密命令:
加密文件(對稱加密):
工具:openssl enc,gpg
算法:des,3des,aes,blowfish,twofish,idea,cast5
enc工具:
加密openssl enc -e -算法 -a -salt -in 加密文件 -out 輸出文件
解密openssl enc -d -算法 -a -salt -in 加密文件 -out 輸出文件
可通過openssl ?查看
-a表示文本編碼輸出
-salt加隨機(jī)數(shù)
TEST:
單向加密:
算法:md5,sha1
工具:openssl dgst,md5sum,sha1sum,sha224sum,sha256sum,sha384sum,
sha512sum
openssl dgst -算法 PATH 此處算法為上述算法且不限于上述算法,但不同于加密算法
mac碼:用于表示數(shù)據(jù)完整性的值
機(jī)制:CBC-MAC
HMAC:md5或者sha1算法
生成用戶密碼:
openssl passwd -1 -salt 8位隨機(jī)數(shù)
生成隨機(jī)數(shù):openssl rand -hex 4
公鑰加密:
工具:gpg ,openssl rsautl
生成密鑰對:
操作過程:生成私鑰,從私鑰中提取公鑰
openssl genrsa -out PATH NUM_BITS
括號內(nèi)的命令:通過打開一個子shell進(jìn)程進(jìn)行
(umask 077;openssl genrsa -out PATH NUM_BITS)主要為了安全性考慮,子shell運(yùn)行不影響原機(jī)環(huán)境
從私鑰中提取公鑰:
openssl rsa -in PATH -pubout
公鑰加密:完成秘鑰交換
私鑰加密:完成身份驗證
隨機(jī)數(shù)生成器:
random( 安全系數(shù)較高), urandom
熵池:保存硬件中斷產(chǎn)生的隨機(jī)數(shù)
/dev/random:僅從熵池中返回隨機(jī)數(shù),當(dāng)熵池中的隨機(jī)數(shù)耗盡時,取隨機(jī)數(shù)的進(jìn)程將會被阻塞;
/dev/urandom:先從熵池中取隨機(jī)數(shù),當(dāng)熵池中的隨機(jī)耗盡時,就通過偽隨機(jī)數(shù)生成器生成隨機(jī)數(shù);
使用openssl構(gòu)建私有CA:
1.生成秘鑰
2.生成自簽署簽名
(1) 私鑰用于簽發(fā)證書時,向證書添加數(shù)字簽名使用;
(2) 證書:每個通信方都導(dǎo)入此證書至“受信任的證書頒發(fā)機(jī)構(gòu)”;
創(chuàng)建CA配置文件 :/etc/pki/tls/openssl.cnf (查看此文件可查看一下配置文件存放位置及相關(guān)信息)
工作目錄:/etc/pki/CA/
1.建立私有秘鑰文件:/etc/pki/CA/private/cakey.pem
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2.生成自簽署簽名:從密鑰從提取公鑰及數(shù)字簽名證書到/etc/pki/tls/openssl.cnf指定的certificate指定位置
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days #
-new: 生成新的證書簽署請求;
-key:私鑰文件路徑,用于提取公鑰;
-days N: 證書有效時長,單位為“天”;
-out:輸出文件保存位置;
-x509:直接輸出自簽署的證書文件,通常只有構(gòu)建CA時才這么用;
3.提供輔助文件:提供幫助文件及輸入序列號
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
分發(fā)證書:
TEST:
Openssh:
ssh:secure shell (監(jiān)聽tcp/22) 用于取代talnet(明文傳輸,監(jiān)聽tcp/23)
現(xiàn)在主流版本為V2
兩種驗證方式:
1.用戶口令
2.密鑰對驗證
Openssh:ssh開源軟件
sshd: 服務(wù)器
ssh: 客戶端
scp: 安全跨主機(jī)復(fù)制工具,基于ssh協(xié)議實(shí)現(xiàn);
sftp:安全ftp
服務(wù)器配置文件:sshd: /etc/ssh/sshd_config
客戶端配置文件:ssh: /etc/ssh/ssh_config
基于密鑰認(rèn)證:
在客戶端生成一對密鑰,私自己留存;公鑰通過私密方式保存至要登錄的遠(yuǎn)程服務(wù)某用戶的家目錄的專用于ssh通信的文件;
生成秘鑰 :ssh-keygen -t rsa
傳輸秘鑰:ssh-copy-id -i ~/.ssh/id_rsa.put user@host
scp遠(yuǎn)程復(fù)制命令:
push: scp [-rp] /path/from/somefile user@host:/path/to/somewhere
pull: scp [-rp] user@host:/path/from/somefile /path/to/somewhere
-P portnumber(一旦默認(rèn)端口更改需加此參數(shù))
sshd服務(wù)器端的配置:
/etc/ssh/sshd_config
directive value
Port 22 監(jiān)聽端口
AddressFamily any 監(jiān)聽地址(通過那個地址對外提供服務(wù))
Protocol 2 版本協(xié)議
限制可登錄用戶:
PermitRootLogin : 是否允許管理員直接登錄;
AllowUsers user1 user2 ...允許登陸白名單
AllowGroups grp1 grp2 ... 允許登陸組白名單
DenyUsers user1 ... 允許登陸黑名單
DenyGroups grp1 ... 允許登陸黑名單
僅監(jiān)聽需要監(jiān)聽的IP地址:
ListenAddress 0.0.0.0
最大允許登陸嘗試數(shù):
MaxAuthTries 6
ssh登陸log日志:
/var/log/secure