數據安全分為:
保密性:數據保密性、隱私性
完整性:數據完整性、系統完整性
可用性:數據有效性
安全攻擊分為:
被動攻擊:竊聽
主動攻擊:偽裝、重放、消息篡改、拒絕服務
安全機制:
加密、數字簽名、訪問控制、數據完整性、認證交換機制、流量填充、路由控制、公證
安全服務:
認證:
訪問控制:
數據保密性:連接、無連接、選擇域、流量
數據完整性:
不可否認性:
linux系統:openssl、gpg(pgp協議)
常見密碼算法和協議:
對稱加密:加密數據流
算法:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CASTS
特點:1、加密和解密使用同一個密鑰;2、將原始數據分隔成固定大小的塊,逐個進行加密;
缺陷:1、密鑰過多;2、密鑰分發;
公鑰加密:密鑰是成對兒出現
算法:RSA、DSA、ELGamal
公鑰:公開給所有人;public key
私鑰:自己留存,必須保證其私密性;secret key
用途:數字簽名(主要在于讓接收方確認發送方的身份。)、密鑰交換(發送方用對方的公鑰加密一個對稱密鑰,并發送給對方。)、數據加密;
特點:用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然;
單向加密:只能加密,不能解密;提取數據指紋;保證數據的完整性。
算法:md5(128bit)、sha1(160bit)、sha224、sha256、sha384、sha512
特性:1、定長輸出;2、雪崩效應;
密鑰交換:IKE
1、公鑰加密:缺陷:密鑰在網絡傳輸。
2、DH(Diffie-Hellman):密鑰無需在網絡傳輸。
PKI:公鑰基礎設施
簽證機構:CA
注冊機構:RA
證書吊銷列表:CRL
證書存取庫:
X.509:定義了證書的結構以及認證協議標準;組成格式如下
版本號
序列號
簽名算法ID
發行者名稱
有效期限
主體名稱
主體公鑰
發行者唯一標識
主體的唯一標識
擴展
發行者簽名
SSL:安全的套接字層
TLS:傳輸層安全
openssl:開源項目;三個組件
openssl:多用途的命令行工具;
libcrypto:公共加密庫;
libssl:庫,實現了ssl及tls;
openssl命令:
openssl version:程序版本號
對稱加密:
工具:enc、gpg
算法:3des、aes、blowfish、twofish
enc命令:
加密:# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
單向加密:
工具:md5sum、sha1sum、sha256sum、…openssl dgst
# md5sum ? ?/PATH/TO/SOMEFILE
# openssl ? dgst ? -md5 ?? /PATH/TO/SOMEFILE
生成用戶密碼:
openssl passwd -1 -salt SALT
生成隨機數:
openssl rand -base64|-hex NUM
NUM:表示字節數;-hex時,每個字符為4位,出現的字符數為NUM*2
隨機數生成器:
/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞;
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞;
生成密鑰對兒:
openssl genrsa -out /path/to/privatekey.file NUM_BITS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?生成私鑰
openssl rsa -in /path/to/privatekey.file -pubout > /path/to/publickey.file ? ? 提取公鑰
例子:
# (umask 077;openssl genrsa -out rsa.private 2048) ? ? ? ? 生成私鑰
# openssl rsa -in rsa.private -pubout > ? ?rsa.public ? ? ? ? ? ? 從私鑰提取出公鑰
openssl:開源項目;三個組件
openssl:多用途的命令行工具;
libcrypto:公共加密庫;
libssl:庫,實現了ssl及tls;
PKI:公鑰基礎設施
簽證機構: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.pem -out /etc/pki/CA/cacert.pem -days 3655
-new:生成新證書簽署請求
-x509:專用于CA生成自簽證書
-key:生成請求時用到的私鑰文件
-days n:證書的有效期限
-out:證書的保存路徑
(3)發證
(a)用到證書的主機生成證書請求;
# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(b)把請求文件傳輸給CA;
# scp
(c)CA校驗及簽署,并將證書發還給請求者;
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
# scp
(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
查看證書信息:
# openssl x509 -in /PATH/FROM/CERT_FILE ?-noout -text|-subject|-serial
ssh:secure shell,protocol
openssh:ssh協議的開源實現
dropbear:另一個ssh協議的開源實現
ssh協議版本:
v1:基于CRC-32做mac,不安全,man-in-middle
v2:雙方主機協議選擇安全的mac方式,基于dh算法做密鑰交換,基于rsa或dsa算法實現身份認證;
用戶登錄認證的兩種方式:基于password,基于key。
openssh:C/S
C:ssh,scp,sftp
Windows客戶端:xshell,putty,securecrt
S:sshd
客戶端組件:
ssh,配置文件:/etc/ssh/ssh_config
ssh ?[-p port] ? [user@]host ? [command]
-X:開啟x11轉發
-Y:支持信任的x11轉發
linux下基于密鑰的認證:
(1)在客戶端生成密鑰對
# ssh-keygen ? ? ?-t ? rsa ? ? [-P ”]? ? [-f output_keyfile]
(2)把公鑰傳輸至遠程服務器對應用戶的家目錄
# ssh-copy-id ? ? ? ? [-i [identity_file]] ? ? ? [-p port] ? ? ?[user@]hostname
(3)測試
windows下基于密鑰的認證(xshell):
(1)生成客戶端密鑰對;
工具—》新建用戶密鑰生成向導—》生成私鑰文件
(2)自行將公鑰信息,復制到服務器端的對應用戶的.ssh/authorized_keys文件中(該文件權限為600);
scp命令:
PULL:scp [options] ? [user@]host:/PATH/FROM/SOMEFILE ? /PATH/TO/SOMEWHERE
PUSH:scp [options] ?/PATH/FROM/SOMEFILE ? ?[user@]host:/PATH/TO/SOMEWHERE
常用option:
-r:遞歸復制
-p:保持源文件的屬性信息
-q:靜默模式
-P PORT:指明remote host的監聽端口
sftp命令:
sftp [user@]host
sftp> help
服務器端組件:
sshd,配置文件:/etc/ssh/sshd_config
具體參考# man sshd_config
限制可登陸用戶的辦法:用戶和組名空格分隔
AllowUsers user1 user2 …:用戶白名單
AllowGroups:組白名單
DenyUsers:用戶黑名單
DenyGroups:組黑名單
ssh服務的最佳實踐:
1、不要使用默認端口;
2、禁止使用protocol version 1;
3、限制可登陸用戶;
4、設定空閑會話超時時長;ClientAliveInterval
5、利用防火墻設置ssh的訪問策略;
6、僅監聽特定的IP地址;
7、基于口令認證時,使用強密碼策略;最好基于密鑰認證;
8、禁止使用空密碼;
9、禁止root用戶直接登錄;PermitRootLogin no
10、限制ssh的訪問頻度和并發在線數; ? ? MaxAuthTries ? ? ? ? ? MaxSessions
11、做好日志,經常分析;
ssh協議的另一個實現方式:dropbear
1、# dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
# dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
2、# dropbear -p 172.20.120.4:22022 -F -E
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89571