李俊, 夏松竹, 蘭海燕, 李守政, 孫建國
(1.國家工業信息安全發展研究中心,北京 100040; 2.哈爾濱工程大學 計算機科學與技術學院,黑龍江 哈爾濱 150001)
網絡安全包括承載載體的完整性、可用性及機密性。任何企圖破壞機密性或者繞過網絡安全機制的活動都可以視為網絡入侵[1]。網絡入侵檢測系統是一種用于檢測網絡入侵的安全管理系統,是網絡安全系統中不可或缺的一部分[2]。網絡入侵檢測系統通常會抓取檢測特定網絡中全部的出流量及入流量,以確定其中一些數據包是否含有入侵跡象[3]。
近年來,機器學習的許多研究應用在入侵檢測領域。例如,支持向量機、人工神經網絡和遺傳算法在入侵檢測領域取得了不錯的成績。但是由于入侵呈現多樣化,現有的機器學習方法暴露出很多局限性。尤其在自動提取入侵特征和分析中,需要更好的學習方法。
Hinton等[4]研究發現,深度學習被廣泛應用在自然語言處理、圖像識別和天氣預報領域。深度學習中應用高度非線性結構,在處理復雜數據時表現出出色的識別能力。并行計算硬件設施的高速發展也為深度學習算法提供了強有力的硬件支撐。通過設計合理的網絡結構,深度神經網絡可有效控制神經網絡的參數量,確保網絡性能的同時,降低神經網絡的運行成本[5]。
由于訓練和計算復雜性,遞歸神經網絡(recurrent neural network,RNN)在過去的一段時間未能成為主流深度學習的網絡模型。近些年,RNN開始進入快速發展時期,在手寫識別[6]和語音識別[7-8]領域有了廣泛的應用。RNN的特點是同一層中的節點是連通的。因此,隱藏層的輸入不僅包括上層的輸出,還包含最后一個時間點的同一層的輸出[9]。許多入侵行為可以抽象為來自底層網絡的特定時間序列的時間。因此,RNN被認為適合用來構建入侵檢測系統。
本文將門控循環單元(gated recurrent unit,GRU)結構放在RNN神經網絡中進行入侵檢測,模型可以識別具有時序特性的入侵流量。分析并設計模型的層次結構,分析最優的損失函數、分類函數,提出了一種最適用于本文的優化函數,加快模型收斂速度。
使用歸一化、數值化方法處理元數據。KDD數據集中的數據是多組一維向量組成:
[0,tcp,http,SF,219,1098,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,7,255,1.00,0.00,0.14,0.05,0.00,0.01,0.00,0.00,normal]
每列所代表內容為:
[“duration”,“protocol_type”,“service”,“flag”,“src_bytes”,“dst_bytes”,“land”,“wrong_fragment”,“urgent”,“hot”,“num_failed_logins”,“logged_in”,“num_compromised”,“root_shell”,“su_attempted”,“num_root”,“num_file_creations”,“num_shells”,“num_access_files”,“num_outbound_cmds”,“is_host_login”,“is_guest_login”,“count”,“srv_count”,“serror_rate”,“srv_serror_rate”,“rerror_rate”,“srv_rerror_rate”,“same_srv_rate”,“diff_srv_rate”,“srv_diff_host_rate”,“dst_host_count”,“dst_host_srv_count”,“dst_host_same_srv_rate”,“dst_host_diff_srv_rate”,“dst_host_same_src_port_rate”,“dst_host_srv_diff_host_rate”,“dst_host_serror_rate”,“dst_host_srv_serror_rate”,“dst_host_rerror_rate”,“dst_host_srv_rerror_rate”,“label”]
其中4項是字符型的數據,需要對其進行數值化處理。例如最后一項數據類型label,共有5種,分別是普通行為、拒絕服務攻擊、網絡窺探、越權攻擊、遠程攻擊。此部分數據離散化不能作為GRU-RNN模型的直接輸入,需要將數據重新編碼。可以采用One-hot編碼方式。在用機器學習算法分類時,計算各個特征之間的距離非常重要。One-hot編碼基本思想是將原數據的離散值轉換為歐式空間中的一個點。label分類的轉換可以如表1所示。

表1 攻擊分類one-hot編碼表Table 1 Attack classification one-hot code table
元數據的范圍不一致,例如第一列數據在(0,1)分布,第5列數據理論上可以達到無窮大。不利于神經網絡的處理。如果數值過大會增加計算負擔。所以對數據進行歸一化處理,例如將第5列數據歸一到(0,1),本文采用歸一化式:
(1)
推出RNN的目的是因為人們想要利用帶有順序性的數據。在傳統的神經網絡中,假設所有輸入和輸出互相獨立。但是對于許多的任務處理,這種處理方式得到的模型效果很差。例如某人想要預測句子的下一個單詞,那么他最好知道之前的單詞都是什么,否則無法完成預測。RNN之所以稱之為遞歸,是因為它對序列的每個元素都執行相同的任務,它的輸出受之前運算影響。RNN具有記憶功能,可以捕獲到目前已經計算出來的所有有關的內容。
RNN具有記憶功能,得益于RNN的模型結構設計,可以將之前的信息傳遞到后面的隱含層中,從而達到記憶的效果。RNN能夠記住在時間t處理的信息,在隨后的時間進行計算,RNN模型結構圖如圖1所示。

圖1 遞歸神經網絡結構Fig.1 Recurrent neural network structure diagram
RNN的模型結構比較簡單,由輸入層、隱藏層和輸出層組成。輸入層與隱含層和隱含層與輸出層之間為全連接的狀態,隱含層自身也有一個自循環結構。RNN模型展開圖如圖2所示。

圖2 遞歸神經網絡的層級展開Fig.2 Hierarchical expansion of recurrent neural network
RNN展開圖中t-1,t,t+1代表時間順序。輸入層用x表示,W表示之前樣本的權重矩陣,U表示當前時刻輸入樣本的權重矩陣,V表示輸出的權重矩陣。St表示數據在時間點t的隱藏狀態,其計算過程受上一個時間點計算出來的狀態影響:
St=f(W*St-1+U*Xt)
(2)
其中,f(·)為激活函數,采用tanh函數。
模型一般在t時刻初始化各類初值,其余值初始化階段:
h1=Ux1+Ws0
(3)
s1=f(h1)
(4)
o1=g(Vs1)
(5)
其中g(·)為激活函數,采用SOFTMAX函數,在一次運算完成后,當前的狀態將作為t時刻的狀態參與下一時刻的運算:
h2=Ux2+Ws1
(6)
s2=f(h2)
(7)
o2=g(Vs2)
(8)
由此可知,最終輸出的式為:
ht=Uxt+Wst-1
(9)
st=f(ht)
(10)
ot=g(Vst)
(11)
可以將隱藏狀態視為RNN“內存”。 捕獲t時間點前發生的所有事情,并基于t時間點計算輸出。RNN在所有步驟中共享相同的參數(U,W,V),減少了學習過程中需要學習的參數總數。
門控循環單元(gated recurrent unit,GRU)在多種應用領域中被證明是一種有效的LSTM變體,其結構是LSTM的簡化和提升版[10]。使用復位門和更新門替代LSTM結構中輸入門、遺忘門和輸出門。復位門來計算是否忘記之前計算狀態,更新門決定將上一步多少信息繼續迭代到當前步驟[11]。GRU結構如圖3所示。

圖3 門控循環單元結構Fig.3 gated recurrent unit structure diagram
GRU結構的主要計算式:
rt=σ(Wrxt+Urht-1)
(12)
zt=σ(Wzxt+Urht-1)
(13)
(14)
(15)

GRU結構比LSTM簡單,在運算的速度和性能上比LSTM更有優勢[12],其展開圖如圖4所示。

圖4 門控循環單元展開Fig.4 Hierarchical expansion of gated recurrent unit
傳統網絡入侵檢測[13-14]被證明是非常有效的檢測手段,但這類檢測方式只對例如越權攻擊有較好的檢出率[15]。由于網絡入侵有明顯的時序性,例如DDOS攻擊就是在短時間內大量的訪問某服務造成服務不可用的狀態。傳統的檢測方式[16],無法對持續一段時間的攻擊行為進行檢測,會在迭代學習的過程中產生一種梯度消失的現象,即遺忘[17]。所以本文采用RNN循環神經網絡,結合GRU模型,能夠處理具有時序性的攻擊信息。
將GRU與RNN結合,構建GRU-RNN網絡入侵檢測模型。如圖5所示,該系統由數據預處理模塊、過采樣模塊、GRU模塊、RNN模塊和輸出模塊組成。預處理模塊負責將原數據轉換為適合神經網絡輸入的數值;GRU模塊由2個GRU層組成,每層含2個GRU結構存儲數據,是系統的核心部分;RNN模塊含15層隱含層,對GRU模塊的輸出執行非線性映射,最終做出非線性的分類決策。KDD數據集共有5種行為,分別是普通行為、拒絕服務攻擊、網絡窺探、越權攻擊、遠程攻擊。所以輸出層采用SOFTMAX函數對結果進行分類處理,可標準化分類概率并將其輸出為最終結果。

圖5 GRU-RNN網絡結構Fig.5 GRU-RNN network structure diagram
在這些組件當中,GRU和RNN模塊是2種不同的神經網絡模型。GRU結構復雜,計算量大。RNN結構簡單,可以進行快速的計算且易于堆疊。所以本文采用2層GRU和15層RNN隱含層來實現。兩者構成一個深層網絡,實現更優化的結果。
輸入層具有41個輸入神經元,輸入層連接到2個記憶模塊的隱含層,輸入層的神經元與隱含層是全連接的關系。
1)輸入層設計。
將KDD-99數據集中的元數據數值化和歸一化后輸入GRU-RNN模型。其中protocol_type、service、flag和label元數據為字符型,利用One-hot編碼成為標量。對src_bytes、dst_bytes等數據歸一化成為(0,1)標量。元數據共41個維度,處理后對應41個輸入神經元的輸入層將元數據輸入GRU-RNN。
2)GRU與RNN隱含層設計。
由2層記憶層組成,該部分負責存儲數據,即模型最核心的創新點“記憶功能”。用于識別持續時間較長的攻擊行為。然后將數據導入一個15層的RNN隱含層進行特征識別。
3)輸出層。
該KDD-99數據集中共有5種行為被標識,所以本系統采用一個5個輸出神經元的輸出層。
對于分類問題,分類結果可以是正確的或不正確的,所有可能的結果可以分為表2中4個情況。

表2 性能指標分類表Table 2 Measure classification
TP表示模型檢測出攻擊流量的數目,且該檢測結果是正確的;FN表示檢出為攻擊流量的數目,但其檢測結果錯誤,這些流量實際是正常流量;TN表示檢出為正常流量的數目,且檢測結果是正確的;FP表示檢出為正常流量的數目,但其檢測結果錯誤,實際該流量是攻擊流量。其中,FP和FN稱為誤報。
根據以上4個參數,通常可以得出4個指標衡量一個模型的實際性能。
準確率:
(16)
檢出率:
(17)
正確檢出率:
(18)
漏報率:
(19)
相關系數:
(20)
其中,式(16)代表正確判斷所有入侵流量和正常流量的概率;式(17)、(18) 代表攻擊流量的檢出率;式(19)代表攻擊流量被當成正常流量的誤報率;式(20)是衡量模型總體指標的衡量函數。
KDD數據集是美國空軍模擬空軍基地局域網,收集7個星期的訓練數據和2個星期的測試數據。手機的數據總數包含200多個實例。
流量被分類為正常流量或某種攻擊類型。攻擊被分成4個攻擊類別:拒絕服務攻擊(DOS)、網絡探測(Probe)、遠程攻擊(R2L)和越權攻擊(U2R)。
為進一步驗證本文提出的GRU-RNN網絡模型性能。與其他文獻中入侵檢測模型進行比較,包括不平衡學習、支持向量機、DNN等學習方法[18-19]。此外在本實驗中,使用NSL-KDD數據集進行實驗,作為KDD數據集的改進版,解決了KDD-CUP-99數據集s一些固有問題[20]。但總體仍然存在一些問題,通常將2種數據集一起使用。
如表3~5所示,實驗測試了不同模型的整體檢測性能。

表3 與其他不平衡算法性能比較Table 3 Comparison with other imbalance algorithms

表4 與其他傳統算法性能比較Table 4 Compared with other traditional algorithms

表5 與其他深度學習算法性能比較Table 5 Comparison with other deep learning algorithms
與其他的不平衡學習方法相比,本文提出的GRU-RNN模型使用最少的樣本來獲得最佳性能。在準確率和正確檢出率方面,I-NGSA與CANN+SMOTE模型在不平衡學習模型中取得了比較好的效果。相比之下,本文提出的GRU-RNN模型效果略遜色于上述2種模型,但由于均達到99%以上的檢出率。所以可以忽略本部分的劣勢,可以視為是較好的檢測水平。
與淺層學習相比,GA-LR在淺層學習中所有指標均表現良好,總體效果要略好于本文提出的模型。但由于GA-LR模型所需要的訓練數據集大小為本模型的7倍。因此,在相同的數據量下,本模型的收斂性比GA-LR模型好。表現出本算法在少量數據的時候,就能達到最優狀態。
與其他深度學習模型[21-22]相比,結果顯示其他深度模型均有較好的性能。其中,CNN-LSTM與DNN模型總體上檢測效果要好于本模型,與GA-LR模型具有同樣的問題,需要的數據量遠大于本模型。S-NADE模型,整體性能較差,需要的數據量也遠超本模型。SCDNN模型,正確檢出率極低。
1)實驗結果驗證了基于GRU網絡記憶模塊的GRU-RNN入侵檢測系統,能夠解決傳統的入侵檢測模型普遍無法對具有時序特征(尤其是持續時間較長的攻擊)檢出率不高的問題。
2)對KDD數據集的仿真實驗表明,該模型能夠在使用較少數據集的條件下,達到99%以上的準確率,且具有較好的準確率、檢出率和漏報率。
本文對所提出的模型主要進行了理論驗證,為了驗證該模型的實際應用,需要投入到大量的工程中運行。下一步的研究重點是優化模型,使其能夠應用在網絡入侵檢測的實際場景中。