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

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

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

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

?

1 人工神經網絡原理及算法實現
1.1 人工神經網絡的工作原理

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

?

?


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

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

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

?

?

?


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

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