OpenSSH :
ssh : secure shell protocal , 22/tcp ,安全的遠程登錄
OpenSSH : ssh協議的開源實現;
dropbear : 另一個開源實現;
SSH協議版本
v1 :基於CRR-32做MAC,不安全 :man-in-middle
v2 :雙方主機協議選擇安全的MAC方式
基於DH算法做密鑰交換,基於RSA或DSA算法實現身份認證;
兩種方式的用戶登錄認證:
基於password
基於key
OpenSSH:
C/S
C:ssh , scp , sftp
Windows客戶端:
xshell ,putty , securecrt ,sshsecureshellclient
S:sshd
客戶端組件 :
ssh ,配置文件 :/etc/ssh/ssh_config
格式 :ssh [user@]host [COMMAND]
ssh [-l user] host [COMMAND]
-p port:遠程服務器監聽的端口;
Host PATTERN
PARAMETER VALUE
基於密鑰的認證 :
(1)在客戶端生產密鑰對兒
ssh -t rsa [-P ''] [-f "~/.ssh/id_rsa"]
(2)把公鑰傳輸至遠程服務器對應 用戶的家目錄
ssh-copy=id [identity_file][user@machine]
(3) 測試;
scp命令 :
scp [options] SRC... DEST/
存在兩種形式:
PULL : scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
PUSH : scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE
常用選項 :
-r : 遞歸複製;
-p :保證原文件的屬性信息;
-q : 靜默模式
-p PORT : 指明remote host的監聽的端口
服務器端 :
sshd ,配置文件 :/etc/ssh/sshd_config
常用參數 :
Port 22022
ListenAddress ip
PermitRootLogin yes
限制可登錄用戶的辦法 :
AllowUsers user1 user2 uesr3
AllowGroups
ssh服務的最佳實踐
1、不要使用默認端口;
2、禁止使用protocal version 1;
3、限制可登錄用戶;
4、設定空閒會話超時時長;
5、利用防火牆設置ssh訪問策略;
6、僅監聽特定的IP地址;
7、基於口令認證時,使用強密碼策略;
# tr -dc A-Za-z0-9_ </dev/urandom | head -c 30 |xargs
8、使用基於密鑰的認證;
9、禁止使用空密碼;
10、禁止root用戶直接登錄;
11、限制ss的訪問頻度和併發在線數;
12、做好日誌,經常分析;
ssh協議的另一個實現 :dropbear
(1) dropbearkey -T rsa -f /etc/dropbear_rsa_host_key -ss 2048
dropbearkey -t dss -f /etc/dropbear_dss_host_key
dropbear -p [ip:]port -F -E
OpenSSL :
三個組件:
openssl : 多用途的命令行工具;
libcrypte : 加密解密庫;
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 private/cakey.epm -days 7300 -out /etc/pki/CA/cacert.pem
-new : 生成心證書籤署請求;
-x509 : 生成自簽證書 ;
-key : 生成請求時用到的私鑰文件;
-out /PATH/TO/SOMCEREFILE :證書的保存路徑;
(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 -day365
查看證書中的信息 :
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 -noout -text
查看crl 文件
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text