董 理
(北京郵電大學 信息與通信工程學院,北京 100876)
隨著網絡、存儲、計算和傳輸的不斷完善,互聯網與人們的互動越來越緊密。雖然互聯網使人們的生活更加方便,但它也帶來了一些潛在的風險。例如,涉及用戶隱私和安全的惡意攻擊越來越頻繁。
人們對互聯網的使用方式的改變,對傳統的異常網絡事件檢測技術提出了新的挑戰。研究人員更難意識到一些新的攻擊。針對這些問題,提出了一些異常網絡流量檢測方法。傳統的異常流量檢測方法可分為兩類[1-2]:一種是誤用檢測,另一種是異常檢測。這兩種方法各有利弊。誤用檢測具有很高的準確性,但需要已知知識[3]的支持。異常檢測不需要已知的知識,但不能對攻擊類型進行分類,準確性也較低。例如,OM H[4]設計了一個混合檢測系統,它是一個考慮K-means、K-最近鄰和樸素貝葉斯方法的混合異常檢測系統。
然而,網絡流量的爆炸性增長直接或間接地推動互聯網進入大數據時代,由于計算量大,大數據[5-7]導致網絡數據分布不斷變化,使得異常流量檢測更難處理。由于網絡數據生成的速度很快,使得正常流量和異常流量相差很大,數據的分布也發生了變化。此外,隨著大數據量的增加,正常流量和異常流量之間的差異也在增大。這使得傳統的方法無法有效地檢測異常流量。
因此,為了提高異常流量的準確度,避免誤報檢測帶來的松散性,提出了一種基于大數據分析的新模型,可以避免網絡流量分布調整帶來的影響,提高檢測精度,降低誤報率。該模型的核心不是簡單地結合傳統的檢測方法,而是基于大數據的新型檢測模型。在仿真中,使用K-means、決策樹和隨機森林算法作為比較對象來驗證模型的有效性。仿真結果表明,該模型具有較好的檢測性能,正常數據檢測率為95.4%,DoS攻擊檢測率為98.6%,探針攻擊檢測率為93.9%,U2R攻擊檢測率為56.1%,R2L攻擊檢測率為77.2%。
K-means算法是一種常用的聚類算法[8-9],它使用簡單的迭代算法將數據集聚類成一定數量的類別,通常將聚類數注釋為K,K-means的四個步驟是:
(1)初始化:從數據集中隨機選擇K個數據點作為K簇的中心。
(2)分布:將數據集內的每個點分配到最近的中心。
(3)更新:根據集群分配計算新中心,新中心是集群中所有點的平均點。
(4)重復:重復這些步驟,直到在這一輪中沒有更新中心,并且集群已經聚合。
K表示需要指定分類K的數量。如果K選擇不當,將導致不恰當的分類結果。因此,選擇合適的聚類數對K-means的計算結果至關重要。
K-means的另一個缺點是,K-means只能使用歐幾里得距離。雖然歐幾里得距離便于計算,但它不能考慮兩個特征之間的差異,這意味著它對待所有特征都是一樣的。在現實中,有時會導致表現不佳。
總而言之,K-means方法在處理大數據方面有其優點和缺點:K-means方法簡單,時間復雜度低,即n(nd*k+1logn)。
決策樹[10-11]是機器學習中常用的算法,完整的決策樹由三種元素組成:
(1)決策節點:指明被用于分割的特征。
(2)機會節點:表示每個特征的可能值。
(3)葉子結點:記錄實際的類別。
決策樹算法主要可分為兩個步驟:
(1)樹生成:根據訓練集生成樹。需要確定分割中需要使用哪個特性,并確定結果屬于哪個類別。
(2)分類:從決策樹的根目錄對新記錄進行分類,并將其與每個決策節點進行比較,并將結果移動到相應的分支。重復此過程,當數據到達葉節點后,葉節點的類別是該節點的新類別。
隨機森林算法[12-13]是一種分類算法,包含多個決策樹,其中每棵樹都有一個投票權,最終結果是投票權最高的樹。
在生成決策樹時,可以使用特征選擇和修剪來避免過度擬合。但是,當特性的數量很大時,問題就很難避免了。而隨機森林由多個決策樹組成,可以有效地避免這些問題。
受異常流量影響,網絡流量數據分布會發生改變。如何在大量的網絡數據中精確地識別出異常流量,是本文主要研究的問題。
本文提出了一種基于大數據分析的異常流量檢測模型。通過并行運行正常流量分類器和異常流量分類器,并將待識別的流量數據輸入這兩個分類器,再將分類的輸出結果輸入到表決器,最后依據表決規則輸出該流量數據的識別結果。
正常流量分類模型使用分類和聚類算法來區分正常和異常流量,而不是涉及特定的異常行為。該模型包括以下兩個階段。
(1)訓練階段:訓練模型使用標記為正常或異常的數據,訓練之后的模型應用于測試階段。
(2)測試階段:測試階段與實際檢測階段相似。該模型使用未標記的數據,將流量數據分類為正常或異常數據,并對其進行標記。
正常流量選擇模型一般采用K均值聚類算法、KNN、決策樹和隨機森林分類算法。傳統上,在使用K-means算法之前,設置類的數量非常重要,因為通常有多少類別是未知的。但是,為了區分正常和異常行為,正常流量分類模型采用K-means算法,如下所示。
(1)在訓練階段,利用標記信息將數據分為正常和異常。
(2)對這兩個類別分別使用K-means算法,而不是同時對所有數據進行聚類,分別得到數據集的中心。
(3)利用數據集的中心和KNN聚類算法對測試數據進行分類。
異常流量分類模型的目的是避免正常交通量過多,正常流量與異常流量分布嚴重不均而影響分類準確度。該模型將異常流量分為特定類別,并包括以下兩個階段。
(1)訓練階段:只使用異常數據來培訓分類模型,以及每個數據標簽特定的攻擊組。使用分類算法學習分類規則。
(2)測試階段:測試階段類似于實際的檢測過程,使用未標記的數據(包括正常行為數據)。分類模型根據分類規則將異常流量分類為特定的類別,并對每一個數據給出特定的標簽。
異常流量分類模型采用決策樹和隨機森林分類算法。異常流量分類模型和正常流量分類模型是相互獨立的,在訓練階段或測試階段沒有先后順序之分。
表決器的作用在于利用合適的規則對正常流量分類器和異常流量分類器的結果進行調整,以提高對異常流量的識別率。
針對現有異常流量分類誤報率高的問題,本文設計了一種利用正常流量分類結果修正異常流量分類結果的規則:
cn表示正常流量分類模型的測試結果,ca表示異常流量分類模型的測試結果,Ai表示第i個異常類。異常流量檢測模型如圖1所示。

圖1 異常流量檢測模型
在使用基于大數據分析的異常檢測模型檢測三個子模型之前,需要對數據集進行訓練模型的標簽預處理。需要指出的是,正確選擇特征是減小尺寸、提高運行效率的好方法。在仿真中,采用了三種不同的算法來驗證模型的有效性。
本文采用KDDCUP99數據集來測試驗證所提出的模型。KDDCUP99數據集是測試異常檢測模型的廣泛應用,它是由KDDCUP99獲取和處理的。KDDCUP99數據集共有41個特征,分為三組:基本特征、內容特征和時間特征。
如表1、表2所示,設計了12組對比實驗,每組實驗都進行了大量重復實驗,取平均值為最后結果。分別使用K-means(其中K-means1的正常類中心點為4,異常類中心點數為30;K-means2的正常類中心點數為100,異常類中心點數300)、決策樹或隨機森林作為3組對照組。Winner of KDDCUP99作為基線對比。

表1 對比實驗設置
為得到“正常流量分類器”+“異常流量分類器”的效果,表2中專門設計了8組混合實驗,具體細節見表2.

表2 模型算法設置
本文中,采用分類準確率作為分類效果的仿真指標,最終實驗結果如表3所示。從表3的準確率結果中可以看出,單獨的K-means算法、決策樹算法、隨機森林算法以及Winner of KDDCUP99在對正常流量和DoS流量的分類準確度很高,但是對U2R、R2L等異常流量的識別精度不夠,尤其Winner of KDDCUP99算法對這些異常流量的識別準確率最低。

表3 分類準確率
在使用本文提出的模型后,通過對正常流量分類器和異常流量分類器搭配不同的算法,其分類結果均有所提升。同時通過對比第5、6、7、8四條結果,可以看出K-means算法在此時的分類效果大大受到聚類中心點的影響。
為了評估對異常流量分類的效果,本文采用漏報率(原本是異常流量數據卻被分類為正常流量所占的比率)作為衡量的指標。表4展示了對比實驗第3組實驗的結果,通過與表5中的實驗結果對比可以看出,所列出的四個異常流量類的漏報率都顯著下降,驗證了所提出的模型的有效性。

表4 對比實驗第3組的漏報率

表5 實驗組第8組的漏報率
為了有效利用網絡大數據,準確的識別和檢測異常流量,本文設計了一種異常流量監測模型。實驗結果顯示,通過合理地選擇各模塊的算法,該模型對正常數據的檢測率為95.5%,對DoS攻擊的檢測率為98.8%,對探針攻擊的檢測率為94.0%,對U2R攻擊的檢測率為55.1%,對R2L攻擊的檢測率為77.4%,提高了對異常流量的識別率,并降低了誤報率。