高燚 高麗婷 楊宇夏
摘要:深度學習應用于網(wǎng)絡入侵檢測,從卷積神經(jīng)網(wǎng)絡中的殘差網(wǎng)絡ResNet結(jié)構(gòu)之后主要通過聯(lián)合使用多種優(yōu)化策略的方式進行改進,較少關(guān)注新模型的使用。因此,提出了一種基于ResNeXt結(jié)構(gòu)的網(wǎng)絡入侵檢測模型,使用NSL-KDD數(shù)據(jù)集進行了二分類實驗,驗證了所提模型相對同樣使用二維卷積的經(jīng)典CNN結(jié)構(gòu)模型具備一定的優(yōu)勢,且能保持合理的模型復雜度,表明所提模型算法的合理性,也為今后網(wǎng)絡入侵檢測的研究提供了又一種可選用的基礎模型。
關(guān)鍵詞:入侵檢測;ResNeXt;深度學習;NSL-KDD;二分類
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)28-0085-03
開放科學(資源服務)標識碼(OSID):
1 引言
深度學習是現(xiàn)在應用于網(wǎng)絡入侵檢測的主流技術(shù),其中卷積神經(jīng)網(wǎng)絡CNN在圖像識別方面廣泛使用,應用于網(wǎng)絡入侵檢測也同樣表現(xiàn)不俗。CNN模型從1998年LeNet結(jié)構(gòu)之后也在改進和發(fā)展中,AlexNet、VGG-Net、GoogLeNet和ResNet等經(jīng)典模型隨著結(jié)構(gòu)的改進,應用于圖像分類的準確率不斷提高。已有前人使用前述幾種CNN結(jié)構(gòu)模型進行了網(wǎng)絡入侵檢測相關(guān)實驗,表明一些檢測指標相對傳統(tǒng)機器學習方法有優(yōu)勢。使用KDDCup99數(shù)據(jù)集測試的如楊凝之[1]提出的PCA+CNN結(jié)構(gòu)的入侵檢測算法,鄭非凡[2]提出的基于ResNet的異常檢測模型,周珮等[3]提出的基于AutoEncoder和ResNet的入侵檢測模型等。使用NSL-KDD數(shù)據(jù)集測試的有楊印根等[4]提出的基于LSTM-RESNET結(jié)構(gòu)的入侵檢測模型等。Saining Xie等在2017年發(fā)表的論文[5]中首次提出了ResNeXt結(jié)構(gòu)模型,是在Resnet之后基于CNN結(jié)構(gòu)的一種改進模型,之前還沒有人將其應用于網(wǎng)絡入侵檢測,本文將做這方面的探索。
2 ResNeXt入侵檢測結(jié)構(gòu)設計
ResNeXt結(jié)構(gòu)模型主要特點是模塊化,不需要人為刻意地設計模型中每個具體部分結(jié)構(gòu)細節(jié),通過模塊的簡單堆疊就能實現(xiàn)復雜的分類任務,較為簡潔和規(guī)整,也便于移植和改進。根據(jù)模塊堆疊次數(shù)和方式的不同,就能形成不同層數(shù)的模型結(jié)構(gòu)[5],如常用的50層和101層等多個版本。ResNeXt在不明顯增加模型復雜度的情況下,在ImageNet圖像分類數(shù)據(jù)集上的表現(xiàn)優(yōu)于ResNet(同等層數(shù)的兩種模型復雜度相當,具體分析和圖像分類對比詳見文獻[5])。由于本文所使用的NSL-KDD數(shù)據(jù)集特征數(shù)量不多,本文選擇結(jié)構(gòu)相對簡單的ResNeXt50結(jié)構(gòu),同時設置全連接層執(zhí)行二分類,具體模型結(jié)構(gòu)設置如表1。
3 入侵檢測實驗分析
3.1 測試數(shù)據(jù)集的選擇
現(xiàn)在最常用來進行入侵檢測評估的是KDD CUP99數(shù)據(jù)集和NSI-KDD數(shù)據(jù)集。
(1)KDD CUP99數(shù)據(jù)集
由于有大量的數(shù)據(jù)冗余,約包含有490萬條網(wǎng)絡連接記錄,完整數(shù)據(jù)集很大,實驗時常選取較小的10%數(shù)據(jù)集進行評估(如文獻[6])。
(2)NSI-KDD數(shù)據(jù)集
NSI-KDD數(shù)據(jù)集是KDDCUP99數(shù)據(jù)集減少了冗余的改進版。兩者相同的是每條記錄都由41個特征和標簽(代表正常或者具體的攻擊種類,攻擊種類也都可分為4種類型攻擊:Dos攻擊、非法遠程訪問R2L、非法本地特權(quán)訪問U2R和端口與漏洞掃描Probe)組成,特征和標簽保持同樣的排列順序。不同的是NSI-KDD數(shù)據(jù)集在每條記錄中增加了用來評估每條記錄分類難度的第43列successfulPrediction屬性。本文使用完整版的NSI-KDD數(shù)據(jù)集進行測試評估。
3.2測試數(shù)據(jù)的預處理
(1)本文選擇NSL-KDD數(shù)據(jù)集已經(jīng)劃分好的KDDTrain+作為訓練數(shù)據(jù)集(簡稱為訓練集)和KDDTest+作為測試數(shù)據(jù)集(簡稱測試集)。訓練集和測試集中的網(wǎng)絡連接記錄都按照時間順序排列,每一行為一條記錄,使用CSV格式存儲的訓練集前10條記錄如圖1所示。前41列為網(wǎng)絡連接特征,第42列為記錄標簽,第43列為本文不需要使用的successfulPrediction屬性,將這一列刪除。
(2)由于每一條記錄中同時有字符型和數(shù)值型數(shù)據(jù),為了方便ResNeXt模型識別和處理,需將字符型數(shù)據(jù)轉(zhuǎn)化為數(shù)值型。本文采用序號數(shù)值映射方法,對第2列至第4列的字符型數(shù)據(jù)采用順序編號的方法進行數(shù)值化,如第2列中3種協(xié)議類型tcp、 udp、icmp分別數(shù)值化為0、1、2,對第3列和第4列的字符型數(shù)據(jù)也用類似方法處理;由于要進行二分類評估,對正常流量標簽norm數(shù)值化為0,其余攻擊標簽都數(shù)值化為1。由于數(shù)值化之后數(shù)據(jù)集中數(shù)據(jù)的數(shù)值偏差較大,不便于模型分類,本文采用Z-score的方法進行標準化處理,公式為[Z=x-μσ],式中x屬于原始數(shù)據(jù)集,?和σ為原始數(shù)據(jù)每一維特征項的均值和標準差,標準化后每一維的數(shù)據(jù)轉(zhuǎn)化為以0為均值,1為標準差的標準正態(tài)分布。經(jīng)標準化處理后Z的值域為[0,1]。
3.3實驗測試
使用Tensorflow 2.1.0搭建運行環(huán)境,實驗硬件環(huán)境為:Intel酷睿I5 10400的cpu,GeForce RTX 2060顯卡,16g內(nèi)存;軟件環(huán)境:Windows 10 64位的操作系統(tǒng),Python版本為3.7.10。
為便于ResNeXt模型識別,這里使用二維卷積的方法,將按照2.2方式預處理后的訓練集和測試集中的每條記錄的41個特征轉(zhuǎn)化為一張6*7的二維灰度圖(第42維用0填充)的形式。然后將這些灰度圖片送入ResNeXt模型進行入侵檢測的訓練和評估。具體實驗流程為將預處理好的KDDTrain+數(shù)據(jù)按照訓練集:驗證集=8:2的比例送入ResNeXt50模型中進行訓練,將KDDTest+數(shù)據(jù)作為模型訓練好之后評估的測試集。選擇adam優(yōu)化器,交叉熵損失函數(shù),輸出層選擇softmax分類器,設置batch_size=128。訓練100輪,從中選擇驗證集準確率較優(yōu)的權(quán)重作為模型權(quán)重,這時訓練集和驗證集的總體分類準確率都超過了99%,表明模型已訓練充分。模型訓練好之后使用測試集進行測試評估。
3.4實驗數(shù)據(jù)評估
本文進行的是NSL-KDD數(shù)據(jù)集的二分類評估實驗。入侵檢測評價指標主要包括準確率accr、精準率precision、召回率recall和F1值,通常利用混淆矩陣來計算這些值。設正常網(wǎng)絡數(shù)據(jù)為normal,異常網(wǎng)絡數(shù)據(jù)為attack,由此有如表2所示的混淆矩陣。
結(jié)合混淆矩陣對上述評價指標進行計算的公式為:
accr=[TP+TNTP+FN+FP+TN],precision=[TPTP+FP],recall=[TPTP+FN],F(xiàn)1-value=[2precision*recallprecision+recall]
公式中accr表示準確預測的normal和attack占總記錄數(shù)之比,precision表示準確預測的attack與預測值為attack的數(shù)量之比,recall表示準確預測的attack占實際attack總數(shù)之比,F(xiàn)1值是綜合precision和recall兩個標準的一個總體反映。
本文算法在KDDTest+測試集二分類評估時的實驗混淆矩陣值為:TP=8929,F(xiàn)N=3904,F(xiàn)P=332,TN=9379。利用上述公式進行計算,得到本文算法的accr、precision、recall和F1值如表3所示。為便于對比,同時在表3中列舉了典型傳統(tǒng)機器學習算法、同為CNN結(jié)構(gòu)也使用二維卷積的GoogLeNet和50層的ResNet50模型算法,其中ResNet50與本文算法模型復雜度相當。
從表3可知,在僅使用一種模型也不使用其他優(yōu)化策略聯(lián)合優(yōu)化的對比中,本文算法的accr、recall和F1值都是表3中最高的,同時在表3中所有評價指標都全面領先同為CNN結(jié)構(gòu)的GoogLeNet和ResNet50;和傳統(tǒng)機器學習算法的對比中,只有precision值略低于SVM,但SVM的recall值較低,且本文算法在綜合反映precision與recall平均指標的F1值的對比中也明顯優(yōu)于SVM。網(wǎng)絡攻擊的危害較大,對入侵檢測任務來說,recall和F1值更重要,在這一點ResNet50和本文模型相對傳統(tǒng)機器學習算法更有優(yōu)勢。
4 結(jié)論
本文首次將CNN中的ResNeXt結(jié)構(gòu)應用于網(wǎng)絡入侵檢測,在NSL-KDD數(shù)據(jù)集進行的二分類評估實驗,表明本文算法模型的準確率、精準率、召回率和F1值都全面優(yōu)于同為CNN結(jié)構(gòu)的GoogLeNet和ResNet50模型;在與典型傳統(tǒng)機器學習算法的比較中,在除精準率外的其余評估指標都占據(jù)明顯優(yōu)勢,且有更高的F1值。表明ResNeXt結(jié)構(gòu)模型應用于網(wǎng)絡入侵檢測的可行性。本文模型也有不足,如precision值略低,后續(xù)若妥善結(jié)合其它算法模型或者優(yōu)化策略,還有較大的提升空間。
參考文獻:
[1] 楊凝之.基于CNN的入侵檢測技術(shù)[J].通訊世界,2019,26(1):233-235.
[2] 鄭非凡.基于ResNet深度神經(jīng)網(wǎng)絡的異常檢測模型[J].網(wǎng)絡新媒體技術(shù),2020,9(2):16-22.
[3] 周珮,周志平,王利,等.基于AutoEncoder和ResNet的網(wǎng)絡入侵檢測方法[J].計算機應用研究,2020,37(S2):224-226.
[4] 楊印根,王忠洋.基于深度神經(jīng)網(wǎng)絡的入侵檢測技術(shù)[J].網(wǎng)絡安全技術(shù)與應用,2019(4):37-41.
[5] Xie S N,Girshick R,Dollar P,et al.Aggregated residual transformations for deep neural networks[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).July 21-26,2017.Honolulu,HI.IEEE,2017.
[6] 李勇,張波.一種基于深度CNN的入侵檢測算法[J].計算機應用與軟件,2020,37(4):324-328.
[7] 紀書鑒.基于深度學習的網(wǎng)絡流量入侵檢測研究[D]. 深圳:中國科學院大學(中國科學院深圳先進技術(shù)研究院),2020.
[8] 張勇東,陳思洋,彭雨荷,等.基于深度學習的網(wǎng)絡入侵檢測研究綜述[J].廣州大學學報(自然科學版),2019,18(3):17-26.
[9] 鄭偉發(fā).基于CNN-LSTM混合模型的入侵檢測算法研究[J].網(wǎng)絡安全技術(shù)與應用,2020(5):61-64.
【通聯(lián)編輯:聞翔軍】