??? 摘 要:介紹人工神經(jīng)網(wǎng)絡(luò)技術(shù),建立了人工神經(jīng)網(wǎng)絡(luò)的典型模型。應(yīng)用BP算法的泛化功能,將輸入輸出樣本進(jìn)行訓(xùn)練,不斷學(xué)習(xí)調(diào)整網(wǎng)絡(luò)權(quán)值,使網(wǎng)絡(luò)實現(xiàn)給定的輸入輸出映射關(guān)系,以達(dá)到檢測流量異常的目的。
??? 關(guān)鍵詞:人工神經(jīng)網(wǎng)絡(luò)技術(shù);流量檢測
?
1 人工神經(jīng)網(wǎng)絡(luò)原理及算法實現(xiàn)
1.1 人工神經(jīng)網(wǎng)絡(luò)的工作原理
??? 人工神經(jīng)網(wǎng)絡(luò)首先要以一定的學(xué)習(xí)準(zhǔn)則進(jìn)行學(xué)習(xí),然后才能工作。所以網(wǎng)絡(luò)學(xué)習(xí)的準(zhǔn)則是:如果網(wǎng)絡(luò)作出錯誤的的判決,則通過網(wǎng)絡(luò)的學(xué)習(xí),可以減少下次犯同樣錯誤的可能性。經(jīng)過網(wǎng)絡(luò)按學(xué)習(xí)方法進(jìn)行若干次學(xué)習(xí)后,網(wǎng)絡(luò)判斷的正確率將大大提高。
??? 連接機制結(jié)構(gòu)的基本處理單元與神經(jīng)生理學(xué)類比稱為神經(jīng)元。每個構(gòu)造起網(wǎng)絡(luò)的神經(jīng)元模型模擬一個生物神經(jīng)元,如圖1所示。該神經(jīng)元單元由多個輸入信號(i=1,2,...,n)和1個輸出y組成。中間狀態(tài)由輸入信號的權(quán)和表示
??? 
??? 而輸出模型如圖所示。
?

?
1.2 BP算法分析
??? 采用BP算法(反向傳播學(xué)習(xí)算法)網(wǎng)絡(luò)模型分析網(wǎng)絡(luò)異常。BP網(wǎng)絡(luò)學(xué)習(xí)的主導(dǎo)思想是通過不斷調(diào)整權(quán)值,使誤差代價函數(shù)最小,標(biāo)準(zhǔn)的BP算法采用的是一階梯度法,即最速下降法。
??? 如果有M層網(wǎng)絡(luò),而第M層僅含輸出節(jié)點,第一層為輸入節(jié)點,則BP算法設(shè)計為:
??? 第一步:選取初始權(quán)值W。
??? 第二步:重復(fù)下述過程直至收斂:
??? (1) 對于k=1~N
??? ① 計算Oik、netjk和yk的值(正向過程)。
??? ② 對各層從M~2反向計算(反向過程)。
??? (2)對同一節(jié)點j∈M,計算δjk;
??? 第三步:修正權(quán)值,
μ>0, 其中
??? 從上述BP算法可以看出,BP模型使得一組樣本的I/O問題變?yōu)橐粋€非線性優(yōu)化問題。
??? 設(shè)計神經(jīng)網(wǎng)絡(luò)專家系統(tǒng)重點在于模型的構(gòu)成和學(xué)習(xí)算法的選擇。結(jié)構(gòu)是根據(jù)所研究領(lǐng)域及要解決的問題確定的。通過對所研究問題的大量歷史資料數(shù)據(jù)的分析及目前的神經(jīng)網(wǎng)絡(luò)理論發(fā)展水平建立合適的模型,并針對所選的模型采用相應(yīng)的學(xué)習(xí)算法。在網(wǎng)絡(luò)學(xué)習(xí)過程中,不斷調(diào)整網(wǎng)絡(luò)參數(shù),直到輸出結(jié)果滿足要求。
1.3 BP神經(jīng)網(wǎng)絡(luò)在流量異常檢測模塊中的應(yīng)用
??? 流量異常檢測模塊的目的是在某個時間段內(nèi)檢測出某個子網(wǎng)某個端口的流量是否出現(xiàn)異常。通過對4個校園子網(wǎng)流量連續(xù)21天觀察記錄,利用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行網(wǎng)絡(luò)流量訓(xùn)練后,繼續(xù)記錄網(wǎng)絡(luò)流量數(shù)據(jù),并輸入到相應(yīng)的BP神經(jīng)網(wǎng)絡(luò)中,利用訓(xùn)練后的權(quán)值矩陣進(jìn)行計算,如果誤差結(jié)果大于設(shè)定的最小誤差,則認(rèn)為此流量數(shù)據(jù)異常,并記錄了此數(shù)據(jù)的子網(wǎng)、子網(wǎng)掩碼、端口號,以供異常分析模塊使用。
1.3.1 數(shù)據(jù)源的選取
??? 對流量的監(jiān)測可以有幾種可能的數(shù)據(jù)源,根據(jù)對牡丹江師范學(xué)院網(wǎng)通出口進(jìn)行連續(xù)21天的連續(xù)觀察,通過對得到的數(shù)據(jù)分析,發(fā)現(xiàn)進(jìn)出校園網(wǎng)的數(shù)據(jù)包有較強的規(guī)律性,同時包數(shù)的突增突減也能反應(yīng)網(wǎng)絡(luò)的流量異常,因此適合作為神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)源。而進(jìn)出校園網(wǎng)的流量字節(jié)數(shù)變化較大,不適合進(jìn)行報警。
1.3.2 樣本數(shù)據(jù)的選定
??? 如果希望能在某個時間段內(nèi)檢測出某個子網(wǎng)某個端口的流量是否出現(xiàn)異常,則需要構(gòu)建這一時段、這一子網(wǎng)、這一端口的BP神經(jīng)網(wǎng)絡(luò),因此共構(gòu)建了子網(wǎng)數(shù)、端口數(shù)、時間段數(shù)這三者乘積的BP神經(jīng)訓(xùn)練網(wǎng)絡(luò)。分別以2小時、3小時、4小時為一個時段(INTERVAL),并將每個時段劃分為8個時區(qū),每過一個時區(qū)就記錄一次這個時區(qū)內(nèi)的牡丹江師范學(xué)院實驗樓、主樓、培訓(xùn)機房、電子閱覽室這4個校園子網(wǎng)的數(shù)據(jù)包總量以及特定的6個端口數(shù)據(jù)包個數(shù),每過一個時段就將這8個時區(qū)內(nèi)累計的數(shù)據(jù)記錄在特定文件中。這樣一天內(nèi)就可以得到24/INTERVAL(即時間段數(shù))個文件,對于每個子網(wǎng)每個端口而言,一個文件就為它們提供了這一時段內(nèi)的數(shù)據(jù)樣本,其中包含了8個樣本數(shù)據(jù)。連續(xù)監(jiān)測21天,這樣每個BP神經(jīng)訓(xùn)練網(wǎng)絡(luò)都有21個數(shù)據(jù)樣本。每個樣本中的8個數(shù)據(jù),經(jīng)過轉(zhuǎn)換,成為BP神經(jīng)網(wǎng)絡(luò)輸入層的8個輸入數(shù)據(jù),訓(xùn)練之后得到的權(quán)值矩陣就是某個時段內(nèi)某個子網(wǎng)某個端口數(shù)據(jù)包流量的權(quán)值矩陣。
1.3.3 BP網(wǎng)絡(luò)參數(shù)設(shè)定
??? (1)網(wǎng)絡(luò)節(jié)點? 網(wǎng)絡(luò)輸入層神經(jīng)元節(jié)點數(shù)就是系統(tǒng)的特征因子(自變量)個數(shù),輸出層神經(jīng)元節(jié)點數(shù)就是系統(tǒng)目標(biāo)個數(shù),隱層節(jié)點根據(jù)經(jīng)驗選取。在系統(tǒng)訓(xùn)練時,實際還要對不同的隱層節(jié)點數(shù)分別進(jìn)行比較,確定出最合理的網(wǎng)絡(luò)結(jié)構(gòu)。所以設(shè)定了一個三層的BP神經(jīng)網(wǎng)絡(luò),輸入層有8個節(jié)點,輸出層有1個節(jié)點,隱含層有兩層,第一個隱含層包含30個神經(jīng)元,第二層包含8個節(jié)點。
??? (2)初始權(quán)值的確定。初始權(quán)值是不應(yīng)完全相等的一組值。已經(jīng)證明,即便確定存在一組互不相等的使系統(tǒng)誤差更小的權(quán)值,如果所設(shè)Wji的的初始值彼此相等,它們將在學(xué)習(xí)過程中始終保持相等。因此,在程序中設(shè)計了一個隨機發(fā)生器程序,產(chǎn)生一組-0.5~+0.5的隨機數(shù),作為網(wǎng)絡(luò)的初始權(quán)值。
??? (3)最小訓(xùn)練速率。在經(jīng)典的BP算法中,訓(xùn)練速率由經(jīng)驗確定,訓(xùn)練速率越大,權(quán)重變化越大,收斂越快。但訓(xùn)練速率過大,會引起系統(tǒng)的振蕩。因此,訓(xùn)練速率在不導(dǎo)致振蕩的前提下,越大越好。該值一般取0.9。
??? (4)動態(tài)參數(shù)。動態(tài)系數(shù)的選擇也是經(jīng)驗性的,一般取0.6~0.8。試驗中取值0.7。
??? (5)允許誤差。這個誤差是由試驗判斷而來,為了取得較低的漏報率和誤報率,對于不同時段,設(shè)定不同的允許誤差,取值在0.01~0.02之間。
??? (6)迭代次數(shù)。一般取1 000次。由于神經(jīng)網(wǎng)絡(luò)計算并不能保證在各種參數(shù)配置下迭代結(jié)果收斂,當(dāng)?shù)Y(jié)果不收斂時,允許最大的迭代次數(shù)。經(jīng)過試驗判定,選取了400次。
??? (7)Sigmoid參數(shù)。該參數(shù)調(diào)整神經(jīng)元激勵函數(shù)形式,一般取0.9~1.0之間。試驗中選取0.9。
1.3.4 流程描述
??? 變量描述:
??? (1)描述子網(wǎng)數(shù)據(jù)結(jié)構(gòu)
??? struct Sub?????????????????????????????
??? {
??? unsigned long subnetip;??//子網(wǎng)ip???
??? unsigned long submask;??//子網(wǎng)掩碼??
??? }*sub;
??? (2)網(wǎng)絡(luò)數(shù)據(jù)包計數(shù)數(shù)據(jù)結(jié)構(gòu)
??? struct Cal_Value??????????????????????
??? {
??? struct Sub sub;???? // 子網(wǎng)情況描述???????????????????????
??? unsigned long? t_pnum[ZONE][PORT]; // 記錄特定時間段內(nèi)端口數(shù)據(jù)包數(shù)量的數(shù)組
??? } *cal_val;
1.3.5 訓(xùn)練流程
??? (1)數(shù)據(jù)收集。利用libnids提供的函數(shù)接口監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù),關(guān)注的是數(shù)據(jù)包頭的信息。當(dāng)源或目的地址與需要檢測的校園子網(wǎng)IP地址相同時,再查看其端口是否是特定的端口(21,23,25,53,80,110,8 080),是則相應(yīng)的端口數(shù)據(jù)包計數(shù)加1,否則記入最后一個計數(shù)變量(即此子網(wǎng)數(shù)據(jù)包總量計數(shù)值)。每過一個時區(qū),將計數(shù)值記入到相應(yīng)cal_val動態(tài)數(shù)組中;每過一個時段,創(chuàng)建一新文件,將cal_val數(shù)組中的數(shù)據(jù)寫入此時段的文件中,文件名記入到一個數(shù)組filename[ ]中,供以后的BP網(wǎng)絡(luò)訓(xùn)練使用。當(dāng)達(dá)到訓(xùn)練天數(shù)時,創(chuàng)建BP算法訓(xùn)練線程,終止數(shù)據(jù)收集。
??? (2)樣本數(shù)據(jù)輸入。利用數(shù)據(jù)收集階段的filename[ ]數(shù)組,對于每一個BP神經(jīng)網(wǎng)絡(luò),選出各自的樣本文件,將樣本8個數(shù)據(jù)除以1000 000(使BP神經(jīng)網(wǎng)絡(luò)輸入值在 (-1,1)之間)輸入到神經(jīng)網(wǎng)絡(luò)。
??? (3)設(shè)置輸出期望值為1,設(shè)定BP網(wǎng)絡(luò)拓?fù)?、閾值?BR>??? (4)利用BP算法訓(xùn)練樣本數(shù)據(jù),經(jīng)過正向傳播、反向訓(xùn)練之后,得到權(quán)值矩陣,記錄到相應(yīng)的權(quán)值文件中,為檢測流量異常做好準(zhǔn)備。
1.3.6 異常檢測流程
??? (1)數(shù)據(jù)收集與數(shù)據(jù)輸入。BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成之后,仍按照訓(xùn)練階段的方式收集數(shù)據(jù),不同的是當(dāng)記錄完一個時段的一個數(shù)據(jù)文件后,立即啟動檢測異常線程,將文件中的數(shù)據(jù)經(jīng)同樣的轉(zhuǎn)換,輸入到相應(yīng)的BP網(wǎng)絡(luò)中,進(jìn)行異常檢測。
??? (2)BP神經(jīng)網(wǎng)絡(luò)載入相應(yīng)的權(quán)值文件,經(jīng)過正向傳播計算后,將計算結(jié)果與期望輸出值進(jìn)行誤差計算,判斷是否大過設(shè)定的閾值。若大于閾值,則認(rèn)為出現(xiàn)異常,由此進(jìn)入異常處理階段。BP神經(jīng)網(wǎng)絡(luò)計算線程結(jié)束,主線程繼續(xù)收集數(shù)據(jù)。
??? (3)異常處理階段。發(fā)現(xiàn)異常后,記錄異常的時段、子網(wǎng)IP地址與掩碼、子網(wǎng)端口號。而后啟動流量異常分析模塊,收集此子網(wǎng)該端口的所有數(shù)據(jù)包,應(yīng)用數(shù)據(jù)挖掘技術(shù)進(jìn)行分析,找出攻擊特征。
2 實驗結(jié)果分析及實驗意義
2.1 實驗環(huán)境和目的
??? 試驗在雙CPU2.4GHz,主存為4GB的戴爾機架服務(wù)器上進(jìn)行,操作系統(tǒng)為Redhat 9.0,硬盤為146GB SCSI;網(wǎng)絡(luò)為牡丹江師范學(xué)院校園網(wǎng)。實驗主要是通過對樣本數(shù)據(jù)進(jìn)行多次訓(xùn)練,確定合適的閾值、時間段,使異常檢測的漏報率、誤報率達(dá)到相對較小。
2.2 實驗數(shù)據(jù)?
??? 由于實驗所得數(shù)據(jù)量較大,這里只選取一些典型數(shù)據(jù)的進(jìn)行說明。在16:00~21:00之間,牡丹江師范學(xué)院電子閱覽室的80端口網(wǎng)絡(luò)流量較大,有較好的說明性。采用不同時段的12個神經(jīng)網(wǎng)絡(luò)的輸出數(shù)據(jù)(即校驗數(shù)據(jù))來選定時間段、閾值。經(jīng)過神經(jīng)網(wǎng)絡(luò)計算后,統(tǒng)計了各個閾值的誤報率和漏報率。
2.3? 結(jié)果分析
??? 在16:00~21:00之間,實驗以2小時、3小時、4小時為一個時段,選取不同的閾值,訓(xùn)練此時段80端口的BP神經(jīng)網(wǎng)絡(luò)。試驗過程中,由于使用攻擊工具,造成短時間內(nèi)流量增大,以此確定閾值的最大數(shù)值;并且在校園網(wǎng)網(wǎng)絡(luò)防火墻和snort這樣的基于規(guī)則的網(wǎng)絡(luò)入侵檢測系統(tǒng)的幫助下,通過對誤報的判定,確定閾值的最小值。由此在3個時段里,各選取了3個閾值,收集了12天的網(wǎng)絡(luò)流量數(shù)據(jù)。這些樣本數(shù)據(jù)里包含了異常數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)誤報、漏報的數(shù)據(jù)。試驗結(jié)果分別如表1、表2、表3所示。表中,W為誤報率,L為漏報率,T為正確檢測。
?

?

?

??? 由表可以看出,在同一個時段內(nèi),當(dāng)閾值取值較小時,誤報率較高,而漏報率較低;當(dāng)取值較高時,誤報率較低,而漏報率較高。如表1當(dāng)閾值取值為0.01時誤報率較小到達(dá)了33.3%,而漏報率只有8.3%;當(dāng)閾值取值為0.015時,漏報率為33.3%,誤報率為8.3%。相比較而言,當(dāng)漏報率和誤報率大致相當(dāng)?shù)臅r候,就能夠取得相對較好的檢測效果,既能檢測到絕大部分異常的發(fā)生,還能減小誤報。如表1所示,閾值取為0.012時,檢測效果最好。由此原則確定了各個時段的閾值,它們依次是0.012,0.018,0 .02。
??? 縱向比較表1、表2、表3,對于同一閾值而言,時間段越小,它的誤報率就越高;時間段越大,它的漏報率就越高。以表1、表2中的閾值0.015為舉例,當(dāng)時段大小為4小時,它的誤報率為8.3%;而當(dāng)時段大小為3小時,它的誤報率為41.7%;表2、表3閾值為0.2的漏報率在時段大小為3小時,漏報率為33.3%,而在時段大小為2小時,誤報率為16.7%。由此可以得出這樣一個結(jié)論,為了得到較好的檢測效果,時段的選擇應(yīng)該是該時段閾值的漏報率與誤報率較為相當(dāng)?shù)臅r段。比較表中的0.012、0.018、0.02這3個閾值的誤報率與漏報率,不難看出大小為3小時的時段,是應(yīng)該選擇的檢測時段。
2.4 實驗意義
??? 實驗通過人工神經(jīng)網(wǎng)絡(luò)技術(shù)實現(xiàn)流量異常檢測,結(jié)合試驗結(jié)果得出結(jié)論:通過連續(xù)21天觀察記錄網(wǎng)絡(luò)流量和12天的校驗數(shù)據(jù)的收集,確定了檢測時段的大小為3小時,神經(jīng)網(wǎng)絡(luò)閾值為0.018,流量檢測模塊檢測的漏報率、誤報率達(dá)到相對較小,效果最好。這一檢測方法對提高網(wǎng)絡(luò)流量異常檢測的準(zhǔn)確性和檢測效果具有普遍指導(dǎo)意義。
參考文獻(xiàn)
[1]?王麗娜,董曉梅,于戈,等. 基于進(jìn)化神經(jīng)網(wǎng)絡(luò)的入侵檢測方法[J]. 東北大學(xué)學(xué)報(自然科學(xué)版) ,2002(2).
[2]?呂昌國. 基于BP算法的網(wǎng)格資源調(diào)度研究[D]. 哈爾濱: 哈爾濱理工大學(xué),2007.
[3]?周夢熊. 基于實數(shù)編碼遺傳神經(jīng)網(wǎng)絡(luò)的入侵檢測方法研究[D].? 哈爾濱: 哈爾濱理工大學(xué),2007.
