20170909 加密和安全(二)

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ā)布
  • 提供功能:機(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)鍵信息:
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 密碼添加給代理

(四)加密文件傳輸工具: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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市策菜,隨后出現(xiàn)的幾起案子又憨,更是在濱河造成了極大的恐慌竟块,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸携,死亡現(xiàn)場離奇詭異,居然都是意外死亡沟沙,警方通過查閱死者的電腦和手機(jī)矛紫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門务甥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敞临,“玉大人挺尿,你說我怎么就攤上這事票髓。” “怎么了裆操?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵踪区,是天一觀的道長。 經(jīng)常有香客問我传泊,道長眷细,這世上最難降的妖魔是什么溪椎? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任校读,我火速辦了婚禮歉秫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘却特。我一直安慰自己裂明,他們只是感情好闽晦,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荠瘪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赛惩。 梳的紋絲不亂的頭發(fā)上哀墓,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音喷兼,去河邊找鬼篮绰。 笑死,一個胖子當(dāng)著我的面吹牛吠各,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播勉抓,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼走孽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了琳状?” 一聲冷哼從身側(cè)響起磕瓷,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后困食,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體边翁,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年硕盹,在試婚紗的時候發(fā)現(xiàn)自己被綠了符匾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瘩例,死狀恐怖啊胶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垛贤,我是刑警寧澤焰坪,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站聘惦,受9級特大地震影響某饰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜善绎,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一黔漂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禀酱,春花似錦炬守、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浩聋,卻和暖如春观蜗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衣洁。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工墓捻, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坊夫。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓砖第,卻偏偏與公主長得像,于是被迫代替她去往敵國和親环凿。 傳聞我的和親對象是個殘疾皇子梧兼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容