CA和證書
安全協(xié)議(SSL/TLS)
OpenSSH
一放可、CA和證書
(一) PKI(Public Key Infrastructure) 公鑰基礎(chǔ)設(shè)施
定義:支持公開密鑰管理并能支持認(rèn)證雁刷、加密科雳、完整性和可追究性服務(wù)的基礎(chǔ)設(shè)施
-
主要組成部分:
- 簽證機(jī)構(gòu):CA (Certificate Authority)
- 注冊機(jī)構(gòu):RA (Registration Authority)
- 證書吊銷列表:CRL (Certificate Revocation List)
- 證書存取庫
-
X.509:定義了證書的結(jié)構(gòu)以及認(rèn)證協(xié)議標(biāo)準(zhǔn)
- 內(nèi)容:版本號骡男、序列號判导、簽名算法稽亏、頒發(fā)者疙筹、有效期限富俄、主體名稱、主體公鑰而咆、CRL分發(fā)點霍比、擴(kuò)展信息、發(fā)行者簽名
(二)證書獲取的方法:
- 證書授權(quán)機(jī)構(gòu)簽發(fā)的證書:由CA簽發(fā)申請者的公鑰
- 第1步:生成簽名請求(csr)
- 第2步:將csr發(fā)送給CA
- 第3步:從CA處接受簽名
- 自簽名的證書:自己簽發(fā)自己的公鑰
二暴备、安全協(xié)議(SSL/TLS):
(一)協(xié)議歷史悠瞬、功能
-
發(fā)展歷程:
- SSL(Secure Socket Layer):安全套接字
- 由Netscape公司于1995年發(fā)布SSL 2.0
- TLS(Transport Layer Security) 安全傳輸層協(xié)議1.1:
- TLS 1.1:IETF(Internet工程任務(wù)組) 于2006年將其定義為國際標(biāo)準(zhǔn)RFC 4346
- TLS 1.2:當(dāng)前使用最廣泛的標(biāo)準(zhǔn),2008年發(fā)布
- TLS 1.3:最新標(biāo)準(zhǔn)涯捻,2015年發(fā)布
- SSL(Secure Socket Layer):安全套接字
提供功能:機(jī)密性浅妆、認(rèn)證、完整性障癌、重放保護(hù)
位于TCP/IP模型傳輸層之上凌外,應(yīng)用層之下
(二)協(xié)議工作原理
-
SSL/TLS協(xié)議是兩階段協(xié)議,分為握手階段和應(yīng)用階段
- 握手階段(協(xié)商階段)客戶端和服務(wù)器端認(rèn)證對方身份(依賴于PKI體系涛浙,利用數(shù)字證書進(jìn)行身份認(rèn)證)康辑,并協(xié)商通信中使用的安全參數(shù)、密碼套件以及主密鑰轿亮。后續(xù)通信使用的所有密鑰都是通過MasterSecret生成疮薇。
- 應(yīng)用階段:在握手階段完成后進(jìn)入,在應(yīng)用階段通信雙方使用握手階段協(xié)商好的密鑰進(jìn)行安全通信
-
相關(guān)協(xié)議:
- 握手階段:Handshake, ChangeCipherSpec, Alert協(xié)議
- 應(yīng)用階段:Record協(xié)議
HTTPS協(xié)議:就是“HTTP” 協(xié)議”和“SSL/TLS 協(xié)議”的組合。HTTP over SSL”或“HTTP over TLS”书闸,對http協(xié)議的文本數(shù)據(jù)進(jìn)行加密處理后瞒窒,成為二進(jìn)制形式傳輸
(三)OpenSSL
開源項目:可以實現(xiàn)對稱加密攻礼、公鑰加密胖齐、秘鑰管理等豐富功能
-
對稱加密:openssl enc工具實現(xiàn)
- 幫助:
man enc
- 語法:
// 加密 openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
// 解密 openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile
- 幫助:
-
公鑰加密:openssl rsautl工具實現(xiàn)
- 幫助:
man rsautl
- 語法:
// 生成私鑰 openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS // 私鑰需要謹(jǐn)慎保管玻淑,權(quán)限應(yīng)設(shè)置為600 // 執(zhí)行umask 066,為避免umask設(shè)置影響今后操作呀伙,將umask和后續(xù)生成私鑰命令用小括號括起 // 例如以下命令(-des: 私鑰添加口令) (umask077; openssl genrsa -out test.key -des 2048) //從私鑰中提取出公鑰 openssl rsa -in PRIVATEKEYFILE -pubout -out PUBLICKEYFILE //例如以下命令 openssl rsa -in test.key -pubout -out test.key.pub
- 幫助:
-
單項加密:openssl dgst工具實現(xiàn)
- 幫助:
man dgst
- 語法:
openssl dgst -md5 [-hex] /PATH/SOMEFILE //-hex 默認(rèn)設(shè)置為16進(jìn)制顯示 openssl dgst -md5 testfile
- 幫助:
-
生成密碼:openssl sslpasswd工具實現(xiàn)
- 幫助:
man sslpasswd
- 語法:
openssl passwd -1 -salt SALT(最多8位) //-1指MD5加密 openssl passwd -1 -salt centos
- 幫助:
-
生成隨機(jī)數(shù):openssl sslrand工具實現(xiàn)
- 幫助:
man sslrand
- 幫助:
openssl rand -base64|-hex NUM NUM: 表示字節(jié)數(shù)补履;-hex時,每個字符為十六進(jìn)制剿另,相當(dāng)于4位二進(jìn)制箫锤,出現(xiàn)的字符數(shù)為NUM*2
- 幫助:
(四)OpenSSL實現(xiàn)創(chuàng)建CA并申請、管理證書
- 配置文件
- openssl的配置文件:/etc/pki/tls/openssl.cnf
配置文件關(guān)鍵信息:
- openssl的配置文件:/etc/pki/tls/openssl.cnf
dir = /etc/pki/CA //存儲目錄
certs = $dir/certs //頒發(fā)的證書存儲路徑
crl_dir = $dir/crl //證書吊銷列表存儲路徑
database = $dir/index.txt //數(shù)據(jù)庫文件存儲路徑
new_certs_dir = $dir/newcerts //新證書存放路徑雨女,與證書存儲路徑中的內(nèi)容相同谚攒,但名稱不同
certificate = $dir/cacert.pem //CA自簽發(fā)或由上級簽發(fā)的證書路徑,名稱必須為"cacert.pem"
serial = $dir/serial //下一個簽發(fā)證書的序號氛堕,一般從16位數(shù)字00開始
crlnumber = $dir/crlnumber //下一個證書吊銷列表的序號馏臭,一般從16位數(shù)字00開始
crl = $dir/crl.pem //證書吊銷列表的存放路徑
private_key = $dir/private/cakey.pem //私鑰的存放路徑
countryName = match //國家信息必須匹配
stateOrProvinceName = match //州或省信息必須匹配
organizationName = match //域名信息必須匹配
organizationalUnitName = optional //部門名稱
commonName = supplied //申請證書的主機(jī)名稱
emailAddress = optional //郵箱
-
申請信息的三種策略:匹配、支持和可選
- 匹配:申請?zhí)顚懙男畔⒏鶦A設(shè)置信息必須一致
- 支持:必須填寫這項申請信息
- 可選:可有可無
-
第1步讼稚,創(chuàng)建私有CA括儒,生成私鑰
// 創(chuàng)建所需要的文件 touch /etc/pki/CA/index.txt //生成證書索引數(shù)據(jù)庫文件 echo 01 > /etc/pki/CA/serial //指定第一個頒發(fā)證書的序列號 // CA生成私鑰,注意名稱必須為cakey.pem (umask066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
-
第2步锐想,生成自簽名證書
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem // -new 生成新證書簽署請求 // -x509 專用于CA生成自簽證書 // -key 生成請求時用到的私鑰文件 // -days n 證書的有效期限 // -out /PATH/TO/SOMECERTFILE: 證書的保存路徑
-
第3步帮寻,頒發(fā)證書,一般將私鑰和CA簽發(fā)的證書保存在應(yīng)用的目錄中
// 1. 生成證書請求csr // 生成私鑰 (umask066; openssl genrsa -out /etc/pki/tls/private/test.key 2048) 生成證書申請文件 openssl req -new -key /etc/pki/tls/private/test.key -out etc/pki/tls/test.csr // 2. 將證書請求文件傳輸給CA // 3. CA簽署證書赠摇,并將證書頒發(fā)給請求者 openssl ca -in /tmp/test.csr -out /etc/pki/CA/certs/test.crt -days 365 注意:默認(rèn)國家固逗,省,公司名稱三項必須和CA一致 // 4. 查看證書中的信息: openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates // 查看指定編號的證書狀態(tài) openssl ca -status SERIAL
-
第4步藕帜,吊銷證書
// 1. 在客戶端獲取要吊銷的證書的serial openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject // 2. 在CA上烫罩,根據(jù)客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致洽故,吊銷證書 openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem // 指定第一個吊銷證書的編號 注意:第一次更新證書吊銷列表前嗡髓,才需要執(zhí)行 echo 01 > /etc/pki/CA/crlnumber // 3. 更新證書吊銷列表 openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem // 查看crl文件: openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
實驗:建立根CA,子CA收津,并實現(xiàn)根CA簽發(fā)自身證書饿这、根CA給子CA簽發(fā)證書、子CA給申請者簽發(fā)證書撞秋,最后吊銷子CA簽發(fā)給申請者的證書长捧,并生成證書吊銷列表
環(huán)境設(shè)置:
根CA的ip地址:192.168.136.230,命令提示符顏色:紫色
子CA的ip地址:192.168.136.229吻贿,命令提示符顏色:黃色
申請主機(jī)的ip地址:192.168.136.224串结,命令提示符顏色:藍(lán)色
密鑰、證書申請、簽發(fā)的證書存儲位置肌割,如下圖:
第1步:建立根CA卧蜓,根CA簽發(fā)自身證書(根CA上操作)
建立證書索引庫文件index.txt,指定證書序列號
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
生成私鑰文件cakey.pem把敞,存儲在/etc/pki/CA/private目錄下
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem -des3 2048)
自已簽發(fā)自己的證書cacert.pem弥奸,存儲在/etc/pki/CA目錄下,過程中設(shè)置:countryName, stateOrProvinceName, organizationName, organizationalUnitName, commonName, emailAddress等信息奋早,前三項一定要注意盛霎,之后簽發(fā)的證書信息務(wù)必要與本次設(shè)置的信息相同
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 7300
第2步,建立子CA耽装,子CA向根CA申請證書愤炸,根CA簽發(fā)證書(子CA上操作)
建立證書索引庫文件index.txt掉奄,指定證書序列號
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
生成私鑰
(umak 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem -des3 2048)
生成證書申請文件
openssl req -new -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.csr
將證書申請文件傳送給根CA姓建,根CA簽發(fā)證書并將證書傳送回子CA绰姻,存儲至子CA的/etc/pki/CA目錄下
scp /etc/pki/CA/cacert.csr 192.168.136.230:/tmp
發(fā)送證書申請文件至根CA
openssl ca -in /tmp/cacert.csr -out /etc/pki/CA/certs/cacert.pem -days 3650
根CA簽發(fā)證書(此命令在根CA上操作)
查看簽發(fā)的證書內(nèi)容,可以看到證書序列號按照/etc/pki/CA/serial文件中的01編號榨馁,根CA和子CA的關(guān)鍵信息相同(此命令在根CA上操作)
使用openssl x509 -in /etc/pki/CA/certs/cacert.pem -noout -text|issuer|suject|serial|dates
命令查看證書信息憨栽,紅框中可以看到時間期限確實為簽發(fā)證書指定的約10年(-days 3650)(此命令在根CA上操作)
使用openssl ca -status 01
命令屑柔,查看指定編號的證書狀態(tài)(此命令在根CA上操作)
scp /etc/pki/CA/certs/cacert.pem 192.168.136.229:/etc/pki/CA/
發(fā)送簽發(fā)的證書至子CA(此命令在根CA上操作)
第3步,申請主機(jī)向子CA發(fā)起證書簽發(fā)申請唧瘾,子CA簽發(fā)證書(申請主機(jī)上操作)
生成密鑰
(umask 066; openssl genrsa -out /etc/pki/tls/private/hello.key -des3 2048)
生成證書申請文件
openssl req -new -key /etc/pki/tls/private/hello.key -out /etc/pki/tls/hello.csr
將證書申請文件傳送給子CA,子CA簽發(fā)證書并將證書傳送回申請主機(jī)求豫,存儲至申請主機(jī)的/etc/pki/tls目錄下
scp /etc/pki/tls/hello.csr 192.168.136.229:/tmp
發(fā)送證書申請文件至子CA
openssl ca -in /tmp/hello.csr -out /etc/pki/CA/certs/hello.crt -days 730
子CA簽發(fā)證書(此命令在子CA上操作)
scp /etc/pki/CA/certs/hello.crt 192.168.136.224:/etc/pki/tls/
發(fā)送簽發(fā)的證書至子CA(此命令在子CA上操作)
將根CA證書最疆、子CA證書努酸、申請主機(jī)證書都傳至windows蚊逢,可以在證書頁面看到清晰的證書繼承關(guān)系
第4步烙荷,吊銷子CA給申請主機(jī)的證書终抽,創(chuàng)建證書吊銷列表(子CA上操作)
環(huán)境設(shè)置:在子CA上再簽發(fā)兩個證書
修改/etc/pki/CA/index.txt.attr文件昼伴,內(nèi)容改為"unique_subject = no"圃郊,這樣可以為相同證書申請簽發(fā)多次證書
openssl ca -in /tmp/hello.csr -out /etc/pki/CA/certs/hello1.crt -days 300
openssl ca -in /tmp/hello.csr -out /etc/pki/CA/certs/hello2.crt -days 500
查看想要吊銷證書的序列號持舆,查看目前所有證書的狀態(tài)逸寓,V表示可用狀態(tài)
openssl x509 -in /etc/pki/CA/certs/hello1.crt -noout -serial -subject
openssl x509 -in /etc/pki/CA/certs/hello2.crt -noout -serial -subject
cat /etc/pki/CA/index.txt
``
吊銷序列號為02和03的兩個證書:
openssl ca -revoke /etc/pki/CA/newcerts/02.pem
openssl ca -revoke /etc/pki/CA/newcerts/03.pem
cat /etc/pki/CA/index.txt
查看索引數(shù)據(jù)庫,發(fā)現(xiàn)被吊銷的證書狀態(tài)為R
生成證書吊銷列表
echo 01 > /etc/pki/CA/crlnumber
指定首個證書吊銷列表的序列號
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
生成證書吊銷列表
查看證書吊銷列表內(nèi)容
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
三、OpenSSH
(一)SSH協(xié)議
- ssh: secure shell生巡,TCP連接孤荣,默認(rèn)端口號22盐股,安全的端口登錄
- 軟件實現(xiàn):OpenSSH, dropbear
- 協(xié)議版本:當(dāng)前使用ssh v2疯汁,基于DH算法做密鑰交換幌蚊,基于RSA或DSA實現(xiàn)身份認(rèn)證
- 登錄認(rèn)證方式:基于password和基于key兩種方式
(二)OpenSSH
-
基于C/S結(jié)構(gòu)
- client: ssh, scp, xshell, securecrt
- server: sshd
-
ssh客戶端:
- 路徑:/etc/ssh/ssh_config
- 配置項:
StrictHostKeyChecking 首次登錄檢查Key蜒简,默認(rèn)為"ask"提示搓茬,設(shè)為"no"不提示 - 語法:
ssh [user@]host [COMMAND] 默認(rèn)以當(dāng)前本機(jī)登錄用戶名登錄遠(yuǎn)程主機(jī)
ssh [-l user] host [COMMAND] -l 指定用戶登錄遠(yuǎn)程主機(jī)
選項: -p port:遠(yuǎn)程服務(wù)器監(jiān)聽的端口 -b:指定連接的源IP -v:調(diào)試模式 -C:壓縮方式 -X:支持x11轉(zhuǎn)發(fā) -Y:支持信任x11轉(zhuǎn)發(fā) -t:強(qiáng)制偽tty分配 //通過ssh直連remoteserver1實現(xiàn)間接連接至remoteserver2 ssh -t remoteserver1 ssh remoteserver2
(三)OpenSSH遠(yuǎn)程驗證
openssh實現(xiàn)遠(yuǎn)程主機(jī)驗證的方式:
當(dāng)用戶遠(yuǎn)程連接ssh服務(wù)器時卷仑,會復(fù)制ssh服務(wù)器/etc/ssh/ssh_host*key.pub文件中的公鑰到客戶機(jī)的~./ssh/know_hosts中锡凝。下次連接時窜锯,會自動匹配相應(yīng)私鑰,不能匹配放刨,將拒絕連接-
ssh服務(wù)登錄驗證:基于用戶/口令和基于密鑰兩種方式
-
基于用戶/口令登錄
- step 1 客戶端發(fā)起ssh請求进统,服務(wù)器會把自己的公鑰發(fā)送給用戶
- step 2 用戶會根據(jù)服務(wù)器發(fā)來的公鑰對密碼進(jìn)行加密
- step 3 加密后的信息回傳給服務(wù)器,服務(wù)器用自己的私鑰解密掉分,如果密碼正確酥郭,則用戶登錄成功
-
基于密鑰登錄
- step 1 首先在客戶端生成一對密鑰
- step 2 并將客戶端的公鑰拷貝到服務(wù)端
- step 3 當(dāng)客戶端再次發(fā)送一個連接請求不从,包括ip, 用戶名
- step 4 服務(wù)端得到客戶端的請求后椿息,會到authorized_keys中查找寝优,如果有響應(yīng)的IP和用戶倡勇,就會隨機(jī)生成一個字符串妻熊,例如:acdf
- step 5 服務(wù)端使用客戶端拷貝過來的公鑰進(jìn)行加密帆喇,然后發(fā)送給客戶端
- step 6 得到服務(wù)端發(fā)來的消息后坯钦,客戶端會使用私鑰進(jìn)行解密婉刀,然后將解密后的字符串發(fā)送給服務(wù)端
- step 7 服務(wù)端接受到客戶端發(fā)來的字符串后突颊,跟之前的字符串進(jìn)行對比律秃,如果一致棒动,就允許免密碼登錄
-
實現(xiàn)基于密鑰登錄
- 在客戶端生成密鑰對柜裸,-P '':私鑰不設(shè)置密碼
ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]
- 把公鑰文件傳輸至遠(yuǎn)程服務(wù)器對應(yīng)用戶的家目錄
ssh-copy-id [-i [identity_file]] [user@]host
- 修改私鑰的密碼
ssh-keygen -p
- 使用驗證代理,只需要輸入一次密碼衔统,之后所有的ssh連接輸入私鑰密碼的工作由代理完成锦爵。bash進(jìn)程結(jié)束险掀,代理工作結(jié)束;下次登錄時埠啃,重新啟動代理碴开。
ssh-agent agent
啟用代理
ssh-add
密碼添加給代理
- 在客戶端生成密鑰對柜裸,-P '':私鑰不設(shè)置密碼
-
(四)加密文件傳輸工具:scp, rsysc, sftp, pssh
(1)scp工具
來源于openssh-clients軟件包
scp遇到相同文件直接覆蓋操作
語法:
scp [options] SRC... DEST/
scp [options] [user@]host:/sourcefile /destpath:將遠(yuǎn)程主機(jī)文件復(fù)制到本地
scp [options] /sourcefile [user@]host:/destpath:將本地文件復(fù)制到遠(yuǎn)程主機(jī)常用選項:
-C: 壓縮數(shù)據(jù)流
-r: 遞歸復(fù)制
-p: 保持原文件的屬性信息
-q: 靜默模式
-P PORT: 指明remote host的監(jiān)聽端口
(2)rsync工具
基于ssh和rsh服務(wù)實現(xiàn)高效率的遠(yuǎn)程系統(tǒng)之間復(fù)制文件
使用安全的shell連接做為傳輸方式
比scp更快,只復(fù)制不同的文件
語法:
rsync -av /etc server1:/tmp:復(fù)制目錄和目錄下文件
rsync -av /etc/ server1:/tmp:只復(fù)制目錄下文件選項:
-n 模擬復(fù)制過程
-v 顯示詳細(xì)過程
-r 遞歸復(fù)制目錄樹
-p 保留權(quán)限
-t 保留時間戳
-g 保留組信息
-o 保留所有者信息
-l 將軟鏈接文件本身進(jìn)行復(fù)制(默認(rèn))
-L 將軟鏈接文件指向的文件復(fù)制
-a 存檔巴碗,相當(dāng)于–rlptgoD,但不保留ACL(-A) 和SELinux屬性(-X)
(3)sftp工具
- 交互式文件傳輸工具
- 用法和傳統(tǒng)的ftp工具相似
- 利用ssh服務(wù)實現(xiàn)安全的文件上傳和下載
- 使用
ls
cd
mkdir
rmdir
pwd
get
put
等指令明垢,可用?
或help
獲取幫助信息
(4)pssh工具
pssh是一個python編寫可以在多臺服務(wù)器上執(zhí)行命令的工具,也可實現(xiàn)文件復(fù)制
選項如下:
--version:查看版本
-h:主機(jī)文件列表溯革,內(nèi)容格式"[user@]host[:port]"
-H:主機(jī)字符串致稀,內(nèi)容格式"[user@]host[:port]"
-l:登錄使用的用戶名
-o:輸出的文件目錄
-O:SSH的選項
-v:詳細(xì)模式
-A:手動輸入密碼模式
-x:額外的命令行參數(shù)使用空白符號抖单,引號矛绘,反斜線處理
-X:額外的命令行參數(shù),單個參數(shù)模式囚玫,同-x
-i:每個服務(wù)器內(nèi)部處理信息輸出
-P:打印出服務(wù)器返回信息
(五)SSH端口轉(zhuǎn)發(fā)(又名“隧道”):
(1)SSH 端口轉(zhuǎn)發(fā)的功能
- SSH端口轉(zhuǎn)發(fā):SSH將其他TCP 端口的網(wǎng)絡(luò)數(shù)據(jù)通過SSH 鏈接來轉(zhuǎn)發(fā)抓督,并且自動提供了相應(yīng)的加密及解密服務(wù)
- SSH端口轉(zhuǎn)發(fā)又名隧道(tunneling)本昏,SSH為其他TCP協(xié)議提供了一個安全的傳輸通道涌穆。
- 功能:
- 加密SSH Client 端至SSH Server 端之間的通訊數(shù)據(jù)
- 突破防火墻的限制完成一些之前無法建立的TCP 連接
(2)SSH本地轉(zhuǎn)發(fā)
語法:
ssh -L local_port:remote_host:remote_host_port ssh_server
local_port:本地端口(防火墻外)
remote_host:遠(yuǎn)程主機(jī)IP(防火墻內(nèi))
remote_host_port:遠(yuǎn)程主機(jī)不安全的TCP協(xié)議端口(防火墻內(nèi))
ssh_server:充當(dāng)跳板機(jī)的ssh服務(wù)器IP(防火墻內(nèi))選項:
-f 后臺啟用
-N 不打開遠(yuǎn)程shell,處于等待狀態(tài)
-g 啟用網(wǎng)關(guān)功能網(wǎng)絡(luò)連接狀態(tài)如圖所示:
-
示例:
-
ssh -L 2009:telnetsrv:23 -Nf sshsrv
建立從本機(jī)到telnet服務(wù)器23端口的連接,監(jiān)聽本機(jī)2009端口罩锐,以sshsrv服務(wù)器為跳板 -
telnet 127.0.0.1 2009
當(dāng)訪問本機(jī)的2009的端口時涩惑,被加密后轉(zhuǎn)發(fā)到sshsrv的ssh服務(wù)竭恬,再解密被轉(zhuǎn)發(fā)至telnetsrv的23端口 - 信息在端口間的流向:
data <<==>> local_host:2009 <<==>> local_host:XXXXX <<==>> ssh_srv:22 <<==>> ssh_srv:YYYYY <<==>> telnet_srv:23
-
-
實驗:建立SSH本地轉(zhuǎn)發(fā)
建立從本機(jī)192.168.136.230到telnet服務(wù)器192.168.136.224的連接赊级,中間將ssh服務(wù)器192.168.136.229作為跳板理逊,本地轉(zhuǎn)發(fā)端口2009
ssh -L 2009:192.168.136.224:23 -Nf 192.168.136.229
本地建立連接
telnet 127.0.0.1 2009
本地轉(zhuǎn)發(fā)連接遠(yuǎn)程telnet服務(wù)器本地主機(jī)端口連接情況:本機(jī)連接至跳板機(jī)的ssh服務(wù)22端口
跳板機(jī)端口連接情況:跳板機(jī)一方面與本機(jī)以ssh服務(wù)22端口連接,一方面與遠(yuǎn)程服務(wù)器以telnet服務(wù)23端口連接
遠(yuǎn)程telnet服務(wù)器端口連接情況:跳板機(jī)連接至遠(yuǎn)程服務(wù)器的telnet服務(wù)23端口
數(shù)據(jù)流向為:data <<==>> 127.0.0.1:2009 <<==>> 192.168.136.230:56160 <<==>> 192.168.136.229:22 <<==>> 192.168.136.229:51488 <<==>> 192.168.136.224:23
(3)SSH遠(yuǎn)程轉(zhuǎn)發(fā)
語法:
ssh -R ssh_server_port:remote_host:remote_host_port ssh_server
ssh_server_port:(防火墻外)
remote_host_port:(防火墻內(nèi))
remote_host_port:(防火墻內(nèi))
ssh_server:(防火墻外)網(wǎng)絡(luò)連接狀態(tài)如圖所示:
-
示例:
ssh -R 2010:telnetsrv:23 -Nf sshsrv
建立從ssh服務(wù)器到telnet服務(wù)器23端口的連接扁掸,監(jiān)聽ssh服務(wù)器2010端口谴分,以ssh客戶端為跳板telnet sshsrv 2010
當(dāng)訪問本機(jī)的2010端口時忘伞,將加密信息通過ssh服務(wù)轉(zhuǎn)發(fā)請求到本機(jī)ssh客戶端氓奈,再由本機(jī)解密后轉(zhuǎn)發(fā)到telnetsrv的23端口信息在端口間的流向:
Data <==> ssh_srv:2010 <==> ssh_srv:22 <==> local_host:XXXXX <==> local_host:YYYYY <==> telnet_srv:23
-
實驗:建立SSH遠(yuǎn)程轉(zhuǎn)發(fā)
建立從ssh服務(wù)器192.168.136.230到telnet服務(wù)器192.167.136.224的連接舀奶,中間將本機(jī)192.168.136.229作為跳板,遠(yuǎn)程轉(zhuǎn)發(fā)端口2010
ssh -R 2010:192.168.136.224:23 -Nf 192.168.136.230
本機(jī)建立連接telnet 127.0.0.1 2010
遠(yuǎn)程ssh服務(wù)器連接遠(yuǎn)程telnet服務(wù)器ssh服務(wù)器端口連接情況:ssh服務(wù)器的22端口與主機(jī)相連
主機(jī)端口連接情況:一方面作為客戶機(jī)與防火墻外的ssh服務(wù)器連接,另一方面與防火墻內(nèi)的telnet服務(wù)器的23端口連接
telnet服務(wù)器端口連接情況:telnet服務(wù)器的23端口與主機(jī)相連
(4)SSH端口轉(zhuǎn)發(fā)
當(dāng)用瀏覽器訪問internet時,本機(jī)的1080端口做為代理服務(wù)器蓖康,瀏覽器的訪問請求被轉(zhuǎn)發(fā)到ssh_server上,由ssh_server替之訪問internet
-
示例:
ssh -D 1080 root@sshserver
建立本地1080端口至ssh_server的ssh連接在瀏覽器設(shè)置代理本地代理:ip:127.0.0.1 port:1080
實驗:建立SSH端口轉(zhuǎn)發(fā)
通過本機(jī)(192.168.136.224)1080端口轉(zhuǎn)發(fā)請求至192.168.136.230的ssh服務(wù)器泳梆,由ssh服務(wù)器訪問192.168.136.229的httpd服務(wù)
(六)SSH的X協(xié)議轉(zhuǎn)發(fā):
- X協(xié)議:C/S結(jié)構(gòu),Client程序向Server發(fā)出請求套硼,Server響應(yīng)請求并展現(xiàn)相關(guān)圖形界面
- 所有的圖形應(yīng)用程序都是X客戶程序
- 能夠通過TCP/IP連接遠(yuǎn)程X服務(wù)器
- 數(shù)據(jù)沒有加密機(jī)制邪意,可以通過ssh連接隧道安全傳輸
- OpenSSH的實現(xiàn):
ssh -X user@remotehost COMMAND