胡津銘,張 艷,陸 臻,周嵩岑
(公安部第三研究所,上海 200031)
伴隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,新型網(wǎng)絡應用越來越多,與此同時,互聯(lián)網(wǎng)的開放性也導致了各式各樣安全隱患的出現(xiàn),給人民的財產(chǎn)安全造成嚴重的威脅[1]。入侵檢測系統(tǒng)( Intrusion detection system, IDS)作為防火墻后的第二道防線,通過收集和分析網(wǎng)絡中關鍵節(jié)點信息,對非法操作進行識別和告警[2]。然而,IDS普遍缺乏主動防御能力,當IDS檢測到攻擊行為時,被保護的網(wǎng)絡已經(jīng)受到了攻擊,重要數(shù)據(jù)存在被泄露的可能。因此,僅僅依靠傳統(tǒng)的入侵檢測技術,已經(jīng)無法很好地對網(wǎng)絡內(nèi)重要數(shù)據(jù)進行保護[3]。
入侵防御系統(tǒng)(Intrusion prevention system, IPS)作為一種主動防御技術,可以通過對網(wǎng)絡端口接收到的數(shù)據(jù)包進行分析, 發(fā)現(xiàn)已知和未知攻擊進而防止攻擊事件的發(fā)生[4]。 入侵預測作為IPS的核心,直接影響到IPS攻擊防御的性能。文獻[5]中利用徑向基函數(shù)( Radial basis function,RBF)神經(jīng)網(wǎng)絡的局部逼近特性,提出了一種基于RBF神經(jīng)網(wǎng)絡的入侵預測模型。然而,RBF神經(jīng)網(wǎng)絡的預測精度很大程度上依賴于隱含層基函數(shù)的中心選擇,且當數(shù)據(jù)不充足時無法工作。文獻[6]提出一種利用BP神經(jīng)網(wǎng)絡進行網(wǎng)絡安全態(tài)勢預測的算法,然而,BP神經(jīng)網(wǎng)絡存在著不易收斂且容易陷入局部極小的缺點。文獻[7]中提出利用支持向量機(Support vector machine,SVM)模型進行網(wǎng)絡入侵預測,然而SVM不具有記憶能力,對于大規(guī)模訓練樣本難以實施,在入侵預測領域應用并不廣泛。
對于IPS而言,如何提高預測精度、降低誤報率是一個挑戰(zhàn)。為解決這個問題,本文提出一種基于改進的小波神經(jīng)網(wǎng)絡入侵預測算法,通過在傳統(tǒng)小波神經(jīng)網(wǎng)絡參數(shù)修正過程中添加動量項,提高傳統(tǒng)小波神經(jīng)網(wǎng)絡的學習效率,從而提高網(wǎng)絡入侵的預測精度。
人工神經(jīng)網(wǎng)絡(Artificial neural network, ANN)是一種模擬人腦活動特征的非線性信息處理系統(tǒng)。小波神經(jīng)網(wǎng)絡(Wavelet neural network,WNN)是一種將小波分析與ANN相結合,信號前向傳播的同時誤差反向傳播的神經(jīng)網(wǎng)絡。WNN的基本結構包括輸入層、隱含層和輸出層,其中,隱含層的激活函數(shù)為小波基函數(shù)[8]。WNN的拓撲結構如圖1所示。
圖1 小波神經(jīng)網(wǎng)絡拓撲結構
假設在WNN中,輸入層、隱含層以及輸出層神經(jīng)元數(shù)目分別為m、h和n,則輸入數(shù)據(jù)向量可以表示為
x=[x1,x2,…,xm]T
(1)
在WNN的隱含層神經(jīng)元中,激活函數(shù)為Morlet母小波基函數(shù),其表達式為
φ(x)=cos(1.75x)e-x2/2
(2)
基 于此,WNN中隱含層神經(jīng)元j的輸出為[9]
(3)
其中,wij表示輸入層神經(jīng)元i與隱含層神經(jīng)元j之間的連接權值,aj和bj分別表示隱含層神經(jīng)元j中Morlet小波基函數(shù)的伸縮因子和平移因子。
WNN中輸出層神經(jīng)元k的輸出如下
(4)
其中,wjk表示隱含層神經(jīng)元j與輸出層神經(jīng)元k之間的連接權值。
在WNN訓練過程中,預測誤差表達式為:
(5)
其中y′(k)表示實際數(shù)據(jù)。
在傳統(tǒng)WNN的訓練過程中,通常采用梯度下降法對網(wǎng)絡參數(shù)wij、wjk以及小波基函數(shù)參數(shù)aj、bj進行修正,以使預測誤差error達到預設的誤差精度,參數(shù)修正公式如下所示[9]
(6)
(7)
(8)
(9)
其中u和η分別表示wij、wjk以及aj、bj的學習速率。
然而,梯度下降法有收斂速度慢且容易陷入局部最小的缺點。因此,本文提出一種改進的小波神經(jīng)網(wǎng)絡(Modified wavelet neural network,MWNN)模型,通過在傳統(tǒng)WNN訓練過程中增加動量因子,使得神經(jīng)網(wǎng)絡在進行參數(shù)修正時不僅僅考慮誤差對于梯度的影響,而且考慮了誤差面變化趨勢的影響。在MWNN中,增加動量項后的權值和參數(shù)修正公式為
(10)
(11)
(12)
(13)
其中,α∈(0,1)為動量調整因子。
如圖2所示,基于MWNN的入侵預測算法主要分為兩部分,第一部分利用訓練數(shù)據(jù)對MWNN的權值參數(shù)和小波基函數(shù)參數(shù)進行修正,以使得MWNN的預測精度滿足目標精度;第二部分利用測試數(shù)據(jù)對MWNN進行驗證,確認完成訓練后的MWNN滿足預測精度要求。
圖2 MWNN網(wǎng)絡入侵預測算法流程
基于MWNN的入侵預測算法具體步驟如下:
1) 數(shù)據(jù)預處理:對所選數(shù)據(jù)集中非數(shù)值屬性進行轉化,并對數(shù)據(jù)進行歸一化處理,使其便于處理和分析;
2) 網(wǎng)絡初始化:初始化小波基函數(shù)參數(shù)aj和bj,網(wǎng)絡連接權值wij和wjk,學習速率u和η,動量調整因子;
3) 樣本分類:將數(shù)據(jù)集分為訓練數(shù)據(jù)集和測試數(shù)據(jù)集,分別用于神經(jīng)網(wǎng)絡訓練和測試;
4)網(wǎng)絡訓練:利用訓練樣本對MWNN進行訓練,計算MWNN的預測輸出和誤差error;
5)參數(shù)修正:根據(jù)式(10)、(11)、(12)和(13)對網(wǎng)絡權值和小波函數(shù)參數(shù)進行修正,使得MWNN預測誤差逼近設定精度;
6) 判斷是否達到設定的目標誤差精度或最大迭代次數(shù),如果滿足,算法結束,否則,返回步驟5);
7) 利用測試數(shù)據(jù)驗證構建的MWNN滿足目標預測精度。
入侵檢測實驗中,通常采用由美國麻省理工學院林肯實驗室提供KD99數(shù)據(jù)集,其所有數(shù)據(jù)均來自對互聯(lián)網(wǎng)進行模擬真實攻擊得到[10]。由于KD99中有大量冗余記錄,本文實驗采用NSL-KDD數(shù)據(jù)集,相比于KDD99數(shù)據(jù)集,其去除了KD99數(shù)據(jù)集中的部分冗余信息,能更好的反應模型對于未知數(shù)據(jù)的識別能力[11]。
NSL-KDD數(shù)據(jù)集中每條數(shù)據(jù)包含41個屬性(特征)值和1個標識類別的標簽值,該標簽值標記正常(normal)數(shù)據(jù)和四大類攻擊類型數(shù)據(jù),每大類攻擊型數(shù)據(jù)包括不同的攻擊子類,具體如下表1所示:
表1 攻擊類別劃分
NSL-KDD數(shù)據(jù)集樣本數(shù)據(jù)如下所示:
20,tcp,smtp,SF,2310,328,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,3,0,0,0,0,1,0,1,255,157,0.62,0.02,0,0,0,0,0,0,normal
0,tcp,ftp_data,S0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,258,17,1,1,0,0,0,07,0.05,0,255,5,0.02,0.07,0,0,1,1,0,0,neptune。
可以看到,數(shù)據(jù)42個屬性中,第2、3、4和42維為非數(shù)值屬性,計算機無法直接處理,需要進行如下數(shù)據(jù)編碼轉化:
協(xié)議類型(protocol_type):利用數(shù)字1~3分別對tcp、udp、icmp進行編碼;
網(wǎng)絡服務類型(service):利用數(shù)字1~70分別對70中服務類型進行編碼;
連接狀態(tài)(flag):利用數(shù)字1~11分別對11種狀態(tài)(flag=SF表示連接正常,flag=S0或其它表示連接不正常)進行編碼;
狀態(tài):利用數(shù)字1~5分別對包括normal和四種攻擊類型在內(nèi)的五種狀態(tài)進行編碼。
此外,由于NSL-KDD數(shù)據(jù)集中數(shù)據(jù)取值分布差異較大且數(shù)據(jù)單位不同,為了方便處理,本文通過歸一化的方式將數(shù)據(jù)轉化為[0,1]內(nèi)的無量綱數(shù)據(jù),歸一化公式如下:
δ′=(δ-δ_Min)/(δ_Max-δ_Min)
(14)
其中,δ表示歸一化前數(shù)值,δ′表示歸一化后數(shù)值,δ_Max、δ_Min則分別表示樣本數(shù)據(jù)中的最小和最大值。
為了驗證本文所提MWNN入侵預測模型的性能,選取檢測率和誤報率作為評價標準,表達式如下所示:
(15)
(16)
對于MWNN,采用40-6-1的網(wǎng)絡結構,即輸入層有40個輸入節(jié)點,隱含層有9個節(jié)點,輸出層1個節(jié)點。最大迭代次數(shù)和目標誤差精度分別設置為100和10-2,學習速率u和η分別設置為0.01和0.001,動量調整因子α設置為0.95。
實驗中,對經(jīng)過預處理后的NSL-KDD數(shù)據(jù)集進行整理,分成訓練數(shù)據(jù)集和測試數(shù)據(jù)集,每組數(shù)據(jù)中正常數(shù)據(jù)與四種攻擊類型數(shù)據(jù)按3:1:2:3:1的比例組合,前四組作為訓練數(shù)據(jù)集對神經(jīng)網(wǎng)絡進行訓練,后一組數(shù)據(jù)作為測試數(shù)據(jù)集對訓練完成的神經(jīng)網(wǎng)絡進行驗證。表2所示為所建立MWNN預測模型對四大類攻擊數(shù)據(jù)的檢測率和誤報率。
表2 攻擊類型檢測結果
從表2中可以看出,MWNN對于四種攻擊類型均具有較高的檢測率和較低的誤報率,平均檢測率達到96.1%,平均誤報率僅為0.9%。
為驗證本文所提MWNN預測模型相對于傳統(tǒng)WNN在檢測性能上的改進,利用測試數(shù)據(jù)集進行測試,結果如下表3所示:
表3 MWNN和WNN檢測結果對比
從表3中可以看出,無論是檢測率還是誤報率,本文所提MWNN均要優(yōu)于傳統(tǒng)的WNN,這也證明了本文所提改進的小波神經(jīng)網(wǎng)絡模型在網(wǎng)絡入侵預測方面的有效性。
本文提出一種改進的小波神經(jīng)網(wǎng)絡入侵預測模型,通過在傳統(tǒng)WNN訓練過程中增加動量項,克服傳統(tǒng)WNN收斂速度慢且容易陷入局部最小的缺點。仿真結果表明,本文所提 MWNN入侵預測模型,無論在檢測率還是誤報率方面,均優(yōu)于傳統(tǒng)的 WNN,可以獲得較好的攻擊預測精度,能夠更加優(yōu)化IPS的性能。