(西南科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川 綿陽(yáng) 621010)
入侵檢測(cè)系統(tǒng)(intrusion detection system,IDS)是計(jì)算機(jī)網(wǎng)絡(luò)中一種主動(dòng)防御的成果,它為人類工作和生活提供安全保護(hù)。此前,許多學(xué)者提出了一些典型的IDS;文獻(xiàn)[1]結(jié)合改進(jìn)的KNN和Kmeans實(shí)現(xiàn)I2K用于入侵檢測(cè),結(jié)果表明該算法具備良好的檢測(cè)率和新攻擊識(shí)別能力,但檢測(cè)速度仍有待提升;文獻(xiàn)[2]提出一種結(jié)合多目標(biāo)優(yōu)化理論的克隆選擇算法,其能有效改善種群進(jìn)化效率,增加種群多樣性,進(jìn)而提高檢測(cè)率,但對(duì)于樣本容量較大時(shí),檢測(cè)效率仍然比較低;文獻(xiàn)[3]先用信息增益(IG)對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行特征提取,再用主成分分析(PCA)進(jìn)行數(shù)據(jù)降維,最后用Naive Bayes來(lái)完成入侵分類檢測(cè),該方法雖然檢測(cè)率高于KPCA、FPCA、PCA-LDA,但并未提高對(duì)各攻擊的檢測(cè)率。文獻(xiàn)[4]使用自適應(yīng)SSO的分組過(guò)濾方法來(lái)完成入侵檢測(cè),雖然在不降低網(wǎng)絡(luò)安全性的前提下,能有效減輕基于簽名的入侵檢測(cè)系統(tǒng)的負(fù)擔(dān),但在黑名單分組過(guò)濾簽名匹配時(shí)還是消耗了較多時(shí)間。
隨著大數(shù)據(jù)時(shí)代到來(lái),網(wǎng)絡(luò)數(shù)據(jù)的數(shù)量增多、格式多變、網(wǎng)絡(luò)入侵行為多樣化等,傳統(tǒng)網(wǎng)絡(luò)入侵檢測(cè)模型面臨著檢測(cè)精度低、誤報(bào)率高等問(wèn)題。而近年來(lái)深度學(xué)習(xí)的興起,基于深度學(xué)習(xí)的IDS也慢慢開(kāi)始得到應(yīng)用。文獻(xiàn)[5]利用獨(dú)熱編碼對(duì)網(wǎng)絡(luò)包進(jìn)行編碼形成二維數(shù)據(jù),再用GoogLeNet進(jìn)行特征提取并訓(xùn)練Softmax分類器,其在檢測(cè)精度、漏檢率和誤檢率等都有很大提升;文獻(xiàn)[6]結(jié)合深度學(xué)習(xí)理論和神經(jīng)網(wǎng)絡(luò)的極限學(xué)習(xí)機(jī),提出一種自編碼器-極限學(xué)習(xí)機(jī)入侵檢測(cè)模型;用MODBUS數(shù)據(jù)集進(jìn)行仿真實(shí)驗(yàn),結(jié)果表明其優(yōu)于SVM、ELM、DBN、MLP、K-Means,符合網(wǎng)絡(luò)入侵檢測(cè)“高精度,低誤報(bào)率”的檢測(cè)要求。而本文結(jié)合DNN優(yōu)異的特征學(xué)習(xí)能力、BN的規(guī)范化數(shù)據(jù)處理和Adam自適應(yīng)梯度優(yōu)化方法,提出了一種基于Adam-BNDNN的入侵檢測(cè)模型。
深層神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)屬第三代人工神經(jīng)網(wǎng)絡(luò),它具有1個(gè)輸入層,1個(gè)輸出層和n個(gè)隱含層,結(jié)構(gòu)如圖1 所示,在數(shù)據(jù)量大的情況下可以計(jì)算得更快,花費(fèi)更少的代價(jià)[7]。
圖1 DNN網(wǎng)絡(luò)結(jié)構(gòu)圖
DNN同樣和分為前向和后向。首先對(duì)權(quán)值W和閾值b進(jìn)行初始化,前向時(shí)數(shù)據(jù)通過(guò)預(yù)處理后從輸入層經(jīng)n個(gè)隱含層計(jì)算后傳入輸出層,輸出層激活后的輸出結(jié)果與期望結(jié)果進(jìn)行對(duì)比得到誤差,誤差再以梯度下降的方式從輸出層經(jīng)隱含層回傳至輸入層,以此便完成了一輪神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
初始化時(shí)一般將閾值b初始化為0,傳統(tǒng)神經(jīng)網(wǎng)絡(luò)權(quán)值初始化常用初始化為0和隨機(jī)初始化,但W初始化為0會(huì)出現(xiàn)每一層的學(xué)習(xí)能力相同,因而整個(gè)網(wǎng)絡(luò)的學(xué)習(xí)能力也有限;而隨機(jī)初始化實(shí)質(zhì)上是一個(gè)均值為0方差為1高斯分布,若神經(jīng)網(wǎng)絡(luò)層數(shù)增加,則會(huì)出現(xiàn)后面層激活函數(shù)的輸出值接近0,進(jìn)而可能產(chǎn)生梯度消失。
而現(xiàn)在常用的權(quán)值初始化有Xavier初始化、He初始化等。Xavier初始化中輸入和輸出都被控制在一定范圍內(nèi),激活函數(shù)的值都盡量遠(yuǎn)離0,則不會(huì)出現(xiàn)梯度過(guò)小的問(wèn)題,公式如式(1):
(1)
但是Xavier對(duì)于激活函數(shù)ReLU不太適合,在更深層的ReLU中,激活函數(shù)的輸出明顯接近0,所以Xavier一般用于Sigmiod和Tanh。
而He初始化的出現(xiàn)解決了ReLU的問(wèn)題,此方法基本思想是正向傳播時(shí),激活值方差不產(chǎn)生變化,回傳時(shí),激活值梯度方差不產(chǎn)生變化;對(duì)于ReLU和Leaky ReLU有不同的初始化方法,ReLU適用于公式(2),Leaky ReLU適用于公式(3),本文采用的便是基于ReLU的He初始化方法。
(2)
(3)
激活函數(shù)的選擇會(huì)對(duì)模型收斂速度、訓(xùn)練時(shí)間產(chǎn)生非常大的影響。之前常用的激活函數(shù)有Sigmoid以及Tanh,Sigmoid將輸出結(jié)果規(guī)約到0~1之間,Tanh規(guī)約到-1~1之間,在隱層中相較而言Tanh要優(yōu)于Sigmoid,因?yàn)門anh的均值為0,關(guān)于原點(diǎn)對(duì)稱,具有對(duì)稱性;但兩者在訓(xùn)練時(shí)都容易造成兩端飽和使得導(dǎo)數(shù)趨于零,以致權(quán)重?zé)o法更新最終造成梯度消失;而RuLU左邊是抑制的,右邊是有梯度的,一般不會(huì)造成梯度消失,因?yàn)樯窠?jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)一般都大于0;且RuLU具有更快的計(jì)算速度和收斂速度,因此隱藏層使用RuLU比前兩者更好。3種激活函數(shù)的輸出圖像如圖2所示。
圖2 Sigmoid-Tanh-Softmax函數(shù)圖像
輸出層通常采用Sigmoid函數(shù)或Softmax函數(shù)將輸出層的輸出結(jié)果歸約到0~1之間,如公式(4)和(5):
(4)
(5)
其中,Sigmoid將輸出層每一個(gè)輸出節(jié)點(diǎn)的結(jié)果歸約到0~1之間,故輸出節(jié)點(diǎn)間的輸出結(jié)果相互是獨(dú)立的,且總和可能為1可能不為1;而Softmax輸出層中每一個(gè)輸出節(jié)點(diǎn)的結(jié)果是相互緊密關(guān)聯(lián)的,其概率的總和永遠(yuǎn)為1。由于本模型采用One-hot來(lái)編碼分類結(jié)果,在輸出層時(shí)選用Softmax分類器較為方便。
神經(jīng)網(wǎng)絡(luò)以梯度下降的方式來(lái)更新參數(shù)。在參數(shù)更新中,若使用整個(gè)數(shù)據(jù)集進(jìn)行梯度下降,W和b每次更新都在整個(gè)數(shù)據(jù)集一次訓(xùn)練完以后,這樣可能不利于魯棒性收斂,有可能造成局部最優(yōu);如果一次只用1個(gè)樣本進(jìn)行訓(xùn)練,W和b更新太頻繁,整個(gè)訓(xùn)練的過(guò)程也會(huì)很長(zhǎng)。
而介于兩者之間的Mini-batch,把整個(gè)數(shù)據(jù)集隨機(jī)分為Mini-batch的Size大小,W和b更新是在每個(gè)小批量后,且每次小批量訓(xùn)練的數(shù)據(jù)更具有隨機(jī)性,這樣可以使得模型梯度下降參數(shù)更新更快,避免局部最優(yōu),同時(shí)加速模型的訓(xùn)練。
本文檢測(cè)模型主要分3個(gè)模塊,結(jié)構(gòu)如圖3所示。
圖3 基于Adam-BNDNN的入侵檢測(cè)模型
數(shù)據(jù)獲取和預(yù)處理模塊:獲取網(wǎng)絡(luò)數(shù)據(jù)集,并對(duì)其進(jìn)行特征提取、數(shù)值轉(zhuǎn)換、數(shù)據(jù)歸一化等預(yù)處理操作,使其滿足輸入數(shù)據(jù)的要求;并將其分為訓(xùn)練集和測(cè)試集,分別用于模型訓(xùn)練和模型測(cè)試。
入侵檢測(cè)模塊:結(jié)合預(yù)處理后數(shù)據(jù)的維度確定Adam-BNDNN網(wǎng)絡(luò)的輸入輸出節(jié)點(diǎn),再根據(jù)隱層和其他參數(shù)從而確定整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練參數(shù),用訓(xùn)練集對(duì)模型進(jìn)行訓(xùn)練,完成訓(xùn)練后保存模型用于測(cè)試。
檢測(cè)分類模塊:測(cè)試集使用保存的模型進(jìn)行測(cè)試,并將檢測(cè)分類結(jié)果展示給用戶。
Batch Normalization[8](BN)是近些年以來(lái)深度學(xué)習(xí)的一個(gè)重要發(fā)現(xiàn),其應(yīng)用在隱藏層,經(jīng)常同Mini-batch一起使用。主要將每個(gè)隱層的輸出結(jié)果進(jìn)行歸一化處理再進(jìn)入下一個(gè)隱層,但并不是簡(jiǎn)單的歸一化,而是進(jìn)行變換重構(gòu),引入λ、β這2個(gè)可學(xué)習(xí)的參數(shù),如公式(6):
(6)
引入?yún)?shù)后,網(wǎng)絡(luò)即可學(xué)習(xí)出原始網(wǎng)絡(luò)所需的特征信息;BN操作如圖4所示。
圖4 BN操作結(jié)構(gòu)圖
批量規(guī)范化(BN)操作流程:
1)數(shù)據(jù)先從輸入層輸入,經(jīng)隱含層激活計(jì)算后得到激活值。
2)對(duì)隱含層激活值做批量規(guī)范化可以理解成在隱層后加入了一個(gè)BN操作層,這個(gè)操作先讓激活值變成了均值為0,方差為1的正態(tài)分布,即將其歸約到0~1之間,最后用γ和β進(jìn)行尺度變換和偏移得到網(wǎng)絡(luò)的特征信息。
3)數(shù)據(jù)完成BN后再進(jìn)入下一隱層。
BN的使用降低了初始化要求,可使用較大學(xué)習(xí)率,也使神經(jīng)網(wǎng)絡(luò)的隱含層增強(qiáng)了相互間的獨(dú)立性,同時(shí)增大了反向傳播的梯度,進(jìn)而避免了梯度消失的問(wèn)題;且和Dropout一樣具有防過(guò)擬合的正則化效果。
神經(jīng)網(wǎng)絡(luò)傳統(tǒng)的隨機(jī)梯度下降(SGD)缺點(diǎn)是很難選擇一個(gè)比較合適的學(xué)習(xí)率,同時(shí)收斂速度也很慢,且容易達(dá)到局部最優(yōu)。而以梯度下降為基礎(chǔ)的Adam優(yōu)化算法[9],結(jié)合了RMSProp優(yōu)化算法和Momentum優(yōu)化算法。
RMSProp中神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)可自動(dòng)調(diào)整學(xué)習(xí)率,不用過(guò)多的人為調(diào)整;而Momentum則是調(diào)整梯度方向,使得在訓(xùn)練時(shí)加速梯度下降的速度,從而加快訓(xùn)練過(guò)程。參數(shù)更新如公式(7):
(7)
(8)
其中:α、β1、β2、ε都有缺省值,也可以自行調(diào)整。
在網(wǎng)絡(luò)的訓(xùn)練過(guò)程中若數(shù)據(jù)過(guò)少或者訓(xùn)練過(guò)度則可能會(huì)產(chǎn)生過(guò)擬合現(xiàn)象,而正則化可以在學(xué)習(xí)中降低模型的復(fù)雜度,從而避免過(guò)擬合。正則化實(shí)質(zhì)在損失函數(shù)中添加了正則項(xiàng),對(duì)損失函數(shù)的參數(shù)做一些限制;一般有L1和L2正則化,本文選用L2正則化,L2正則化對(duì)b更新無(wú)影響,對(duì)w更新有影響;拿邏輯回歸為例,公式如(9)所示:
(9)
實(shí)驗(yàn)選取的是NSL_KDD數(shù)據(jù)集[10],它是KDD CUP數(shù)據(jù)的濃縮版,其在KDD CUP數(shù)據(jù)集的基礎(chǔ)上進(jìn)行的改進(jìn)有:
1)KDD中冗余數(shù)據(jù)的去除:使分類結(jié)果不會(huì)偏向更頻繁的記錄。
2)KDD中重復(fù)數(shù)據(jù)的去除:使檢測(cè)更加準(zhǔn)確。
3)數(shù)據(jù)集大小更合理:KDD共有500萬(wàn)左右條數(shù)據(jù),數(shù)據(jù)總量多且冗余、重復(fù)數(shù)據(jù)多,可能會(huì)造成檢測(cè)結(jié)果不理想以及訓(xùn)練時(shí)間過(guò)長(zhǎng)。而NSL數(shù)據(jù)集總量125973條,正常和各異常數(shù)據(jù)占比也符合真實(shí)網(wǎng)絡(luò)情況,用于訓(xùn)練的時(shí)間也不會(huì)太長(zhǎng)。
NSL一共有41維屬性特征和1維標(biāo)志特征,具體信息如表1所示。
表1 NSL數(shù)據(jù)的屬性信息
3.2.1 特征提取
在NSL數(shù)據(jù)集的41維屬性特征中,每一維屬性特征對(duì)結(jié)果的影響都是不一樣的,為了合理選取網(wǎng)絡(luò)數(shù)據(jù)的屬性參數(shù),文獻(xiàn)[11]選取了12個(gè)屬性特征,文獻(xiàn)[12]選取了14個(gè)屬性特征;文獻(xiàn)[13]選取了15個(gè)屬性特征;本文結(jié)合2種特征選取技術(shù)綜合考量后最終選擇21個(gè)最優(yōu)特征屬性,如表2所示。
表2 NSL數(shù)據(jù)集21個(gè)屬性選取
3.2.2 數(shù)值化
21維屬性特征選取完以后,其中Protocol type、Service、Flag和Label是離散型數(shù)據(jù),對(duì)離散型數(shù)據(jù)首先應(yīng)數(shù)值化;
在Protocol type中,共有Tcp、Udp、Icmp三種協(xié)議類型,分別用數(shù)字1、2、3代替;
Service中共有70種服務(wù)名稱,分別用數(shù)字1~70代替;
Flag中共有11種網(wǎng)絡(luò)連接狀態(tài),分別用數(shù)字1~11代替;
最后是Label標(biāo)志的數(shù)值化,Label共有5種,分別標(biāo)識(shí)Nor、Pro、Dos、U2r、R2l,為了便于后面檢測(cè)的分類工作,在數(shù)值化時(shí)使用One-hot進(jìn)行編碼,如Normal編碼為10000。
3.2.3 歸一化
NSL數(shù)據(jù)經(jīng)數(shù)值化后,有些數(shù)值區(qū)間較大,各特征間差異也大,若不經(jīng)處理就做輸入數(shù)據(jù),可能會(huì)使訓(xùn)練結(jié)果偏向更大的數(shù),繼而對(duì)訓(xùn)練速度和精度也會(huì)有一定的影響。為了避免上述情況發(fā)生,一般使用公式(10)將其歸一化到0~1之間,
(10)
歸一化后一方面能提升模型收斂速度,另一方面提升模型的精度。
NSL數(shù)據(jù)進(jìn)行預(yù)處理以后,隨機(jī)取其2/3做訓(xùn)練集,剩下1/3做測(cè)試集,如表3所示。檢測(cè)評(píng)價(jià)標(biāo)準(zhǔn)是2分類檢測(cè)結(jié)果和5分類檢測(cè)結(jié)果的準(zhǔn)確率以及誤報(bào)率。
表3 訓(xùn)練集和測(cè)試集劃分
在數(shù)據(jù)預(yù)處理中選擇21維屬性特征,5維One-hot編碼標(biāo)志特征,則Adam-BNDNN對(duì)應(yīng)的輸入為21個(gè)節(jié)點(diǎn),輸出為5個(gè)節(jié)點(diǎn)。
為了選擇模型訓(xùn)練合適的Epoch,以3隱層Adam-BNDNN網(wǎng)絡(luò)21-50-30-20-5為例,選取總迭代次數(shù)200次,迭代Epoch和對(duì)應(yīng)的代價(jià)Loss如圖5所示。
圖5 迭代Epoch和代價(jià)Loss曲線圖
結(jié)果顯示:在迭代100次以后,網(wǎng)絡(luò)的訓(xùn)練代價(jià)趨于平緩。在迭代次數(shù)選取時(shí),若迭代次數(shù)過(guò)少,則會(huì)造成訓(xùn)練不足,若迭代次數(shù)過(guò)多也有可能會(huì)造成過(guò)擬合。因此,在模型訓(xùn)練中,選取的迭代Epoch為100次。
接著是神經(jīng)網(wǎng)絡(luò)隱層數(shù)選擇。為了選擇合適的隱層數(shù)量,分別選取隱層數(shù)為1~5的5種不同網(wǎng)絡(luò)結(jié)構(gòu)5分類的平均準(zhǔn)確率,網(wǎng)絡(luò)結(jié)構(gòu)如表4所示。
表4 Adam-BNDNN網(wǎng)絡(luò)的不同隱層數(shù)結(jié)構(gòu)
經(jīng)實(shí)驗(yàn)得出,隱層數(shù)為3和4時(shí)整體檢測(cè)率差不多,但4隱層時(shí)U2r和R2l的檢測(cè)率低于3隱層,隱層數(shù)為5時(shí)精度大幅度下降,綜合考量則最合適的隱層數(shù)為3。
確定了網(wǎng)絡(luò)的Epoch和網(wǎng)絡(luò)結(jié)構(gòu)后,Adam-BNDNN所有參數(shù)設(shè)置如表5所示。
表5 Adam-BNDNN參數(shù)
用NSL-KDD數(shù)據(jù)集仿真實(shí)驗(yàn)后,分別使用2分類檢測(cè)結(jié)果和5分類檢測(cè)結(jié)果的準(zhǔn)確率以及誤報(bào)率來(lái)評(píng)估模型的檢測(cè)性能,結(jié)果如表6所示。
為了驗(yàn)證模型的檢測(cè)效果,分別用淺層神經(jīng)網(wǎng)絡(luò)(SNN),K最近鄰(KNN),深層神經(jīng)網(wǎng)絡(luò)(DNN)、Alpha-OSELM[13]與本文做對(duì)比,2分類結(jié)果如表7所示,5分類結(jié)果如表8所示。
表6 Adam-BNDNN模型檢測(cè)的分類結(jié)果 %
表7 各IDS的2分類結(jié)果 %
表8 各IDS的5分類結(jié)果 %
從表6可以看出,2分類的整體檢測(cè)率要比5分類高,整體誤報(bào)率要比5分類低。因?yàn)樵?分類檢測(cè)中,若類型為R2l的攻擊誤檢為U2l,對(duì)于2分類檢測(cè)結(jié)果是正確的,但在5分類檢測(cè)中則是錯(cuò)誤的。
從表7,表8可以看出本文檢測(cè)模型的整體檢測(cè)率要優(yōu)于其他IDS,整體誤報(bào)率要低于其他IDS。但5分類中U2r的檢測(cè)結(jié)果并不是很好,主要因?yàn)樵?25973條樣本數(shù)據(jù)中U2r只有52條,數(shù)據(jù)總量過(guò)于少,檢測(cè)率沒(méi)有其他4類高也是可以理解的;總體上證明了檢測(cè)模型的可行性。
針對(duì)傳統(tǒng)入侵檢測(cè)算法對(duì)網(wǎng)絡(luò)入侵檢測(cè)能力不足的問(wèn)題,本文結(jié)合網(wǎng)絡(luò)流量數(shù)據(jù)的特性,提出一個(gè)基于Adam-BNDNN的網(wǎng)絡(luò)入侵檢測(cè)模型,用屬性簡(jiǎn)約后的NSL-KDD數(shù)據(jù)集來(lái)仿真實(shí)驗(yàn),并與其他算法進(jìn)行了對(duì)比分析,從而證明本模型的可行性。下一步工作將搭建真實(shí)網(wǎng)絡(luò)環(huán)境,采集實(shí)時(shí)數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)入侵檢測(cè)。