周麗娟
(山西財經(jīng)大學(xué) 實(shí)驗教學(xué)中心, 山西 太原 030006)
網(wǎng)絡(luò)入侵是指各類對網(wǎng)絡(luò)進(jìn)行攻擊的行為,這些行為可能對網(wǎng)絡(luò)構(gòu)成一定的風(fēng)險,甚至有可能導(dǎo)致網(wǎng)絡(luò)的崩潰[1]。傳統(tǒng)的網(wǎng)絡(luò)安全行為主要是通過一些網(wǎng)絡(luò)安全技術(shù)如防火墻來控制和防范網(wǎng)絡(luò)的攻擊[2]。入侵檢測技術(shù)作為防火墻后的第二個安全保護(hù)門,不僅能對網(wǎng)絡(luò)進(jìn)行入侵?jǐn)r截,同時也能對各類攻擊如內(nèi)部攻擊、外部攻擊和錯誤操作等進(jìn)行實(shí)時監(jiān)護(hù)[3]。
傳統(tǒng)的入侵檢測方法[4-6]主要有統(tǒng)計異常檢測方法、貝葉斯推理的異常檢測方法和基于專家系統(tǒng)的檢測方法,這些方法均存在一些不足。如統(tǒng)計異常檢測方法需要大量數(shù)據(jù)集,貝葉斯推理方法需要假設(shè)先驗概率,而專家系統(tǒng)方法對專家經(jīng)驗具有較大的依賴。
目前,出現(xiàn)了一些基于機(jī)器學(xué)習(xí)的方法來實(shí)現(xiàn)網(wǎng)絡(luò)的入侵檢測,如基于AdaBoost的方法、基于主成分分析的方法和基于支持向量的方法。周國雄等[7]提出了一種基于AdaBoost的網(wǎng)絡(luò)入侵智能檢測方法,在該方法中,采用AdaBoost集成學(xué)習(xí)方法對學(xué)習(xí)器進(jìn)行迭代訓(xùn)練,生成最終的入侵檢測模型,增加網(wǎng)絡(luò)的泛化能力,最終能提高入侵檢測網(wǎng)絡(luò)對網(wǎng)絡(luò)入侵檢測事件的識別能力。黃思慧等[8]提出了一種基于主成分分析和極限學(xué)習(xí)機(jī)的網(wǎng)絡(luò)入侵檢測技術(shù),采用主成分分析方法對提取的特征矩陣進(jìn)行降維,并采用極限學(xué)習(xí)機(jī)來對攻擊進(jìn)行檢測,采用實(shí)驗證明了該方法能實(shí)現(xiàn)的檢測率為98.337%,具有較高的檢測率和精度,同時也降低了誤報率和漏報率。閻巍等[9]提出了一種改進(jìn)的基于支持向量機(jī)的網(wǎng)絡(luò)入侵檢測算法,利用支持向量機(jī)在小樣本學(xué)習(xí)方法的學(xué)習(xí)優(yōu)勢和較強(qiáng)的泛化能力,實(shí)現(xiàn)對算法的改進(jìn)。封化民等[10]提出了一種基于SMOTE和GBDT的網(wǎng)絡(luò)入侵檢測方法,該方法通過在預(yù)處理階段采用SMOTE技術(shù)提高少數(shù)類別的樣本數(shù)量,并對多類樣本進(jìn)行降采樣,最后用于平衡數(shù)據(jù)集的GBDT分類器。韓紅光等[11]提出了一種基于Makov鏈并基于鏈?zhǔn)綘顟B(tài)轉(zhuǎn)移概率矩陣的網(wǎng)絡(luò)入侵檢測方法,通過K均值聚類來定義網(wǎng)絡(luò)狀態(tài),并構(gòu)建狀態(tài)概率轉(zhuǎn)移矩陣和初始概率分布的馬爾科夫鏈模型(HMM),最后通過模型對輸入數(shù)據(jù)的異常度進(jìn)行檢測。高妮等[12]提出了一種基于自編碼網(wǎng)絡(luò)的支持向量機(jī)入侵檢測模型,首先通過多層無監(jiān)督的限制玻爾茲曼機(jī)對原始數(shù)據(jù)降維,建立高維空間和低維空間的雙向映射網(wǎng)絡(luò)結(jié)構(gòu),然后通過反向傳播網(wǎng)絡(luò)的自編碼權(quán)值進(jìn)行調(diào)整,從而達(dá)到原始數(shù)據(jù)的相應(yīng)低維表示。
以上工作均基于機(jī)器學(xué)習(xí)的相關(guān)方法,為了進(jìn)一步提高網(wǎng)絡(luò)入侵檢測的效率和改善檢測的精度,本文提出了一種基于改進(jìn)BP神經(jīng)網(wǎng)絡(luò)(Back Propogation Neural Network,BPNN)的入侵檢測方法。在該方法中,先通過禁忌算法(Tabu Search Algorithm)進(jìn)行初步檢測,然后基于該檢測再通過優(yōu)化神經(jīng)網(wǎng)絡(luò)進(jìn)一步診斷。
BP神經(jīng)網(wǎng)絡(luò)是一個由輸入層、輸出層和隱含層構(gòu)成的網(wǎng)絡(luò),其經(jīng)典形式是三層網(wǎng)絡(luò)。如圖1所示,網(wǎng)絡(luò)的輸入為x1,x2,…,xn,網(wǎng)絡(luò)的輸出為y1,y2,…,yn,輸入層和隱藏層之間的連接權(quán)重為Vij,隱藏層和輸出層之間的連接權(quán)重為Wjk。
BP網(wǎng)絡(luò)的結(jié)構(gòu)主要包括以下幾個方面:BP網(wǎng)絡(luò)的層數(shù)、神經(jīng)元激活函數(shù)、每層的神經(jīng)元個數(shù)。BP神經(jīng)網(wǎng)絡(luò)的層數(shù)選擇三層的神經(jīng)網(wǎng)絡(luò),當(dāng)訓(xùn)練誤差不能滿足閾值約束時,在每層增加新的神經(jīng)元。隱藏層神經(jīng)元的激勵函數(shù)通常采用Sigmoid函數(shù)。BP神經(jīng)網(wǎng)絡(luò)的隱藏層的作用實(shí)際上是抽取數(shù)據(jù)對應(yīng)的特征。Kolrnogorov定理指明:當(dāng)網(wǎng)絡(luò)神經(jīng)元的數(shù)量足夠多時,可以實(shí)現(xiàn)任意的非線性映射,但當(dāng)網(wǎng)絡(luò)的神經(jīng)元數(shù)量過多時,會使得網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,使得網(wǎng)絡(luò)訓(xùn)練的計算復(fù)雜度增加;而網(wǎng)絡(luò)的神經(jīng)元數(shù)量過少時,難以精確地表達(dá)輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的非線性關(guān)系。因此,在實(shí)驗中根據(jù)損失函數(shù)的值可以去調(diào)整每層神經(jīng)元的數(shù)量。
當(dāng)輸出端損失過大時,增加每層神經(jīng)元個數(shù),當(dāng)損失較小且連續(xù)幾輪迭代不變化時,減少神經(jīng)元個數(shù),以提高訓(xùn)練效率。
基于BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)入侵檢測方法是首先從網(wǎng)絡(luò)數(shù)據(jù)中獲得數(shù)據(jù)的特征向量,然后利用特征向量對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行分類。本文設(shè)計的基于神經(jīng)網(wǎng)絡(luò)的檢測器的數(shù)據(jù)的維數(shù)是41維,輸入數(shù)據(jù)即為u1,u2,…,u41,對應(yīng)了KDDCUP’99的數(shù)據(jù),輸出為6類的檢測結(jié)果,分別為Normal、Neptune、Post_sweep、Satan、Buffer_overflow和Guess_password,這6類結(jié)果作為神經(jīng)網(wǎng)絡(luò)的6類輸出。
BP的反向傳播訓(xùn)練算法是由Rumelhart和McCelland等學(xué)者在1986年提出的一種多層前饋的分布式網(wǎng)絡(luò)。在基于BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)入侵檢測方法中,是由網(wǎng)絡(luò)的正向傳遞和網(wǎng)絡(luò)的反向傳播兩部分組成。
正向傳播過程:采用BP神經(jīng)網(wǎng)絡(luò)來對網(wǎng)絡(luò)安全進(jìn)行檢測時,即首先需要采用有標(biāo)簽數(shù)據(jù),如(x1,y1),(x2,y2),…,(xn,yn)對網(wǎng)絡(luò)的權(quán)值Vij和Wjk進(jìn)行訓(xùn)練,即在初始化BP網(wǎng)絡(luò)的權(quán)值Vij和Wjk的情況下,將樣本數(shù)據(jù)x1,x2,…,xn作為網(wǎng)絡(luò)的輸入,然后在輸出端獲取輸入數(shù)據(jù)對應(yīng)的輸出,此過程對應(yīng)了正向傳播過程。
誤差反向傳播:根據(jù)標(biāo)簽值和實(shí)際輸出值的差異來計算誤差。利用此差異進(jìn)行作為誤差信號反向傳播,實(shí)現(xiàn)網(wǎng)絡(luò)輸入權(quán)值Vij和輸出權(quán)值Wjk的調(diào)整。當(dāng)樣本標(biāo)簽數(shù)據(jù)與網(wǎng)絡(luò)實(shí)際的輸出值存在較大的誤差時,網(wǎng)絡(luò)就會轉(zhuǎn)入反向傳播過程,不斷調(diào)整網(wǎng)絡(luò)的權(quán)值,直到輸入數(shù)據(jù)對應(yīng)的輸出和標(biāo)簽值接近,滿足算法要求的精度要求。
神經(jīng)網(wǎng)絡(luò)的權(quán)值更新公式為
ω(k+1)=ω(k)+α(1-η)D(k)+ηD(k-1),
(1)
其中,ω(k+1)為權(quán)值的更新值,ω(k)為權(quán)值的當(dāng)前值,α≥0表示學(xué)習(xí)率,0≤η≤1為動量因子,D(k)為輸出層對應(yīng)的權(quán)值梯度:
,
(2)
其中E為目標(biāo)函數(shù)。該方法通過在動量項中加入阻尼項目,可以減少震蕩趨勢并改善收斂性。
實(shí)際使用中的BP算法通常存在收斂速度慢和容易陷入局部最優(yōu),因此從學(xué)習(xí)率和動量因子兩個角度來對網(wǎng)絡(luò)的更新方式進(jìn)行改進(jìn)。學(xué)習(xí)率的設(shè)計對神經(jīng)網(wǎng)絡(luò)的收斂也具有較大的影響。當(dāng)學(xué)習(xí)率過大時,容易導(dǎo)致算法修正幅度過大,致使算法震蕩甚至發(fā)散;當(dāng)網(wǎng)絡(luò)設(shè)置的學(xué)習(xí)率太小時,收斂速度會太慢,導(dǎo)致欠擬合。因此要對算法的學(xué)習(xí)率進(jìn)行改進(jìn),將公式(1)所示的權(quán)值更新公式進(jìn)一步修改為
ω(k+1)=ω(k)+α(k)D(k),
(3)
其中,網(wǎng)絡(luò)的學(xué)習(xí)率可以進(jìn)一步修改為
α(k)=2sign[D(k)D(k-1)]α(k-1),
(4)
其中,sign[D(k)D(k-1)]表示變化的方向,可以表示
(5)
當(dāng)學(xué)習(xí)過程的兩步都是往一個方向變化時,表明學(xué)習(xí)率太低,收斂速度太慢,此時對應(yīng)的D(k)=D(k-1),因此,公式(4)對應(yīng)的學(xué)習(xí)率就會增大;反過來,當(dāng)兩者方向不一致時,即D(k)≠D(k-1),此時可能網(wǎng)絡(luò)的誤差較大,因此需要降低學(xué)習(xí)率。
圖2 禁忌算法流程
禁忌搜索算法[13]是由Glover于1986年提出的一種啟發(fā)式優(yōu)化算法,該算法通過赦免被禁忌的狀態(tài)從而實(shí)現(xiàn)全局最優(yōu)。禁忌算法的流程如圖2所示。
在運(yùn)用禁忌算法對神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化之前,需要確定禁忌算法、禁忌對象、搜索策略和鄰域生成以及藐視法則,其中禁忌對象和誤差函數(shù)的設(shè)置如下:
(1)禁忌對象:本文要采用禁忌算法來優(yōu)化神經(jīng)網(wǎng)絡(luò),因此,禁忌的主要對象包括待優(yōu)化的神經(jīng)網(wǎng)絡(luò)的權(quán)值ω、閾值th;
(2)誤差函數(shù),在采用禁忌算法來優(yōu)化神經(jīng)網(wǎng)絡(luò)時,誤差函數(shù)仍然選擇神經(jīng)網(wǎng)絡(luò)輸出端的誤差,誤差函數(shù)為
(6)
其中,y′為樣本的輸出值,y為樣本的標(biāo)簽值,m為樣本的數(shù)量,n為輸出端的神經(jīng)元個數(shù)。
采用禁忌神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)網(wǎng)絡(luò)入侵檢測的總體算法如下:
輸出:檢測結(jié)果。
1)初始化:初始化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值,輸入數(shù)據(jù)x1,x2,…,xn,根據(jù)神經(jīng)網(wǎng)絡(luò)的輸出得到輸出結(jié)果y1,y2,…,yn;
3)誤差反向傳播:根據(jù)誤差函數(shù)的誤差E來反向調(diào)整網(wǎng)絡(luò),直至網(wǎng)絡(luò)的誤差小于某一預(yù)設(shè)閾值;
4)初始化禁忌解:將神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值作為禁忌算法的初始解,采用禁忌算法來尋優(yōu);
5)禁忌算法求解:在初始解的附近采用探索動作(平移、交叉或變異),并通過禁忌算法來尋求最優(yōu)解,選擇最優(yōu)解鄰域中不被禁忌的最優(yōu)解,并將其與全局最優(yōu)解比較,同時將當(dāng)前的探索動作加入到禁忌表中,同時將最先加入禁忌表的探索動作移出;
6)判斷結(jié)束條件:當(dāng)禁忌算法達(dá)到指定的最大迭代次數(shù)時,輸出神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值的最優(yōu)解;
為了對本文所提的算法進(jìn)行驗證,采用網(wǎng)絡(luò)檢測標(biāo)準(zhǔn)的數(shù)據(jù)集,即DARPA1999入侵檢測數(shù)據(jù)集作為測試集,該數(shù)據(jù)集中主要包含5種檢測類型,其中4種為入侵檢測種類,最后一種為正常模式:(1)探測與描述Probe;(2)拒絕服務(wù)攻擊Dos;(3)未經(jīng)授權(quán)的遠(yuǎn)程訪問R2L;(4)本地超級用戶的非法訪問U2R;(5)正常模式。樣本數(shù)據(jù)共1000組,其中800組用于作為訓(xùn)練樣本集,剩余的200組作為測試樣本集。每組數(shù)據(jù)樣本個數(shù)為41。
BP網(wǎng)絡(luò)結(jié)構(gòu)的選定:選擇三層的BP神經(jīng)網(wǎng)絡(luò),輸入層的神經(jīng)元個數(shù)為41,隱藏層的神經(jīng)元個數(shù)為12,輸出層的神經(jīng)元個數(shù)為5。
采用檢測率作為檢測效果的評價標(biāo)準(zhǔn),檢測率定義為
(7)
將本文所提的算法與基于BP神經(jīng)網(wǎng)絡(luò)的方法、基于AdaBoost方法和基于Elman神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行比較,選擇200個樣本作為測試集,部分樣本的檢測結(jié)果如表1所示。
表1 部分樣本的入侵檢測結(jié)果
從表1中可以看出,4種方法在測試集上均具有較高的檢測率?;贐P神經(jīng)網(wǎng)絡(luò)的檢測率較低,本文所提的方法具有最高的檢測率。可以發(fā)現(xiàn)除了R2L攻擊中,文中方法的入侵檢測率略微低于基于Elman神經(jīng)網(wǎng)絡(luò)的檢測率0.1%,其他攻擊文中方法均具有最高的檢測率。
基于傳統(tǒng)BP網(wǎng)絡(luò)的網(wǎng)絡(luò)入侵檢測算法往往受限于訓(xùn)練算法,即在采用梯度下降算法進(jìn)行權(quán)值調(diào)整時,容易陷入局部最優(yōu)。為了解決該問題,提出了一種基于禁忌算法和BP神經(jīng)網(wǎng)絡(luò)的入侵檢測算法。該算法能在神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到的初始值的基礎(chǔ)上,進(jìn)一步通過禁忌算法進(jìn)行優(yōu)化,直到到達(dá)算法最大的迭代次數(shù)或者誤差已低于閾值。采用禁忌算法和神經(jīng)網(wǎng)絡(luò)對測試集進(jìn)行測試,結(jié)果表明該算法具有較高的檢測率,就有較大的檢測精度。下一步的工作是進(jìn)一步對網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù)進(jìn)行優(yōu)化,來提高網(wǎng)絡(luò)入侵檢測的效率和精度。