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