Socks Proxy如何讓你更安全的瀏覽網際網路

天府雲創發表於2018-03-06

在不使用VPN的情況下如何保證在瀏覽網頁資料的時候更安全更隱私呢?Socks proxy和SSH將會給你答案。

在進入正題之前我們首先需要了解一下Socks proxy,什麼是Socks proxy?

Socks 伺服器通常是作為一個代理伺服器,充當一箇中間代理的角色,與客戶端以及真正的服務端建立TCP連線,然後負責對客戶端與服務端之間的流量進行路由和轉發。一個socks代理伺服器能夠與任何一種網路協議進行工作,今天我們將使用SSH協議,而今天我們要使用的是Socks version 5, 該版本的socks加強了安全和UDP協議的支援。socks伺服器在客戶端與真正的伺服器之間僅僅進行流量傳輸的工作,不進行任何額外的工作,充分保證了資料的安全性。

那麼socks proxy是如何工作的呢?

首先需要在你本地安裝一個socks客戶端,我使用的是windows作業系統,因此socks客戶端選擇的是PuTTY,瀏覽器使用的是Firefox。

socks客戶端首先與socks伺服器建立連線,socks協議要求對連線請求進行認證。你通過代理伺服器向外部的服務端傳送請求,外部伺服器只知道proxy伺服器的存在,這就是為什麼socks proxy在隱私方面做的很好的。

接下來就如何利用SSH協議建立Socks proxy進行詳細說明。

首先是需要準備的伺服器和環境:

VPS(Virtual PrivateServer),需要準備一臺執行Linux作業系統的伺服器,並且能夠SSH登陸;

Firefox 瀏覽器

PuTTY,SSH登陸客戶端

Mac OS X/Linux中建立SSH Tunnel

伺服器和環境都準備好之後,接著就是建立SSH Tunnel。需要根據客戶端機器作業系統型別來選擇建立SSH Tunnel的方式。如果是Mac OS X或者Linux使用者,則使用下面的方法。

開啟SSH客戶端,輸入以下命令來建立tunnel:

ssh -D 1026 -f -C -q-N name@IP

上述命令引數說明如下:

-D:這個引數是告訴SSH在指定埠上建立SOCKS proxy,這裡的指定埠是1026;

-f:使SSH命令在後臺執行;

-C:對所有資料進行壓縮;

-q:使用安靜模式執行命令,告警和診斷資訊將不被輸出;

-N:告訴SSH一旦tunnel建立不允許執行遠端命令,防止被人惡意利用;

最後需要將name@IP替換成sudo使用者名稱和VPS的IP地址。

命令會在後臺執行,可以通過ps aux|grep ssh檢視程式是否有在正常執行。

如果需要關閉程式,殺掉執行的程式即可:

sudo kill 2016 windows 中建立SSH Tunnel

在windows中可以在PuTTY中進行配置,建立SSH Tunnel。

啟動PuTTY,選擇Session,在Host Name中輸入VPS的IP地址,埠預設22,也可以指定其他埠,需要根據服務端的ssh服務埠來指定,Connect Type選擇SSH,然後重新命名當前配置並儲存session。

接著在PuTTY左邊的樹型選單中選擇Connection–>SSH–>Tunnels,在Source port中輸入1025到65536中的任意一個數字,點選Add,就能在Forwareded Ports中看到新增的埠資訊,選擇Dynamic:

最後點選Open,會彈出一個新視窗需要輸入登陸VPS伺服器的使用者名稱和密碼,輸入正確的使用者名稱密碼之後,就能登陸到VPS上併成功建立tunnel。

需要關閉tunnel的話非常簡單,只需要關閉PuTTY視窗即可。

配置Firefox使用SSHTunnel

Tunnel已經成功建立,接下來就是配置Firefox利用建立的SSH Tunnel瀏覽網頁。

啟動Firefox,點選右上角的選項卡,並選擇”選項”選單:

滾動到”選項”頁的最底部,選擇設定網路代理,在連線設定視窗,選擇”手動代理配置”,在SOCKS Host中填寫localhost或者127.0.0.1,埠填寫上面設定的12345,協議選擇預設的SOCKS v5,點選OK即可。

這樣一個socks proxy就搭建完成了,接下來我們看看效果。在chrome瀏覽器(沒有使用socks代理)中開啟百度,輸入ip點選搜尋,可以看到顯示的IP為當前網路環境的公網IP地址;

接著在Firefox中開啟百度輸入ip點選搜尋,可以看到顯示的ip地址發生了變化,變成了我配置的socks proxy所在的公網IP地址。

到此,儘管訪問網頁的流量被加密轉發了,並且對於目標伺服器來說訪問源IP改變了,但是DNS查詢的時候記錄的仍然是你本身所在的網路,並沒有做到完全的保密。這種情況也是有解決方案的。

開啟Firefox瀏覽器,位址列中輸入about:config進入瀏覽器的內部設定,在使用該配置的時候要非常的謹慎,配置不當可能會使瀏覽器無法正常使用。在彈出的告警對話方塊中點選”我瞭解此風險!”進入下一個頁面。

在頂部的搜尋欄中輸入”network.proxy.socks_remote_dns”,然後雙擊該配置項,配置就發生了變化,狀態由預設變成了已修改,值由false(預設值)變成了true。配置生效後,Firefox就會使用代理轉發DNS請求而不是在本地解析。

上面這種方式實現的socks proxy只是一種簡單的代理方式,只能保證在瀏覽器中的上網行為被保護起來了,通過其他方式訪問網際網路的行為(例如APP)無法通過socks proxy保護資料安全。如果需要所有網際網路訪問被保護起來,就需要使用VPN了。

相關文章