用 SSH Tunnel 來避免防火牆阻擋實作與反制

2015-05-18 CentOS

這幾天在工作上運用到一個小技巧,就是利用 SSH Tunnel 來執行許多任務

 

Tunnel 本身是一個網際網路協議,在應用上通常會用 SSH 來加密並且規避防火牆的阻擋,因為 ssh 22 port 在一般公司環境很少會阻擋

 

有點技術概念的使用者通常會用在公司防火牆阻擋對外連線的時候用到,可以透過 SSH Tunnel 來種菜、聊Skype、看看推特等等

 

其實 SSH Tunnel 就有點類似 Proxy 的概念

SSH_Tunnel

 

 

SSH Tunnel 有幾種應用方式

  • Local Port forwarding (Local to Remote)
$ ssh -L 8080:192.168.121.254:80 admin@shazi.twbbs.org

當我 ssh 到 shazi.twbbs.org 後,會開啟 Local 端 8080 port 對應到 192.168.121.254:80

這時只要我的 ssh 開著,打開瀏覽器開啟 localhost:8080 就可以連到 gateway 254

 

  • Remote Port Forwarding (Remote to Local)
$ ssh -R 8080:localhost:8088 shazi.twbbs.org

當我 ssh 到 shazi.twbbs.org 後,會在 Local 端開啟 8088 port 並對應到 shazi.twbbs.org 的 8080 port

在 shazi.twbbs.org 開啟 8080 port 所有的流量都會導到 Local 的 8088 port

與 Local Port forwarding 的概念反轉

 

  • Dynamic Port Forwarding
$ ssh -D 127.0.0.1:8080 admin@shazi.twbbs.org

一般搭配 Socks Proxy 也是上班族最常用到的方式之一,利用外部的 ssh Server 來上網

 

 

Dynamic Port Forwarding 搭配 Socks Proxy 來上網

用 Dynamic Port Forwarding 透通之後,就可以到 網際網路選項 的「連線」→「LAN設定」

勾選啟用 Proxy 設定,並且點選「進階」

2015-05-18_144435

 

取消勾選「所有通訊協定都使用相同的 Proxy 伺服器」,然後在 Socks 填上 127.0.0.1 : 8080 (Dynamic Port 開啟的 Port)

2015-05-18_144510

 

 

設定完成之後,瀏覽器就可以正常上網了

檢測一下 IP,流量確實從 ssh 伺服器出去,而不是本地端

2015-05-18_144604

 

 

 

putty 也可以提供 SSH Tunnel 的功能

找到 Connection→ SSH→ Tunnels

-L 代表 Local

-R 代表 Remote

-D 代表 Dynamic

2015-05-18_092915

 

 

 

 

最後,雖然整篇都在寫如何用 SSH Tunnel 來突破防火牆,身為系統人員也還是需要有對策

 

若是身處的網路環境夠嚴謹,可以將使用者的網段切 VLAN,並禁止 22 Port

或是採用有 L7 的防火牆來限制 SSH 存取權。

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱