(福建兒童發展職業學院信息中心,福建 福州350007)
將神經網絡技術應用于入侵檢測系統,可大大提高系統的智能性,增強系統對網絡數據的分類處理能力[1]。當數據經網絡進入計算機時,必須經過由神經網絡訓練好的入侵檢測系統,該系統對所有數據進行分析,如果是正常數據則讓其通過,否則將判斷出該數據屬于或最類似的攻擊種類,然后根據系統預先設置好的每種攻擊手段所對應的防范措施,采取最佳的方法對計算機進行保護[2]。這樣使系統的防御就有了目標和側重,采用的措施也更加準確、快速。下面,筆者分別運用徑向基函數(RBF)神經網絡和誤差反向傳播(BP)神經網絡構建入侵檢測模型并對上述方法進行比較。
試驗中所用數據均來自于自美國國防高級研究計劃局(DARPA)KDD CUP99數據集中的網絡入侵檢測數據包kddcup_data_10percent。KDD CUP99數據集是從一個模擬的美國空軍局域網上采集來的9個星期的網絡連接數據,該數據集總共由500萬條記錄構成,并將攻擊類型分為4類,然后又細分為39小類,每1類代表1種攻擊類型,類型名被標記在訓練數據集每1行記錄的最后1項。每一條記錄用41個特征來描述,加上數據類型名后總共是42項。此外,還提供一個10%的訓練子集和測試子集。網絡入侵檢測數據包kddcup_data_10percent是對KDD CUP99數據集進行10%的抽樣后得到的,其數據被用來模擬網絡中的數據,對基于神經網絡的入侵檢測系統進行訓練和測試。
用相同數據集分別對BP神經網絡和RBF神經網絡進行訓練,然后用相同數據對2個訓練好的網絡進行測試。
從數據集中分別隨機選取97條和197條數據,組成2個數據樣本集,作為神經網絡的訓練樣本數據,再從中隨機選取20條作為測試數據集。為增強網絡實用性和容納性,盡可能選取包含本數據源中所含有的各類數據特征狀態。訓練數據的種類包括:①Normal(正常)數據;②Back(DOS攻擊)數據;③Smurf(DOS攻擊)數據;④Portsweep(FROBE攻擊)數據;⑤Neptune(DOS攻擊)數據;⑥Warezclient(R2L攻擊)數據。
因為KDD CUP99數據集中每條數據用42個特征來描述(最后一個特征為數據種類),但是Matlab工具箱在處理數據時,不能識別數據中的特征字符(如tcp,smtp,SF,normal等),因而先將每條數據最后一個特征(數據種類)刪掉,然后將神經網絡無法處理的符號字段轉換成數值字段。
1)輸入層和輸出層的設計 輸入層的節點數取決于輸入樣本數據的特征向量,即一個節點對應一個輸入變量,由于輸入向量有41個元素,所以網絡輸入層的神經元有41個。輸出層有3個節點,輸出為 [000]、[0 0 1]、[0 1 0]、[0 1 1]、[1 0 0]和 [1 0 1],分別代表6種數據類型,即 Normal數據、Portsweep數據、Smurf數據、Warezclient數據、Back數據和Neptune數據。
2)函數調用 調用 net=newrbe(p,t,spread)函數,并對函數中的分布常數spread(通常默認為1)進行設置來使仿真試驗的效果更逼真。
3)門限判決系統 樣本特征用二進制代碼表示(見表1)。第1種特征狀態為000,第2種特征狀態為0 0 1,第3種狀態為0 1 0,第4種狀態為0 1 1,第5種狀態為1 0 0,第6種狀態為1 0 1。每個狀態中的3個分量如果在-0.05~0.5(包括0.5)之間則認為是0,如果在0.5~1.05之間則認為是1。

表1 樣本特征的二進制表示代碼
1)輸入層和輸出層的設計 輸入層的節點數取決于輸入樣本數據的特征向量,因為2個試驗采用的數據相同,所以輸入向量有41個元素,網絡輸入層的神經元也就有41個。輸出層與RBF神經網絡輸出層相同,也有3個節點。
2)隱含層的設計 隱層的節點數目設計十分復雜,到目前為止,仍然沒有一個準確的方法能夠確定隱層節點的數目。一般根據前人設計所得的經驗和研究者進行試驗來確定。根據Kolmogorov經驗定理可知,3層神經網絡中輸入層節點數與隱含層節點數之間的近似關系如下[3]:

式中,K為隱含層節點數;M為輸入層節點數。
由式(1)計算可以得到隱含層節點個數要小于或等于83左右,具體數目應在研究中反復試驗,才能得到較理性的值。
3)傳輸函數設計 經過對比,輸入層與中間層間的傳遞函數采用正切函數特性的Sigmoid函數(tansig),中間層與輸出層間的傳遞函數使用對數特性的Sigmoid函數(logsig)。
4)訓練函數設計 直接調用net=train(net,p,t)函數對網絡進行訓練。
5)門限判決系統 與RBF網絡輸出特征一樣,通過查表1可判斷攻擊的種類。
設置2組試驗,其中1組針對BP神經網絡,另1組針對RBF神經網絡。每組包括2個試驗。試驗采用對比法,從橫向和縱向2個方向進行比較。橫向比較即BP神經網絡與RBF神經網絡性能的比較,縱向比較即對同一種網絡,采用不同數量的訓練樣本數據,比較其試驗結果。其中誤報率=誤報的數據個數/測試數據總數;漏報率=漏報的數據個數/測試數據總數。
進行仿真試驗時使用2個訓練樣本數據集,第1個數據集含97條樣本數據,第2個數據集含197條樣本數據。用隨機選取的20條數據作為測試數據,數據中包含了幾種主要的攻擊類型。
試驗輸出數據結果有20列,每1列都是由1個測試數據經過已訓練好的RBF神經網絡運算后得到的。每1列有3個分量,從上到下依次對應樣本特征的3個分量。試驗輸出數據結果的分量值在-0.05~0.5(包括0.5)之間則認為是0,如果在0.5~1.05之間則認為是1。
第1個試驗訓練數據為97條,對試驗輸出結果進行分析,該網絡除對前6條正常數據判斷正確外,對后面的14條攻擊數據均將其誤認為是正常數據,故出現漏報情況,漏報率為70%,誤報率為0,從開始訓練網絡系統到對測試數據做出判斷用時為0.2180s。
第2個試驗訓練數據為197條,對試驗輸出結果進行分析,該網絡除對前7條和第13條數據種類判斷正確外,對剩余12條攻擊數據均將其誤認為是正常數據,誤報率為0,漏報率為60%,從開始訓練網絡系統到對測試數據做出判斷用時0.3280s。
該試驗中所用到的訓練樣本數據和測試數據與RBF網絡試驗相同。網絡參數設置如下:訓練次數為4400;訓練目標精度為0.001;2次顯示的訓練步數為25。
第1個試驗訓練數據為97條,經過2110步訓練后,網絡目標誤差達到要求,訓練曲線收斂,訓練效果比較好。對試驗輸出結果進行分析,該網絡對20條測試數據的種類判斷全部正確,誤報率為0,漏報率為0。從開始訓練網絡系統到對測試數據做出判斷用時83.5000s。
第2個試驗訓練數據為197條,該網絡經過4400步訓練,但是實驗精度并未達到預期的10-3級,只達到10-2級。從2000步開始,訓練曲線就一直保持平直再無變化,說明該BP網絡此時出現陷入局部最優點和進入假飽和狀態。該試驗雖未達到預期訓練目標,但是從試驗輸出數據結果來看,測試結果比較理想,分析判斷精度比較高。根據BP神經網絡的門限判決系統判斷得出,該網絡對20條測試數據的種類判斷全部正確,誤報率為0,漏報率為0,用時118.7960s。
1)RBF網絡的訓練分析計算速度比BP網絡快。在對20條測試數據進行分析處理時,RBF網絡的2組試驗分別用時約0.2s和0.3s,而BP網絡的2組試驗用時卻長達1~2min。如果當數據量再大一些,則BP網絡用時將會更長。這樣勢必會嚴重影響檢測系統的運行速度,降低入侵檢測系統對攻擊數據監控的實時性。當數據量足夠大時,有可能造成檢測系統崩潰。
2)RBF網絡在建網、設置參數方面比BP網絡簡單。RBF網絡建網時僅需調用net=newrbe(p,t,spread)函數,且設置網絡參數時只需對擴展常數spread進行設定。而BP網絡在建網時則需調用net=newff(minmax(p))、tansig、logsig和trainoss等函數,且需要設置的參數種類較多。要對隱含層節點數、訓練步長和訓練目標等各項參數反復設置比較后才能確定較理想的值。上述參數中只要有一項參數變動,就會影響試驗結果。
3)BP網絡的漏報率比RBF網絡低。對于相同的訓練樣本數據和測試數據,BP網絡的漏報率均為0,而RBF網絡的漏報率超過50%。漏報率過高嚴重影響入侵檢測系統的準確性和穩定性。攻擊行為不能被發現,系統得不到保護,這是入侵檢測系統最致命的問題之一。
4)RBF神經網絡對試驗的訓練樣本數據適應性比BP網絡差。對于相同的訓練樣本數據集,BP網絡通過訓練后,對測試數據的分類處理可以做到準確無誤,而RBF網絡卻很難適應訓練樣本數據的特征,訓練后的網絡對測試數據的分類處理結果也不理想。在試驗中,筆者嘗試不斷增加訓練樣本數據量,將各種類型的數據盡可能多地收入到訓練樣本中,但漏報率沒有明顯降低,說明試驗結果不理想。
5)在增加訓練樣本數據量后,2個網絡對數據分類處理的精度都有所提高,但RBF神經網絡對所漏報的數據依然無法判斷其屬于哪類攻擊類型。
[1]吳慶濤,邵志清 .入侵檢測研究綜述 [J].計算機應用研究,2005(5):11-14.
[2]楊智君,田地,馬駿驍,等 .入侵檢測技術研究綜述 [J].計算機工程與設計,2006,27(12):2119-2123.
[3]曹元大 .入侵檢測技術 [M].北京:人民郵電出版社,2010.