周 航,凌 捷
(廣東工業(yè)大學(xué) 計算機學(xué)院,廣東 廣州 510006)
網(wǎng)絡(luò)入侵檢測技術(shù)可分為兩種類型:基于行為的入侵檢測和基于特征的入侵檢測?;谔卣鞯娜肭謾z測對于已知的入侵具有較高的準確率,但識別未知的入侵的能力較弱?;谛袨榈娜肭謾z測對于任何偏離正常行為模型的行為都會將其識別為異常,缺點是容易將正常行為歸類為攻擊行為。
近年來,研究人員嘗試將一些機器學(xué)習(xí)算法應(yīng)用到入侵檢測系統(tǒng)中。有研究將K近鄰算法應(yīng)用到入侵檢測系統(tǒng)中[1]。有研究將支持向量機應(yīng)用在入侵檢測系統(tǒng)中,并采用了卡方檢驗法將與攻擊行為無關(guān)的特征去除掉,較之前不刪除特征的結(jié)果有提升[2]。多種機器學(xué)習(xí)算法也成功應(yīng)用在入侵檢測系統(tǒng)中,如樸素貝葉斯、決策樹等[3]。上述研究都是基于傳統(tǒng)的機器學(xué)習(xí)方法,雖然在樣本識別能力上都有提升,但是表達復(fù)雜函數(shù)的能力有限,泛化能力較弱,因此不能較好地處理復(fù)雜分類問題。
本文使用NSL-KDD數(shù)據(jù)集訓(xùn)練模型并評估模型性能。利用BiLSTM對網(wǎng)絡(luò)入侵數(shù)據(jù)進行高級抽象和非線性變換,并采用Batch Normalization機制使神經(jīng)網(wǎng)絡(luò)快速收斂,通過多次實驗,選擇了適當?shù)碾[藏層層數(shù)和迭代次數(shù),最后獲取分類結(jié)果。將設(shè)置的改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測方法與多種網(wǎng)絡(luò)入侵檢測方法進行對比,實驗結(jié)果表明,改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測方法不僅提高了準確率,而且泛化能力也有提高。
網(wǎng)絡(luò)入侵檢測的作用是發(fā)現(xiàn)未經(jīng)授權(quán)的惡意行為,實質(zhì)上是對數(shù)據(jù)進行分類的問題。傳統(tǒng)的機器學(xué)習(xí)算法曾被認為是適合應(yīng)用于入侵檢測領(lǐng)域的算法,并在入侵檢測中大量的應(yīng)用。如使用隨機森林的方法進行入侵檢測[4],利用Adaboost融合多種傳統(tǒng)機器學(xué)習(xí)方法進行入侵檢測[5],雖然這些方法已經(jīng)提高了準確率,但是這些方法都較依賴于特征選擇,泛化能力較弱。
在深度學(xué)習(xí)發(fā)展的早期,深度學(xué)習(xí)算法因為較難訓(xùn)練所以較少被研究人員注意,早期被應(yīng)用于入侵檢測領(lǐng)域的神經(jīng)網(wǎng)絡(luò)有深度信念網(wǎng)絡(luò)、限制玻爾茲曼機、自編碼器,以及深度神經(jīng)網(wǎng)絡(luò)。采用深度信念網(wǎng)絡(luò)在KDD Cup 99數(shù)據(jù)集上訓(xùn)練入侵檢測模型[6,7],其效果要好于傳統(tǒng)的機器學(xué)習(xí)算法,但容易過擬合。
近年有學(xué)者提出利用循環(huán)神經(jīng)網(wǎng)絡(luò)來進行網(wǎng)絡(luò)入侵檢測[8],其研究結(jié)果表明循環(huán)神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)入侵檢測數(shù)據(jù)集中進行二分類和多分類的表現(xiàn)都優(yōu)于傳統(tǒng)機器學(xué)習(xí)算法,此外有文章對循環(huán)神經(jīng)網(wǎng)絡(luò)在入侵檢測方面的應(yīng)用做了進一步的探討[9]。由于循環(huán)神經(jīng)網(wǎng)絡(luò)的變種結(jié)構(gòu)LSTM在自然語言處理領(lǐng)域效果較好,有學(xué)者研究其在入侵檢測領(lǐng)域的應(yīng)用[10],認為一個優(yōu)化的超參數(shù)能提升準確率和降低誤報率。本文提出改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測方法,通過特征選擇的方法更好地利用數(shù)據(jù)特征,實驗結(jié)果表明準確率有提升且泛化能力較好。
由于在入侵數(shù)據(jù)中的各個特征之間可能存在著依賴關(guān)系,本文利用BiLSTM神經(jīng)網(wǎng)絡(luò)處理數(shù)據(jù)特征之間的依賴關(guān)系,融合Batch Normalization機制使神經(jīng)網(wǎng)絡(luò)快速收斂,提出了改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測方法。
本文方法的模型由3個部分組成:數(shù)據(jù)預(yù)處理部分、訓(xùn)練部分、檢測部分。在進行模型訓(xùn)練前,首先要進行特征提取。通過卡方檢驗法計算各個特征與結(jié)果的關(guān)聯(lián)度,最終剔除了12個特征。由于實驗中所使用的數(shù)據(jù)集中含有非數(shù)值化特征,而所提出的方法中輸入的值必須為數(shù)值,所以需要將非數(shù)值化特征轉(zhuǎn)換為數(shù)值化特征。
由于入侵檢測數(shù)據(jù)集中各個特征的值分布不相同,有些差異過大,為了保證神經(jīng)網(wǎng)絡(luò)可以快速收斂,需要對所有特征進行標準化,使輸入的各個特征分布相近。
訓(xùn)練模塊的核心是使用BiLSTM神經(jīng)網(wǎng)絡(luò)從訓(xùn)練數(shù)據(jù)中提取特征,且利用ADAM優(yōu)化算法不斷迭代更新權(quán)重,從而使得網(wǎng)絡(luò)最后生成的結(jié)果達到最佳。根據(jù)入侵檢測數(shù)據(jù)集的特點,所設(shè)計模型的基本結(jié)構(gòu)如圖1所示,其中所使用的優(yōu)化技術(shù)包括RELU激活函數(shù),Bactch Normalization機制,ADAM優(yōu)化算法。最終檢測模塊對測試數(shù)據(jù)進行檢測并給出二分類和五分類的準確率,實驗結(jié)果表明改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測方法效果較好。
圖1 模型工作流程
2.2.1 BiLSTM
本文采用BiLSTM作為模型的核心,利用BiLSTM獲取數(shù)據(jù)的表示向量并進行訓(xùn)練。BiLSTM是由前向LSTM以及后向LSTM組合而成的一個結(jié)構(gòu),能很好完成數(shù)據(jù)特征的抽取以及運算。LSTM全名為長短期記憶網(wǎng)絡(luò),其是循環(huán)神經(jīng)網(wǎng)絡(luò)上的一個特殊的結(jié)構(gòu),能夠很好保存長數(shù)據(jù)特征的依賴關(guān)系,在自然語言處理領(lǐng)域被廣泛使用。LSTM由3個門組成:遺忘門、輸入門、輸出門。遺忘門控制冗余信息的消除,輸入門控制輸入信息的保留,輸出門接收遺忘門和輸出門的信息經(jīng)過篩選后傳遞給下一個LSTM單元。
LSTM單元的計算過程如下
其中,ft代表的是遺忘門,Wf、Wi、Wc、Wo代表的是神經(jīng)網(wǎng)絡(luò)權(quán)重,bf、bi、bc、bo代表的是偏置值,ht代表t時刻的網(wǎng)絡(luò)輸出。而BiLSTM是LSTM的改進版,能很好解析雙向數(shù)據(jù)信息,提供更加細粒度的計算,計算過程如下
圖2 BiLSTM結(jié)構(gòu)
2.2.2 Batch Normalization
在利用BiLSTM對數(shù)據(jù)進行解析之后,在神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)分布可能發(fā)生了變化,本文為了解決訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)時數(shù)據(jù)分布的不一致,引入Batch Normalization機制。Batch Normalization可以加快深層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,其在激活函數(shù)對前一層輸入的數(shù)據(jù)進行非線性變換之后再進行歸一化,可確保網(wǎng)絡(luò)的可訓(xùn)練性,并且可以讓神經(jīng)網(wǎng)絡(luò)持續(xù)保持輸入數(shù)據(jù)分布的一致性,從而減少網(wǎng)絡(luò)內(nèi)部的節(jié)點分布發(fā)生較大的變換。使用Batch Normaliztion機制可以加快網(wǎng)絡(luò)收斂的速度并且保持神經(jīng)網(wǎng)絡(luò)的表征能力。
Batch Normalization在每一層神經(jīng)網(wǎng)絡(luò)的計算過程如下
其中,B表示一個批次中有m個激活值,x′i表示歸一化之后的值,yi表示經(jīng)過BN變換之后的值。
本文設(shè)計了兩個實驗來評估本文入侵檢測模型在二分類以及五分類上的表現(xiàn)。二分類分為正常和異常兩種,五分類有Normal、R2L、Probe、R2L、U2R這5種。同時設(shè)置了MLP(多層感知機)、NB(樸素貝葉斯)、RF(隨機森林)、SVM(支持向量機)、RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))、LSTM(長短期記憶)等算法作為對比。
實驗使用Keras框架實現(xiàn)改進的基于BiLSTM網(wǎng)絡(luò)入侵檢測模型,使用的集成開發(fā)環(huán)境為Pycharm,實驗數(shù)據(jù)集為NSL-KDD數(shù)據(jù)集,Keras框架可以更簡單構(gòu)建神經(jīng)網(wǎng)絡(luò),該框架支持CPU和GPU兩種環(huán)境。本文實驗環(huán)境是Lenove啟天M415,CPU為Intel core i5-7500@3.40GHz,RAM為8GB。
實驗所用的數(shù)據(jù)集是在2009年公布的NSL-KDD數(shù)據(jù)集,NSL-KDD數(shù)據(jù)集是在KDD CUP 99基礎(chǔ)上去掉了一些冗余的數(shù)據(jù),使得分類器不會偏向更加頻繁出現(xiàn)的記錄并且能夠獲得更高的準確率。由于NSL-KDD數(shù)據(jù)集已經(jīng)合理地設(shè)置了訓(xùn)練集和測試集,這使得不同研究工作中的評估結(jié)果可以相互比較。在入侵檢測領(lǐng)域,NSL-KDD數(shù)據(jù)集被廣泛的使用[11]。
NSL-KDD數(shù)據(jù)集包括3個主要文件:KDDTrain,KDDTest+,KDDTest-21。KDDTrain中共有125 973條數(shù)據(jù),KDDTest+共有22 544條數(shù)據(jù),KDDTest-21共有 11 850 條數(shù)據(jù),數(shù)據(jù)集描述見表1。在3個文件中都包含了41個特征和一個標識符,其中1-10號特征為基本特征,11-22號特征為內(nèi)容特征,23-41號特征為流量特征,在實驗中將KDDTrain作為本次實驗的訓(xùn)練集,將KDDTest+和KDDTest-21作為測試集。根據(jù)前面41個特征,可以在數(shù)據(jù)集中分為4種攻擊類型:Dos、R2L、U2R、Probe,關(guān)于Dos、R2L、U2R、Probe的描述如下所使:
(1)Dos(拒絕服務(wù)攻擊):該攻擊會占用過多的計算資源或內(nèi)存資源從而導(dǎo)致計算機無法處理合理的請求;
(2)R2L(遠程攻擊):攻擊者無法直接訪問受害計算機,通過嘗試獲得該計算機的用戶身份來獲取本地訪問;
(3)U2R(本地攻擊):攻擊者使用本地普通用戶訪問系統(tǒng),并利用某些漏洞獲取對系統(tǒng)的更高訪問權(quán)限;
(4)Probe(探測攻擊):攻擊者通過探測器收集目標系統(tǒng)潛在漏洞的信息用于進一步的攻擊。
表1 數(shù)據(jù)集中各種類型的數(shù)量
3.2.1 數(shù)值化
由于NSL-KDD數(shù)據(jù)集中數(shù)據(jù)分布的不平衡以及特征類型不統(tǒng)一,這將使研究工作變得困難,所以需要對數(shù)據(jù)進行處理。在NSL-KDD數(shù)據(jù)集中存在38個數(shù)值型特征和4種非數(shù)值型特征,由于模型的輸入必須為數(shù)值化的特征,所以需要將非數(shù)字特征轉(zhuǎn)換為數(shù)字化特征,例如’service’,’protocol_type’,‘flag’等特征,在protocol_type中有3種不同的類型’tcp’,’udp’,’icmp’,這3種類型將會被轉(zhuǎn)換為數(shù)字‘1’,‘2’,‘3’。而‘flag’特征有11種類型,‘service有30種類型都會被轉(zhuǎn)換成相應(yīng)的數(shù)字。在二分類中標識符有Normal和Anormal兩種類型,將其轉(zhuǎn)換為1,0,而在多分類中,標識符有5種類型分別是dos, normal,probe, r2l, u2l,則將其轉(zhuǎn)換為數(shù)字0,1,2,3,4。
3.2.2 特征選擇
特征選擇是機器學(xué)習(xí)中的重要組成部分,使用特征選擇是為了獲得較高的準確率。對于特征選擇,最常用的是過濾式方法和包裹式方法。在過濾式方法中,采用基于各種統(tǒng)計檢驗中的分數(shù)來選擇特征,通過統(tǒng)計檢驗計算因變量和自變量的相關(guān)性來測量特征的相關(guān)性。包裹式方法則通過測量特征子集與因變量的關(guān)聯(lián)性來查找特征的子集。因此,過濾方法可以在任何訓(xùn)練模型中使用,而在包裹式方法中,所選擇的最佳特征子集最終用于特定的訓(xùn)練模型。實驗選擇使用過濾式的方法進行特征選擇。在實驗中需要刪除一些不必要的特征,這些特征與攻擊沒有任何關(guān)聯(lián)并且會降低入侵檢測系統(tǒng)的性能。有研究使用了多種特征選擇方法選擇出與攻擊類型相關(guān)的特征[12],攻擊類型與特征之間的聯(lián)系見表2。在實驗中使用卡方檢驗的方式進行特征選擇,經(jīng)過觀察得知7,8,11,14這4種特征幾乎全為0對于實驗毫無幫助,9,20,21與各類攻擊類型基本無關(guān)聯(lián),通過卡方檢驗法計算15,17,19,32,40這5種特征在實驗中沒有幫助,故刪掉這12種特征,最后保留29個特征作為輸入。
表2 攻擊類型與相關(guān)特征
3.2.3 標準化
在進行訓(xùn)練之前,通常要根據(jù)數(shù)據(jù)的分布決定是否要標準化,將數(shù)據(jù)統(tǒng)一線性映射到[0,1]的區(qū)間上。對數(shù)據(jù)進行標準化之后可以加快網(wǎng)絡(luò)的收斂速度,還可以提升模型的精度。根據(jù)對KDDTrain訓(xùn)練集的分析,在特征’same_srv_rate’中存在最大值為1,最小值為0.01,兩者之間差距較大,但是其中還有類似’protocol_type’的離散型特征,故需要將離散型特征提取出來之后進行標準化。標準化公式如下
(1)
在入侵檢測領(lǐng)域,有很多指標可以評估模型的性能,AC(準確率)是最重要的評價指標,因此在本文模型中準確率會作為評估指標之一。此外模型還設(shè)置了DR(召回率)和FPR(誤報率)兩種指標用于更好的評估模型的性能。
AC表示為在所有樣本中模型能判斷正確的比例,公式如下
(2)
DR是判斷正樣本數(shù)在正樣本實際數(shù)上的比例,公式如下
(3)
FPR則是判斷為正樣本的負樣本數(shù)在負樣本實際數(shù)中的比例,公式如下
(4)
關(guān)于上述公式中TP表示預(yù)測是正樣本,實際上也是正樣本。FP表示預(yù)測是負樣本,實際上是正樣本。TN表示預(yù)測是負樣本,實際上也是負樣本。FN表示預(yù)測是正樣本,實際上是負樣本,表3為混淆矩陣表。顯而易見,評估一個模型的性能則是看其是否具有高準確率,同時還有較低的誤報率。
表3 混淆矩陣
在二分類實驗中,將KDDTrain數(shù)據(jù)集的29維特征作為輸入,因此本文模型中有29個輸入節(jié)點,由于只是二分類,故只需要一個輸出節(jié)點作為輸出。為了訓(xùn)練出最好的模型,本文中設(shè)置的訓(xùn)練批次為500次,設(shè)計共有5層神經(jīng)網(wǎng)絡(luò),其中有4層是BiLSTM層,最后一層作為輸出層,前面4層結(jié)點為128個,其中每一層都采用了Batch Normalization機制使得每一個訓(xùn)練過程都保持同分布性。此外,實驗中設(shè)置了SVM、RF、MLP、RNN等算法作為對比。
在所給的3個數(shù)據(jù)集中,改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測模型在KDDTrain訓(xùn)練集上的準確率為99.51%,在KDDTest+數(shù)據(jù)集的準確率為86.18%,在KDDTest-21數(shù)據(jù)集的準確率為76.96%,對比其它機器學(xué)習(xí)算法,該模型有較高的準確率和較好的泛化能力。RF,SVM等機器學(xué)習(xí)算法在該數(shù)據(jù)集中的準確度較低,并給出了基于RNN的入侵檢測模型在NSL-KDD數(shù)據(jù)集上的準確率[8]。實驗中給出了改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測模型在NSL-KDD數(shù)據(jù)集的測試結(jié)果,在圖3中做一個全面的對比,表4 給出了該模型在KDDTest+測試集上的混淆矩陣,表5給出了該模型在KDDTest-21測試集上的混淆矩陣。最后可以觀察到改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測模型所獲得的準確率最高,同時計算出模型在KDDTest+數(shù)據(jù)集中的召回率為79.15%,誤報率為9.17%。
圖3 各類算法在二分類中的準確率
表4 KDDTest+測試集的混淆矩陣
表5 KDDTest-21測試集的混淆矩陣
在五分類的實驗中,將KDDTrain數(shù)據(jù)集的29維特征作為輸入,與二分類不同的是,輸出節(jié)點為5個代表5種類別,同樣設(shè)置了5層神經(jīng)網(wǎng)絡(luò),其中有4層是BiLSTM層,最后一層作為輸出層,每層隱藏結(jié)點為128個。
為了更好評估改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測模型的性能,設(shè)置了MLP、RF,SVM,LSTM等算法作為比較。圖4展示了該模型在KDDTest+和KDDTest-21測試集上進行五分類的結(jié)果,實驗結(jié)果顯示模型在 KDDTest+測試集上準確率為78.65%,在KDDTest-21測試集上準確率為60.11%,實驗結(jié)果表明了該模型明顯要優(yōu)于MLP、RF、SVM、LSTM等算法。
圖4 各類算法在多分類中的準確率
為了更直觀的觀察模型的表現(xiàn),在表6中展示了該模型在KDDTest+測試集上的混淆矩陣,表7展示了該模型在KDDTest-21測試集上的混淆矩陣。
表6 KDDTest+測試集的混淆矩陣
表7 KDDTest-21測試集的混淆矩陣
為了更好利用入侵檢測數(shù)據(jù)之間存在的依賴性,提高入侵檢測系統(tǒng)的準確率和泛化能力,本文提出一種改進的基于BiLSTM的網(wǎng)絡(luò)入侵檢測方法,利用BiLSTM獲取數(shù)據(jù)的表示向量,在模型中加入Batch Normalization使神經(jīng)網(wǎng)絡(luò)快速收斂,最后在NSL-KDD數(shù)據(jù)集上進行了比較實驗。實驗結(jié)果表明,本文方法在二分類和五分類的準確率和泛化能力較其它的入侵檢測方法都有提升,且計算時間耗費較少,從而在整體的性能表現(xiàn)上,本文方法要優(yōu)于其它對比方法。在未來的工作中將進一步提升模型的性能,將對不平衡數(shù)據(jù)進行處理并加入注意力機制,以提高改進方法的召回率和準確率。