張志飛 王露漫
(北京交通大學計算機與信息技術學院 北京 100044)
Internet的迅速發展給人們的日常生活帶來了全新的感受,“網絡生存”已經成為時尚,同時人類社會諸如政治、科研、經濟、軍事等各種活動對信息網絡的依賴程度已經越來越強,“網絡經濟”時代已初露端倪。但是互聯網的高速發展方便我們日常生活的同時,網絡攻擊也逐漸威脅我們的生活。隨著與互聯網的連接點越來越多,網絡安全的威脅也越來越大,入侵檢測是當今重要的安全問題之一。網絡入侵檢測系統根據網絡數據,準確識別攻擊數據,并及時做出響應,對減少網絡攻擊對計算機中數據的破壞有重要作用。
為了更精確地識別攻擊數據,越來越多的機器學習算法應用于網絡入侵檢測中。張陽等[1]以SMOTH數據再平衡算法為研究重點,使算法在KDD99數據集上的少數類樣本的識別準確率和召回率增強。張夏[2]提出基于蟻群算法確定支持向量機參數的網絡入侵檢測模型,正確率達95%以上。王明等[3]提出了一種基于卷積神經網絡算法的網絡入侵檢測系統,該算法比傳統機器學習技術有更高的準確率。Wankhede等[4]在數據集CICIDS2017數據集上證明隨機森林比MLP算法有更高的精度。Tang等[5]為入侵檢測系統構建了一個深度神經網絡(DNN)模型進行基于流的異常檢測,并使用NSL-KDD數據集訓練了該模型,實驗結果表明其比傳統的樸素貝葉斯、支持向量機、決策樹方法的準確度更高。Kim等[6]基于KDD Cup 99數據集對使用深度神經網絡(DNN)的人工智能(AI)入侵檢測系統進行了研究和測試。Tang等[7]提出了一種用于SDN環境的門控循環單元遞歸神經網絡(Gated Recurrent Unit Recurrent Neural Network,GRU-RNN)網絡異常檢測算法模型,使用NSL-KDD數據集對模型進行了訓練和測試,該模型僅六個原始特征就達到了89%的精度。Kim等[8]將長短期記憶(LSTM)體系結構應用于遞歸神經網絡(RNN),用深度學習方法構建入侵檢測算法模型,從KDD Cup 1999數據集提取生成訓練集訓練該模型,檢測率為98.88%,準確度為96.93%,誤報率為10.04%。李勇等[9]提出了基于深度CNN的入侵檢測算法,在卷積神經網絡基礎上引入殘差網絡和Inception模型使模型的泛化能力增強,在KDDCup 99數據集上的準確率達到94.37%。Khan等[10]提出了基于Spark ML和卷積LSTM(Conv-LSTM)網絡入侵檢測模型,該模型分為兩個階段:第一階段使用基于Spark ML的異常檢測模塊;第二階段充當濫用檢測模塊,該模塊基于Conv-LSTM網絡,因此可以解決全局和本地潛在威脅簽名。模型使用的是ISCX-UNB數據集,預測準確度為97.29%,誤報率為0.71%。何夢乙等[11]提出了一種融合批量規范化和深度神經網絡的網絡入侵檢測模型,使整體檢測率提高到99.41%。
通過對比可以發現目前存在的算法,更多強調的是提高算法在數據集整體的準確率,而忽略了提高對少數類的識別率,但是通常這些少數攻擊比常見的攻擊對網絡帶來的數據破壞更大。
本文提出并驗證了一種將卷積神經網絡與隨機森林結合的入侵檢測算法。在CICIDS2017數據集上的仿真結果表明,本文提出的算法不僅使系統對BENIGN和ATTACK類有了更高的分類精度,而且對少數攻擊類在召回率和精確率上取得了較好的結果。
卷積神經網絡的研究始于20世紀80至90年代,第一個卷積神經網絡是1987年由Alexander Waibel等提出的時間延遲網絡[12]。卷積神經網絡是一種前饋神經網絡,它類似于人工神經網絡的深度學習模型或多層感知機,常用于分析和處理視覺數據。卷積神經網絡一般都包含輸入層、卷積層、池化層、全連接層、輸出層,不同的模型卷積層和池化層的數目不同,卷積層的數量越多,提取出的復雜特征越多。
本文中使用卷積神經網絡對數據集進行二分類,使用兩個卷積層和兩個max-pooling層進行特征提取,第一個卷積層中卷積核大小為3×3,卷積核個數為32,第二個卷積層中卷積核大小與第一個卷積層中卷積核大小相同,卷積核個數為64,逐漸增加卷積核的個數,能夠提取到數據中的高維特征。
在卷積神經網絡模型中參數的數量多于其他分類算法,使模型的復雜性較高,雖然有利于提高模型的準確率,但是同時也使模型容易過擬合。為了防止模型過擬合,本文中使用早停法、L2正則化、增加Dropout層來防止過擬合。
1) 早停法。本文中用驗證集中的準確率作為評價模型的標準,具體方法如下:① 將原來的訓練數據集劃分為訓練集和驗證集。② 在訓練集上訓練模型,同時每隔固定迭代周期計算模型在驗證集上的準確率。③ 每次保存驗證集上準確率最好的模型參數,如果模型連續幾個周期在驗證集上的準確率比上一周期的準確率低,且相差超過設定閾值,則停止訓練。④ 模型最終的參數為保存在驗證集上準確率最好的參數。
2) L2正則化。本文在卷積神經網絡的卷積層中添加L2正則化,使模型中參數的值較小,減少模型復雜度,其公式如下:
(1)
本文中值為0.0001。
3) Dropout層。Dropout層通過在訓練過程中隨機減少神經元數量增加網絡多樣性來避免模型過擬合。Dropout層的使用方法如下:① 在訓練階段每一個神經元有p(0
隨機森林模型最早由Leo Breiman和Adele Cutler提出。隨機森林是由眾多決策樹集成得到的,其輸出類別是由決策樹輸出類別的眾數決定,如圖1所示。
在本文隨機森林模型中,決策樹的數量為50[13],既能保證分類器的多樣性和分類的精度,又能有效減少隨機森林的構建時間。
卷積神經網絡在處理高維數據時可以充分提取數據集的信息,而且對于不平衡率較低或平衡的數據集可以達到很好的分類準確率。隨機森林在不平衡率較大的不平衡數據集上可以達到很高的分類準確率,并且對不平衡數據集中少數類的識別率較高。本文將兩種方法結合起來得到基于卷積神經網絡和隨機森林的網絡入侵檢測模型,希望利用兩種算法各自的優勢,能在提高入侵檢測模型整體的準確率的同時,又能提高對少數類的識別率。
圖2所示為本文設計的入侵檢測模型框架,該模型主要有五部分組成,對CICIDS2017數據集中的網絡數據類別進行分類。
具體步驟如下:
(1) 數據預處理。對CICIDS2017數據集中的標簽數值化和對屬性數據歸一化。
(2) 數據重采樣。卷積神經網絡對非平衡數據較為敏感,所以在使用卷積神經網絡模型進行二分類時,需要保證BENIGN和ATTACK類型數據樣本數量相當,這里使用隨機下采樣對BENIGN類下采樣。同時使用SMOTE算法對ATTACK類別中的少數類進行上采樣,減少數據集的不平衡率,提高隨機森林模型的分類準確率。
(3) 卷積神經網絡。使用卷積神經網絡CICIDS2017數據集中的數據二分類,分為BENIGN和ATTACK。
(4) PCA特征選擇。在使用隨機森林對CICIDS數據集中的ATTACK進行多分類前,使用PCA對數據進行特征選擇,以減少模型訓練時間。
(5) 隨機森林。隨機森林可以對非平衡數據集有較好的分類效果。本文中使用隨機森林算法對ATTACK類別進行多分類,提高模型對少數類的識別率。
本文使用的數據集是加拿大網絡安全研究所采集的CICIDS2017數據集[14],數據集實施的攻擊類型包括Brute Force FTP、Brute Force SSH、DoS、Heartbleed、Web Attack、Infiltration、Botnet and DDoS共7大類攻擊類型,具體分類如表1所示。

表1 數據集攻擊類別
CICIDS2017數據集樣本總量為2 830 743,每個樣本包含78個特征屬性,包括端口號、流的持續時間、數據包的數量、數據包長度等在正向和反向上的計算。
本文中使用準確率、召回率、精確度、F1值作為評測標準。因為CICIDS2017數據集的嚴重不平衡,所以不能只使用準確率來評測算法的優劣。各評測標準解釋如下:
(1) 準確率表示分類器正確分類的樣本占總樣本數之比。(2) 召回率表示分類器正確識別某一類別的個數除以某一類別的個數,反映的是分類器對某一類別的查全率。(3) 精確率表示分類器正確識別某一類別的個數除以分類器識別為某一類別的個數,反映的是分類器的對某一類別的查準率。(4) F1值是召回率和精確率的調和平均值,召回率和精確率是相互影響的。一般情況下,精確率高,召回率就低;召回率高,精確率就低;如果兩者值都高,就用F1來衡量。
在計算召回率與精確度時可以通過混淆矩陣得到,混淆矩陣如表2所示。

表2 混淆矩陣
則準確率的計算公式如下:
(2)
召回率的計算公式如下:
(3)
精確度的計算公式如下:
(4)
F1的計算公式如下:
(5)
(1) 標簽數值化。CICIDS2017數據集中共有15種網絡數據類別,分別為BENIGN類和14種ATTACK類別。為了方便處理,將標簽數值化,用0-14代表這15種類別,如表3所示。

表3 標簽數值化

續表3
(2) 數據歸一化。不失一般性,本文先對數據集進行歸一化處理。在對數據集屬性進行歸一化處理時,先對數據集中存在的少數null值和infinity值進行刪除處理,使用numpy庫中的isnull()和isinf()函數,Null值、infinity值處理后數據分布如表4所示。

表4 去除NULL值和infinity值后數據分布
為了使卷積神經網絡模型在訓練過程中加快收斂速度,并防止梯度消失,對CICIDS2017數據集中78個屬性進行歸一化,對屬性特征數據分布范圍大于25萬的數據進行對數函數轉換[15],再進行min-nax歸一化,對屬性特征數據分布范圍小于25萬的直接進行min-max歸一化。其中對數函數歸一化如式(6)所示,min-max歸一化函數如式(7)所示。
x′=log10(x+1)
(6)
(7)
在公式(6)中,對數函數中的真數值加1,是因為數據中含有少量值為-1,直接取對數會出現無窮值。
在CICIDS2017數據集中,各類別樣本數據量不平衡,影響卷積神經網絡與隨機森林的分類。圖3是沒有進行重采樣之前隨機森林算法對各個類別的分類結果,可以看見1、4、7、8、12、13、14類別的三個評估值都比較低,所以在進行分類前先對這幾類樣本進行重采樣。
對于上采樣倍率的選取,使用逐一比較在采樣倍率增加后,各類別的召回率、精確率、F1值以及整體的準確率的變化,在最小采樣倍率的基礎上,評測標準值最高的采樣倍率,分別得到各個Attack類別的采樣倍率。圖4到圖10分別是類別1、4、7、8、12、13、14隨上采樣倍率的增加,各類別精確率、召回率、F1值和整體準確率的變化趨勢。
由圖4到圖10可以看出,類別4、7、8、12的評估值以及總體的準確率隨著采樣倍率的增加都在逐漸增加,類別1的評估值以及總體準確率隨類別1的采樣倍率變化趨勢不明顯。這個趨勢說明在使用隨機森林算法時,對于含有較少有效特征的少數類來說,需要足夠的數據樣本來對模型進行訓練,消除數據的不確定性,而含有有效特征較多的少數類,即使數據量較少,也可以準確判斷。比如雖然類別11的數據樣本也比較小,但是該類別的三種評估值也較高。類別13、14的三個評估值增加,但整體準確率變化不大,因為類別13、14在總的測試集中的樣本數量較少,對總體結果影響不大。
根據數據結果對類別1、4、7、8、12、13、14按照倍率10、30、21、40、100、200、100使用SMOTE算法上采樣,采樣后樣本數據仍不夠5 000的,繼續上采樣至5 000,同時對BENIGN數據隨機下采樣,采樣后最終樣本分布如表5所示。

表5 重采樣后數據分布

續表5
因為卷積神經網絡有卷積層和池化層來對特征進行選擇,所以在訓練網絡之前不需要對屬性進行特征選擇。在進行隨機森林算法分類前,為了減少模型訓練時間事先對數據屬性特征進行選擇,最終PCA的特征維度根據最終的訓練時間及總的測試精確度來選擇。選取PCA特征選擇維度分別為20、30、40、50時,隨機森林的訓練時間和準確率變化趨勢。由圖11可以看到在特征維度為20、30、40時,隨著特征維度的增加,總體的準確率增加,在特征維度為50時,總體的準確率降低,這是因為隨著特征維數的增加,模型逐漸過擬合,在相同的模型上,要使測試集準確率相同,就必須要提供更多的訓練數據。
根據圖11可以發現在特征維度為20時,總準確率就已經可以達到0.98,且訓練時間最少,所以選擇PCA特征維度為20對隨機森林進行訓練。
經過數據預處理與數據平衡后,屬性特征為78,數據總量為2 505 872,雙標簽,訓練集與測試集比例按8 ∶2。卷積神經網絡的測試最終準確率為0.995。
隨機森林在特征維度為20時,測試準確率為0.989 5,各類別的召回率、精確率和F1值如圖12所示。
將圖12與圖3相比較,可以發現圖12在特征維度為20時,各類別的三個評估值的大小(除類別1的精確值外)都在0.95以上,比圖3特征維度為78時的分類效果要好。本文模型與其他模型[16]的比較如表6所示。

表6 結果比較

續表6
表6顯示本文模型在處理不平衡的多分類入侵檢測可以有較好的結果,在大多數類上F1值大于其他模型,在少數類Heartbleed、Web_Attack、Bot類別上的分類評估值F1值等同于隨機森林模型,在Dos_Slowhttptest類別上的分類評估值F1值等同于KNN模型。在Dos_slowloris、Infiltration類別上的分類評估值F1值明顯優于其他三種模型。
本文使用SMOTH算法和PCA算法對較新的入侵檢測數據集CICIDS2017進行重采樣和特征選擇,將卷積神經網絡算法和隨機森林算法結合生成入侵檢測模型,對CICIDS2017數據集進行訓練和測試,并與其他模型進行比較,可以看到本文中的模型在處理不平衡數據有明顯的優勢,并且增加了少數類的識別率。