ssh服務的三種端口轉發


 

關於ssh端口

 

     SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是, SSH 還能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發,並且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”,這是因爲SSH爲其他 TCP 鏈接提供了一個安全的通道來進行傳輸而得名。例如,Telnet,SMTP,LDAP 這些 TCP 應用均能夠從中得益,避免了用戶名, 密碼以及隱私信息的明文傳輸。而與此同時,如果工作環境中的防火牆限制了一些網絡端口的使用,但是允許 SSH 的連接,也能夠通過將 TCP 端口轉發來使用 SSH 進行通訊

 

ssh端口轉發的兩大功能

 

兩大功能:

  • 加密 SSH Client 端至 SSH Server 端之間的通訊數據
  • 突破防火牆的限制完成一些之前無法建立的 TCP 連接

 

ssh端口轉發的三種方式

 

  • ssh端口本地轉發
  • ssh端口遠程轉發
  • ssh端口動態轉發
     
    1.本地轉發
     
       格式:ssh -L localport:remotehost:remotehostport sshserver
          localport : 本地開啓的端口號
          remotehost : 遠程要連接的IP
          remotehostport : 轉發機的端口號
          sshserver : 轉發機的IP
     
       選項:
          -f 後臺啓用
          -N 不打開遠程shell,處於等待狀態(不加-N則直接登錄進去)
          -g 啓用網關功能
          -L 啓動本地端口轉發
          -D 動態轉發
     
    實驗一:ssh的本地轉發實現
      前提:C服務端,B跳板機,A客戶端,C的23端口只有B才能訪問,其他拒絕訪問,A和B可以通過ssh互相訪問
    ssh服務的三種端口轉發
      如圖所示:A的數據一旦telnet以後,數據會發送到本機9527端口,再在本機開一個隨機端口,充當ssh客戶端,再把數據流量發送到22端口的ssh服務端,收到數據以後,解密數據,臨時開一個隨機端口充當客戶端,再把流量發送到23端口telnet服務端
      實驗的流程:
        A->C 訪問被限制
        A-B->C 使用B主機作爲跳板突破訪問限制
      操作如下:
      首先在C服務器上開啓23端口,添加策略
    iptables -F
    iptables -A INPUT -s B -p tcp  - -dport 23 -j ACCEPT
    iptables -A INPUT -p tcp --dport 23 -j REJECT

      這個時候A和C是不通的,連接拒絕,然後回到A上做本地轉發

    ssh -L 9527:A:23 -fN B

      現在A可以通過telnet利用9527端口與C進行訪問

    telnet 127.0.0.1 9527

     
    2.遠程轉發
     
       格式:-R sshserverport:remotehost:remotehostport sshserver
          sshserverport 被轉發機器開啓的端口號
          remotehost 最終連接機器的IP地址
          remotehostport 被轉發機器的端口號
          sshserver 被轉發機器的IP地址
    實驗二:ssh的遠程轉發
    前提:讓ssh service偵聽9527端口的訪問,如有訪問,就加密後通過ssh服務轉發請求到A,再由本機解密後轉發到telnet service:23
      實驗的流程:
        C->A (拒絕訪問)
        C-B->A (通過遠程代理,接受訪問)
    操作如下:
    首先C開啓郵件服務

    systemctl restart postfix 

    然後在ssh service 上打開隧道

    ssh -R 9527:C:25 -fN A

    最後在A上給C發郵件

    telnet 127.0.0.1 9527
    mail from:[email protected]
    rctp to:xxxx@xxxx

    3.動態轉發
     
       格式:ssh -D port user@sshserver
          port :代理服務器開啓的代理端口
          ssherver : 遠程的代理服務器地址
     
    ssh服務的三種端口轉發
     
    實驗三:ssh的動態轉發
    前提:在企業內部或者網絡中,基於安全策略不能隨便訪問互聯網某些站點,當用A訪問C時,本機的代理端口做爲代理服務器,A的訪問請求被轉發到代理服務器上,由代理服務器替之訪問C
    實驗的流程:
        A -> C (拒絕訪問)
        A-B -> C (通過遠程代理,接受訪問)
    操作如下:
    首先C上添加策略,A拒絕訪問,只有B可以

    iptables -A INPUT -s A -j REJECT

    然後再B上輸入如下代碼,開啓代理

    ssh -fND 1080 root@B

    在A的裏驗證是否可以訪問

    curl --socks5 127.0.0.1 C   #默認端口就是1080

    基於網頁驗證,打開瀏覽器的設置,選擇代理設置,添加代理,在套接字一欄中填入
     
    ssh服務的三種端口轉發
     

當本地1080端口受到外部網站請求會轉發到外部服務器上面去,代理服務器通過1080端口把請求轉發到站點服務器上面去此時方可正常訪問外部站點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章