周麗娟
(山西財經大學 實驗教學中心, 山西 太原 030006)
隨著網絡應用的普及和規模的擴大,網絡入侵檢測已經成為網絡安全領域迫切需要解決的課題[1-2].神經網絡具有自適應能力強、泛化能力強及高度并行性的優點,非常適合在環境多變的網絡環境中進行入侵檢測,但基于神經網絡的方法仍存在一些不足,例如隨著網絡用戶的激增,大量的網絡記錄作為訓練數據時需要增加大量標簽,訓練的難度及對機器的要求更高;現實環境中的大量數據都不包含屬性,因此,需要對數據標記標簽,由此帶來了巨大的開銷[3-4].為了解決上述問題,一些利用神經網絡以外的方法被用來實現網絡入侵檢測.例如,康松林等[5]提出了一種基于深度多層極限學習機的入侵檢測算法,李昆侖等[6]提出了一種改進的Kohenen網絡的DOS攻擊檢測算法來提高DOS攻擊檢測的準確性,陳虹等[7]提出了一種基于優化數據處理等深度信念網絡模型,實現對網絡的入侵檢測.在此基礎上,本研究設計了一種基于自組織映射的網絡入侵檢測算法,將映射值最大的輸出作為網絡的最終輸出,即對應了最大概率對應的攻擊類別,并通過仿真實驗證明了本算法的有效性.
自組織映射是一種由Kohenen提出的自動聚類算法,能實現無監督的聚類.經典的自組織映射模型如圖1所示.

圖1自組織映射模型圖
從圖1可知,自組織映射模型主要包含兩層網絡結構,即輸入層和輸出層.輸入層主要是用于接收數據輸入,其神經元個數與輸入數據的維度相同.輸出層也叫競爭層,該層的神經元不僅與輸入層之間有前向的連接,同時與該層的其他神經元之間通過同側抑制的方法進行連接.
本研究提出的基于自組織映射的網絡模型如圖2所示.
從圖2可知,該組織映射網絡模型包含3層:輸入層、競爭層和輸出層.自組織映射網絡模型是在自組織映射模型的基礎上加入輸出層,使得輸出層可以反映各種入侵攻擊類型的發生概率.對于發生概率最大的攻擊類型,定為數據對應的攻擊類型.

圖2基于自組織映射的網絡模型
本研究設計的基于自組織映射的網絡入侵檢測模型的主要原理為:首先建立自組織映射模型,然后采集訓練樣本數據,并對樣本數據進行預處理,將預處理后的樣本數據輸入到自組織映射網絡,對建立的自組織映射網絡進行訓練,使得整個網絡滿足訓練數據攻擊類型對應的輸出端對應的概率值最大.當自組織映射網絡的訓練誤差小于某預設的閾值時,就停止訓練.對測試數據經過與訓練數據相同的預處理操作后,輸入訓練好的自組織網絡,具有最大輸出值的攻擊類型即為對應的網絡入侵檢測結果.
在基于自組織映射模型的入侵檢測方法中,對于輸出層概率值最大的神經元,即定義為獲勝神經元.當輸入向量為X={x1,x2,…,xn}時,n為輸入神經元個數,m為輸出神經元個數.
計算輸入向量與所有輸出層神經元j的距離為,

(1)
計算完所有輸入到所有輸出的距離Dij(t)后,選擇具有最小Dij(t)值的競爭層神經元j作為獲勝神經元,
(2)
假設輸入層與競爭層獲勝神經元之間的權值Wij(t)(1),競爭層獲勝神經元與輸出層之間的權值鄰域的權值Wij(t)(2)的更新可以表示為,
Wij(t+1)(1)=Wij(t)(1)+η(t)(1)(xi-Wij(t)(1))
(3)
Wij(t+1)(2)=Wij(t)(2)+η(t)(2)(xi-Wij(t)(2))
(4)
式中,學習率η(t)可以更新為,
η(t+1)(1)=η(1)(1)(1-t/T)
(5)
η(t+1)(2)=η(1)(2)(1-t/T)
(6)
其中,η(1)為學習率的初始值.
由于自組織神經網絡更新的權值是需要滿足一定鄰域要求的,為了加快自組織網絡學習的速度,通常希望已開始從某個較小的鄰域內對權值進行更新,以加快鄰域的學習速率.而在算法后期,則希望鄰域的范圍更大一些,實現對算法的權值進行更全局的更新.
假設輸入層與競爭層獲勝神經元之間的領域半徑為N(t)(1),競爭層獲勝神經元與輸出層之間的鄰域為N(t)(2),則鄰域的更新可以表示為,
N(t+1)(1)=N(1)(1)(1-t/T)
(7)
N(t+1)(2)=N(1)(2)(1-t/T)
(8)
本研究提出的自組織映射網絡的入侵檢測算法可以描述為:先初始化輸入層與競爭層獲勝神經元之間的權值Wij(t)(1),競爭層獲勝神經元與輸出層之間的權值Wij(t)(2),兩層的學率初始值η(t)(1)和η(t)(2),以及兩層領域半徑N(t)(1)和N(t)(2),最大迭代次數T.
步驟1.對訓練樣本集進行歸一化處理,樣本的形式如X={x1,x2,…,xn},n為輸入神經元個數;
步驟2.根據式(1)計算輸入到輸出的距離Dij(t)后,并根據式(2)選擇具有最小Dij(t)值的競爭層神經元j作為獲勝神經元;
步驟3.根據式(7)和式(8)來更新權值的鄰域;
步驟4.根據式(5)和式(6)來更新權值的學習率;
步驟5.根據式(3)和式(4)來更新鄰域的權值;
步驟6.更新當前迭代次數t=t+1,判斷是否達到最大迭代次數T;
步驟7.判斷當前迭代次數的值:如果達到最大迭代次數,則算法停止,將具有最大輸出值的網絡攻擊行為作為入侵檢測的結果;更新當前迭代次數t=t+1,判斷是否達到最大迭代次數T.如果未達到最大迭代次數,則判斷輸出神經元的輸出與訓練數據的標簽之間的誤差是否小于閾值,當誤差小于某閾值時,算法結束,否則繼續訓練網絡;
步驟8.將測試數據輸入訓練好的網絡來獲得檢測的最終結果.
為了進一步驗證本研究所提方法的優越性,采用KDDCUP99來進行仿真.這個數據機是模擬美國空軍局域網在9個星期中的網絡連接數據,包含一些有標簽數據和一些無標簽數據.其中,攻擊類型的種類為22,進一步又可以歸為5種類型.

表1 KDDCUP99數據標識
本研究從下面幾個角度來對系統的性能進行評價,即訓練的檢測率DR、誤檢率FPR和漏報率MR,它們的表達方式如下,
(9)
(10)
(11)
誤檢率FPR為,
FPR=KR+MR
(12)
算法參數的設置為:將輸入層與競爭層獲勝神經元之間的權值Wij(t)(1)、競爭層獲勝神經元與輸出層之間的權值Wij(t)(2)、兩層的學率初始值η(t)(1)和η(t)(2)都初始化為[0,1]之間的值.設置兩層領域半徑N(t)(1)和η(t)(2)為3,最大迭代次數T=1 000.
訓練數據一共2 000個,測試數據一共1 000個,測試數據分為5組,每組200個.本實驗應用本研究所提的方法,輸入2 000個訓練數據到網絡中,對網絡進行訓練,得到訓練好的模型,然后再輸入5組測試數據進行測試.得到網絡入侵的檢測結果如表2所示.

表2 系統整體性能檢測
從表2可知,本研究的檢測算法在5組數據上均能有較高的檢測正確率,同時保持較低的誤報率和漏報率.
再次輸入1 000組測試數據,將本研究的算法與文獻[6]和文獻[7]算法進行比較,得到3種方法的網絡攻擊入侵檢測結果,如表3所示.

表3 各攻擊類別檢測結果
從表3可知,5種攻擊中,本研究的算法獲得的檢測結果均較其他2種算法好,尤其是對于Normal攻擊和U2R攻擊的檢測率,遠遠高于另外2種算法.
隨著網絡應用的普及和規模的急劇膨脹,網絡安全攻擊事件層出不窮,入侵檢測系統作為對網絡進行安全保護的重要手段,已經成為了計算機信息安全和網絡安全研究的關鍵領域.本研究提出了一種基于自組織映射網絡的入侵檢測算法,通過訓練數據來對自組織映射網絡進行訓練,得到一個用于進行入侵檢測的網絡安全檢測算法,并采用KDDCUP99進行仿真來對本算法進行了驗證,且將具有最大概率的模型作為入侵檢測結果.仿真實驗表明,本研究算法具有較好的有效性和可行性.