安全及數字認證等使用

偏重實現ca數字認證及實現基于key的登錄

安全及數字證書

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

19-1

certs :放證書的

crl_dir :放證書吊銷列表

database :索引文件、數據庫,其中包含了很多與證書相關的數據(默認不存在,需手動創建)

new_certs_dir :存放新證書的目錄

certificate :ca的證書

serial :下一個要頒發的證書的編號(16進制數)(默認不存在,需手動創建)

crlnumber :下一個吊銷證書的編號(默認不存在,需手動創建)

private_key ?:私鑰文件必須按規定名字命名并放到指定路徑下

19-2

上圖是默認是各種有效期

19-3

上圖是策略的選擇(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

(0)
晨嘉晨嘉
上一篇 2018-05-19
下一篇 2018-05-19

相關推薦

  • 標準I/O

    標準輸入,標準輸出,標準錯誤

    2018-04-14
  • 出來馬哥教育

    18年到馬哥教育學校Linux

    Linux筆記 2018-07-19
  • DNS服務

    DNS服務 為什么要使用DNS? 為了把FQDN解析成IP地址。 FQDN??? 全稱域名 www.magedu.com???????? 全稱域名由主機名和域名組成 www???? 主機名(hostname),或者別名 magedu.com????? 域名(domain)   /etc/hosts?????? 分散式的解決方案 NIS???????…

    Linux筆記 2018-06-03
  • 向CA申請證書

    ?實驗向CA申請證書 步驟: 建立Root CA 1)生成私鑰 2)自簽名證書 2.用戶或服務器 1)生成私鑰 2)生成證書申請文件 3)將申請文件發給CA 3.CA頒發證書 4.證書發送給客戶端 5.應用軟件使用證書 如:centos7當服務器,centos6客戶端 ,即centos6向centos7申請證書 第一:建立根CA 生成私鑰的文件放在哪,文件名…

    2018-05-19
  • joke

    后續進行修改

    Linux筆記 2018-04-08
  • 企業監控Zabbix-myself

    基礎

    2018-04-10
欧美性久久久久