網絡IP檢測框架的基本設計思路

網絡IP檢測框架的基本設計思路

 

一、考慮IP相關的應用需求

1)在線休閒遊戲中,有些房間爲了防止玩家“開黑店”作弊,限制了同一個IP的兩個賬號不能同時登錄同一個房間,然而玩家通過使用代理服務器隱藏自己的IP,就能逃過這個限制。關於代理服務器的內容,請參見博文:《代理服務器(代理IP)的入門與簡介》

2)有時候,網遊的發佈與更新針對於各個大區並非是同時開放的,比如爲了對升級版本進行測試,只在其中部分大區(如廣東1、湖北1等)開放更新權限,則後臺服務器需要清楚地知道客戶端的IP歸屬區。

3)網遊或論壇的安全小組有權限指定用戶或IP的操作權限,甚至能夠封號或封IP,然而,目前固定IP非常少,網吧或公司很有可能藉助於代理服務器,使內部網與外部網進行互通,所有用戶對外的IP是唯一的。在不瞭解IP特性的情況下,不能輕易封IP。如對網吧中使用外掛的用戶封IP,則該網吧中所有玩家都將無一倖免,這是極其不負責任的。

4B/S模式的各種Web應用(網站論壇)或C/S模式的軟件(網遊)都想了解每天的IP流量、IP的歸屬地、用戶登錄和操作時詳細IP的信息,以便基於IP和用戶相關屬性分析用戶特徵與行爲,從而更好的制定商業戰略。

5)網絡應用的安全管理則期望通過IP信息分析用戶異常的行爲,如QQ的異地提醒,網遊異地登錄交易功能自動限制或鎖定。

6)搜索引擎或GFW能夠屏蔽或封鎖帶有惡意插件、或者宣揚非法、反動、色情、暴力站點的IP

7)網絡應用能夠根據用戶的訪問IP提供更加精確和高質量的服務,如以今年春節在家使用Google搜索“天氣”爲例,搜索結果會默認提供我的家鄉駐馬店市的天氣情況。

 

之所以舉例子,無非是想說:IP對於網絡的各種應用而言十分重要,無論是應用本身還是安全管理。想想看,談到InternetIP地址就不能不提,互聯網上很多服務和特點都是通過IP地址體現出來的,連接於Internet上任意兩臺計算機之間進行相互通信時,它們所傳遞的數據包都會附加上IP地址信息,用於路由尋路,以完成數據傳輸。

通過上述例子,我們可以知道,IP檢測的工作不是針對某一特定的聊天工具、網絡遊戲或Web服務,任何涉及網絡的的應用都與IP息息相關。如果能夠將此擴展形成一個比較通用的IP檢測框架,提供IP信息檢測服務,併爲上層應用提供易於擴展和使用的接口、功能模塊,則可以作爲一個基礎性的平臺架構,用於任何網遊、通信軟件、網站的流量監控分析、限制代理IP用戶、異地登錄用戶操作權限等,提供更加安全可靠的網絡服務。

IP檢測框架的工作將涉及到兩個主要的方面:

1)自頂向下的分析:主動收集、整理、檢測、驗證IP的相關信息。

2)自底向上的分析:利用後臺的Log日誌或數據庫相關信息,藉助於數據挖掘、機器學習的手段分析IP的特性。

 

二、自頂向下的分析:IP地址基本信息的獲取

在瞭解了IP地址的重要性之後,我們需要知道對於任意一個IP地址它有哪些基本的屬性特徵。根據我國2005年頒佈的互聯網IP地址備案管理辦法,這裏面要求了IP地址需要報備的信息:

1)備案單位基本情況:包括備案單位名稱、備案單位地址、備案單位性質、電信業務經營許可證編號、聯繫人姓名、聯繫人電話、聯繫人電子郵件等。

2)備案單位的IP地址來源信息:包括IP地址來源機構名稱、IP地址總量、各IP地址段起止地址碼等。

3)備案單位的IP地址分配使用信息:包括本單位自用的IP地址信息,包括IP地址總量、各IP地址段起止IP地址碼、IP地址使用方式、網關IP地址、網關所在地址;尚未分配的IP地址信息,包括IP地址總量、各IP地址段起止地址碼;向其他用戶分配的IP地址信息,包括所分配的用戶基本信息(包括用戶名稱、單位類別、單位所屬行業、單位詳細地址、聯繫人姓名、聯繫人電話、聯繫人電子郵件)、所分配的IP地址總量、各IP地址段起止地址碼、網關IP地址、網關所在地址、IP地址使用方式。

4)自帶IP地址的互聯網接入用戶信息:包括用戶基本信息(含用戶名稱、單位類別、單位所屬行業、單位詳細地址、聯繫人姓名、聯繫人電話、聯繫人電子郵件)、自帶IP地址總量、IP地址段起止地址碼、自帶IP地址的來源、網關IP地址、網關所在地址、IP地址使用方式等。

結合上述信息,我們比較關心的IP相關屬性可概括爲:

1IP歸屬地:地理位置信息

2IP提供商:機構名稱、IP地址總量、各IP地址段起止地址碼

3IP所屬單位屬性:單位名稱、單位地址、單位性質、聯繫人相關的信息(本單位自用的IP地址信息,包括IP地址總量、各IP地址段起止IP地址碼、IP地址使用方式、網關IP地址、網關所在地址;尚未分配的IP地址信息,包括IP地址總量、各IP地址段起止地址碼;向其他用戶分配的IP地址信息,包括所分配的用戶基本信息、所分配的IP地址總量、各IP地址段起止地址碼、網關IP地址、網關所在地址、IP地址使用方式)

4)自帶IP地址的互聯網接入用戶:用戶基本信息、自帶IP地址總量、IP地址段起止地址碼、自帶IP地址的來源、網關IP地址、網關所在地址、IP地址使用方式等。

Internet IP地址由NICInternet Network Information Center)統一負責全球地址的規劃、管理;同時由Inter NICAPNICRIPE等網絡信息中心具體負責美國及全球其它地區的IP地址分配。APNIC負責亞太地區,我國申請IP地址要通過APNIC,申請時要考慮申請哪一類的IP地址,然後向國內的代理機構提出。當前由於IPV4的侷限性,導致世界範圍網絡IP地址(主要是公網IP)的饋乏,加快了下一代網絡地址的出現,也就是IPV6。今年即2011年,IPV4地址將全部耗盡,Internet將開始過濾到IPV6階段。

通過亞太互聯網信息中心:http://www.apnic.net/homewhois命令來收集整理一些IP屬性。其中,whois的命令可以參考博文:whois命令簡介》

由上述可知對於IP信息的基本屬性,我們通過whois命令即可獲得,whois的使用手冊可以從http://www.apnic.net/__data/assets/pdf_file/0004/8968/Whois-Manual-v1-Feb-2010.pdf下載。

 

三、自頂向下的分析:代理IP主動驗證

在一些網絡應用中可能存在用戶使用代理服務器隱藏自己IP進行惡意攻擊行爲,而在有些遊戲中,房間要防止玩家開黑店,限制了每個房間同IP只能一個登陸一個玩家,玩家通過代理服務器就能逃過這個限制。因此,提供一種在針對玩家IP檢測的技術方案對於網絡應用的安全防禦將是非常有意義的。

檢測目標IP是不是代理服務器的方式的最基本的思路是模擬成客戶端向目標IP的主要端口發送代理請求,通過響應來判斷目標IP是不是代理服務器。玩家在網絡應用中所使用的主要代理方式爲:

1HTTP CONNECT代理:允許用戶建立TCP連接到任何端口的代理服務器,這種代理不僅可用於HTTP,還包括FTPIRCRM流服務等。

2SOCKS代理:是全能代理,就像有很多跳線的轉接板,它只是簡單地將一端的系統連接到另外一端。支持多種協議,包括HTTPFTP請求及其它類型的請求。它分SOCKS 4 SOCKS 5兩種類型,SOCKS 4只支持TCP協議而SOCKS 5支持TCP/UDP協議,還支持各種身份驗證機制等協議。其標準端口爲1080。如下圖所示的QQ中,就可以設置使用SOCKS5代理。

關於端口的選擇,HTTP CONNECT代理,常用端口8081312880008080SOCK4代理,常用端口1080SOCK5代理,常用端口1080。我們在檢測目標IP時,可以利用多線程技術,同時向多個端口發送請求,加快檢測速度,掃描80813128800080801080五個常用端口。

然而,也存在有一些代理服務器使用的端口爲非常用端口,單純的檢測常用端口的方案將無法捕獲。因此,我們還需要增加一種輔助的檢測方案。如果從玩家本身的思維出發考慮,玩家想要隱藏自己的IP,就需要利用搜索引擎尋找一些提供代理IP服務的站點,同樣地,我們也可以獲取的這些站點所提供的代理服務器的信息。如果建立一套輔助的多線程抓取爬蟲,從這些站點上抓取代理IP的信息,並進行定時地更新,就能夠保證更大程度上地對使用代理的玩家做出防禦與限制。同時,由於VPN類型代理的消息驗證難於實現,因此,使用網頁抓取的方式驗證VPN代理應該是一種解決思路。在使用爬蟲收集網絡上公開的代理IP的過程中,我們可以統計分析它們的端口設置,除驗證5個常用端口外,對其他一些經常出現的端口也進行檢測。

最初的時候,爲了驗證我們的想法,爬蟲的設計未必需要過多的智能化,我們可以先收集一些較爲常用的網站列表,讓爬蟲定期去爬取數據。待整體框架比較清晰明瞭之後,可嘗試讓爬蟲實現自適應、自更新、自學習地去主動尋找代理IP。我在網上找到了一些提供免費的代理IP的站點:

http://www.cybersyndrome.net/

http://www.pass-e.com/

http://www.cnproxy.com/

http://www.proxylists.net/

http://www.my-proxy.com/

http://www.samair.ru/proxy/

http://proxy4free.com/

http://proxylist.sakura.ne.jp/

http://www.ipfree.cn/

http://www.publicproxyservers.com/

http://www.digitalcybersoft.com/

http://www.checkedproxylists.com/

 

我們只關心最爲常用的HTTP代理和SOCKS代理的驗證,綜上而述,對於一個用戶的IP的檢測行爲可以分爲以下幾步:

1)利用爬蟲定期抓取互聯網所能搜索到的代理IP的信息,分析常用的代理端口,並對這些代理IP進行驗證,建立原始的代理IP數據庫。

2)判斷用戶IP是否已經進行過驗證,是則從驗證結果的名單中獲得,跳轉至第(4)步。

3)由代理IP主動驗證模塊模擬客戶端向目標IP發送代理請求以判定是否爲代理IP,並將驗證結果加入到相應的結果名單中。

4)輸出IP的驗證結果。

 

單純針對代理IP驗證組件(Proxy IP Verification Component, PIPVC),其結構圖可以設計爲如下圖所示。爲保證組件的可複用性,我們需要對網絡應用如網遊A、網遊B網站W後臺產生的LogDB或緩存中所存儲的IP信息進行格式化處理,對代理IP驗證組件屏蔽與網絡應用相關的業務邏輯。

其中PIPVC包含了三個主要模塊:(1)代理IP主動驗證模塊:模擬客戶端向目標服務器發送代理IP請求,根據目標服務器的反饋來判斷是否爲代理IP。(2)代理IP爬蟲:定期抓取站點上所提供的代理IP的信息,並收集、整理、分析除5個常用端口外代理服務器最經常使用端口,爲代理IP主動驗證模塊增加必要的檢測端口,提高查全率。(3)名單更新模塊:定期驗證已經獲得的名單信息是否仍然有效。名單的I/O將提供靈活接口,支持緩存、DBLog等方式的寫入與讀取。

PIPVC的輸出結果可以提供給網遊A、網遊B或網站W限制代理IP用戶的上層應用邏輯所使用,從而實現與業務邏輯相關的安全訪問控制的功能。代理IP爬蟲具體的實現技術方案、細節、源代碼將會在後續的博文:《用Python實現自動抓取代理IP的爬蟲》中進行詳細的講解,請關注本博客的更新。

代理IP主動驗證模塊採用多線程形式完成IP的檢測工作,其模塊構造圖如下圖所示,具體細節尚未涉及,整個驗證作業的框架流程可以參照博文:一種面向作業流(工作流)的輕量級可複用的異步流水開發框架的設計與實現

 

代理IP檢測線程構造示意圖如下圖所示,主要包括了SOCKS4SOCKS5HTTP CONNECT檢測,具體的驗證流程、細節以及源代碼,將會在後續的博文:《代理IP的驗證原理與代碼實現》中將會進行持續的更新,請關注本博客的更新。

四、自頂向下的分析:教育網IP網段

教育網CERNET是由國家投資建設,教育部負責管理,清華大學等高等學校承擔建設和管理運行的全國性學術計算機互聯網絡。它主要面向教育和科研單位,是全國最大的公益性互聯網絡。教育網以中心節點à地節網絡中心和地區主結點à省教育科研網à校園網的方式部署,中心節點在清華大學,38個省級高校節點,800個以上的校園網。

教育網是有固定網段的,在CERNIC上有個查詢系統可以確定某個IP是否是教育網IPhttps://www.nic.edu.cn/cgi-bin/reg/Qfreeip,同時會告訴你此IP是否屬於教育網的免費IP段。

教育網用戶的IP特徵判定:可直接查詢教育網網段,即可判斷一個IP是否是教育網IP。教育網IP網段信息可參考博文:《教育網IP網段(部分)》,更詳細的教育網IP網段可從CSDN資源庫下載:教育網IP網段整理清單(200947日)

 

五、自底向上的分析:獲取隱含的IP屬性

在自頂向下的分析過程中,我們通過whois可以瞭解基本的IP屬性信息,又能利用檢測技術和手段驗證是否爲代理IP。然而,一些隱藏的IP屬性我們無法獲知,這便有了自底向上的分析過程,幫助我們更加清晰地掌握用戶的IP動態。在這一過程中,我們期望獲知用戶更加具體的IP環境,如是否是網吧、公司、固定IPADSL等。沒有來得及深究其中細節,現只記錄思路:

XDSL:數字用戶線,分爲ADSL(非對稱)HDSL(高速),利用傳統電話線路的高頻部分傳輸數字信號。接入方式: PPOE的虛擬撥號方式,適用個人用戶,非固定IP;固定IP方式,適用於小型企業,網吧用戶。

1ADSL用戶IP特徵:用戶沒有固定IP,每次用戶接入互聯網,則ADSL會從IP池中爲用戶分配一個空閒IP,用戶使用完後,IP即被回收,如下圖所示的“自動獲得IP地址”選項。則一個IP會對應若干MAC地址,而任一MAC地址又對應若干IP。即一個MAC集合,對應一個IP段,但某一個時間點上,一個IP只對應一個MAC。但一個IP所對應的MAC量相對較少。

 

2)網吧或企業用戶IP特徵:多個MAC對應一個IP,在一個時間點上,大量的MAC對應於一個IP。網吧幾乎在任何時刻用戶量都是很大的,尤其是深夜時分,因爲包夜的人多,而企業則不同,到了深夜就幾乎沒人了;網吧遊戲玩家比較多,企業則以辦公爲主,依靠這些特徵,並結合具體的應用場景可以把網吧跟企業的IP環境做次細分。如某款遊戲在午夜仍然有大量的MAC或賬號對應同一IP,則很有可能是網吧用戶。

3)固定IP用戶:一個MAC對應一個IP,該類用戶數量較少。可統計分析相對較長一段時間內用戶的IP是否一直不發生變化。

網遊、網站或網絡應用的後臺會記錄大量的與用戶IP相關的信息(如登錄、登出、在線時長等),按照上述的規則,建立相應的數據挖掘和機器學習的模型,我們可以更加動態、靈活地掌握用戶IP更加隱含的信息。

單純針對IP特徵挖掘組件(IP Feature Mining Component, IPFMC),其結構圖可以設計爲如下圖所示。爲保證組件的可複用性,我們需要對網絡應用如網遊A、網遊B網站W後臺產生的LogDB或緩存中所存儲的IP信息進行格式化處理,對IP特徵挖掘組件屏蔽與網絡應用相關的業務邏輯。

其中IPFMC包含了五個主要部分:(1IP特徵描述規則:制定一系列的數據挖掘和機器學習的條件和規則。(2ADSL用戶IP特徵挖掘模塊:識別IP環境是否爲ADSL。(3)網吧用戶IP特徵挖掘模塊:識別IP環境是否爲網吧。(4)企業用戶IP特徵挖掘模塊:識別IP環境是否爲企業、公司。(5)固定IP特徵挖掘模塊:識別此IP是否爲固定IP

IPFMC的輸出結果可以提供給網遊A、網遊B或網站W上層應用邏輯所使用,從而藉助於IP實現相關的業務邏輯控制。這學期準備自學數據挖掘和機器學習的東東,目前對於這塊內容的考慮還不是太成熟,我會繼續努力的。IP特徵挖掘具體的實現方案、細節、源代碼將會在後續的博文:《利用數據挖掘分析網絡IP隱含屬性》中進行詳細的講解,請關注本博客的更新。

六、網絡IP檢測框架

綜上而述,我們可以得出通用的網絡IP檢測框架的基本構架圖如下所示:

七、IP相關的安全應用實例

1)從3個月的登錄/登出Log日誌中獲取用戶賬號對應的IP段,將每天的IP按歸屬地歸類後存入數據庫,將今天出現的IP段活躍天數+1,計算出所有IP段的活躍天數,以此來判斷用戶某次IP登錄是否有異常,是否爲異地登錄,是否需要對比較重要的功能進行限制等。如下圖所示的QQ異地登錄提醒。

 

2QQ客戶端登錄的IPDNF/CF(騰訊代理的網遊)登錄的IP相差太大時,這種可以理解爲突然之間的異地登錄,此時遊戲賬號有可能被盜,這種情況下的遊戲道具交易功能將被鎖定。

3)統計用戶在線時長、在線鐘點等規律,判斷用戶的身份、操作行爲與習慣,精確瞭解和掌握產品的消費動向,更精確地制定和推廣商業戰略。

 

八、總結

網絡IP檢測框架思想來源於暑假實習時所參與的一個課題,當時是集中於如何實現代理IP的驗證。在做的過程中,我就感覺到很有必要擴展思維,在此基礎上形成一個比較通用的IP檢測框架,提供給各種網絡應用的上層使用。趁寒假這段時間,先把這個思路整理一下,很多細節會在後續博文中進行詳細介紹。時間有限,疏漏在所難免,各位看觀見笑了~

發佈了97 篇原創文章 · 獲贊 132 · 訪問量 120萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章