安全及數字證書
dig -t mx magedu.com 查詢對應的郵件服務器
md5sum file 查看該文件的哈希值(單向散列);也可支持多文件同時檢測是否變動
md5sum –check file等價于md5sum -c file
sha1sum file 以另一種算法來看哈希值
應用程序:RPM
文件完整性的兩種實施方式
被安裝的文件
MD5單向散列
rpm –verify package_name (or -V)
發行的軟件包文件
GPG公鑰簽名
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
rpm –checksig pakage_file_name (or -K)
使用gpg實現對稱加密
對稱加密file文件
gpg -c file 加密該文件
ls file.gpg
在另一臺主機上解密file
gpg -o file -d file.gpg 其中d是解密,o是生成新的文件
在hostA主機上生成公鑰/私鑰對(最好在虛擬機上操作,方便鼠標點)
gpg –gen-key
在hostA主機上查看公鑰
gpg –list-keys
在hostA主機上導出公鑰到wang.pubkey
gpg -a –export -o wang.pubkey
在hostB主機上導入公鑰
gpg –import wang.pubkey
用從hostA主機導入的公鑰,加密hostB主機的文件file,生成file.gpg
gpg -e -r wangxiaochun file(e是加密;r是用指定的公鑰;最后是源文件)
復制加密文件到hostA主機
scp fstab.gpg hostA:
在hostA主機解密文件
gpg -d file.gpg
gpg -o file -d file.gpg
刪除公鑰和私鑰
gpg –delete-keys wangxiaochun
gpg –delete-secret-keys wangxiaochun
CA和證書
PKI :公共秘鑰體系
簽證機構:CA(Certificate Authority)
注冊機構:RA
證書吊銷列表:CRL
證書內容:Sca(Pca)+Ca+其他信息
openssl命令
對稱加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
幫助:man enc
使用openssl enc 進行對稱加密:(enc是對稱加密;-des3是加密算法的一種;-a使用base64;-salt鹽可加入亂碼,保證每次加密結果都不一樣)
openssl enc -des3 -a -salt -in file -out file.out 然后輸入兩遍想設置的口令即可
解密:openssl enc -d -des3 -a -salt -in file.out (想生成新文件后面加-out f1)
openssl dgst -md5 file 也可以計算文件的哈希值,同md5sum file一樣
可以對想設置的口令加密:
openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 -salt centos
生成隨機數:
幫助:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字節數;-hex時,每個字符為十六進制,相當于4位二進制,出現的字符數為NUM*2;-base64時是 六進制數
生成私鑰:
(umask 066;openssl genrsa -out private.key 1024) 生成私鑰(可將其加密,在1024前加-des)
openssl rsa -in test.key -out text2.key 可將加密的key解密生成新文件2
生成秘鑰:
從私鑰中提取出公鑰
openssl rsa -in PRIVATEKEYFILE -pubout -out PUBLICKEYFILE
openssl rsa -in test.key -pubout -out test.key.pub
實驗:向ca申請證書
1.建立ca
touch /etc/pki/CA/index.txt 生成證書索引數據庫文件
echo 01 > /etc/pki/CA/serial 指定第一個頒發證書的序列號
還有一個吊銷證書的序列號記錄文件也需要手動創建并echo 01 >
- 建立root ca
- 生成私鑰
(umask 066;openssl genrsa -out private/cakey.pem 2048)
- 自簽名證書
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
(加-x509是自簽名操作,使用私鑰生成證書,最后定義有效期十年;隨后分別輸入策略需要填寫的國家、地區、城市等)
openssl x509 -in cacert.pem -noout -text 可以正常查看自簽名證書內容
2.用戶或服務器
- 生成私鑰
同上,文件可隨意命名,一般放在所需app的配置文件
- 生成證書申請文件
openssl req -new -key app.key -out app.csr
通過生成的私鑰app.key來生成申請文件app.csr
- 將申請文件發給ca
scp命令
3.ca頒發證書
openssl ca -in app.csr -out certs/app.crt -days 100
4.證書發送給客戶端
將app.crt文件發送即可
重要的配置文件是:/etc/pki/tls/openssl.conf
certs :放證書的
crl_dir :放證書吊銷列表
database :索引文件、數據庫,其中包含了很多與證書相關的數據(默認不存在,需手動創建)
new_certs_dir :存放新證書的目錄
certificate :ca的證書
serial :下一個要頒發的證書的編號(16進制數)(默認不存在,需手動創建)
crlnumber :下一個吊銷證書的編號(默認不存在,需手動創建)
private_key ?:私鑰文件必須按規定名字命名并放到指定路徑下
上圖是默認是各種有效期
上圖是策略的選擇(optional可選、match必須匹配)
countryName ??????????= 國家
stateOrProvinceName ???= 省
organizationName ??????= 公司
organizationalUnitName ?= 部門
commonName ?????????= 通用名(必須填寫的)填網站的域名
吊銷證書:openssl ca -revoke 證書索引號
生成吊銷列表:openssl ca -gencrl -out crl.pem
查詢證書狀態:openssl ca -status 證書索引名(v表示有效,r表示已經吊銷)
在window中查看證書,后綴一般是crt或者cer
SSH
ssh:secure shell, protocol, 22/tcp, 安全的遠程登錄
具體的軟件實現:
OpenSSH: ssh協議的開源實現,CentOS默認安裝
兩種方式的用戶登錄認證:
基于password
基于key
OpenSSH介紹—相關包:
openssh
openssh-clients
openssh-server
針對 ssh客戶端時:
ssh的配置文件:/etc/ssh/ssh_config
通過ssh輸入密碼連接某主機時,是記錄了對方的公鑰,以此來確認是本人登錄,而在下次就可以不詢問yes or no,其中checkhostip 便是這個詢問功能(基于非對稱秘鑰加密)
StrictHostKeyChecking no 首次登錄不顯示檢查提示
跳板機(堡壘機)的實現:
查看在防火墻中被拉黑的ip:iptables -vnL
ssh -t ip1 ip2 通過連接主機1再連接主機2,實現跳過防火墻等阻礙
ssh wang@ip 以王的身份去登錄該ip主機
基于密鑰的登錄方式
?1 首先在客戶端生成一對密鑰(ssh-keygen)
?2 并將客戶端的公鑰ssh-copy-id 拷貝到服務端
?3 當客戶端再次發送一個連接請求,包括ip、用戶名
?4 服務端得到客戶端的請求后,會到authorized_keys中查找,如果有響應的IP和用戶,就會隨機生成一個字符串,例如:acdf
?5 服務端將使用客戶端拷貝過來的公鑰進行加密,然后發送給客戶端
?6 得到服務端發來的消息后,客戶端會使用私鑰進行解密,然后將解密后的字符串發送給服務端
?7服務端接受到客戶端發來的字符串后,跟之前的字符串進行對比,如果一致,就允許免密碼登錄
基于密鑰的認證:
u(1) 在客戶端生成密鑰對(直接ssh-keygen即可)(-p可以后補)
ssh-keygen -t rsa [-P ”] [-f “~/.ssh/id_rsa”]
u(2) 把公鑰文件傳輸至遠程服務器對應用戶的家目錄(命令直接接ip即可自動復制改名)
ssh-copy-id [-i [identity_file]] [user@]host
重設私鑰口令:
ssh-keygen –p
驗證代理(authentication agent)保密解密后的密鑰,這樣口令就只需要輸入一次;在GNOME中,代理被自動提供給root用戶,否則運行ssh-agent bash
鑰匙通過命令添加給代理(退出再進仍要手動啟動)
ssh-add
scp命令
兩種格式:
scp [options] [user@]host:/sourcefile /destpath(這是將遠程文件復制到本機)
scp [options] /sourcefile [user@]host:/destpath
常用選項:
-C: 壓縮數據流
-r: 遞歸復制
-p: 保持原文件的屬性信息
-q: 靜默模式
-P PORT: 指明remote host的監聽的端口
rsync命令
基于ssh和rsh服務實現高效率的遠程系統之間復制文件
使用安全的shell連接做為傳輸方式
rsync –av /etc server1:/tmp 復制目錄和目錄下文件
rsync –av /etc/ server1:/tmp 只復制目錄下文件
比scp更快,只復制不同的文件
選項:
-n 模擬復制過程
-v 顯示詳細過程
-r 遞歸復制目錄樹
-p 保留權限
-t 保留時間戳
-g 保留組信息
-o 保留所有者信息
-l 將軟鏈接文件本身進行復制(默認)
-L 將軟鏈接文件指向的文件復制
-a 存檔,相當于–rlptgoD,但不保留ACL(-A)和SELinux屬性(-X)
sftp命令
是一種交互式文件傳輸工具,用法和傳統的ftp工具相似,是基于ssh服務實現的安全的文件上傳和下載;使用ls cd mkdir rmdir pwd get put等指令,可用?或help獲取幫助信息
sftp [user@]host
sftp> help
pssh命令
pssh是一個python編寫可以在多臺服務器上執行命令的工具,也可實現文件復制
u選項如下:
u–version:查看版本
u-h:主機文件列表,內容格式”[user@]host[:port]”
u-H:主機字符串,內容格式”[user@]host[:port]”
u-l:登錄使用的用戶名
u-p:并發的線程數【可選】
u-o:輸出的文件目錄【可選】
u-e:錯誤輸入文件【可選】
u-t:TIMEOUT 超時時間設置,0無限制【可選】
u-O:SSH的選項
u-v:詳細模式
u-A:手動輸入密碼模式
u-x:額外的命令行參數使用空白符號,引號,反斜線處理
u-X:額外的命令行參數,單個參數模式,同-x
u-i:每個服務器內部處理信息輸出
u-P:打印出服務器返回信息
例如:
通過pssh批量關閉seLinux
u pssh -H root@192.168.1.10 -i “sed -i “s/SELINUX=enforcing/SELINUX=disabled/” /etc/selinux/config”
批量發送指令
pssh -H root@192.168.1.10 -i setenforce 0
pssh -H xuewb@192.168.1.10 -i hostname
u當不支持ssh的key認證時,通過 -A選項,使用密碼認證批量執行指令
u pssh -H xuewb@192.168.1.10 -A -i hostname
u將標準錯誤和標準正確重定向都保存至/app目錄下
u pssh -H 192.168.1.10 -o /app -e /app -i “hostname”
pscp.pssh
功能是將本地文件批量復制到遠程主機
upscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote
Pscp-pssh選項
-v 顯示復制過程
-a 復制過程中保留常規屬性
-r 遞歸復制目錄
將本地curl.sh 復制到/app/目錄
pscp.pssh -H 192.168.1.10 /root/test/curl.sh /app/
pscp.pssh -h host.txt /root/test/curl.sh /app/
將本地多個文件批量復制到/app/目錄
pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /app/
將本地目錄批量復制到/app/目錄
pscp.pssh -H 192.168.1.10 -r /root/test/ /app/
pslurp.pssh
功能是將遠程主機的文件批量復制到本地
upslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)
Pslurp-pssh選項
-L 指定從遠程主機下載到本機的存儲的目錄,local是下載到本地后的名稱
-r 遞歸復制目錄
批量下載目標服務器的passwd文件至/app下,并更名為user
pslurp -H 192.168.1.10 -L /app/ /etc/passwd user
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98912