1. 程式人生 > 實用技巧 >openssh及openssl建立私有CA

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

[email protected]'hostname' 不登陸而執行命令

基於祕鑰的認證:

(1)在客戶端生成祕鑰對兒

ssh -t rsa [-P ''][-f "~/.ssh/id_rsa"]

(2)把公鑰傳輸至遠端伺服器對應使用者的家目錄

ssh-copy-id [-i [identity_file]] [[email protected]]machine

(3)測試

wKioL1YJZDTC22rWAAMFhJmQ9kw554.jpg

scp命令:跨主機的複製命令

scp [options] SRC... DEST/

存在兩種情形:

PULL:scp [options] [[email protected]

]host:PATH/TO/SOMEWHERT /PATH/TO/SOMEWHERE

PUSH:scp [options] /PATH/FROM/SOMEFILE [[email protected]]host:/PATH/TO/SOMEWHERE

常用選項:

-r:遞迴複製,複製目錄使用

-p:保持原始檔的屬性資訊

-q:靜默模式

-P:PORT:指明remote host監聽的埠

-X:

wKiom1YJZEnSgE6WAAJTBsRJWTc572.jpg

wKioL1YJZGjj9d_qAAJRiylDuYk190.jpg

sftp命令:

sftp [[email protected]]host

sftp> help

wKiom1YJZHGyeqpsAAEUryly0b8744.jpg

伺服器端:

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

#

wKioL1YJZJ_y81OzAAE43_8RqTs326.jpg

(2)CA自簽證書

# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

wKiom1YJZLHRsEVXAADZJg2gX4U657.jpg

# 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: 證書的儲存路徑;

wKiom1YJZNLQUc9OAANNUNODXtU525.jpg

(3) 發證

wKioL1YJZO6D_umKAACdnEttM3A189.jpg

(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

wKiom1YJZPjTicuRAADjpgCNKKY963.jpg

wKioL1YJZQ7B51lgAALNBUGSk1s054.jpg

(b) 把請求檔案傳輸給CA;

wKiom1YJZRGxjoeJAAHHTjyskeM204.jpg

(c) CA簽署證書,並將證書發還給請求者;

# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

wKioL1YJZT7At45WAANjp6HZGJc085.jpg

wKiom1YJZUWAZiehAADu2B9EE00289.jpg

wKiom1YJZVKxRJZJAAFmgCY8irQ165.jpg

wKioL1YJZW3T9z-ZAAHJNm4fH_w897.jpg

wKioL1YJZXuh9C42AAA_CeJp1Xw415.jpg

檢視證書中的資訊:

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial

wKiom1YJZYHRe1D3AAIeKsjQ_t4516.jpg

(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