溫纖纖 柳 毅 凌 捷 羅 玉
(廣東工業(yè)大學計算機學院 廣東 廣州 510006)
隨著技術和互聯(lián)網(wǎng)服務的飛速發(fā)展,計算機網(wǎng)絡給人們的生活和工作帶來了極大的便利。與此同時,它們也帶來了很多安全問題,如各種類型的病毒、漏洞和攻擊[1]。網(wǎng)絡攻擊給網(wǎng)絡服務帶來了很大的風險,從社會經(jīng)濟和個人的角度來看,網(wǎng)絡服務正變得越來越重要。如何在海量數(shù)據(jù)環(huán)境下取得較好的網(wǎng)絡入侵檢測效果成為亟待解決的重要問題,而應用新方法提高網(wǎng)絡入侵檢測技術則至關重要。
機器學習的概念最早在20世紀50年代被提出[2],隨著對機器學習的深入研究,機器學習的算法也被廣泛應用于各個領域,基于機器學習方法的網(wǎng)絡入侵檢測的研究也越來越深入。由一開始單一的機器學習方法,如支持向量機[3]、決策樹[4]、貝葉斯[5]等方法,再到將幾種機器學習算法結合的混合模型對網(wǎng)絡入侵檢測進行研究。例如Kuang等[6]提出了一種基于遺傳算法的主成分分析與支持向量機的混合入侵檢測方法。顧兆軍等[7]提出一種基于極限學習機和K鄰近算法的網(wǎng)絡入侵檢測模型,檢測的準確率達到了95.33%,實驗采用KDDcup99數(shù)據(jù)集,但是只選用了1 900個數(shù)據(jù)作為訓練集,1 000個數(shù)據(jù)作為測試集。將機器學習的模型用于網(wǎng)絡入侵檢測雖然取得了不錯的效果,但是傳統(tǒng)的機器學習的模型在少量樣本上才會產(chǎn)生比較好的分類效果,對于大量的樣本的分類結果卻不盡如人意。
隨著神經(jīng)網(wǎng)絡的出現(xiàn),深度學習的研究也越來越火熱。Ingre等[ 8 ]利用人工神經(jīng)網(wǎng)絡做網(wǎng)絡入侵檢測的五分類和二分類實驗,獲得了不錯的結果。Ma等[9]提出了一種結合譜聚類(Spectral Clustering,SC)和深度神經(jīng)網(wǎng)絡(Deep Neural Network,DNN)算法的SCDNN算法,實驗結果表明,SCDNN分類器在檢測的準確率和發(fā)現(xiàn)異常攻擊類型上優(yōu)于BP神經(jīng)網(wǎng)絡、支持向量機、隨機森林和貝葉斯模型。Yin等[10]提出了一種基于遞歸神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)的深度學習入侵檢測(Intrusion Detect ion System,IDS)方法,實驗結果表明, RNN-IDS非常適合建模分類,模型具有較高的精度,其性能優(yōu)于傳統(tǒng)機器學習的分類方法。Kim等[11]將LSTM和RNN組合成LSTM-RNN模型,利用KDD Cup 1999數(shù)據(jù)集訓練入侵檢測系統(tǒng)模型,通過性能測試,驗證了該方法的有效性。Sethi等[12]提出了一種基于深度強化學習(Deep Reinforcement Learning,DRL)的自適應算法,使用UNSW-NB15數(shù)據(jù)集做實驗,對新的復雜攻擊進行準確的檢測和細粒度的分類。
基于前面的研究,為了進一步提高網(wǎng)絡入侵檢測模型的檢測性能,本文提出一種基于一維卷積神經(jīng)網(wǎng)絡和門控循環(huán)單元網(wǎng)絡(1DCNN-GRU)的網(wǎng)絡入侵檢測混合模型。1DCNN-GRU混合模型是由1DCNN和GRU構建的8層網(wǎng)絡的一個深度學習模型,利用 1DCNN的滑動窗口和權值共享來獲取網(wǎng)絡流量數(shù)據(jù)序列的局部特征作為GRU層的輸入,GRU進一步提取特征數(shù)據(jù)并挖掘時序信息,最終通過全連接層分類輸出。為提高模型的魯棒性,將1DCNN的卷積方式改為膨脹卷積,并在訓練模型時通過添加高斯噪聲層、調整優(yōu)化器和學習速率優(yōu)化模型,從而提高模型的檢測性能。
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)是一類包含卷積計算且具有深度結構的前饋神經(jīng)網(wǎng)絡,其中:一維卷積神經(jīng)網(wǎng)絡常用于自然語言處理領域[13];二維卷積神經(jīng)網(wǎng)絡和三維卷積神經(jīng)網(wǎng)絡常用于圖片識別[14]、普通話語音識別[15]、人臉識別[16]等領域。卷積神經(jīng)網(wǎng)絡采用局部連接和權值共享的方式以減少網(wǎng)絡模型參數(shù)數(shù)量,這樣既降低了模型的復雜度,也使得網(wǎng)絡易于優(yōu)化。
一維卷積神經(jīng)網(wǎng)絡模型包含輸入層、卷積層、池化層、全連接層、輸出層[17]。
輸入層:將經(jīng)過數(shù)據(jù)預處理的數(shù)據(jù)集輸入到卷積神經(jīng)網(wǎng)絡模型中。
卷積層:卷積層中每個神經(jīng)元連接數(shù)據(jù)窗都有固定的權重,將一組固定的權重和不同窗口內(nèi)的數(shù)據(jù)做內(nèi)積的操作稱為卷積。公式如式(1)所示。
(1)
池化層:池化層的作用是將輸入的數(shù)據(jù)進行壓縮重塑,以達到提取重要特征和特征降維的作用。公式如式(2)所示。
(2)
全連接層:全連接層中的每個神經(jīng)元與其前一層的所有神經(jīng)元進行全連接,將學習到的分布式特征表示映射到樣本標記空間。
輸出層:將分類結果輸出。
圖1 GRU網(wǎng)絡結構
GRU在時間t之前觀察到的所有信息的編碼:
rt=σ(wr·[ht-1,xt]+br)
(3)
zt=σ(wz·[ht-1,xt]+bz)
(4)
(5)
(6)
1DCNN-GRU混合模型的結構與參數(shù)配置如表1所示,其中:1DCNN為一維卷積層,MPool1D為最大一維池化層;GRU(32)為門控遞歸單元網(wǎng)絡層,其中32為輸出維度;Dense_1(128)為第一個全連接層,其中128為輸出維度;Dense_2(2)為第二個全連接層,Dense_2作為最后一個全連接層將預測結果分類輸出,2為輸出維度即輸出為2分類;filters為卷積核的數(shù)目;size為卷積核的時域窗大小或池化窗口大小;d為膨脹卷積的膨脹率;activation為激活函數(shù);“—”表示沒有該參數(shù)或未設置該參數(shù)。
表1 1DCNN-GRU混合模型結構與參數(shù)
卷積層的膨脹率設為2,將卷積層卷積方式改為膨脹卷積。膨脹卷積是標準卷積的一種改進形式,CNN在處理數(shù)據(jù)時通過多次卷積和池化操作增大模型的感受野,而膨脹卷積(Dilated Convolution) 與標準的卷積不同,膨脹卷積在卷積核中增加一些空洞,從而擴大模型的感受野。膨脹卷積以膨脹率來指定核元素之間的0的數(shù)量。因此,應用膨脹率可以增加有效核尺寸。膨脹卷積與標準卷積的區(qū)別如圖2和圖3所示,采用3×3的卷積核(kernel),膨脹率(dilation rate)表示卷積核的間隔。膨脹率為1時表示卷積核間沒有間隔,為標準卷積,卷積核的感受野為3×3;膨脹率為2時表示卷積核間的間隔為1,有效卷積核為5×5,卷積核的感受野為7×7??梢钥闯?膨脹卷積在增大感受野的同時并保持提取的特征圖的尺寸與標準卷積的特征圖一致。應用膨脹卷積擴大了模型的感受野,因此模型可以提取長距離特征信息。
圖2 標準卷積
圖3 膨脹卷積
1DCNN-GRU混合模型由8層網(wǎng)絡構成,GRU置于一維卷積神經(jīng)網(wǎng)絡的池化層和全連接之間。四層卷積層通過膨脹卷積的方式對輸入的數(shù)據(jù)進行特征提取,兩層池化層將卷積層輸出的特征數(shù)據(jù)進行壓縮降維,經(jīng)過二次壓縮的特征數(shù)據(jù)作為GRU層的輸入,GRU利用重置門和更新門對特征數(shù)據(jù)進行進一步的篩選,去除冗余信息,保留具有類別區(qū)分性的特征信息,Dense_1層中的每個神經(jīng)元與GRU層的所有神經(jīng)元全連接進行特征加權,Dense_2層利用Softmax函數(shù)進行分類輸出。
在訓練神經(jīng)網(wǎng)絡模型時,如果數(shù)據(jù)集中不同類別的樣本不均衡,容易導致模型陷入過擬合,神經(jīng)網(wǎng)絡模型注重擬合樣本較多的類別而忽略樣本較少的類別。本文通過添加高斯噪聲(Gaussian Noise,GNoise)到輸入樣本防止模型過擬合。每次訓練神經(jīng)網(wǎng)絡模型時,將高斯噪聲隨機添加到輸入樣本,使得輸入模型的數(shù)據(jù)每次都不同,神經(jīng)網(wǎng)絡模型無法記住訓練樣本,從而提高模型從輸入空間中學習映射規(guī)則的能力,增強網(wǎng)絡的魯棒性。訓練模型時的模型結構與數(shù)據(jù)如表2所示,其中GNoise(n)為高斯噪聲層,n為高斯噪聲的標準差。
表2 訓練模型時的模型結構與數(shù)據(jù)
樣本添加的高斯噪聲的分布概率密度計算公式為:
(7)
式中:μ為均值;σ為標準差。
基于1DCNN-GRU混合模型的網(wǎng)絡入侵檢測流程如圖4所示,可分為以下幾個步驟:
圖4 網(wǎng)絡入侵檢測流程
(1) 選取UNSW- NB15樣本集。
(2) 對樣本集做數(shù)據(jù)預處理并將數(shù)據(jù)集劃分為訓練集和測試集。
(3) 樣本集用于訓練模型,訓練模型時的模型結構詳見表2,在訓練的過程中利用Adam優(yōu)化器更新模型的網(wǎng)絡參數(shù),使其逼近或達到最優(yōu)值。
Adam優(yōu)化更新模型參數(shù)過程如下:
初始化一階和二階矩變量s=0,r=0,初始化時間步t=0。輸入m個樣本{x(1),x(2),…,x(m)},對應目標為y(i)。
計算梯度:
(8)
t←t+1
(9)
更新有偏一階矩估計和有偏二階矩估計:
s←β1s+(1-β1)g
(10)
r←β2r+(1-β2)g2
(11)
修正一階矩的偏差和二階矩的偏差:
(12)
(13)
更新網(wǎng)絡參數(shù):
(14)
θ←θ+Δθ
(15)
式中:α為學習速率;β1和β2為矩估計的指數(shù)衰減速率,β1,β2∈[0,1];δ為極小常數(shù)。
(4) 當模型的訓練次數(shù)達到預設的迭代次數(shù)則保存模型在訓練實驗中的最優(yōu)網(wǎng)絡參數(shù),利用測試集測試1DCNN-GRU模型性能,最終將測試結果輸出。
本文實驗采用的是UNSW-NB15數(shù)據(jù)集,它是由澳大利亞網(wǎng)絡安全中心(ACCS)的實驗室在2015年創(chuàng)建的,包含了正常網(wǎng)絡行為和9類攻擊。攻擊類型分別為模糊測試、滲透分析、后門、拒絕服務攻擊、漏洞利用、泛型攻擊、踩點、shellcode和蠕蟲。這些攻擊包含了近年才出現(xiàn)的攻擊手段,比KDDcup99數(shù)據(jù)集更適用于網(wǎng)絡入侵檢測的研究[19]。
本文實驗采用了257 673條數(shù)據(jù),其中:訓練集包含175 341條數(shù)據(jù);測試集包含82 332條數(shù)據(jù)。訓練集和測試集的樣本數(shù)據(jù)如表3所示。
表3 訓練集和測試集樣本
UNSW-NB15數(shù)據(jù)集每條數(shù)據(jù)包含44個特征,其中:1至30的特征是從數(shù)據(jù)包中綜合收集的信息,數(shù)據(jù)包生成的附加特性進一步分為兩個部分,分別為連接特征和通用特征;31至37的特征為連接特性;38至42的特征為通用特征;43至44的特征為標簽特征,用于標記正常數(shù)據(jù)和攻擊類型。
本文實驗采用絕對值最大標準化方法對訓練集和測試集中的數(shù)據(jù)特征做數(shù)據(jù)預處理,計算公式如式(16)所示。
(16)
絕對值最大標準化方法將每個特征數(shù)據(jù)調整到[-1,1]的范圍,它根據(jù)每個特征內(nèi)的最大絕對值來劃分數(shù)據(jù),它不會移動和聚集數(shù)據(jù),因此不會破壞數(shù)據(jù)的稀疏性。
用準確率(AC)、漏報率 (FPR)、誤報率 (FNR)等指標來評價1DCNN-GRU網(wǎng)絡入侵檢測模型的性能。公式如下:
(17)
(18)
(19)
式中:TP表示待分類樣本為正,分類后標記為正;TN表示待分類樣本為負,分類后標記為負;FP表示待分類樣本為負,分類后標記為正;FN表示待分類樣本為正,分類后標記為負。
為了提高模型的泛化能力,進行對優(yōu)化器和學習速率的調整實驗,實驗結果如圖5和圖6所示。實驗對SGD、Adagrad、RMSprop、Adamax和Adam優(yōu)化器的性能進行了對比,由圖5可看出,訓練模型時使用Adam優(yōu)化器效果最好、準確率最高。選定Adam優(yōu)化器后,對優(yōu)化器的學習速率進行調整,由圖6可看出,當學習速率為0.001時檢測效果最好。學習速率過小會導致模型陷入過擬合;學習速率過大會導致模型欠擬合。根據(jù)實驗結果選定Adam優(yōu)化器優(yōu)化模型的網(wǎng)絡參數(shù)并將Adam優(yōu)化器的學習速率設置為0.001。
圖6 學習速率對檢測準確率的影響
為了增強網(wǎng)絡的魯棒性,在訓練模型時添加高斯噪音。添加高斯噪聲(GNoise)與不添加高斯噪聲(None-GNoise)進行實驗對比,實驗對比結果如表4所示。
表4 GNoise與None-GNoise實驗對比(%)
可以看出,在訓練模型時加入GNoise層,模型檢測的準確率比None-GNoise提高了5.1百分點且誤報率降低了12.58百分點。None-GNoise模型的高誤報率是由兩種樣本的不均衡導致的,導致模型過度擬合攻擊樣本,將正常行為誤報為攻擊行為。而加入GNoise顯著降低了模型的誤報率,雖然這使得漏報率更高,但影響更小。實驗結果表明,在訓練模型時加入GNoise有助于增強網(wǎng)絡的魯棒性,提高檢測的準確率和防止過擬合。
1DCNN-GRU混合模型與1DCNN模型都采用UNSW-NB15數(shù)據(jù)集做網(wǎng)絡入侵檢測實驗,實驗結果如表5所示。結果表明,1DCNN-GRU混合模型與單一的1DCNN模型相比檢測的準確率更高,雖然它們對網(wǎng)絡攻擊的漏報率相差無幾,但是1DCNN-GRU混合模型的誤報率比1DCNN模型降低了5.57百分點。這表明1DCNN-GRU混合模型比1DCNN模型更有利于提取具有類別區(qū)分性的特征信息,使分類效果更好,從而提高了模型的檢測性能。
表5 1DCNN-GRU與1DCNN模型實驗對比(%)
為了進一步驗證本文提出的1DCNN-GRU網(wǎng)絡入侵檢測混合模型的性能,在使用相同數(shù)據(jù)集的情況下與其他文獻的算法進行對比,對比結果如表6所示。與SVM相比,本文提出的1DCNN-GRU混合模型檢測的準確率提高了5.13百分點,誤報率降低了10.04百分點。與DRL、遺傳算法邏輯回歸(Genetic Algorithm Logistic Regression,AG-LR)[20]相比,1DCNN-GRU混合模型對入侵檢測的準確率也有了明顯的提升。
表6 檢測性能對比(%)
本文將一維卷積神經(jīng)網(wǎng)絡和門控循環(huán)單元網(wǎng)絡融合構建了一個1DCNN-GRU混合模型,通過改變一維卷積神經(jīng)網(wǎng)絡的卷積方式,加入高斯噪聲層訓練模型,調整優(yōu)化器和學習速率提高模型的學習能力,優(yōu)化模型。實驗結果表明,本文方法能有效提高網(wǎng)絡入侵檢測的準確率并降低檢測的誤報率。