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

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

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

??? 摘 要:介紹人工神經(jīng)網(wǎng)絡技術,建立了人工神經(jīng)網(wǎng)絡的典型模型。應用BP算法的泛化功能,將輸入輸出樣本進行訓練,不斷學習調整網(wǎng)絡權值,使網(wǎng)絡實現(xiàn)給定的輸入輸出映射關系,以達到檢測流量異常的目的。
??? 關鍵詞:人工神經(jīng)網(wǎng)絡技術;流量檢測

?

1 人工神經(jīng)網(wǎng)絡原理及算法實現(xiàn)
1.1 人工神經(jīng)網(wǎng)絡的工作原理

??? 人工神經(jīng)網(wǎng)絡首先要以一定的學習準則進行學習,然后才能工作。所以網(wǎng)絡學習的準則是:如果網(wǎng)絡作出錯誤的的判決,則通過網(wǎng)絡的學習,可以減少下次犯同樣錯誤的可能性。經(jīng)過網(wǎng)絡按學習方法進行若干次學習后,網(wǎng)絡判斷的正確率將大大提高。
??? 連接機制結構的基本處理單元與神經(jīng)生理學類比稱為神經(jīng)元。每個構造起網(wǎng)絡的神經(jīng)元模型模擬一個生物神經(jīng)元,如圖1所示。該神經(jīng)元單元由多個輸入信號(i=1,2,...,n)和1個輸出y組成。中間狀態(tài)由輸入信號的權和表示
???
??? 而輸出模型如圖所示。

?

?


1.2 BP算法分析
??? 采用BP算法(反向傳播學習算法)網(wǎng)絡模型分析網(wǎng)絡異常。BP網(wǎng)絡學習的主導思想是通過不斷調整權值,使誤差代價函數(shù)最小,標準的BP算法采用的是一階梯度法,即最速下降法。
??? 如果有M層網(wǎng)絡,而第M層僅含輸出節(jié)點,第一層為輸入節(jié)點,則BP算法設計為:
??? 第一步:選取初始權值W。
??? 第二步:重復下述過程直至收斂:
??? (1) 對于k=1~N
??? ① 計算Oik、netjk和yk的值(正向過程)。
??? ② 對各層從M~2反向計算(反向過程)。
??? (2)對同一節(jié)點j∈M,計算δjk;
??? 第三步:修正權值, μ>0, 其中
??? 從上述BP算法可以看出,BP模型使得一組樣本的I/O問題變?yōu)橐粋€非線性優(yōu)化問題。
??? 設計神經(jīng)網(wǎng)絡專家系統(tǒng)重點在于模型的構成和學習算法的選擇。結構是根據(jù)所研究領域及要解決的問題確定的。通過對所研究問題的大量歷史資料數(shù)據(jù)的分析及目前的神經(jīng)網(wǎng)絡理論發(fā)展水平建立合適的模型,并針對所選的模型采用相應的學習算法。在網(wǎng)絡學習過程中,不斷調整網(wǎng)絡參數(shù),直到輸出結果滿足要求。
1.3 BP神經(jīng)網(wǎng)絡在流量異常檢測模塊中的應用
??? 流量異常檢測模塊的目的是在某個時間段內檢測出某個子網(wǎng)某個端口的流量是否出現(xiàn)異常。通過對4個校園子網(wǎng)流量連續(xù)21天觀察記錄,利用BP神經(jīng)網(wǎng)絡進行網(wǎng)絡流量訓練后,繼續(xù)記錄網(wǎng)絡流量數(shù)據(jù),并輸入到相應的BP神經(jīng)網(wǎng)絡中,利用訓練后的權值矩陣進行計算,如果誤差結果大于設定的最小誤差,則認為此流量數(shù)據(jù)異常,并記錄了此數(shù)據(jù)的子網(wǎng)、子網(wǎng)掩碼、端口號,以供異常分析模塊使用。
1.3.1 數(shù)據(jù)源的選取
??? 對流量的監(jiān)測可以有幾種可能的數(shù)據(jù)源,根據(jù)對牡丹江師范學院網(wǎng)通出口進行連續(xù)21天的連續(xù)觀察,通過對得到的數(shù)據(jù)分析,發(fā)現(xiàn)進出校園網(wǎng)的數(shù)據(jù)包有較強的規(guī)律性,同時包數(shù)的突增突減也能反應網(wǎng)絡的流量異常,因此適合作為神經(jīng)網(wǎng)絡的數(shù)據(jù)源。而進出校園網(wǎng)的流量字節(jié)數(shù)變化較大,不適合進行報警。
1.3.2 樣本數(shù)據(jù)的選定
??? 如果希望能在某個時間段內檢測出某個子網(wǎng)某個端口的流量是否出現(xiàn)異常,則需要構建這一時段、這一子網(wǎng)、這一端口的BP神經(jīng)網(wǎng)絡,因此共構建了子網(wǎng)數(shù)、端口數(shù)、時間段數(shù)這三者乘積的BP神經(jīng)訓練網(wǎng)絡。分別以2小時、3小時、4小時為一個時段(INTERVAL),并將每個時段劃分為8個時區(qū),每過一個時區(qū)就記錄一次這個時區(qū)內的牡丹江師范學院實驗樓、主樓、培訓機房、電子閱覽室這4個校園子網(wǎng)的數(shù)據(jù)包總量以及特定的6個端口數(shù)據(jù)包個數(shù),每過一個時段就將這8個時區(qū)內累計的數(shù)據(jù)記錄在特定文件中。這樣一天內就可以得到24/INTERVAL(即時間段數(shù))個文件,對于每個子網(wǎng)每個端口而言,一個文件就為它們提供了這一時段內的數(shù)據(jù)樣本,其中包含了8個樣本數(shù)據(jù)。連續(xù)監(jiān)測21天,這樣每個BP神經(jīng)訓練網(wǎng)絡都有21個數(shù)據(jù)樣本。每個樣本中的8個數(shù)據(jù),經(jīng)過轉換,成為BP神經(jīng)網(wǎng)絡輸入層的8個輸入數(shù)據(jù),訓練之后得到的權值矩陣就是某個時段內某個子網(wǎng)某個端口數(shù)據(jù)包流量的權值矩陣。
1.3.3 BP網(wǎng)絡參數(shù)設定
??? (1)網(wǎng)絡節(jié)點? 網(wǎng)絡輸入層神經(jīng)元節(jié)點數(shù)就是系統(tǒng)的特征因子(自變量)個數(shù),輸出層神經(jīng)元節(jié)點數(shù)就是系統(tǒng)目標個數(shù),隱層節(jié)點根據(jù)經(jīng)驗選取。在系統(tǒng)訓練時,實際還要對不同的隱層節(jié)點數(shù)分別進行比較,確定出最合理的網(wǎng)絡結構。所以設定了一個三層的BP神經(jīng)網(wǎng)絡,輸入層有8個節(jié)點,輸出層有1個節(jié)點,隱含層有兩層,第一個隱含層包含30個神經(jīng)元,第二層包含8個節(jié)點。
??? (2)初始權值的確定。初始權值是不應完全相等的一組值。已經(jīng)證明,即便確定存在一組互不相等的使系統(tǒng)誤差更小的權值,如果所設Wji的的初始值彼此相等,它們將在學習過程中始終保持相等。因此,在程序中設計了一個隨機發(fā)生器程序,產(chǎn)生一組-0.5~+0.5的隨機數(shù),作為網(wǎng)絡的初始權值。
??? (3)最小訓練速率。在經(jīng)典的BP算法中,訓練速率由經(jīng)驗確定,訓練速率越大,權重變化越大,收斂越快。但訓練速率過大,會引起系統(tǒng)的振蕩。因此,訓練速率在不導致振蕩的前提下,越大越好。該值一般取0.9。
??? (4)動態(tài)參數(shù)。動態(tài)系數(shù)的選擇也是經(jīng)驗性的,一般取0.6~0.8。試驗中取值0.7。
??? (5)允許誤差。這個誤差是由試驗判斷而來,為了取得較低的漏報率和誤報率,對于不同時段,設定不同的允許誤差,取值在0.01~0.02之間。
??? (6)迭代次數(shù)。一般取1 000次。由于神經(jīng)網(wǎng)絡計算并不能保證在各種參數(shù)配置下迭代結果收斂,當?shù)Y果不收斂時,允許最大的迭代次數(shù)。經(jīng)過試驗判定,選取了400次。
??? (7)Sigmoid參數(shù)。該參數(shù)調整神經(jīng)元激勵函數(shù)形式,一般取0.9~1.0之間。試驗中選取0.9。
1.3.4 流程描述
??? 變量描述:
??? (1)描述子網(wǎng)數(shù)據(jù)結構

??? struct Sub?????????????????????????????
??? {
??? unsigned long subnetip;??//子網(wǎng)ip???
??? unsigned long submask;??//子網(wǎng)掩碼??
??? }*sub;
??? (2)網(wǎng)絡數(shù)據(jù)包計數(shù)數(shù)據(jù)結構
??? struct Cal_Value??????????????????????
??? {
??? struct Sub sub;???? // 子網(wǎng)情況描述???????????????????????
??? unsigned long? t_pnum[ZONE][PORT]; // 記錄特定時間段內端口數(shù)據(jù)包數(shù)量的數(shù)組
??? } *cal_val;

1.3.5 訓練流程
??? (1)數(shù)據(jù)收集。利用libnids提供的函數(shù)接口監(jiān)聽網(wǎng)絡數(shù)據(jù),關注的是數(shù)據(jù)包頭的信息。當源或目的地址與需要檢測的校園子網(wǎng)IP地址相同時,再查看其端口是否是特定的端口(21,23,25,53,80,110,8 080),是則相應的端口數(shù)據(jù)包計數(shù)加1,否則記入最后一個計數(shù)變量(即此子網(wǎng)數(shù)據(jù)包總量計數(shù)值)。每過一個時區(qū),將計數(shù)值記入到相應cal_val動態(tài)數(shù)組中;每過一個時段,創(chuàng)建一新文件,將cal_val數(shù)組中的數(shù)據(jù)寫入此時段的文件中,文件名記入到一個數(shù)組filename[ ]中,供以后的BP網(wǎng)絡訓練使用。當達到訓練天數(shù)時,創(chuàng)建BP算法訓練線程,終止數(shù)據(jù)收集。
??? (2)樣本數(shù)據(jù)輸入。利用數(shù)據(jù)收集階段的filename[ ]數(shù)組,對于每一個BP神經(jīng)網(wǎng)絡,選出各自的樣本文件,將樣本8個數(shù)據(jù)除以1000 000(使BP神經(jīng)網(wǎng)絡輸入值在 (-1,1)之間)輸入到神經(jīng)網(wǎng)絡。
??? (3)設置輸出期望值為1,設定BP網(wǎng)絡拓撲、閾值。
??? (4)利用BP算法訓練樣本數(shù)據(jù),經(jīng)過正向傳播、反向訓練之后,得到權值矩陣,記錄到相應的權值文件中,為檢測流量異常做好準備。
1.3.6 異常檢測流程
??? (1)數(shù)據(jù)收集與數(shù)據(jù)輸入。BP神經(jīng)網(wǎng)絡訓練完成之后,仍按照訓練階段的方式收集數(shù)據(jù),不同的是當記錄完一個時段的一個數(shù)據(jù)文件后,立即啟動檢測異常線程,將文件中的數(shù)據(jù)經(jīng)同樣的轉換,輸入到相應的BP網(wǎng)絡中,進行異常檢測。
??? (2)BP神經(jīng)網(wǎng)絡載入相應的權值文件,經(jīng)過正向傳播計算后,將計算結果與期望輸出值進行誤差計算,判斷是否大過設定的閾值。若大于閾值,則認為出現(xiàn)異常,由此進入異常處理階段。BP神經(jīng)網(wǎng)絡計算線程結束,主線程繼續(xù)收集數(shù)據(jù)。
??? (3)異常處理階段。發(fā)現(xiàn)異常后,記錄異常的時段、子網(wǎng)IP地址與掩碼、子網(wǎng)端口號。而后啟動流量異常分析模塊,收集此子網(wǎng)該端口的所有數(shù)據(jù)包,應用數(shù)據(jù)挖掘技術進行分析,找出攻擊特征。
2 實驗結果分析及實驗意義
2.1 實驗環(huán)境和目的
??? 試驗在雙CPU2.4GHz,主存為4GB的戴爾機架服務器上進行,操作系統(tǒng)為Redhat 9.0,硬盤為146GB SCSI;網(wǎng)絡為牡丹江師范學院校園網(wǎng)。實驗主要是通過對樣本數(shù)據(jù)進行多次訓練,確定合適的閾值、時間段,使異常檢測的漏報率、誤報率達到相對較小。
2.2 實驗數(shù)據(jù)?
??? 由于實驗所得數(shù)據(jù)量較大,這里只選取一些典型數(shù)據(jù)的進行說明。在16:00~21:00之間,牡丹江師范學院電子閱覽室的80端口網(wǎng)絡流量較大,有較好的說明性。采用不同時段的12個神經(jīng)網(wǎng)絡的輸出數(shù)據(jù)(即校驗數(shù)據(jù))來選定時間段、閾值。經(jīng)過神經(jīng)網(wǎng)絡計算后,統(tǒng)計了各個閾值的誤報率和漏報率。
2.3? 結果分析
??? 在16:00~21:00之間,實驗以2小時、3小時、4小時為一個時段,選取不同的閾值,訓練此時段80端口的BP神經(jīng)網(wǎng)絡。試驗過程中,由于使用攻擊工具,造成短時間內流量增大,以此確定閾值的最大數(shù)值;并且在校園網(wǎng)網(wǎng)絡防火墻和snort這樣的基于規(guī)則的網(wǎng)絡入侵檢測系統(tǒng)的幫助下,通過對誤報的判定,確定閾值的最小值。由此在3個時段里,各選取了3個閾值,收集了12天的網(wǎng)絡流量數(shù)據(jù)。這些樣本數(shù)據(jù)里包含了異常數(shù)據(jù)和神經(jīng)網(wǎng)絡誤報、漏報的數(shù)據(jù)。試驗結果分別如表1、表2、表3所示。表中,W為誤報率,L為漏報率,T為正確檢測。

?

?

?


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

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