肖香梅,余 建,林志興
(三明學(xué)院 網(wǎng)絡(luò)中心(信息化建設(shè)辦公室),福建 三明 365004)
隨著互聯(lián)網(wǎng)的不斷發(fā)展,以及大數(shù)據(jù)、云計(jì)算等新興技術(shù)的廣泛應(yīng)用,網(wǎng)絡(luò)安全問題日益突出。面對(duì)復(fù)雜網(wǎng)絡(luò)環(huán)境下的網(wǎng)絡(luò)攻擊,事前主動(dòng)檢測、防御,對(duì)于維護(hù)網(wǎng)絡(luò)安全具有重要意義。
網(wǎng)絡(luò)異常流量檢測是一種主動(dòng)的安全防護(hù)技術(shù),對(duì)發(fā)現(xiàn)潛在網(wǎng)絡(luò)威脅、降低網(wǎng)絡(luò)攻擊提供有效的防護(hù)。網(wǎng)絡(luò)異常流量檢測的常用技術(shù)就是分類,許多學(xué)者使用了不同的分類方法來甄別用戶行為是屬于正常行為還是攻擊行為。常用的分類方法有:支持向量機(jī)、隨機(jī)森林、聚類算法、K-最近鄰算法等。
文獻(xiàn)[1]提出一種基于支持向量機(jī)的網(wǎng)絡(luò)入侵檢測方法,通過對(duì)規(guī)則信息、攻擊信息、邊界信息的界定完成檢測過程,檢測率98.3% 。文獻(xiàn)[2]提出一種基于K-means算法的網(wǎng)絡(luò)流量異常檢測模型,該方法首先將網(wǎng)絡(luò)流量特征屬性量化為熵值,然后將K-means聚類算法應(yīng)用在網(wǎng)絡(luò)流量異常檢測中,檢測率93.4% 。文獻(xiàn)[3]提出基于K-最近鄰算法的網(wǎng)絡(luò)流量異常檢測,該算法基于屬性加權(quán)與距離加權(quán)組合加權(quán)的方法進(jìn)行異常檢測,使用隨機(jī)森林算法進(jìn)行特征選擇并為特征賦予權(quán)重,樣本距離采用高斯函數(shù)加權(quán)。文獻(xiàn)[4]提出一種基于多層決策樹分類的入侵檢測方法,該方法更適用于小比例的入侵行為的識(shí)別。文獻(xiàn)[5]提出一種基于隨機(jī)森林算法的MQTT異常流量檢測方法,檢測率96.4% ,該方法通過提取MQTT流量特征,但提取特征過程只是根據(jù)經(jīng)驗(yàn),未見詳細(xì)方法。文獻(xiàn)[6]提出一種基于改進(jìn)隨機(jī)森林的網(wǎng)絡(luò)異常流量檢測方法,該方法使用層次聚類算法對(duì)樣本提前分組,對(duì)每一組數(shù)據(jù)分別訓(xùn)練生成隨機(jī)森林,檢測率99% ,但該方法的算法復(fù)雜度較高。
由以上分析可知,網(wǎng)絡(luò)流量檢測存在檢測率不高、檢測過程復(fù)雜、不適用于高維數(shù)據(jù)等問題。因此,本文提出一種基于隨機(jī)森林的網(wǎng)絡(luò)異常流量檢測方法。該方法通過計(jì)算每個(gè)特征的信息增益,篩選出信息增益較高的10個(gè)特征進(jìn)行訓(xùn)練,處理高維度數(shù)據(jù)時(shí)具有減少計(jì)算資源、節(jié)約成本的優(yōu)點(diǎn),還提高了訓(xùn)練效率,同時(shí)隨機(jī)森林算法具有檢測率極高的優(yōu)點(diǎn),提高網(wǎng)絡(luò)異常流量檢測的正確率、精確率,為網(wǎng)絡(luò)安全提高更可靠的保障。
決策樹(decision tree,DT)是一種樹狀結(jié)構(gòu),它的每個(gè)葉節(jié)點(diǎn)代表一種分類,每個(gè)非葉節(jié)點(diǎn)代表在某個(gè)屬性上的劃分,每個(gè)分支代表一個(gè)測試輸出。常用的決策樹算法有ID3算法、C4.5算法和CART算法。決策樹訓(xùn)練時(shí)通過計(jì)算所有屬性的信息增益,選出信息增益最大的屬性作為測試屬性,然后對(duì)分割所得的樣本子集進(jìn)行遞歸調(diào)用,直到滿足遞歸停止條件為止。
特征選擇的重要參考指標(biāo)之一就是信息增益,它是衡量該特征對(duì)系統(tǒng)的貢獻(xiàn)度。若信息增益值越大,表示該特征為系統(tǒng)帶來的信息量越多,不確定性越小,該特征越重要。所謂信息量,就是熵。
假設(shè)數(shù)據(jù)樣本集合為D,假定有m個(gè)類別特征,D中第i類樣本所占的比例為Pi。對(duì)于給定數(shù)據(jù)樣本集合,它的總信息熵為:
假設(shè)一個(gè)特征A有n個(gè)不同的值,則可根據(jù)特征A的n個(gè)值將集合D劃分為k個(gè)子集,得到k個(gè)分支節(jié)點(diǎn)。若選擇特征A為測試屬性,則這些子集就是從集合D的節(jié)點(diǎn)生長出來的新的葉節(jié)點(diǎn)。則根據(jù)特征A劃分樣本得到的經(jīng)驗(yàn)條件熵為:
根據(jù)特征A劃分樣本集D后所得的信息增益為:
隨機(jī)森林(random forest,RF)算法是一種監(jiān)督學(xué)習(xí)算法[7],其使用集成學(xué)習(xí)的思想[8],先對(duì)數(shù)據(jù)進(jìn)行隨機(jī)采樣,將原始數(shù)據(jù)集分成多個(gè)決策樹,然后把多個(gè)決策樹組合起來形成隨機(jī)森林。最終的分類結(jié)果,通過投票的方式,將票數(shù)最多的類作為判斷結(jié)果。隨機(jī)森林是基于Bagging框架下的決策樹模型,假設(shè)訓(xùn)練集D中包含有N個(gè)樣本,每個(gè)樣本未被抽中的概率就是1-1/N,重復(fù)N次都沒抽中的概率就是(1-1/N)N,當(dāng)N趨于無窮大時(shí),這個(gè)概率就是1/e,約為36.8% 。即當(dāng)樣本足夠多的時(shí)候,一個(gè)樣本沒被抽中的概率為36.8% ,這些沒抽中數(shù)據(jù)稱為袋外數(shù)據(jù)(out of bag),可用作驗(yàn)證集。
圖1為隨機(jī)森林模型圖,也展示了隨機(jī)森林的構(gòu)建步驟,具體步驟如下:
圖1 隨機(jī)森林模型
(1)對(duì)于訓(xùn)練集D,通過Bootstrap方法隨機(jī)且有放回地抽取n組新的訓(xùn)練樣本,得到n個(gè)新的訓(xùn)練子集{D1,D2,…,Dn}。
(2)假設(shè)每個(gè)新的訓(xùn)練子集Di的特征維度為M,隨機(jī)從這M個(gè)特征中隨機(jī)抽取出m個(gè)作為特征子集;
(3)當(dāng)每個(gè)決策樹進(jìn)行分裂時(shí),從這m個(gè)特征中選擇最優(yōu)的特征作為決策樹的輸入;
(4)對(duì)于每個(gè)決策樹,都盡最大程度生長,不進(jìn)行剪枝。根據(jù)每個(gè)訓(xùn)練集Di生成相應(yīng)的決策樹Ti(Di);
(5)結(jié)合所有生成的決策樹,生成一個(gè)隨機(jī)森林模型{T1(D1),T2(D2),…,Tn(Dn)}以及分類結(jié)果;
(6)根據(jù)每個(gè)決策樹的分類結(jié)果,使用投票方法,將票數(shù)最多的分類結(jié)果作為最終的分類結(jié)果。
本次實(shí)驗(yàn)采用的數(shù)據(jù)集是KDD-CUP99,該數(shù)據(jù)集是KDD(data mining and knowledge discovery,數(shù)據(jù)挖掘與知識(shí)發(fā)現(xiàn))競賽在1999年舉行時(shí)采用的數(shù)據(jù)集。該數(shù)據(jù)集模擬了美國空軍局域網(wǎng)的一個(gè)網(wǎng)絡(luò)環(huán)境,收集了不同用戶類型、不同網(wǎng)絡(luò)流量、不同攻擊手段的數(shù)據(jù)。在訓(xùn)練數(shù)據(jù)集中包含了1種正常類型和22種攻擊類型,正常類型的標(biāo)識(shí)為Normal,攻擊數(shù)據(jù)的標(biāo)識(shí)類型如表1所示。該數(shù)據(jù)集包含兩個(gè)版本,其中完全版包含500多萬條數(shù)據(jù),10% 抽樣版包含494021條記錄。本次實(shí)驗(yàn)采用10% 抽樣版數(shù)據(jù)集。該數(shù)據(jù)集被廣泛應(yīng)用于網(wǎng)絡(luò)入侵的分類研究中,是計(jì)算機(jī)入侵檢測和機(jī)器學(xué)習(xí)研究的經(jīng)典挑戰(zhàn)[9]。在檢測過程中,正常記錄為一類,記為Normal;其余22種攻擊類型歸為一類,記為Attack。因此該檢測過程轉(zhuǎn)化為二分類任務(wù)。
表1 KDD-CUP99攻擊數(shù)據(jù)的標(biāo)識(shí)類型
數(shù)據(jù)集的每條記錄由41個(gè)屬性特征和一個(gè)標(biāo)簽組成,屬性特征中包含38個(gè)數(shù)字型屬性特征和3個(gè)符號(hào)數(shù)據(jù)特征。屬性特征分為四大類型,第一類是TCP連接的基本特征,共9個(gè)(duration、protocol_type、service、flag、src_bytes、dst_bytes、land、wrong_fragment、urgent), 編碼為 0~8; 第二類是 TCP 連接的內(nèi)容特征 , 共 13 種 (hot、num_failed_logins、logged_in、num_compromised、root_shell、su_attempted、num_root、num_file_creations、num_shells、num_access_files、num_outbound_cmds、is_hot_login、is_guest_login), 編碼為9-21; 第三類是基于時(shí)間的網(wǎng)絡(luò)流量統(tǒng)計(jì)特征, 共9種(count、srv_count、serror_rate、srv_serror_rate、rerror_rate、srv_rerror_rate、same_srv_rate、diff_srv_rate、srv_diff_host_rate),編號(hào) 22-30;第四類為基于主機(jī)的 網(wǎng) 絡(luò) 流 量 統(tǒng) 計(jì) 特 征 , 共 10 種 (dst_host_count、dst_host_srv_count、dst_host_same_srv_rate、dst_host_diff_srv_rate、dst_host_same_src_port_rate、dst_host_srv_diff_host_rate、dst_host_serror_rate、dst_host_srv_serror_rate、dst_host_rerror_rate、dst_host_srv_rerror_rate),編碼為 31-40。
本文提出的基于隨機(jī)森林的網(wǎng)絡(luò)異常流量檢測算法步驟如下:
(1)數(shù)據(jù)預(yù)處理。
①字符型特征轉(zhuǎn)換為數(shù)值型特征。本文采用Python語言進(jìn)行編程,因sklearn庫只能處理數(shù)值型數(shù)據(jù),故需將KDD-CUP99數(shù)據(jù)集10% 抽樣版中的字符型字段轉(zhuǎn)換為數(shù)值型字段。數(shù)據(jù)集中的protocol_type特征、service特征、flag特征以及標(biāo)簽的數(shù)據(jù)類型為字符型,利用preprocessing.Label Encoder模塊將標(biāo)簽轉(zhuǎn)換為數(shù)值型,利用preprocessing.Ordinal Encoder模塊將三個(gè)字符型特征轉(zhuǎn)換為數(shù)值型特征。
②數(shù)值標(biāo)準(zhǔn)化。首先計(jì)算屬性xj的平均值和平均絕對(duì)誤差Sj,公式為:
其中,平均絕對(duì)誤差比標(biāo)準(zhǔn)差對(duì)于孤立點(diǎn)具有更好的魯棒性。
接著,對(duì)每個(gè)屬性的每條記錄進(jìn)行標(biāo)準(zhǔn)化度量,公式為:
(2)特征選取。KDD-CUP99數(shù)據(jù)集中包含41個(gè)特征,編碼為0~40。雖然隨機(jī)森林能夠處理高維特征的輸入樣本,但是考慮到通過特征篩選可以減輕程序的計(jì)算量,提高檢測效率,故對(duì)重要特征進(jìn)行提取。通過計(jì)算每個(gè)特征的信息增益,如圖2所示;篩選出信息增益較高的10個(gè)特征進(jìn)行訓(xùn)練,見表2。
圖2 KDD-CUP99數(shù)據(jù)集(10% 抽樣版)41個(gè)特征的信息增益
表2 信息增益較高的10個(gè)特征
(3)將經(jīng)過特征提取過的樣本數(shù)據(jù)集引入隨機(jī)森林算法進(jìn)行訓(xùn)練,本實(shí)驗(yàn)將樣本數(shù)據(jù)集劃分為70% 訓(xùn)練集和30% 測試集,通過調(diào)整隨機(jī)森林的相關(guān)參數(shù),得到隨機(jī)森林分類器。
本實(shí)驗(yàn)使用Windows 10操作系統(tǒng),計(jì)算機(jī)CPU為Intel Core i3-6006U,內(nèi)存4 GB,以Python3.9為編譯環(huán)境,結(jié)合Pycharm編輯器實(shí)現(xiàn)對(duì)算法性能的分析。
對(duì)于二分類問題,可將測試樣本劃分為如下部分。
真正例(True Positive,TP)。真實(shí)類別為正例,預(yù)測類別為正例。
假正例(False Positive,F(xiàn)P)。真實(shí)類別為負(fù)例,預(yù)測類別為正例。
假負(fù)例(False Negative,F(xiàn)N)。真實(shí)類別為正例,預(yù)測類別為負(fù)例。
真負(fù)例(True Negative,TN)。真實(shí)類別為負(fù)例,預(yù)測類別為負(fù)例。
由此構(gòu)建混淆矩陣(Confusion Matrix),如表3所示。
表3 混淆矩陣
(1)正確率
正確率(Accuracy,A),是指分類器中正確分類的樣本數(shù)量與樣本總數(shù)目的比例,計(jì)算公式如下:
(2)F1 度量
精確率(Precision,P)又稱為查準(zhǔn)率,是指正確判定屬于正例的樣本數(shù)量與被判定屬于正例樣本數(shù)量的比例,計(jì)算公式如下:
召回率(Recall,R)又稱為查全率,是指被正確判定屬于正例的樣本數(shù)量與正式類別屬于正例的樣本數(shù)量的比例,計(jì)算公式如下:
為權(quán)衡精確率和召回率,當(dāng)精確率和召回率具有相同的重要等級(jí)時(shí),F(xiàn)1度量用如下公式來計(jì)算:
(3)宏平均和微平均
精準(zhǔn)率和召回率只能衡量分類器對(duì)單個(gè)類別的局部分類性能。如果要評(píng)價(jià)分類器在所有類別上的全局分類性能,通常采用宏平均(macro average)和微平均(micro average)[10]。宏平均先對(duì)每個(gè)類別求指標(biāo)值,每個(gè)類別具有相同的權(quán)重,然后對(duì)每個(gè)類別的指標(biāo)求算術(shù)平均值。微平均先對(duì)數(shù)據(jù)集中的每個(gè)類別每個(gè)實(shí)例部分類別進(jìn)行統(tǒng)計(jì),建立全局混淆矩陣,且所有類別的每個(gè)樣本具有相同的權(quán)重,然后計(jì)算各個(gè)指標(biāo)。
(4)ROC 曲線和 AUC值
ROC(receiver operating characteristics,接收者操作特征)曲線[11]的X軸表示增加的假正類率(也稱為特異度,specificity),Y軸表示真正類率(也稱為敏感率,sensitivity)。ROC曲線上的各個(gè)點(diǎn)表示對(duì)輸入信號(hào)刺激的響應(yīng),它是二元分類問題常用的參考關(guān)系圖[5]。
AUC(area under curve,曲線下面積)值:表示為ROC曲線下與坐標(biāo)軸圍成的面積。其值在0-1之間,0表示分類性能最差,1表示分類性能最佳,完全的隨機(jī)值對(duì)應(yīng)于0.5。
使用隨機(jī)森林算法對(duì)樣本數(shù)據(jù)進(jìn)行分類,得到ROC曲線如圖3所示。
圖3 隨機(jī)森林算法的ROC曲線
由圖3可以看出,使用隨機(jī)森林算法進(jìn)行分類得到AUC值為0.9968,接近1,說明該分類器分類性能很好,分類效果接近完美。
本實(shí)驗(yàn)將隨機(jī)森林算法與決策樹、支持向量機(jī)和K-最鄰近等算法進(jìn)行比較分類效果,使用正確率、宏平均精確率、微平均精確率、宏平均召回率、微平均召回率、F1度量以及訓(xùn)練預(yù)測耗時(shí)7個(gè)評(píng)價(jià)指標(biāo)進(jìn)行比較,如表4所示。
表4 KDD-CUP99異常流量分類結(jié)果
由實(shí)驗(yàn)結(jié)果可以看出,隨機(jī)森林算法分類器的正確率、精確率、召回率、F1度量值均高于99.90% ,同時(shí)高于決策樹(C4.5)算法、支持向量機(jī)算法和K-最鄰近算法,且訓(xùn)練預(yù)測耗時(shí)最少。決策樹(C4.5)算法正確率雖然達(dá)到了99.56% ,但是容易出現(xiàn)過擬合的情況;支持向量機(jī)算法的正確率只有98.59% ,而且訓(xùn)練預(yù)測耗時(shí)較長,不適用于網(wǎng)絡(luò)異常流量預(yù)測。K-最鄰近算法正確率雖然達(dá)到99.89% ,但訓(xùn)練預(yù)測耗時(shí)過長,檢測效率極低。由此說明隨機(jī)森林算法分類性能極高,且學(xué)習(xí)訓(xùn)練效率高,非常適用于網(wǎng)絡(luò)異常流量的分類預(yù)測。
本文為解決在大數(shù)據(jù)環(huán)境下網(wǎng)絡(luò)存在的安全問題,針對(duì)異常流量監(jiān)測這一突出問題,利用隨機(jī)森林算法,提出了一種基于隨機(jī)森林算法的異常流量監(jiān)測方法,并利用KDD-CUP99數(shù)據(jù)集進(jìn)行驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,隨機(jī)森林算法無論在性能上還是在準(zhǔn)確率上都要優(yōu)于其他分類器,提高了異常流量檢測的正確率和檢測效率,為網(wǎng)絡(luò)安全提供更好的保護(hù)。