仇英俊, 羅 浩, 張樹壯, 吳志剛
(北京郵電大學 網絡技術研究院, 北京 100876)
理解網絡中主機的行為模式,對其規律和特性進行利用,對于提高網絡的運行效率、維護網絡安全具有重要的意義。當網絡中主機數量規模比較小時,可以通過分析流量內容實現對主機的細致觀測。但隨著網絡中主機數量的增加和網絡應用類型的多樣化,在大規模網絡中分別對每臺主機來提供觀測已經不再切合當下實際狀況,對網絡的測量和監管已然成為一個富含挑戰性的研究課題。近年來,從網絡社團的角度來研究網絡中主機的行為模式受到研究者們關注。
計算機網絡可以抽象為網或者圖系統,是復雜網絡的一個特例。在復雜網絡中,社團根據節點之間的連通性可定義為由一組內部之間聯系緊密而與外部連接稀疏的集群節點組成[1]。發現并探討復雜網絡系統中的社團對于理解整個系統的構成、演化等方面則將發揮基礎性的優勢推動作用。對于計算機網絡而言,社團通常被認為是由一組有著共同目標或處在同一環境中的主機組成[2],即網絡中的主機會因為訪問相同的網站或使用相同的網絡應用而形成網絡社團。相比于逐臺主機的監測方法,了解網絡中社團的屬性及行為模式相當于對原始數據進行“壓縮”[3],此時只要觀察一個社團中的少量的主機或流量,就可以確定同社團中其它成員的屬性及行為,因此可以更加快速、有效地了解網絡整體的運行情況。研究計算機網絡中的社團可以用于未知流量檢測[4- 5]、網絡流量分析[6- 7]、僵尸網絡檢測[8- 9]、網絡應用識別[10]等方面,可以為網絡管理員進行網絡資源配置、病毒防護等工作提供重要依據,對于維護網絡安全也有著重大影響與研究價值。
在當前的研究中,網絡社團并沒有一個統一明確的描述,但根據各自的研究目標,網絡社團可以從2種角度給出定義。一種是根據主機通信行為的相似程度進行定義,另一種是從通信關系的緊密程度予以定義。因此網絡社團發現方法可以分為2類,分別是基于主機行為聚類的方法和基于拓撲劃分的方法。其中,考慮到一般情況下將無法事先確定網絡中社團數量及社團的規模,因此基于主機行為模式的無監督或半監督聚類方法被提出來[11-13]。這類方法首先從主機通信時產生的流量中提取出特征,包括端口號、負載信息等統計值,然后使用聚類算法找出流量行為相似的主機集群。但該類方法的不足就在于容易受到加密技術和混淆技術的影響而得到不準確的聚類結果[12]。另一類方法是根據主機之間的連通性,將主機之間的通信關系用圖來表示,然后使用圖分割的方式找出連接緊密的主機集群[6, 14-16]。這類方法僅僅討論了拓撲信息,而當固有的拓撲結構中存在多種類型流量時,卻無法得出更加細致的社團劃分,例如一個CDN節點上緩存了多個網站的內容,所有訪問這個節點的主機會被籠統地看作是一個聚類,而不能因訪問的網站不同而被區分。
這2類方法發現的網絡社團僅能說明社團中的成員主機在通信關系或流量行為單一的某個方面存在相似性。隨著網絡應用種類的多樣化,每一臺主機都會同時參與多種應用,僅通過單一角度得到的網絡社團并不能全面反映網絡中主機當前所處的狀態及網絡資源的使用情況,因此本文所研究網絡社團同時結合通信關系和流量行為特征2方面因素,同一網絡社團內的主機既在通信關系上具有聯系,又在通信行為模式上呈現出相似性。為此,本文研發提出了一種新的網絡社團發現方法,將網絡中的通信節點按照通信關系劃分成不同的子網。然后,為了發現通信關系相同但通信行為不同的情況(例如攻擊),本文又使用聚類的方法,進一步區分同一子網內的傳輸行為不同的網絡流。綜合上述2個步驟就可以實現更加準確的網絡社團發現。本文的貢獻在于:
(1)重新定義了網絡社團,即社團中主機具有通信關系相似及通信行為相似2方面特性。同時社團中包括了服務端和客戶端,而不是僅僅將訪問共同目標的客戶端集合稱為社團,有利于網絡的測量與分析。
(2)用
(3)提出一種新的網絡社團發現方法。這種方法結合網絡關系及流量聚類2方面,可以得到更加精確的網絡社團發現結果,例如發現同時承載多種服務的IP、區分訪問同一
在此基礎上,本文將按如下方式進行組織。首先研究了不同種類的網絡社團發現方法,其次論述了本文提出的網絡社團發現方法的設計與實現,包括網絡拓撲劃分和網絡流聚類2方面,然后展示、及評估了網絡社團發現結果,并對典型社團進行分析,以說明本方法的實用價值。最后是本文的結論及未來的工作。
區分不同的行為模式的主機集群對網絡安全的影響的分析研究課題正日漸受到研究人員的廣泛關注。在進行網絡通信過程中,使用相同網絡應用的主機所產生的流量在行為特征上會表現出相近的模式,運用這些模式就可以定量地表示主機的通信行為,并以此達成主機分類的目的。而分析可知,網絡中應用和主機的數量是無法事先確定的,因此無監督和半監督聚類方法常常用來區分不同行為模式的主機。Terzi等人[17]在分布式計算環境中,提取出端口、目標IP和負載等相關特征來描述源IP地址的通信行為,并對源IP地址進行聚類,以發現僵尸網絡。Wei等人[13]從網絡流量數據中識別出活躍主機,并從這些主機的報文頭部中選取了相關特征,使用層次聚類算法構建主機樹狀圖,找出行為相似的主機集群。Jakalan等人[10]設計算法找出網絡中重要的IP節點,提取了15個通信模式特征,使用dbscan聚類算法得到主機集群,再通過比較不同集群中主機的特征值來分析聚類結果。Shadi等人[18]將TB級流量數據中的IP,按傳輸的數據量和所屬的地址塊匯聚到一個樹形結構中,用于查找企業網絡中流量最大的IP地址塊。Dewaele等人[11]提出了描述主機通信模式的9個特征,而且使用最小生成樹的無監督聚類方法來區分不同類型的主機。Iliofotou等人[12]提出了一種基于標簽傳播的IP地址分類方法,該方法只需要知道IP之間的連通關系和少數IP主機的應用程序使用情況,就可以對所有IP進行分類。
由于網絡中主機間表現出的通信行為與社會網絡中的社會行為類似,故而社會網絡中的社團發現方法也被運用在計算機網絡中,其中二部圖模型即可用于描繪網絡中主機的通信關系。在網絡的二部圖模型中,主機被分為完全獨立的2個集合,這2個集合之間的連線表示了主機間的通信關系。二部圖一個集合中的主機會根據對另一集合中主機的訪問情況,而被分成不同的網絡社團。Xu等人[6, 16]通過分析主機間通信關系,提出一種新方法來研究網絡中社團行為相似的主機。該方法先根據主機所處的網段,將整個網絡分為2部分,構建二部圖,然后使用單模投影的方法,統計同一網段下主機對網段外主機的訪問情況,構建相似矩陣,最后對主機使用譜聚類的方法,將同網段下的主機分成行為模式互不相同的若干集群。類似地,Jakalan等人[14- 15]使用邊界路由上獲取的NetFlow數據集構建二部圖。為了描述管理域內IP在社會關系上的相似性,研究中進一步對二部圖應用了單模投影,同時構建相似矩陣,最后設計算法對相似矩陣進行迭代,得到最終的網絡社團劃分結果。
上述方法均是將主機(或IP)作為一個整體進行操作,一個主機(或IP)會被劃分至唯一的網絡社團當中。而事實上,一個客戶端可以同時使用多種網絡應用,一個服務器也可能同時提供多種服務,這就使得一個主機(或IP)可以同時屬于多個網絡社團。為了更好地分析網絡中社團存在情況,本文設計給出了一種網絡社團定義及發現方法。該方法將主機同時提供不同服務或者參與不同應用的情況考慮進來,可以更清楚地表示通信關系。在對通信關系圖做出分割后,又根據通信行為特征對主機進行聚類,最終可以得到有意義的網絡社團發現結果。
與已有的研究類似,本文擬將研究的網絡社團在本質上也是由網絡中節點(主機或IP)構成的集合。但本文在此基礎上深入細化了網絡社團的定義,社團中的節點要同時具有2方面特性,對此可做如下闡述:
(1) 存在服務提供節點(也稱為領袖節點)且其它成員節點與領袖節點具有相似性的通信關系。
(2) 成員主機與領袖節點在通信行為模式上具有相似性。
同時滿足這2個條件的主機集合,研究將其稱為網絡社團,下文將簡稱為社團。比如服務器A、B提供不同的服務,有客戶端1~7與2個服務器按照圖1中連線的方式進行通信,線的形狀用于不同的通信行為。根據上面對社團的描述,可以將圖中的節點劃分成3個社團,即{A,1,2}、{A,3,4,5}和{B,4,5,6,7},其中A和B作為領袖節點決定了社團的類型,1~7作為成員節點為了獲取某種網絡服務而與領袖節點通信。{1,2,3,4,5}雖然都與A發生過通信,但是由于{1,2}與{3,4,5}在通信行為模式上存在不同,則仍然分屬于不同社團。通信行為模式不同,究其原因可能在于服務器A同時提供多種服務,也可能是部分客戶端{1,2}或{3,4,5}都以非常規方式訪問服務器。本文研發提出的方法就是為了找出網絡中滿足上述2個條件的社團結構。

圖1 社團示意圖
本文提出的方法分成2部分。研究中,就是根據通信節點之間的通信關系,將網絡關系圖劃分成多個子網。一個子網由一個領袖節點(通常是服務節點)和多個成員節點(通常是客戶節點)及節點之間連線(網絡流)組成。一個子網中可能存在一種或多種網絡服務或應用,因此要根據網絡流的統計特征,將同一子網中的節點進一步劃分,找出在連接性和流量特征都相似的主機集合,即為最終的社團發現結果。對此,將展開如下研究論述。
一個網絡社團通常是由一個服務節點及多個客戶節點共同組成。如果能先找出網絡中的服務節點,那么服務節點及其鄰接節點就會組建構成一個子網,有利于后續研究中的社團發現。
一段時間內的網絡關系可以用圖來表示,在許多研究[2-4, 6, 14-16]中都是將IP作為實體,在圖中用節點進行表示。如果2個IP之間出現了數據傳輸現象,那么就用一條邊將這2個IP代表的節點連起來。分析發現,短時間內主機與IP對應關系基本不會發生改變,因此IP的行為即代表對應主機的行為。這種表示方式也存在一定的局限性。首先,將無法從拓撲結構上判斷出一個IP是服務器還是客戶端。比如圖2所示的結構,其中1號節點既可能表示一個服務器接受許多客戶端的訪問,也可能是一個客戶端同時使用多種網絡服務而與多臺主機通信。其次,是無法從拓撲結構上判斷一個服務器提供幾種服務以及每種服務所對應的客戶端都有哪些。

圖2 通信關系
對于絕大多數的網絡服務或應用,網絡服務需要開放固定端口來響應許多客戶端發出的請求,端口的使用情況對于準確判斷一個服務提供的服務種類及數量將頗有助益。因此本文將
(1)可以準確地區分出服務節點與客戶節點。客戶端在與服務器進行通信時,通常會使用多個端口,而服務器通常只用固定的端口,這種端口上的差異就可以使得服務節點獲得較大的度數,從而可以清晰地識別出一個節點的身份。即使是一個IP同時訪問多個服務器,服務節點度數較大的現象也不會發生改變。
(2)可以識別出同一IP承載多種服務情況。同一IP會為不同的服務類型而開放不同的端口,因此
服務節點和客戶節點組成了網絡中常見的結構——C/S型結構。在這種結構中通常有一個服務節點與多個客戶節點。短時間內,每個客戶節點只與服務節點進行通信,而不與其它的客戶節點直接通信。因此在鄰接節點的數量上,服務節點和客戶節點存在明顯差異,即對于某一網絡服務或應用,服務節點的鄰接節點多,客戶節點的鄰接節點少。定義鄰接矩陣A,其中每個元素的數學表述如下:
(1)
對于節點i,這里定義集合的數學表示如下:
Pi={p|Aip=1}
(2)
Qi={q|Apq=1,p∈Pi,q?Pi,q≠i}
(3)
研究推得,|Pi|與|Qi|分別表示集合Pi和Qi中元素個數。如圖2所示,對于所有節點i=1,2,3,4,5,6,7,8來說,各自的Pi與Qi可參見表1。

表1 各節點的Pi與Qi
由表1可以看出,C/S結構中對于核心節點有|Pi|>|Qi|,而邊緣節點|Pi|<|Qi|,因此對于任意節點,該節點的|Pi|與|Qi|的大小關系,可以反映其在網絡中所處的位置或身份。為了驗證這一論點,文中使用某企業邊界路由上采集的NetFlow日志,以
基于上述設計,就可以將網絡中的通信節點(用
算法1網絡劃分
輸入:節點列表nodes
輸出:節點所屬子網編號列表C
1: 初始化C中所有元素值為-1,c=0
2: Foriin nodes:
3: ifC[i]!= -1:
4: continue
5: 計算Pi及Qi
6: if |Pi|+|Qi|>2 and |Pi|>|Qi|:
7:C[i] =c
8: forjinPi:
9:C[j] =c
10:c+=1
11:returnC
其中,變量c是待分配的子網編號,變量C記錄了每個節點所屬的子網編號,如果一個節點已經被分配過一個子網編號則跳過。如果節點i的|Pi|+|Qi|值非常小(不大于2),則說明節點i及其鄰接節點構成的子網也很小,不足以構成一個有影響力的社團,可以被忽略。
在大部分情況下,使用2.1節中的方法得到的節點劃分結果可以描述網絡中的社團存在情況,但是由于某些惡意行為是依托固有的通信關系,通過發送惡意報文來實現的,比如DDos攻擊、蠕蟲、木馬等等。因此本文接下來會通過聚類方法,將同一子網內的通信流量按照傳輸數據的統計特征進一步區分,以得到最終的社團發現結果。綜上研究過程后可以得知,社團內成員無論在通信關系上,還是在通信行為模式上都有著極高的相似性。
2.2.1 網絡流聚合及特征提取
經過網絡拓撲劃分后,具有密切通信關系的節點會被劃分到同一子網中。大部分情況下,在短時間內一對IP之間只會圍繞一種網絡服務進行通信,因此可以將同一子網中節點之間的網絡流,按照IP對進行聚合來提取通信行為特征。這樣就不僅避免了個別離群的網絡流對社團劃分結果的影響,而且可大幅降低用于聚類的實例數量,同時也減少了聚類運算的時間。
網絡流通常用五元組表示,即:<源IP,目的IP,源端口,目的端口,網絡協議號>。NetFlow日志中以五元組為標識,記錄了每一條網絡流的統計信息,比如各方向的包數、字節數等。在聚合過程中,會將每一對通信IP之間的所有網絡流進行組合,進而提取出一個特征向量用于描述這一對IP之間的通信行為。其中包括的內容可解析如下。
(1)源IP地址使用的不重復端口數量。
(2)目的IP地址使用的不重復端口數量。
(3)協議號的平均值。
(4)上/下行流包數最小值/中位數/最大值。
(5)上/下行流平均包長最小值/中位數/最大值。
總地來說,特征1,2反映了一對通信IP地址端口的使用情況。特征3用于反映一對通信IP地址傳輸層協議的使用情況。本文只研究協議號為6(TCP)及17(UDP)的網絡流。特征4反映一對IP傳輸報文數的分布情況,特征5反映了一對IP傳輸報文長度的分布情況。此番特征提取后,一個子網內IP對之間的通信行為模式就做到了精準的定量化描述。
2.2.2 預處理及聚類
為了統一每個維度的權重,在聚類前要對同一子網內的實例(即IP對)特征值進行歸一化。本文將使用最大最小值縮放將特征縮放到[0,1]。假如一個子網中有N對發生通信的IP對(即聚類的實例),縮放運算可寫作如下形式:
(4)
其中,i表示待聚類的實例序號;Fik表示第i個實例的第k個特征值,k=1,2,…,15;Fk表示待聚類所有實例的第k維所有特征值構成的數列;max(Fk),min(Fk)表示對Fk求最大、最小值;fik是歸一化后的特征值。
至此,本文將使用dbscan聚類算法[19]來處理每個子網中的所有的實例。dbscan是一個基于密度的聚類算法,不需要指定聚類的數量。在缺失先驗知識的情況下,一個子網中的網絡流的種類數及每個種類中流的數量是不確定的,所以非常適合用dbscan來進行聚類。dbscan算法將歸一化后的特征向量矩陣作為輸入,矩陣的每一行表示一對IP間的網絡流,每一列表示一個特征維度。算法會輸出一個標簽數組,數組中每個元素與矩陣的每行一一對應。標簽用來指出對應向量所表示的網絡流所屬的類別。標簽相同的網絡流所涉及的全部IP即是本方法最終的網絡社團發現結果。
為了獲取實驗數據集,研究中從某企業網的邊界路由采集了2周的網絡流日志。經過數據清洗和篩選后,得到的數據集包含約3千萬條網絡流,遍歷內網IP節點209個,外網IP節點54 147個。在采集過程中,研究在局域網內模擬了DDoS攻擊行為以驗證本方法的實用性。數據存儲上類似于NetFlow的格式并導出為可讀的文本形式用于本文的仿真實驗。本次研究需要的數據字段包括:源IP、目的IP、源端口、目的端口、網絡協議號、流上行包數、流下行包數、流上行字節數、流下行字節數。
3.2.1 模塊度
本文通過計算模塊度[1]來評價劃分結果。模塊度由于計算簡單而且能較好地反映全局劃分結果的優劣,因而獲得了廣泛使用。圖3即展示了某天1 h的數據得到的結果,其中包括214 735條網絡流,16 145個IP地址。每隔5 min做一次社團發現操作。得到的劃分結果模塊度在0.8以上。這就說明本文提出的通過比較|Pi|和|Qi|的大小來判斷節點i的身份,并據此對網絡進行劃分的方法是簡單且有效的。

圖3 不同時段的模塊度
3.2.2 社團數
各時段子網數量及社團數量如圖4所示。圖4中社團數目要大于子網數,這是由于某些子網內,網絡流在通信行為模式上的不同導致主機被劃分到了不同社團中,比如DDos攻擊中的惡意用戶和正常用戶,雖然在通信關系上相同,但是卻會因通信行為特性的不同而被歸類至不同的社團中。

圖4 不同時段的子網數與社團數
為了說明本方法的有效性,研究又使用Xu的方法[6]對同樣的數據進行社團發現。由于Xu的方法在社團發現的過程中對二部圖使用了單模投影,則使得每次只能得到網絡某一側的社團存在情況。繼而,研究又對企業網內部與外部的IP分別使用文獻[6]中的社團發現算法,得到的結果可詳見圖4。結果顯示對于同樣的數據集來說,本方法發現的社團在數量上相比于Xu的方法要超出許多。在對結果輔以考察分析后,研究中又發現得知,Xu的方法并不能對通信關系相同但通信行為特性不同的情況做出區分(比如DDos攻擊情況),而且Xu的方法發現的社團中并沒有服務節點(領袖節點),因此不能直觀地反映社團的屬性。本方法在發現網絡社團時,還旁及兼顧了通信關系和通信行為特性,而且保留了社團中的領袖節點,這些設計均有利于更加準確地發現社團及研究社團的屬性,而這也是本方法相比于已有研究的優勢所在。
本文提出一種網絡社團定義方法并在此基礎上研發了一種新的網絡社團發現方法。本方法在建立通信關系圖時考慮了端口的使用情況,以