◆楊印根 王忠洋
(江西師范大學(xué)計算機(jī)信息工程學(xué)院 江西 330022)
隨著互聯(lián)網(wǎng)的發(fā)展,人們的生活和生產(chǎn)方式發(fā)生了前所未有的變化,互聯(lián)網(wǎng)已經(jīng)成為社會不可或缺的一部分,但網(wǎng)絡(luò)攻擊對互聯(lián)網(wǎng)的發(fā)展構(gòu)成了威脅,因此對網(wǎng)絡(luò)入侵檢測系統(tǒng)(IDS)的研究越發(fā)受到研究者的重視。
入侵檢測問題本質(zhì)上是一個分類問題,當(dāng)只需要判別是否發(fā)生了入侵時,其是一個兩類分類問題。當(dāng)需要進(jìn)一步細(xì)分入侵種類的時候,例如入侵是否為 DoS((Denial of Service attacks)、R2L(Root to Local attacks)、U2R(User to Root attack)和Probe(Probing attacks)中的一種時,其便是一個多類分類問題,本文只考慮兩類分類問題。
機(jī)器學(xué)習(xí)方法已被廣泛使用在IDS中[1]。例如Pervez等提出了基于支持向量機(jī)(SVM)的過濾算法[2];Shapoorifard等基于KNN提出了KNN-ACO方法[3];Ingre and Bhupendra等提出了基于決策樹的入侵檢測方法[4]。
近十年來,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks)在語音識別,圖像識別和人臉識別等領(lǐng)域取得令人矚目的成果[5],其也被研究者們應(yīng)用于入侵檢測中。Tang.T.A等針對軟件定義下的網(wǎng)絡(luò)環(huán)境,提出基于的異常檢測算法,該算法可以應(yīng)用于軟件定義網(wǎng)絡(luò)中的異常檢測[6]。Javaid A.等提出了一種基于半監(jiān)督模型的方法,在網(wǎng)絡(luò)入侵檢測系統(tǒng)中對基準(zhǔn)NSL-KDD數(shù)據(jù)集使用自學(xué)習(xí)(STL)方法來檢測攻擊[7]。Wang等通過將流量數(shù)據(jù)類比為圖像,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的惡意軟件流量分類算法[8]。Staudemeyer等提出了基于LSTM的入侵檢測算法,該算法適用于檢測具有獨(dú)特時間序列特征的DoS攻擊和Probe攻擊[9]。賈凡等將卷積神經(jīng)網(wǎng)絡(luò)模型應(yīng)用到網(wǎng)絡(luò)入侵檢測,通過提取特征的局部相關(guān)性從而提高特征提取的準(zhǔn)確度[10]。李春林等通過深度學(xué)習(xí)中的自編碼網(wǎng)絡(luò)模型對網(wǎng)絡(luò)特征進(jìn)行提取,然后使用softmax分類器對特征數(shù)據(jù)進(jìn)行分類[11]。CL Yin等將RNN(Recurrent Neural Networks)運(yùn)用到網(wǎng)絡(luò)入侵檢測中,通過選取不同的隱藏層節(jié)點(diǎn)數(shù)和學(xué)習(xí)率來進(jìn)行二分類和五分類實(shí)驗(yàn)[12]。
網(wǎng)絡(luò)入侵檢測研究中,常用的KDD CUP 99、NSL-KDD數(shù)據(jù)集中通常包含類別數(shù)據(jù)和數(shù)值數(shù)據(jù)[13]。以往的機(jī)器學(xué)習(xí)方法是將類別數(shù)據(jù)進(jìn)行one-hot變換后再與數(shù)值數(shù)據(jù)拼接,然后作為輸入傳遞至模型。然而這種處理方式無法度量不同類別值之間的內(nèi)在關(guān)系,并且使用one-hot 方法編碼的向量會導(dǎo)致輸入向量稀疏。受自然語言處理中詞嵌入和句子嵌入研究的啟發(fā),本文提出了一種基于詞嵌入和LSTM(Long Short-Term Memory)的網(wǎng)絡(luò)入侵檢測模型(LSTM-RESNET)。該模型通過詞嵌入方法提取輸入中類別數(shù)據(jù)的詞向量,然后通過LSTM對詞向量提取特征并構(gòu)成句子向量,再將其與數(shù)值數(shù)據(jù)進(jìn)行拼接,送入判別器,從而識別網(wǎng)絡(luò)入侵。
本文其余部分安排如下:第一節(jié)對相關(guān)概念和研究思路進(jìn)行介紹。第二節(jié)具體介紹本文提出的新模型。第三節(jié)在NSL-KDD數(shù)據(jù)集中對新模型、Knn、決策樹、隨機(jī)森嶺等基準(zhǔn)算法以及深度學(xué)習(xí)方法CNN進(jìn)行比較與分析。第四節(jié)總結(jié)與展望。
記(x,y)為數(shù)據(jù)集D中的一個樣本對。其中x為輸入,通常包括網(wǎng)絡(luò)的協(xié)議類型、時間戳、用戶登錄數(shù)量和失敗登錄記錄數(shù)量等特征,x=[xc,xn]中既包含有類別數(shù)據(jù)xc∈R1×Nc(通常類別數(shù)據(jù)采用 token離散編號表示),也包含數(shù)值數(shù)據(jù) xn∈R1×Nn。y∈{0,1}表示標(biāo)簽,其中0表示正常訪問,1表示為網(wǎng)絡(luò)入侵。IDS問題即構(gòu)建并訓(xùn)練模型=f(x;?)來預(yù)測當(dāng)前訪問為入侵類型的概率。
與圖像識別和自然語言的處理不同,圖像識別中輸入均是表示像素灰度或者顏色的數(shù)值數(shù)據(jù);自然語言處理中,例如情感分析中,輸入則是列別數(shù)據(jù),例如詞匯。然而,對于網(wǎng)絡(luò)入侵檢測問題而言,輸入中即包含類比數(shù)據(jù)也包含數(shù)值型特征。
傳統(tǒng)上對類別數(shù)據(jù)的處理方式是將類別數(shù)據(jù)轉(zhuǎn)換為 one-hot向量,然而這種處理無法計算不同類別之間的距離。隨著 DNN的研究的深入,詞嵌入在NLP(Natural Language Processing)中取得了廣泛應(yīng)用,詞嵌入技術(shù)基于對上下文的分析,提取出詞匯在低維空間的特征向量。詞嵌入技術(shù)以及在此基礎(chǔ)上發(fā)展起來的句子嵌入技術(shù)在文本理解、情感分析、chatbot以及機(jī)器翻譯中發(fā)揮了巨大的作用。
近幾年來,也有學(xué)者使用基于 NLP的詞嵌入和句子嵌入來改進(jìn)協(xié)同過濾算法。例如湯敬浩基于詞嵌入方法提出了混合推薦模型[14],MG Ozsoy提出了一種基于改進(jìn)的Word2Vec的推薦系統(tǒng)[15]。邢寧提出了主題強(qiáng)化的詞句嵌入模型,通過分析長程上下文依賴關(guān)系來提高文本分類性能[16]。
目前句子嵌入中主要的方法可以分為基于 LSTM、CNN以及Attention三類。其中基于LSTM的方法由于可以很好地捕捉前后之間的依賴關(guān)系,受到眾多學(xué)者的重視。例如Bowman 等基于LSTM分別對前提句和假設(shè)句進(jìn)行編碼,然后將得到兩個句子表示向量連接后送入 tanh 層中,最后通過 Softmax 層進(jìn)行文本蘊(yùn)含識別分類[17]。劉陽等提出了一種基于雙向 LSTM 的句子表示模型用文本蘊(yùn)含識別任務(wù)[18]。H.Palangi等在對信息檢索分析和應(yīng)用時使用LSTM網(wǎng)絡(luò)進(jìn)行深度句子嵌入[19]。
LSTM(Long Short-Term Memory)是長短期記憶網(wǎng)絡(luò)[20],是一種時間遞歸神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測時間序列中間隔和延遲相對較長的重要事件。LSTM的巧妙之處在于通過增加輸入門限,遺忘門限和輸出門限,使得自循環(huán)的權(quán)重是變化的,這樣一來在模型參數(shù)固定的情況下,不同時刻的積分尺度可以動態(tài)改變,從而避免了梯度消失或者梯度膨脹問題。
受上述研究啟發(fā),本文提出了一種基于 LSTM 和 RESNET的IDS模型。新模型首先通過詞嵌入層獲得類別數(shù)據(jù)的詞向量,然后將類別數(shù)據(jù)集合類比為“句子”,采用通LSTM提取類別集合的句子特征,再與數(shù)值數(shù)據(jù)拼接,送入Resnet(殘差網(wǎng)絡(luò))構(gòu)成的判別器中。
下面該將對新模型進(jìn)行具體的介紹。
在網(wǎng)絡(luò)入侵檢測數(shù)據(jù)集NSL-KDD中,其中的41個屬性并不都是連續(xù)型屬性,有3個字符型的離散變量。而神經(jīng)網(wǎng)絡(luò)不能處理這類數(shù)據(jù),傳統(tǒng)方法是將這類數(shù)據(jù)用0、1、2等數(shù)字標(biāo)號或者使用one-hot轉(zhuǎn)換成矩陣向量。然而這些方法會導(dǎo)致數(shù)據(jù)關(guān)系不平衡或者數(shù)據(jù)變得過于稀疏。鑒于LSTM在句子表示問題中有著良好的表現(xiàn),本文將LSTM結(jié)合Embedding對NSL-KDD數(shù)據(jù)進(jìn)行處理。將數(shù)據(jù)再利用LSTM提取特征,最后使用句向量表示,并為后續(xù)使用Resnet訓(xùn)練做好準(zhǔn)備。
在深度學(xué)習(xí)中,隨著神經(jīng)網(wǎng)絡(luò)層數(shù)加深,得到的訓(xùn)練效果在理論上應(yīng)該是逐漸提升的。但是在實(shí)驗(yàn)中,隨著網(wǎng)絡(luò)深度的增加,訓(xùn)練效果反而下降。產(chǎn)生這種問題的原因是梯度消失,Resnet的出現(xiàn)解決了這個問題,使得可以訓(xùn)練非常深的網(wǎng)絡(luò)。考慮到Resnet在圖像處理方面的表現(xiàn)卓越,本文將Resnet運(yùn)用到網(wǎng)絡(luò)入侵檢測中,相對于傳統(tǒng)深度學(xué)習(xí)方法,其可以通過加深網(wǎng)絡(luò)來提高性能。
本文使用的模型如圖 1所示(圖中省略了中間的若干網(wǎng)絡(luò)訓(xùn)練層,)。首先將數(shù)據(jù)集數(shù)字型和字符型特征分為2部分。字符型特征使用one-hot屬性映射處理后進(jìn)行Embedding詞向量化,然后使用LSTM進(jìn)行特征分析和處理,最后和數(shù)字形特征合并成為處理過的數(shù)據(jù)集。然后將訓(xùn)練數(shù)據(jù)集放入殘差網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,從中得到模型最好的超參數(shù),然后使用測試數(shù)據(jù)集進(jìn)行結(jié)果測試。

然后將映射后得到的one-hot編碼通過word embedding轉(zhuǎn)換成詞向量矩陣[18]。實(shí)現(xiàn)方法如圖2所示:

圖2 word embedding過程
其中輸入為one-hot編碼,經(jīng)過神經(jīng)網(wǎng)絡(luò)隱層的計算,會得到一個權(quán)重矩陣,矩陣的列數(shù)代表了詞向量的維度,讓后通過輸出層得到結(jié)果。輸出層是一個softmax回歸分類器,它的每個節(jié)點(diǎn)將會輸出一個0-1之間的值(概率),最大的值(概率)代表了期望的結(jié)果。這些所有輸出層神經(jīng)元節(jié)點(diǎn)的概率之和為 1。其中softmax函數(shù)如下所示:

它能將一個含任意實(shí)數(shù)的K維向量 Z壓縮到另一個K維實(shí)向量 S(z)中,每一個元素的范圍都在 (0,1) 之間,并且所有元素的和為1。之后將得到的詞向量通過LSTM進(jìn)行抽取轉(zhuǎn)換得到句子向量[21]。其計算公式如下:

其中x,W,b分別代表輸入的詞向量、網(wǎng)絡(luò)權(quán)重矩陣和權(quán)重偏置。ft表示遺忘門限,it表示輸入門限,表示前一時刻cell狀態(tài)、Ct表示當(dāng)前cell狀態(tài)(這里就是循環(huán)發(fā)生的地方),ot表示輸出門限,ht表示當(dāng)前單元的輸出,ht-1表示前一時刻單元的輸出。
最后將句向量送入殘差網(wǎng)絡(luò)中訓(xùn)練并通過softmax得到預(yù)測結(jié)果。其中殘差網(wǎng)絡(luò)基本思想和計算如圖3所示:

圖3 殘差模塊
殘差網(wǎng)絡(luò)由圖3所示的若干殘差塊組成,假設(shè)該部分神經(jīng)網(wǎng)絡(luò)的輸入為x,要擬合的函數(shù)映射(即輸出)為H(x),可以定義另外一個殘差映射F(x)為H(x)-x,則原始的函數(shù)映射H(x)可以表示為F(x)+x。He通過實(shí)驗(yàn)證明,優(yōu)化殘差映射F(x)比優(yōu)化原始映射H(x)容易得多[22]。
在未來,標(biāo)準(zhǔn)化研究機(jī)構(gòu)想要發(fā)展壯大,就必須開拓進(jìn)取、與時俱進(jìn),及時轉(zhuǎn)變思想觀念,牢固樹立品牌意識,增強(qiáng)品牌經(jīng)營能力,無論是對接政府,還是對接市場,都應(yīng)該在工作中體現(xiàn)自身機(jī)構(gòu)的獨(dú)特性和品牌價值。簡言之,標(biāo)準(zhǔn)化研究機(jī)構(gòu)應(yīng)以品牌建設(shè)為抓手,穩(wěn)步提高核心競爭力,從而為做強(qiáng)做大做優(yōu)奠定堅實(shí)基礎(chǔ)。
網(wǎng)絡(luò)模型的損失函數(shù)為分類交叉熵函數(shù):categorical_crossentropy,其計算公式如下:

n是樣本數(shù),m是分類數(shù),yim與?im分別代表標(biāo)簽值和預(yù)測輸出值。
算法流程如下:

算法 權(quán)重更新算法輸入
其中y為預(yù)測值,y為實(shí)際標(biāo)簽值。η為學(xué)習(xí)率,k為迭代次數(shù)。θ為權(quán)重矩陣和偏置,L(y:y)是測量模型預(yù)測值y和實(shí)際標(biāo)簽值y之間的偏差。

表1 數(shù)據(jù)集特征
目前,入侵檢測系統(tǒng)通常在 KDD 99和 NSL-KDD兩個benchmark數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)。
KDD99是1999年KDD競賽建立的入侵檢測基本數(shù)據(jù)庫。數(shù)據(jù)庫由許多的網(wǎng)絡(luò)連接數(shù)據(jù)組成,每條記錄都有41個屬性,其中34個屬性為連續(xù)屬性,7個屬性為離散屬性。這7個屬性中由3個屬性為標(biāo)稱變量,為字符型數(shù)據(jù)。除了41個屬性外,還有一個標(biāo)識屬性,表明該網(wǎng)絡(luò)連接的類型。其中包括一個Normal正常網(wǎng)絡(luò)行為,以及四大類攻擊:DoS、Probe、R2L、U2R。
NSL-KDD數(shù)據(jù)集是對于 KDD99數(shù)據(jù)集的優(yōu)化處理。其主要將KDD99大量冗余數(shù)據(jù)進(jìn)行剔除并把KDD99數(shù)據(jù)集劃分為固定的訓(xùn)練集和測試集。訓(xùn)練集和測試集數(shù)據(jù)都是選取合適的數(shù)量大小,使得不同的方法和實(shí)驗(yàn)論證都可以進(jìn)行合理的比較。NSL-KDD數(shù)據(jù)集作為KDD99數(shù)據(jù)集的改進(jìn),數(shù)據(jù)的每條記錄由41個屬性特征和1個類標(biāo)簽特征組成,其中41個屬性特征包含38個數(shù)字形特征和3個離散型(字符型)屬性,具體如表1所示。
NSL-KDD和KDD99標(biāo)簽特征都分為五類(1類Normal和四類攻擊),其中NSL-KDD訓(xùn)練集具體攻擊方法有22種,測試集有17種。
(1)實(shí)驗(yàn)環(huán)境
本文實(shí)驗(yàn)環(huán)境系統(tǒng)為windows10,使用Anaconda開源庫,編程語言為python,深度學(xué)習(xí)工具為Keras等,使用GTX1070顯卡作為GPU進(jìn)行加速計算。詳細(xì)環(huán)境配置如表2所示:

表2 實(shí)驗(yàn)環(huán)境
(2) 實(shí)驗(yàn)過程
我們采用NSL-KDD數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。其中將四類攻擊類別合并為abnormal類型,實(shí)驗(yàn)變?yōu)槎诸悊栴}。將數(shù)據(jù)集預(yù)處理后按照2.3算法流程訓(xùn)練模型并得出測試結(jié)果。
鑒于新模型存在諸多超參數(shù), 我們針對 NSL-KDD訓(xùn)練集進(jìn)行100次迭代訓(xùn)練,選取準(zhǔn)確率最高的超參數(shù)作為模型參數(shù),然后在測試集上進(jìn)行驗(yàn)證。
新模型的主要超參數(shù)和值如表3所示:

表3 模型參數(shù)列表
實(shí)驗(yàn)結(jié)果和KNN、決策樹(Decision tree)、AdaBoost等幾種主流的基準(zhǔn)方法進(jìn)行比較分析[20],除此外還和主流的深度學(xué)習(xí)方法進(jìn)行比較。評估指標(biāo)分別是準(zhǔn)確率(accuracy)、召回率(recall)、精確度和F值。


TP、FP、FN和TN含義如表4所示:

表4 TP、FP、FN和TN含義
考慮一個二分問題,即將實(shí)例分成正類(positive)或負(fù)類(negative)。對一個二分問題來說,會出現(xiàn)四種情況。如果一個實(shí)例是正類并且也被 預(yù)測成正類,即為真正類(True positive),如果實(shí)例是負(fù)類被預(yù)測成正類,稱之為假正類(False positive)。相應(yīng)地,如果實(shí)例是負(fù)類被預(yù)測成負(fù)類,稱之為真負(fù)類(True negative),正類被預(yù)測成負(fù)類則為假負(fù)類(false negative)。
實(shí)驗(yàn)采用準(zhǔn)確率來評估實(shí)驗(yàn)結(jié)果。如圖4所示。

圖4 不同算法準(zhǔn)確率對比
實(shí)驗(yàn)中對比了采用KNN、決策樹、AdaBoost、隨機(jī)森林(RF)等基準(zhǔn)算法和CNN、RNN等深度方法的實(shí)驗(yàn)結(jié)果,圖4展示了不同算法的準(zhǔn)確度。KNN、決策樹、AdaBoost、隨機(jī)森林和CNN的準(zhǔn)確率分別為76.6%、80.4%、79.7%、76.6%和77.7%,可以看到本文提出的算法相比于傳統(tǒng)機(jī)器學(xué)習(xí)算法和深度神經(jīng)網(wǎng)絡(luò)CNN在準(zhǔn)確度上有一定的提升,達(dá)到了81.8%。
混淆矩陣如表5:

表5 混淆矩陣
從表 5中可以看出模型將異常樣本誤判為正常樣本個數(shù)為3471,將正常樣本誤判為異常樣本個數(shù)為298。
實(shí)驗(yàn)其他評估參數(shù)如表6所示。因?yàn)槭褂肅NN方法的文章并未給出其他指標(biāo),所以不予對比。本文模型實(shí)驗(yàn)結(jié)果結(jié)合表5和表6分析可知Recall值相比較傳統(tǒng)基準(zhǔn)算法有了一定的提升,precision值和傳統(tǒng)算法差別不大。因?yàn)镮DS旨在提高recall值,即減少將異常樣本誤判為正常樣本的個數(shù)。本文在此方面對比一些方法有了一定進(jìn)步,但是總體來看誤判數(shù)仍占總體樣本數(shù)較高,所以導(dǎo)致準(zhǔn)確率沒有顯著提高。

表6 不同模型算法評估指標(biāo)對比
實(shí)驗(yàn)訓(xùn)練過程如圖5所示,當(dāng)?shù)螖?shù)達(dá)到100時,實(shí)驗(yàn)結(jié)果趨于穩(wěn)定,準(zhǔn)確率為穩(wěn)定在81%附近。
實(shí)驗(yàn)過程中fpr和tpr變化如圖6所示。實(shí)驗(yàn)訓(xùn)練100次后得到最終模型,然后在測試集上計算fpr和tpr的值,最終畫出Receiver operating characteristic curve(ROC)曲線。
本文將LSTM和Resnet引入到網(wǎng)絡(luò)入侵檢測問題中。和以往的傳統(tǒng)基準(zhǔn)算法相比,本文的模型可以處理更加龐大的數(shù)據(jù)量和復(fù)雜的特征,處理時序性特征可以考慮一定的上下文關(guān)系。可以更好地對數(shù)據(jù)之間的關(guān)聯(lián)性和相似性分析,網(wǎng)絡(luò)模型上可以訓(xùn)練較深的層次,通過神經(jīng)網(wǎng)絡(luò)深度提高模型性能。本文也有一些不足之處和改進(jìn)空間,比如對于41維特征可以進(jìn)行特征選擇和網(wǎng)絡(luò)結(jié)構(gòu)模型細(xì)化,如何減少FP值等。進(jìn)一步對這些問題進(jìn)行研究,可以更好的提高網(wǎng)絡(luò)入侵檢測的準(zhǔn)確率。

圖5 迭代次數(shù)對應(yīng)的準(zhǔn)確率

圖6 ROC曲線