openssh及openssl建立私有CA
ssh:secure shell,protocol ,監聽TCP22,提供安全的遠端登陸服務
OpenSSH:ssh協議的開源實現
dropbear:另一個開源實現
SSH協議版本:
V1:基於CRC-32做MAC(訊息認證碼),不安全:容易受man-in-middle***
v2:雙方主機協議選擇安全的MAC方式
基於DH演算法做祕鑰交換,基於RSA或DSA演算法實現身份認證
兩種方式的使用者登入認證:
口令:基於Passwd
基於KEY
OpenSSH:
C/S
C:ssh,scp,sftp
windows客戶端:Xshell,putty,securecrt,sshsecureshellclient
S:sshd
客戶端元件:
ssh,配置檔案:/etc/ssh/ssh_config
格式:ssh [[email protected]]host [COMMAND] (省略表示當前系統上的當前登入使用者,linux系統)
ssh [-l user] host [COMMAND](-l表示指明login User)
-p port:遠端伺服器監聽埠 預設22埠
-X: 支援x11轉發;
-Y:支援信任的x11轉發;
host PATTERN
PARAMETER VALUE
[[email protected]~]#ssh
基於祕鑰的認證:
(1)在客戶端生成祕鑰對兒
ssh -t rsa [-P ''][-f "~/.ssh/id_rsa"]
(2)把公鑰傳輸至遠端伺服器對應使用者的家目錄
ssh-copy-id [-i [identity_file]] [[email protected]]machine
(3)測試
scp命令:跨主機的複製命令
scp [options] SRC... DEST/
存在兩種情形:
PULL:scp [options] [[email protected]
PUSH:scp [options] /PATH/FROM/SOMEFILE [[email protected]]host:/PATH/TO/SOMEWHERE
常用選項:
-r:遞迴複製,複製目錄使用
-p:保持原始檔的屬性資訊
-q:靜默模式
-P:PORT:指明remote host監聽的埠
-X:
sftp命令:
sftp [[email protected]]host
sftp> help
伺服器端:
sshd,配置檔案:/etc/ssh/sshd_config
常用引數:
port:22022
ListenAddress ip
PermitRootLogin yes 是否允許root登陸
限制可登陸使用者方法:
AllowUsers user1 user2(空格分開)
AllowGroups
SSH服務的最佳實踐:
1、不要使用預設埠:
2、禁止使用protocol version 1
3、限制可登陸使用者: (配置檔案新增AllowUsers root centos行)
4、設定空閒會話超時時長
5、利用防火牆設定ssh訪問策略
6、僅監聽特定的IP地址
7、基於口令認證時,使用強密碼策略,不容伺服器使用不同密碼
# tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
8、儘可能使用基於祕鑰的認證
9、禁止使用空密碼
10.禁止root使用者直接登入
11.限制SSH的訪問頻度和同併發線上數量
12.做好日誌,經常做分析
ssh協議的另一個實現:dropbear
(1) dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
dropbear -p [ip:]port -F -E
OpenSSL
三個元件:
openssl:多用途的命令列工具:
libcrypto:加密解密庫
libssl:ssl協議的實現
PKI:Public Key Infrastructure
CA:發證機構
RA:註冊機構
CRL:證書吊銷列表
證書存取庫
建立私有CA:
OpenCA
openssl
證書申請及簽發步驟:
1、生成申請請求
2、RA核驗
3、CA簽署
4、獲取證書並使用
如何建立私有CA:
openssl的配置檔案:/etc/pki/tls/openssl.cnf
(1)建立所需要的檔案
# touch index.txt
# echo 01 > serial
#
(2)CA自簽證書
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.epm -days 7300 -out/etc/pki/CA/cacert.pem
-new: 生成新證書籤署請求;
-x509: 專用於CA生成自簽證書;
-key: 生成請求時用到的私鑰檔案;
-days n:證書的有效期限;
-out /PATH/TO/SOMECERTFILE: 證書的儲存路徑;
(3) 發證
(a) 用到證書的主機生成證書請求;
# (umask 077; 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簽署證書,並將證書發還給請求者;
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
檢視證書中的資訊:
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial
(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
(c) 生成吊銷證書的編號(第一次吊銷一個證書)
# echo 01 > /etc/pki/CA/crlnumber
(d) 更新證書吊銷列表
# openssl ca -gencrl -out thisca.crl
檢視crl檔案:
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
部落格作業:加密解密基礎、PKI及SSL、建立私有CA;
轉載於:https://blog.51cto.com/chaochao3/1698977