網路訪問攻防戰之代理伺服器篇

來源:互聯網
上載者:User

仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷淘寶客 站長團購 雲主機 技術大廳

在上一篇《網路訪問攻防戰》中說到,在很多大型企業中和有些國家中,為了限制員工或人民訪問某些網站或使用某些網路應用程式,通常做了一些訪問限制。 限制的方法通常有路由器IP過濾和強制使用代理伺服器等幾種方式。 那麼,本篇主要講述使用代理伺服器進行網路訪問時的攻防戰。

通過代理伺服器進行網路訪問的很多情況,和直接存取網路的情況十分相似。 代理伺服器能做到不使用代理伺服器的所有過濾方式,這些過濾方式在上一篇中已經有了詳細地說明,唯一的區別是網路訪問的攻防全部在代理伺服器上進行。 也就是說,如果你希望應用直接存取網路的訪問攻防技術到代理伺服器中,那麼首先必須使瀏覽器或網路應用程式設定了代理伺服器。

然而,尋找訪問外網的代理伺服器位址又是一門學問。 有些網路環境是在瀏覽器中直接設置了代理伺服器的位址和埠,這樣獲得其位址十分容易;而有些網路環境使用了「自動代理配置腳本」的功能,以達到訪問不同的網路使用不同的代理伺服器的功能, 其中著名的AutoProxy外掛程式也使用了這種技術;甚至有些網路環境使用了「自動檢測網路代理設置」的功能,以達到電腦在不同的網路環境中都能自動設定代理的功能。 不過,在後兩種設置的網路環境中尋找訪問外網的代理伺服器位址就需要瞭解這些技術了,具體可以參考Proxy auto-config和Web Proxy Autodiscovery Protocol。 如果不熟悉這些技術,也可以通過netstat工具或者sniffer工具找出訪問外網的代理伺服器位址。 這些技術和工具不在本篇中展開討論。

如果你順利找到了代理伺服器的位址,那麼接下來我們就可以分析一下代理伺服器究竟可以做哪些限制,以及如何突破這些限制的方法了。

我們略過上一篇中已經詳細說明的直接存取網路情況下的攻防,來看看代理伺服器還能進一步做哪些過濾。 在此列舉一下通常情況下會碰到的過濾方式:

1、功能變數名稱過濾。 在使用代理伺服器訪問網路時,會遇到某個功能變數名稱下的所有網頁都是訪問被拒絕的情況,這就是功能變數名稱過濾。 然而,通常情況下代理伺服器對於功能變數名稱的過濾只是通過分析訪問位址中的功能變數名稱進行的過濾,而不是通過HTTP代理協定中的Host欄位進行的過濾。 那麼我們可以通過把訪問位址中的功能變數名稱換成功能變數名稱對應的IP位址,來解決這個問題。

2、IP位址過濾。 在訪問網路時,有時候訪問某個IP位址下面的網頁會出現全部拒絕訪問的情況。 和功能變數名稱過濾一樣,這種過濾方式很多情況下也只是對訪問位址中的IP進行過濾,那麼我們可以把IP位址換成對應的功能變數名稱解決問題。 如果這個IP位址沒有功能變數名稱或者暫時找不到其對應的功能變數名稱,也可以為這個IP註冊一個免費的次層網域,之後就可以把IP換功能變數名稱了。

3、 埠過濾。 由於流覽網頁使用的是HTTP和HTTPS協定,這兩個協定使用的預設埠分別是80和443,那麼為了防止人們使用其他協定,很多時候代理伺服器也會限制訪問的外部埠只能是80和443。 碰到這種過濾方式,只能使用支援代理伺服器級聯的軟體訪問其他埠了。 但由於HTTP協定是明文傳輸的,所以也有很多代理伺服器不對HTTP協定的埠進行過濾,只對HTTPS協定的埠限制為443。 如果需要使用其他協定,而其它協定使用的埠正好是 443,那麼我們正好可以利用HTTPS的密文傳輸特性,連接到目標伺服器的443埠,代理伺服器無法知道我們使用的是HTTPS協定還是其它協定。 如果不碰巧,其它協定使用的埠不是443,那麼我們仍舊需要使用支援代理伺服器級聯的軟體訪問其他埠了。

4、探測HTTPS協定頭。 由於HTTPS協定的初始握手過程仍舊是明文的,那麼代理伺服器可以檢測連接到外部443埠的協定頭。 如果不是 HTTPS協定,那麼就斷開連接。 碰到這種過濾方式,我們可以先把正常的HTTPS協定頭sniff下來,加入到通訊雙方,之後再進行其它協定的通訊,就可以解決問題。

5、NTLM密碼認證。 有些代理伺服器使用了NTLM密碼認證,那麼IE使用者不會感覺到有什麼問題,使用了其它內核的瀏覽器或者其它應用程式時,就會提時輸入訪問代理伺服器的口令。 由於很多代理級聯軟體並不支援需要經過密碼認證的代理伺服器,會造成一定麻煩。 可以使用一款名為NTLM Authorization Proxy Server的軟體解決問題。

6、URL過濾。 有時候代理伺服器為了防止使用者訪問某一類特定的應用——比如bbs——會過濾URL中帶bbs的所有訪問請求。 碰到這種過濾方式,我們也只能使用代理級聯的軟體了。

上面大致講述了會經常碰到的代理伺服器過濾方式。 不過由於代理伺服器過濾的方式千奇百怪,本文無法羅列所有的過濾方式。 而且除了代理級聯軟體有現成的之外,其它解決問題的方式都需要代理伺服器消費者自己編寫網路程式,所以其它方式也主要是供大家進行研究的。

最後,我給出使用了HTTP協定進行級聯的軟體原始程式碼,使用方式為java -DHTTP.proxyHost=代理伺服器位址 -DHTTP.proxyPort=代理伺服器埠 net.tools.web.TunnelClient 本地代理伺服器埠 級聯的代理伺服器URL,然後就可以使用本地代理伺服器進行網路訪問了。 比如我們必須通過代理伺服器192.168.0.200:8080進行外部網路訪問,我們可以運行命令java -DHTTP.proxyHost=192.168.0.200 -DHTTP.proxyPort=8080 net.tools.web.TunnelClient 7890 級聯的代理伺服器URL,之後我們把瀏覽器的代理伺服器設置為127.0.0.1:7890即可使用。 我再給出一個級聯的代理伺服器URL為 HTTP://jinshan.isysjs.com.cn/tunnel/。 此URL只供測試使用,請勿濫用。 如果碰到NTLM密碼認證的情況,請參考上述第5種代理伺服器的過濾方式。

如有興趣繼續和我討論有關代理伺服器的網路訪問攻防戰,可以去我經常訪問的論壇(需要使用國外IP進行訪問)找我,或者直接給我發Email。

作者的Twitter: @davidsky2012 ,作者的Google Reader: HTTPs://www.google.com/reader/shared/lehui99 。

原創文章如轉載,請注明:轉載自月光博客 [ HTTP://www.williamlong.info/ ]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.