《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 人工神经网络技术在系统流量异常检测模块中的应用

人工神经网络技术在系统流量异常检测模块中的应用

2009-06-01
作者:张艳萍,高忠新,于全勇

??? 摘 要:介紹人工神經(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ò)實(shí)現(xiàn)給定的輸入輸出映射關(guān)系,以達(dá)到檢測流量異常的目的。
??? 關(guān)鍵詞:人工神經(jīng)網(wǎng)絡(luò)技術(shù);流量檢測

?

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

?

?

?


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

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容