董 理
(北京郵電大學(xué) 信息與通信工程學(xué)院,北京 100876)
隨著網(wǎng)絡(luò)、存儲、計算和傳輸?shù)牟粩嗤晟?,互?lián)網(wǎng)與人們的互動越來越緊密。雖然互聯(lián)網(wǎng)使人們的生活更加方便,但它也帶來了一些潛在的風(fēng)險。例如,涉及用戶隱私和安全的惡意攻擊越來越頻繁。
人們對互聯(lián)網(wǎng)的使用方式的改變,對傳統(tǒng)的異常網(wǎng)絡(luò)事件檢測技術(shù)提出了新的挑戰(zhàn)。研究人員更難意識到一些新的攻擊。針對這些問題,提出了一些異常網(wǎng)絡(luò)流量檢測方法。傳統(tǒng)的異常流量檢測方法可分為兩類[1-2]:一種是誤用檢測,另一種是異常檢測。這兩種方法各有利弊。誤用檢測具有很高的準(zhǔn)確性,但需要已知知識[3]的支持。異常檢測不需要已知的知識,但不能對攻擊類型進(jìn)行分類,準(zhǔn)確性也較低。例如,OM H[4]設(shè)計了一個混合檢測系統(tǒng),它是一個考慮K-means、K-最近鄰和樸素貝葉斯方法的混合異常檢測系統(tǒng)。
然而,網(wǎng)絡(luò)流量的爆炸性增長直接或間接地推動互聯(lián)網(wǎng)進(jìn)入大數(shù)據(jù)時代,由于計算量大,大數(shù)據(jù)[5-7]導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)分布不斷變化,使得異常流量檢測更難處理。由于網(wǎng)絡(luò)數(shù)據(jù)生成的速度很快,使得正常流量和異常流量相差很大,數(shù)據(jù)的分布也發(fā)生了變化。此外,隨著大數(shù)據(jù)量的增加,正常流量和異常流量之間的差異也在增大。這使得傳統(tǒng)的方法無法有效地檢測異常流量。
因此,為了提高異常流量的準(zhǔn)確度,避免誤報檢測帶來的松散性,提出了一種基于大數(shù)據(jù)分析的新模型,可以避免網(wǎng)絡(luò)流量分布調(diào)整帶來的影響,提高檢測精度,降低誤報率。該模型的核心不是簡單地結(jié)合傳統(tǒng)的檢測方法,而是基于大數(shù)據(jù)的新型檢測模型。在仿真中,使用K-means、決策樹和隨機(jī)森林算法作為比較對象來驗證模型的有效性。仿真結(jié)果表明,該模型具有較好的檢測性能,正常數(shù)據(jù)檢測率為95.4%,DoS攻擊檢測率為98.6%,探針攻擊檢測率為93.9%,U2R攻擊檢測率為56.1%,R2L攻擊檢測率為77.2%。
K-means算法是一種常用的聚類算法[8-9],它使用簡單的迭代算法將數(shù)據(jù)集聚類成一定數(shù)量的類別,通常將聚類數(shù)注釋為K,K-means的四個步驟是:
(1)初始化:從數(shù)據(jù)集中隨機(jī)選擇K個數(shù)據(jù)點(diǎn)作為K簇的中心。
(2)分布:將數(shù)據(jù)集內(nèi)的每個點(diǎn)分配到最近的中心。
(3)更新:根據(jù)集群分配計算新中心,新中心是集群中所有點(diǎn)的平均點(diǎn)。
(4)重復(fù):重復(fù)這些步驟,直到在這一輪中沒有更新中心,并且集群已經(jīng)聚合。
K表示需要指定分類K的數(shù)量。如果K選擇不當(dāng),將導(dǎo)致不恰當(dāng)?shù)姆诸惤Y(jié)果。因此,選擇合適的聚類數(shù)對K-means的計算結(jié)果至關(guān)重要。
K-means的另一個缺點(diǎn)是,K-means只能使用歐幾里得距離。雖然歐幾里得距離便于計算,但它不能考慮兩個特征之間的差異,這意味著它對待所有特征都是一樣的。在現(xiàn)實中,有時會導(dǎo)致表現(xiàn)不佳。
總而言之,K-means方法在處理大數(shù)據(jù)方面有其優(yōu)點(diǎn)和缺點(diǎn):K-means方法簡單,時間復(fù)雜度低,即n(nd*k+1logn)。
決策樹[10-11]是機(jī)器學(xué)習(xí)中常用的算法,完整的決策樹由三種元素組成:
(1)決策節(jié)點(diǎn):指明被用于分割的特征。
(2)機(jī)會節(jié)點(diǎn):表示每個特征的可能值。
(3)葉子結(jié)點(diǎn):記錄實際的類別。
決策樹算法主要可分為兩個步驟:
(1)樹生成:根據(jù)訓(xùn)練集生成樹。需要確定分割中需要使用哪個特性,并確定結(jié)果屬于哪個類別。
(2)分類:從決策樹的根目錄對新記錄進(jìn)行分類,并將其與每個決策節(jié)點(diǎn)進(jìn)行比較,并將結(jié)果移動到相應(yīng)的分支。重復(fù)此過程,當(dāng)數(shù)據(jù)到達(dá)葉節(jié)點(diǎn)后,葉節(jié)點(diǎn)的類別是該節(jié)點(diǎn)的新類別。
隨機(jī)森林算法[12-13]是一種分類算法,包含多個決策樹,其中每棵樹都有一個投票權(quán),最終結(jié)果是投票權(quán)最高的樹。
在生成決策樹時,可以使用特征選擇和修剪來避免過度擬合。但是,當(dāng)特性的數(shù)量很大時,問題就很難避免了。而隨機(jī)森林由多個決策樹組成,可以有效地避免這些問題。
受異常流量影響,網(wǎng)絡(luò)流量數(shù)據(jù)分布會發(fā)生改變。如何在大量的網(wǎng)絡(luò)數(shù)據(jù)中精確地識別出異常流量,是本文主要研究的問題。
本文提出了一種基于大數(shù)據(jù)分析的異常流量檢測模型。通過并行運(yùn)行正常流量分類器和異常流量分類器,并將待識別的流量數(shù)據(jù)輸入這兩個分類器,再將分類的輸出結(jié)果輸入到表決器,最后依據(jù)表決規(guī)則輸出該流量數(shù)據(jù)的識別結(jié)果。
正常流量分類模型使用分類和聚類算法來區(qū)分正常和異常流量,而不是涉及特定的異常行為。該模型包括以下兩個階段。
(1)訓(xùn)練階段:訓(xùn)練模型使用標(biāo)記為正常或異常的數(shù)據(jù),訓(xùn)練之后的模型應(yīng)用于測試階段。
(2)測試階段:測試階段與實際檢測階段相似。該模型使用未標(biāo)記的數(shù)據(jù),將流量數(shù)據(jù)分類為正?;虍惓?shù)據(jù),并對其進(jìn)行標(biāo)記。
正常流量選擇模型一般采用K均值聚類算法、KNN、決策樹和隨機(jī)森林分類算法。傳統(tǒng)上,在使用K-means算法之前,設(shè)置類的數(shù)量非常重要,因為通常有多少類別是未知的。但是,為了區(qū)分正常和異常行為,正常流量分類模型采用K-means算法,如下所示。
(1)在訓(xùn)練階段,利用標(biāo)記信息將數(shù)據(jù)分為正常和異常。
(2)對這兩個類別分別使用K-means算法,而不是同時對所有數(shù)據(jù)進(jìn)行聚類,分別得到數(shù)據(jù)集的中心。
(3)利用數(shù)據(jù)集的中心和KNN聚類算法對測試數(shù)據(jù)進(jìn)行分類。
異常流量分類模型的目的是避免正常交通量過多,正常流量與異常流量分布嚴(yán)重不均而影響分類準(zhǔn)確度。該模型將異常流量分為特定類別,并包括以下兩個階段。
(1)訓(xùn)練階段:只使用異常數(shù)據(jù)來培訓(xùn)分類模型,以及每個數(shù)據(jù)標(biāo)簽特定的攻擊組。使用分類算法學(xué)習(xí)分類規(guī)則。
(2)測試階段:測試階段類似于實際的檢測過程,使用未標(biāo)記的數(shù)據(jù)(包括正常行為數(shù)據(jù))。分類模型根據(jù)分類規(guī)則將異常流量分類為特定的類別,并對每一個數(shù)據(jù)給出特定的標(biāo)簽。
異常流量分類模型采用決策樹和隨機(jī)森林分類算法。異常流量分類模型和正常流量分類模型是相互獨(dú)立的,在訓(xùn)練階段或測試階段沒有先后順序之分。
表決器的作用在于利用合適的規(guī)則對正常流量分類器和異常流量分類器的結(jié)果進(jìn)行調(diào)整,以提高對異常流量的識別率。
針對現(xiàn)有異常流量分類誤報率高的問題,本文設(shè)計了一種利用正常流量分類結(jié)果修正異常流量分類結(jié)果的規(guī)則:
cn表示正常流量分類模型的測試結(jié)果,ca表示異常流量分類模型的測試結(jié)果,Ai表示第i個異常類。異常流量檢測模型如圖1所示。
圖1 異常流量檢測模型
在使用基于大數(shù)據(jù)分析的異常檢測模型檢測三個子模型之前,需要對數(shù)據(jù)集進(jìn)行訓(xùn)練模型的標(biāo)簽預(yù)處理。需要指出的是,正確選擇特征是減小尺寸、提高運(yùn)行效率的好方法。在仿真中,采用了三種不同的算法來驗證模型的有效性。
本文采用KDDCUP99數(shù)據(jù)集來測試驗證所提出的模型。KDDCUP99數(shù)據(jù)集是測試異常檢測模型的廣泛應(yīng)用,它是由KDDCUP99獲取和處理的。KDDCUP99數(shù)據(jù)集共有41個特征,分為三組:基本特征、內(nèi)容特征和時間特征。
如表1、表2所示,設(shè)計了12組對比實驗,每組實驗都進(jìn)行了大量重復(fù)實驗,取平均值為最后結(jié)果。分別使用K-means(其中K-means1的正常類中心點(diǎn)為4,異常類中心點(diǎn)數(shù)為30;K-means2的正常類中心點(diǎn)數(shù)為100,異常類中心點(diǎn)數(shù)300)、決策樹或隨機(jī)森林作為3組對照組。Winner of KDDCUP99作為基線對比。
表1 對比實驗設(shè)置
為得到“正常流量分類器”+“異常流量分類器”的效果,表2中專門設(shè)計了8組混合實驗,具體細(xì)節(jié)見表2.
表2 模型算法設(shè)置
本文中,采用分類準(zhǔn)確率作為分類效果的仿真指標(biāo),最終實驗結(jié)果如表3所示。從表3的準(zhǔn)確率結(jié)果中可以看出,單獨(dú)的K-means算法、決策樹算法、隨機(jī)森林算法以及Winner of KDDCUP99在對正常流量和DoS流量的分類準(zhǔn)確度很高,但是對U2R、R2L等異常流量的識別精度不夠,尤其Winner of KDDCUP99算法對這些異常流量的識別準(zhǔn)確率最低。
表3 分類準(zhǔn)確率
在使用本文提出的模型后,通過對正常流量分類器和異常流量分類器搭配不同的算法,其分類結(jié)果均有所提升。同時通過對比第5、6、7、8四條結(jié)果,可以看出K-means算法在此時的分類效果大大受到聚類中心點(diǎn)的影響。
為了評估對異常流量分類的效果,本文采用漏報率(原本是異常流量數(shù)據(jù)卻被分類為正常流量所占的比率)作為衡量的指標(biāo)。表4展示了對比實驗第3組實驗的結(jié)果,通過與表5中的實驗結(jié)果對比可以看出,所列出的四個異常流量類的漏報率都顯著下降,驗證了所提出的模型的有效性。
表4 對比實驗第3組的漏報率
表5 實驗組第8組的漏報率
為了有效利用網(wǎng)絡(luò)大數(shù)據(jù),準(zhǔn)確的識別和檢測異常流量,本文設(shè)計了一種異常流量監(jiān)測模型。實驗結(jié)果顯示,通過合理地選擇各模塊的算法,該模型對正常數(shù)據(jù)的檢測率為95.5%,對DoS攻擊的檢測率為98.8%,對探針攻擊的檢測率為94.0%,對U2R攻擊的檢測率為55.1%,對R2L攻擊的檢測率為77.4%,提高了對異常流量的識別率,并降低了誤報率。