?

利用SSH實現多種端口轉發

2016-11-09 00:14曾德愚
數字技術與應用 2016年9期
關鍵詞:端口

曾德愚

摘要: SSH協議及相關工具軟件是系統管理員非常常用的組件,在日常網絡應用中,常常會碰到各種安全問題,本文分析了SSH的端口轉發機制,討論了在一些非安全環境下使用SSH端口轉發對網絡應用、個人隱私及商業信息進行加密保護的措施,同時也討論了如何利用SSH端口轉發突破如防火墻及網絡應用本身設置的限制以更加方便的使用網絡服務。

關鍵詞:SSH 端口 轉發

中圖分類號:TP393 文獻標識碼:A 文章編號:1007-9416(2016)09-0214-01

1 概述

當使用SSH協議進行通信時,SSH協議會對所有SSH客戶端與服務端之間的網絡數據進行自動加解密,從而實現安全通信。但使用者往往忽視了SSH 協議的端口轉發功能,在端口轉發模式下,其他TCP端口的數據可以轉由SSH鏈接自動進行加解密轉發,從而為其他TCP鏈接如Telnet、SMTP、LDAP提供安全加密傳輸通道,避免了一些明文傳輸敏感信息泄露。如果其他網絡端口被限制訪問,但SSH端口沒有被限制,也可以通過SSH端口轉發進行TCP連接,因此利用SSH端口轉發不僅能夠加密SSH客戶端和服務器端的數據通信,也可以解決由于防火墻限制而無法建立TCP連接的問題。

2 端口轉發示例

假設有一臺LDAP服務器只為本地應用提供訪問服務,如果需要臨時從遠程客戶端連接到這臺服務器,就可以使用本地端口轉發實現,在遠程客戶端執行如下命令即可建立一個SSH本地端口轉發。

ssh -L 8100:localhost:389 172.16.100.123

上述命令假設服務器ip為172.16.100.123,本地監聽端口為8100,此時即可將遠程客戶端的應用直接配置至本機8100端口,實際通信過程如下。

遠程客戶端將數據發送至自己的8100端口,而SSH客戶端將8100端口接收的數據進行加密后轉發至服務器SSH服務端,服務器端的SSH服務端解密數據并將其轉發至監聽的389標準LDAP監聽端口,從服務器端相應的數據沿原路以相反流程傳輸。整個流程中客戶端直接連接本地監聽端口,轉由SSH端口轉發完成加密、轉發、解密的通信過程,并沒有直接連接服務器端。

由于整個端口轉發通信過程基于SSH連接,因此必須保持SSH連接以使端口轉發生效,如果SSH連接斷開,顯而易見,整個通信鏈路也隨之失效。另外只能在創建SSH連接時同時建立端口轉發,對已經存在的SSH連接無法額外創建端口轉發。另外還可以使用SSH提供的GatewayPorts關鍵字將已經創建的本地端口轉發共享給其他客戶端。

上面討論了SSH的本地端口轉發,假如由于防火墻的原因不能使用SSH直接從客戶端連接到服務器,但允許服務器到客戶端的反向SSH連接,那么可以使用遠程端口轉發。假設通信拓撲如上例,那么在服務器端可執行如下命令。

ssh -R 8100:localhost:389 172.16.100.234

上述命令假設客戶端ip為172.16.100.234,客戶機監聽端口為8100。實際通信如下。

客戶端數據發送至自己的8100端口,本機SSH服務端加密8100端口接收的數據后轉發至服務器端SSH客戶端,SSH客戶端接收數據并解密,然后將其轉發至監聽的389標準LDAP監聽端口,最后將服務器端的響應數據沿原路以相反流程傳輸。

如何區分本地轉發及遠程轉發?首先要明確SSH端口轉發需要在SSH連接的基礎上實現應用連接,SSH連接及應用連接都是有方向性的,如果SSH連接和應用連接方向一致則是本地轉發,反之則是遠程轉發。

3 其他類型轉發示例

例如在公共的不安全的網絡環境中,可以使用SSH動態轉發對網頁瀏覽進行保護。如下面的動態轉發命令格式。

ssh-D 8100 12.34.56.78

假設8100為本地對外訪問的端口號,12.34.56.78為我們有權限進行連接的遠程SSH服務器,上述命令利用SSH創建了SOCKS代理服務,我們可以在瀏覽器上將localhost:8100設置為正常的SOCKS代理使用。在SSH客戶端和SSH服務器端的通信獲得了加解密保護,但要注意SSH協議也僅能對此段連接進行保護,對SSH服務器端到目標網站的連接是無法保證安全的。

例如系統管理員經常會遠程登錄到如Linux、Unix、Solaris等服務器上并在其上以GUI方式進行程序開發或維護,一般可以使用VNC協議及其工具,本文討論使用SSH結合XWindow實現X協議轉發的方法。

使用XWindows需要X客戶端及X服務器端,如上文所述,X客戶端即為 遠程Linux、Unix、Solaris服務器,X服務器端則是發起訪問的本地機器,一般正常情況下,將X 客戶端的X窗口顯示在X服務器端需要在X客戶端指定X服務器端的位置,如下列命令所示,然后直接運行X應用即可。

export DISPLAY=Desktop:1.0

如果遠程服務器前端增加了防火墻并且不允許X協議通過,此時可以使用SSH端口轉發解決,可在本地機器即X服務器端發起如下列命令所示的SSH連接,在創建SSH連接的同時建立X轉發并對X通訊數據進行加密。

ssh -X 172.168.16.200

連接建立后即可運行遠程X應用,建議不要改變建立X轉發時系統自動設置的DISPLAY 環境變量如localhost:10.0,假如本地機器為Windows,可以選擇 XMing作為X服務器端,SSH客戶端可以選擇如PuTTY、Cygwin均可。

4 結語

本文討論了利用SSH實現本地端口轉發、遠程端口轉發、動態端口轉發及X轉發,基本原理為在SSH連接基礎上轉發TCP連接以解決數據加密和突破限制。每種端口轉發適合于不同的應用場景,對于周知端口的應用可以使用本地或遠程端口轉發,如果需要實現SOCKS代理加密則可以使用動態端口轉發,對于X應用顯而易見可以使用X轉發,讀者可以根據實際情況做不同的嘗試。

參考文獻

[1]巴雷特(美).西爾弗曼(美).SSH權威指南(OReilly原版)[J].中國電力出版社,2003.

猜你喜歡
端口
硬件解耦三端口變換器的軟開關分析與仿真
多按鍵情況下,單片機端口不足的解決方法
交換機生成樹安全
端口阻塞與優先級
系統網絡端口安全防護
LACP實驗環境
初識電腦端口
8端口IO-Link參考設計套件加快開發速度
如何管理網絡端口讓系統更安全
衛星三端口DC-DC變換器技術綜述
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合