◆董寧 程曉榮
基于深度學習的入侵檢測系統
◆董寧 程曉榮
(華北電力大學(保定)控制與計算機工程學院 河北 071000)
入侵檢測作為一種主動防御系統能夠有效阻止來自黑客的多種手段的攻擊,隨著機器學習和深度學習的發展,相關技術也開始應用到入侵檢測中。本文在KDD-Cup 1999數據集的基礎上,對其進行數據標準化和歸一化,然后利用隨機森林對數據集處理,計算每個特征的袋外數據誤差(OOB),得到每個特征的重要性,提取出12個重要性最高的特征,并將數據集按照7/3隨機劃分為訓練集與測試集,使用五層深度神經網絡訓練,三個隱藏層設置為100個節點,ReLU Leaky作為激活函數,使用Adam作為優化器,交叉熵作為代價函數,對處理后的數據集訓練。以準確率(Accuracy),精確率(Precision),召回率(Recall)為模型的衡量指標,最終得到了精確率為94.87%,召回率為94.35%的模型。
深度學習;神經網絡;入侵檢測;KDD99
入侵檢測系統(IDS)是一種能夠對網絡中的流量和用戶行為進行實時跟蹤并審計,判斷當前操作是否為可疑行為并能主動報警的網絡安全設備。區別于其他網絡安全設備,IDS是一種主動防御系統。根據信息的來源可以將入侵檢測分為基于主機型與基于網絡型。根據檢測方法又可分為異常入侵檢測型和誤用入侵檢測型。早期有些入侵檢測系統[1]通過建立用戶特征表,比較當前特征與已存儲定型的以前特征,利用概率統計方法,從而判定是否為攻擊行為。然而該方法的缺陷在于用戶特征表需要手動更新,且判定是否入侵的參數的確定比較困難,容易造成過高的誤報率和漏報率。
隨著機器學習和深度學習技術的發展,有人提出了基于KNN(K最近鄰分類算法)的入侵檢測模型,通過將用戶行為進行分類,來判定是否為入侵行為[5]。然而該方法隨著用戶訪問量的增加,單次行為分類的時間可長達60秒,在實際使用中并不可取,盡管后期有人提出了優化的方案[2],然而當數量級達到百萬時仍無法高速地對用戶的行為進行響應和判斷。到目前為止基于神經網絡的入侵檢測系統比較流行,本文則通過對KDD1999數據集經過處理后利用深度神經網絡對數據進行訓練,得到一個精確率和召回率都比較高的模型。
本文采用KDD1999數據集,該數據集每條記錄由41個特征和一個標簽組成。其中,41個特征由四個類型組成,包含TCP基本連接特征(九種,1-9)、TCP連接的內容特征(13種,10-22)、基于時間網絡的流量統計特征(九種,23-31)和基于主機的流量統計特征(十種,32-41)。在41個特征中還存在一些非連續型特征,例如連接的服務和狀態等。由于數據集各特征之間數據差異較大,且存在字符型數據,所以需要對數據集進行預處理,即字符型轉為數字型,特征標準化,特征歸一化。
字符型數據轉為數字型可選用one-hot編碼,然而在本文中為減小后續計算量,將所有可能值編入數組,根據數組中對應值的索引來將字符型數據轉換為數字型。數據標準化與數據歸一化用于將特征規范在特定區間內,防止差異過大。數據標準化如式1所示。



式2中AVG為平均值,式3中STAD為平均絕對偏差,比標準差對于孤立點具有更高的魯棒性。
數據歸一化如式4所示:



式5和6分別為提取出所有樣本的最小值與最大值,并經過式4處理后得到處理后的樣本。上述處理后所有特征區間均為[0-1]。在標簽中,若一條連接記錄正常,則標簽為normal,否則為攻擊的類型。KDD數據集攻擊類型有4大類共32種,本文將其分為兩類,即normal和attack,轉為數字型即為01和10。
由于KDD數據集共存在41個特征,部分特征值在大部分記錄中均相同,對最終分類效果無太大影響,且增加了訓練時間,所以本文采用隨機森林對特征重要性進行排序,使用袋外數據錯誤率作為衡量指標,選出了12個重要性最高的特征,然后利用神經網絡對數據訪問記錄進行分類。最終12個特征及權重如表1所示。

表1 特征選擇后的十二個特征
本文使用了深度神經網絡,其中輸入層為特征選擇并處理后的12個值,中間為三個隱藏層,每個隱藏層有100個神經元。每個神經元在經過激活后均進行dropout處理,避免過擬合現象。最終輸出為兩個節點,并隨后進行代價函數的計算。其中代價函數使用交叉熵計算,如式7所示。

其中,為兩個獨立的概率分布,分別代表網絡輸出值與實際值。
網絡結構如圖1所示。第一列十二個圓為十二個輸入神經元,中間三列每列為100個神經元,相鄰列每個神經元之間都存在連接,最后一列為兩個輸出神經元。

圖1 網絡結構
在實驗設計初期,神經網絡的激活函數為線性整流函數(ReLU),然而在訓練過程中,經常出現損失函數不下降且神經網絡中的參數得不到更新等情況。經排查后得知觸發了Dying ReLU現象。在神經網絡中,x為輸入,w為神經網絡的權重,神經元輸出為z,經過ReLU后為a,H為損失函數,α為學習率。則神經網絡的前向傳播如式8,式9所示。x為來自上一層的經過激活后的神經元輸出,w為當前隱藏層與下一層之間連接的權重。
z=w*x (8)
a=relu(z)=max(0,z) (9)
神經網絡的反向傳播中,需要求每層權重對應的梯度,并設置學習率不斷調整權重。求梯度及權重的更新如式10,11。當一個巨大的梯度流過神經元且學習率較高時,會導致權重更新過大,造成對于任意輸入x,網絡的輸出z小于0,經過激活函數后a為0,最終導致梯度恒為0,后期該權重都得不到更新,形成了神經元死亡的現象。


故經過多次失敗后最終選用Leaky ReLU函數,不同于ReLU函數將所有小于0的輸出設置為0,Leaky ReLU是給所有負值賦予一個斜率,從而保證后續的權重更新。
本次訓練采用KDD1999 10%樣本集,共40余萬條,隨機劃分為3:7比例,分別為測試集與訓練集。每次隨機取100條記錄為一個batch進行訓練,并計算為一次迭代。由于樣本集中正常訪問與攻擊的記錄比例為2:8,并不平衡,故僅憑準確率無法有效評估模型的好壞。所以在訓練中每達到一百次迭代,在測試集中隨機抽取64條記錄,進行一次準確率,精確率,召回率的計算。三個指標的計算公式如下所示:


其中TP(True Positive)表示將正類預測為正類數,TN(True Negative)表示將負類預測為負類數,FP(False Positive)表示將負類預測為正類數,FN(False Negative)表示將正類預測為負類數。式12表示模型預測準確率,式13表示在預測為攻擊的記錄中,真實為攻擊的比例,式14表示在所有標簽為攻擊的記錄中,模型判定為攻擊的記錄數。如表2所示為訓練的結果。

表2 訓練結果
如圖2、3、4、5所示為模型在訓練過程中的準確率,精確率,召回率,損失函數曲線,其中橫軸為迭代次數,縱軸為對應的指標。為了能更好的體現損失函數值的走勢,損失函數進行了平滑處理,其中實線為平滑參數為0.5處理后的曲線,而虛線則為未經處理的曲線。從四張圖可以看出召回率和精確率在開始時以較大幅度進行增長,在訓練400次后開始緩慢增長,最終迭代2000次時,召回率和精確率均達到94%以上。而損失函數經過一次大幅度下降后便開始以小幅度變化,且總的趨勢為減小最后趨近于不變。
在實際訓練過程中,準確率,召回率等參數在開始時并非一直都為0.2左右,由于樣本分布的不均勻,且訓練開始時經過第一次神經網絡后的一個batch通常表現為全部判定為攻擊,或全部判定為正常訪問,因此在訓練開始時準確率有時會為20%左右,而有時為80%左右。然而即使訓練開始準確率等參數為20%,模型的訓練時間并沒有太大的增加,事實上經多次驗證,當訓練開始準確率為20%左右時,在訓練初期準確率會經過一段高速增長后會逐漸緩速增長。
(1)準確率曲線

圖2 準確率曲線
(2)精確率曲線

圖3 精確率曲線
(3)召回率曲線

圖4 召回率曲線
(4)損失函數曲線

圖5 損失函數曲線
本文利用KDD1999數據集,對數據集中的數據進行標準化和歸一化,通過該方法使數據集中所有數據的值都保持在0-1的范圍內,避免了在后期訓練過程中因特征值之間的差異過大而帶來的問題。與此同時采用隨機森林選出了12個權重最高的特征,大大減少了訓練時間和運算量,同時在模型的實際應用中也減少了判斷是否為惡意訪問所需的時間。然后利用三層神經網絡對數據進行了分類和預測,使用Leaky ReLU激活函數避免了大規模神經元死亡的結果,并使最終訓練結果達到了較高的準確率和召回率。然而在構造隨機森林進行特征選擇時,由于數據集多,數量大,導致在特征選擇時需要花費大量的時間。與此同時,在信息安全的實際應用中,攻擊漏報的嚴重性要遠高于攻擊誤報的嚴重性。因此在模型的訓練過程中,需要刻意提高召回率,在保證高召回率的基礎上對精確率進行提高。該問題涉及閾值的選擇問題,在本實驗中并未體現,是將來需要研究的問題之一。
[1]阮耀平,易江波,趙戰生.計算機系統入侵檢測模型與方法[J].計算機工程,1999(09):63-65.
[2]華輝有,陳啟買,劉海,張陽,袁沛權.一種融合Kmeans和KNN的網絡入侵檢測算法[J].計算機科學,2016,43(03):158-162.
[3]楊昆朋. 基于深度學習的入侵檢測[D].北京交通大學,2015.
[4]C. Xu,J. Shen,X. Du and F. Zhang,"An Intrusion Detection System Using a Deep Neural Network With Gated Recurrent Units," in IEEE Access,vol. 6,pp. 48697-48707, 2018.
[5]Z.Ma and A.Kaban,"K-Nearest-Neighbours with a novel similarity measure for intrusion detection," 2013 13th UK Workshop on Computational Intelligence (UKCI),Guildford, 2013,pp. 266-271.