時東閣 章曉慶 毛保磊 李潤知 林予松,2*
1(鄭州大學互聯(lián)網(wǎng)醫(yī)療與健康服務河南省協(xié)同創(chuàng)新中心 河南 鄭州 450052) 2(鄭州大學軟件學院 河南 鄭州 450003)
隨著科學技術的發(fā)展,互聯(lián)網(wǎng)走進了千家萬戶,在給我們生活帶來便利的同時,也帶來了網(wǎng)絡安全問題。工業(yè)界和學術界采取各種技術和措施解決網(wǎng)絡安全問題,其中入侵檢測系統(tǒng)(Intrusion Detection System,IDS)是網(wǎng)絡安全體系的重要組成部分,一直以來備受網(wǎng)絡安全領域學者的關注。IDS作為防火墻后第二道安全屏障,從網(wǎng)絡中收集信息并進行分析,從中發(fā)現(xiàn)違反安全策略的網(wǎng)絡行為,并和其他設備聯(lián)動做出響應。雖然當前人們信息安全意識在不斷提高,但網(wǎng)絡攻擊的復雜性以及攻擊手段的多樣性,使得信息安全事件頻繁發(fā)生。海量復雜且標簽不平衡的入侵數(shù)據(jù),給入侵檢測帶來了重大的挑戰(zhàn)。如何有效地從入侵數(shù)據(jù)中選擇特征進行多分類,并提高入侵檢測的精度,在網(wǎng)絡安全領域具有重要的研究價值和廣闊的應用前景。
目前,將機器學習和深度學習應用于入侵檢測領域是個重要的課題。機器學習能對特征進行學習并發(fā)現(xiàn)重要特征,利用機器學習的方法可以將入侵檢測轉化為對網(wǎng)絡中正常和異常行為分類的問題。Balabine等[1]提出了SVM算法應用于網(wǎng)絡流量異常檢測的專利;Pan等[2]和Tahir等[3]將K-means和SVM算法結合用于入侵檢測;Ambusaidi等[4]采用網(wǎng)絡流量的相關性檢測網(wǎng)絡的惡意行為;聚類也是常用的入侵檢測方法,基于聚類的入侵檢測主要包含有常規(guī)聚類方法[5]和聯(lián)合聚類方法[6]。上述方法雖然有較高的檢測率,但是由于數(shù)據(jù)的維度較大,特別在數(shù)據(jù)處理階段會依據(jù)專家經(jīng)驗進行特征提取,這不僅需要較長的時間來選擇合適的特征,還可能破壞數(shù)據(jù)之間的相關性,從而漏掉一部分有效特征。
近年來,深度學習在語音識別、圖像識別和自然語言處理等領域取得了不錯的成果[7]。深度學習可以從原始特征提取出抽象的高層特征,不需要依據(jù)專家經(jīng)驗進行特征選擇,因其強大的學習能力,國內(nèi)外已有學者嘗試將深度學習技術應用于網(wǎng)絡安全領域中。文獻[8]將J48決策樹應用到NSL-KDD[9]數(shù)據(jù)集上進行入侵檢測;文獻[10]將數(shù)據(jù)集的70%作為訓練集,剩余部分作為測試集,利用ANN進行入侵預測;文獻[11]將隨機樹應用于入侵檢測中并取得了不錯的成果。上述方法雖然取得了不錯的效果,但是其在模型訓練和測試時只使用了官方的訓練集,具有一定的局限性。此外,官方測試集中攻擊方法比官方訓練集的攻擊方法多17種,因此本文在模型的訓練和測試中分別采用官方訓練集和官方測試集,這樣有利于提高模型的健壯性。
本文提出了一種基于卷積神經(jīng)網(wǎng)絡的入侵檢測模型(CNN-Focal)。該模型將卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)中的門限卷積[12]和Softmax[13]應用于入侵檢測領域中進行多分類,針對不平衡數(shù)據(jù)集[14]采用Focal Loss[15]損失函數(shù)進行優(yōu)化,有效提升了入侵檢測精度。
在深度學習領域中,卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)是一種高效的神經(jīng)網(wǎng)絡模型,已成為眾多領域的研究熱點。卷積神經(jīng)網(wǎng)絡的基本結構由輸入層、卷積層、池化層、全連接層和輸出層組成,如圖1所示。在一個模型中卷積層、池化層和全連接層可以有一個或者多個,其中卷積層和池化層二者一般交替出現(xiàn),即卷積層連接池化層,或池化層后連接卷積層,以此類推。全連接層一般緊隨在池化層后面。
圖1 卷積神經(jīng)網(wǎng)絡基本結構
全連接層中每個神經(jīng)元與前一層所有神經(jīng)元進行全連接,位于CNN結構的末端。通常在全連接層之后是輸出層,即分類層。輸出層對卷積神經(jīng)網(wǎng)絡提取到的特征進行分類,分類的輸出即為結果。
Softmax回歸是Logistic回歸模型的推廣,主要用于多分類。當進行2分類的時候,Softmax回歸會退化為Logistic回歸。在多分類問題中,類標簽y取兩個以上的值,即類標簽y有k(k為大于2的整數(shù))個不同的值。給定的數(shù)據(jù)集{(x1,y1),(x2,y2),…,(xn,yn)},yi表示第i類標簽,i∈{1,2,…,k}。對于給定的x,Softmax回歸估計出x在k類標簽中每一類的概率。
損失函數(shù)(Loss function)是用來評估模型的預測值f(x)和真實值Y的差別程度,通常表示形式為L(Y,f(x))。損失函數(shù)反映了模型的魯棒性,即損失函數(shù)值越小,模型的魯棒性越好。
入侵檢測問題是一個分類問題,可以通過有監(jiān)督學習訓練出分類模型,然后使用訓練的模型對未知數(shù)據(jù)進行預測。在使用卷積神經(jīng)網(wǎng)絡時,輸入層輸入數(shù)據(jù)通常是二維的,入侵記錄是一維數(shù)據(jù),因此在卷積操作選擇方面,本文采取一維卷積方法對入侵記錄數(shù)據(jù)進行卷積操作。根據(jù)NSL-KDD標簽不平衡和模型實際分類性能等情況,本文設計了CNN-Focal模型,其結構如圖2所示。CNN-Focal模型共有10層,1個輸入層、3個卷積層、3個Dropout層、1個Max-pooling層、1個全連接層和1個Softmax層。
圖2 CNN-Focal模型結構
該模型具體描述如下:
1)輸入層:第一層為輸入層。入侵記錄是一維數(shù)據(jù),經(jīng)過數(shù)據(jù)標準化、one hot預處理后,單條入侵記錄數(shù)據(jù)由1×41轉換為1×122。
2)卷積層:第2、4、6層都是卷積層。在卷積層使用了門限卷積的概念,門限卷積中分為兩部分:一部分是卷積的激活值,即B;另一部分是直接線性得到卷積,即A。A、B兩部分相乘得到相應的卷積值。已有不少文獻證明較小的卷積核能得到更好的局部特征和分類性能[16],因此在卷積核大小的設計方面,CNN-Focal采用了小卷積核策略,卷積核大小分別為1×3、1×2和1×1,卷積核的個數(shù)分別為16、32、64。除此之外小卷積核可以對學習到的特征進行聚類,在一定程度上緩解卷積冗余對模型性能的影響。
3)Dropout層:卷積神經(jīng)網(wǎng)絡模型在訓練過程中容易出現(xiàn)過擬合現(xiàn)象,過擬合對模型實際性能影響很大。為了緩解此問題,CNN-Focal模型中第3、5和7層都采用了Dropout。Dropout值的大小分別設置為0.6、0.5和0.4,這是根據(jù)CNN-Focal模型實際分類效果進行設置的。
4)Max-Pooling層:池化層能減小計算量,CNN-Focal模型第8層為Max-Pooling層,stride為2,即參數(shù)數(shù)量減少為原來的一半。
5)全連接層:CNN-Focal中全連接層神經(jīng)元的個數(shù)為200。
6)Softmax層:在深度學習中,Softmax回歸通常作為標準的分類器用于多分類或二分類問題。CNN-Focal采用Softmax回歸作為多分類器。
在模型訓練中一般會遇到收斂速度慢、數(shù)據(jù)不平衡、耗費資源大等問題,因此需要引入相應的優(yōu)化策略減少這些問題帶來的負面影響。為了提高CNN-Focal模型的性能,本文采用以下三種優(yōu)化策略。
1)批標準化(Batch Normalization)。在深度學習中,深度網(wǎng)絡參數(shù)訓練時內(nèi)部存在協(xié)方差偏移(Internal Covariate Shift)現(xiàn)象。根據(jù)鏈式規(guī)則,隨著層數(shù)的增加,偏移現(xiàn)象會被逐漸放大,這將影響網(wǎng)絡參數(shù)學習。因為神經(jīng)網(wǎng)絡的本質是表示學習(Representation Learning),如果數(shù)據(jù)分布發(fā)生改變,神經(jīng)網(wǎng)絡不得不學習新的分布。批標準化對每一層都進行標準化處理,使輸入樣本之間不相關。通過標準化每一層的輸入,使每一層的輸入服從相同分布,因此克服內(nèi)部協(xié)方差偏移的影響。批標準化可以看做對輸入樣本的一種約束,最大作用是加速收斂和提高模型分類性能。
2)損失函數(shù)優(yōu)化。本文采用的入侵檢測數(shù)據(jù)集的標簽分布是不平衡的,數(shù)據(jù)集標簽統(tǒng)計如圖3所示。Focal Loss函數(shù)適用于不平衡數(shù)據(jù)集,因此本文采用Focal Loss作為模型的損失函數(shù)。與其他損失函數(shù)相比,F(xiàn)ocal Loss損失函數(shù)修正了正負樣本、難分和易分樣本對損失的貢獻量。
圖3 數(shù)據(jù)集標簽統(tǒng)計
3)Adam優(yōu)化算法。Adam算法[17]可以替代傳統(tǒng)隨機梯度下降過程的優(yōu)化算法,能基于訓練數(shù)據(jù)迭代地更新網(wǎng)絡模型的權重。Adam算法具有減少深度學習的時間以及占用計算機的資源等優(yōu)勢,因此被廣泛應用于深度學習領域。CNN-Focal模型采用Adam算法提高模型的性能。
針對本文數(shù)據(jù)集不平衡問題,本文將Focal Loss損失函數(shù)應用到模型中。為了驗證Focal Loss的有效性,本文將Focal Loss和深度學習中常用的交叉熵損失函數(shù)進行實驗對比,即將CNN-Focal模型的損失函數(shù)換成交叉熵損失函數(shù),更改損失函數(shù)后的模型記為CNN-Cross。除此之外,為了驗證CNN-Focal模型具有更好的分類效果,本文將CNN-Focal與SVM、RandomForest、DecisionTree、GaussianNB四種方法進行了對比實驗。
在入侵檢測領域,NSL-KDD數(shù)據(jù)集被廣泛應用,本文將經(jīng)過數(shù)據(jù)預處理的NSL-KDD數(shù)據(jù)集用于CNN-Focal以及對比模型的訓練和測試。另外本文選取了精度、準確率、召回率、F1評分等指標對模型進行評估。
1)數(shù)據(jù)集介紹。在入侵檢測的研究中,KDD CUP 99數(shù)據(jù)集是使用最為廣泛的數(shù)據(jù)集。KDD CUP 99數(shù)據(jù)集中訓練集有約500萬條記錄,測試集有約30萬條記錄,該數(shù)據(jù)集的數(shù)據(jù)量對實驗硬件環(huán)境要求較高。另外,各種統(tǒng)計分析顯示KDD CUP 99數(shù)據(jù)集中存在大量冗余的記錄[18],這將使模型出現(xiàn)過擬合現(xiàn)象,且在訓練過程中需要更多的計算機資源,模型收斂緩慢。
NSL-KDD數(shù)據(jù)集解決了KDD CUP 99數(shù)據(jù)集中存在的問題,目前有許多研究成果都是基于NSL-KDD數(shù)據(jù)集的。NSL-KDD數(shù)據(jù)集中包含41列特征和1列標簽。標簽列分為5大類:Normal,Probe,Dos,U2L和R2L。
NSL-KDD數(shù)據(jù)集中訓練集共有125 973條(約18.2 MB),測試集共有22 543條(約3.2 MB)。這個數(shù)據(jù)集的數(shù)量級對實驗硬件環(huán)境的要求不高,可以在普通機器上進行實驗。另外,訓練集和測試集中包含的攻擊方法不同,所以使用該數(shù)據(jù)集訓練出的模型對于新型的攻擊具有較好的檢測效果。
2)數(shù)據(jù)預處理。機器學習中一般使用標稱型和數(shù)值型兩種數(shù)據(jù)類型,NSL-KDD數(shù)據(jù)集中41列特征屬性值既有標稱型又有數(shù)值型。該數(shù)據(jù)集中protcol_type、service、flag和label 4列屬性值類型為標稱型,剩余各列為數(shù)值型。
數(shù)據(jù)的標準化(Normalization)是把數(shù)據(jù)按比例縮放到一個特定區(qū)間,使之從一個大區(qū)間落入一個小區(qū)間。標準化后的數(shù)據(jù)具有縮短模型的收斂時間、提高模型精度等優(yōu)勢。本文對數(shù)值型特征進行標準化操作,使之縮放到[0,1]之間。具體如下:
(1)
式中:x、xmin、xmax分別表示原始樣本數(shù)據(jù)值、樣本數(shù)據(jù)的最大值、樣本數(shù)據(jù)的最小值。
one-hot編碼,又稱獨熱編碼,它不僅能處理非連續(xù)型數(shù)值的特征,也會讓特征之間的距離更加合理。本文中使用sklearn包中的OneHotEncoder對protcol_type、service、flag和label 4列標稱型數(shù)據(jù)進行one-hot編碼。
3)評價指標。對模型進行評估,不僅需要有效可行的實驗方案,還需要有衡量模型泛化能力的評價指標,這就是性能度量。在不平衡分類任務中,最常用的性能度量有精度(Accuracy)、準確率(Precision)、召回率(Recall)以及F1評分四種。本文以這四種指標來評估模型。
本文實驗環(huán)境采用了Ubuntu 16.04 64位操作系統(tǒng)、Intel Core i7處理器、64 GB內(nèi)存。實驗平臺采用了TensorFlow 1.9.0、Sklearn 0.20.1等框架,在程序實現(xiàn)中使用了Python 3.5.2進行編程。
本文所有實驗均使用NSL-KDD數(shù)據(jù)集。CNN-Cross和CNN-Focal兩組對比實驗的結果如表1-表3所示。SVM、RandomForest、DecisionTree、GaussianNB四組實驗與CNN-Focal的實驗結果的對比結果如表4-表6所示。
表1 兩種損失函數(shù)總體指標對比
表2 兩種損失函數(shù)準確率對比
表3 兩種損失函數(shù)召回率對比
表4 總體指標對比
表5 準確率對比
表6 召回率對比
表1為CNN-Focal和CNN-Cross在精度、平均準確率、平均召回率和F1評分上的對比結果??梢钥闯?,CNN-Focal取得了79.25%的精度、82.56%的平均準確率、79.25%的平均召回率和76.90%的F1評分,均高于CNN-Cross。
由表2可知,CNN-Focal在Normal、Probe、U2L、R2L等五種類型上分別取得了70.43%、81.44%、95.93%、70.69%和91.19%的準確率,均高于CNN-Cross。
由表3可知,CNN-Focal在Normal、Probe、U2L、R2L等五種類型上分別取得了96.19%、73.01%、82.60%、9.90%和20.96%的召回率,均高于CNN-Cross。
綜合對比表1-表3實驗結果,F(xiàn)ocal Loss 損失函數(shù)在本文數(shù)據(jù)集上的分類效果優(yōu)于交叉熵損失函數(shù)。
表4列出了CNN-Focal模型和其他四種模型在精度、平均準確率、召回率和F1評分上的結果對比。可以看出,CNN-Focal模型取得了79.25%的精度、82.56%的平均準確率、79.25%的平均召回率、76.90%的F1評分,均高于其他四種模型。
由表5可知CNN-Focal模型在Normal、Probe和U2L三種類型的準確率上均高于其他四種模型。CNN-Focal模型在Dos、R2L兩種分類上準確率略低于SVM模型,而高于其他三種方法。但是SVM在U2L類別上的準確率為0,即SVM沒有檢測出U2L類型的攻擊,而文中設計的CNN-Focal模型達到了0.706 94的準確率。總體來說,CNN-Focal模型在準確率上優(yōu)于其他四種模型。
由表6可知,CNN-Focal模型在召回率上均高于其他四種模型,尤其在U2L攻擊類型的檢測效果上比其他四種更有效。
綜合表4-表6實驗結果,本文提出的CNN-Focal模型具有更好的分類效果,與其他方法相比,本文模型在取得較高的準確率的同時,也提高了不同攻擊類型的檢測準確率。
針對傳統(tǒng)入侵檢測系統(tǒng)在網(wǎng)絡流量較大及復雜入侵環(huán)境下檢測能力弱且精度低的問題,本文提出了CNN-Focal模型。實驗結果表明,與SVM、RandomForest、DecisionTree和GaussianNB等方法相比,本文模型具有較高分類精度和F1評分。在未來工作中,將進一步優(yōu)化模型結構,減少訓練時間,提高分類效果,同時還將探索二維卷積模型在入侵檢測中的應用。