樊景威 葛麗娜 張 壕 李登輝
(1.廣西民族大學電子信息學院 南寧 530006)(2.廣西民族大學人工智能學院 南寧 530006)(3.廣西民族大學網絡通信工程重點實驗室 南寧 530006)
隨著網絡流量變得越來越龐大,網絡攻擊手段也變得也越來越新穎,這就對構建一個高效的入侵檢測系統提出了更高的要求[1]。入侵檢測系統用于檢測系統的內外部入侵、潛在入侵和可疑活動的異常[2]。根據檢測所用數據的來源不同,可將入侵檢測系統分為三類:基于主機的入侵檢測系統(Host-based Intrusion Detection System,HIDS);基于網絡的入侵檢測系統(Network-based Intrusion Detection System,NIDS);基于混合數據源的入侵檢測系統(HIDS+NIDS)[3]。
隨著機器學習技術的發展,機器學習技術被廣泛用于入侵檢測系統中。一些研究人員在入侵檢測模型中使用k-均值算法[4]、決策樹[5]、隨機森林[6]和支持向量機(Support Vector Machine,SVM)[7]等機器學習算法,取得不錯的效果。但是淺層機器學習的方法無法應對日益嚴峻的網絡安全挑戰,而深度學習技術在降維和分類任務方面顯示出了其有效性,深度網絡可以自動降低網絡流量復雜度,無需人工干預就能發現數據之間的相關性,當下熱門的卷積神經網絡(Convolution Neural Network,CNN)[8]、循環神經網絡(Recurrent Neural Network,RNN)[9]門控循環單元(Gate Recurrent Unit,GRU)已經被使用在入侵檢測模型中。
GRU和LSTM都屬于RNN類型的神經網絡,許多研究人員把它們放在了入侵檢測模型中。文獻[10]使用CNN、RNN 和自動編碼器(autoencoder,AE)等不同神經網絡架構來構建分類模型,實驗表明,CNN 和LSTM 在入侵檢測的分類中表現良好。文獻[11]提出在物聯網領域使用GRU 進行入侵檢測研究,但實驗僅在KDD-Cup 99 數據上進行,未實現應用于物聯網相關數據集的設想。文獻[12]提出一種基于CNN 與BiGRU 融合的神經網絡入侵檢測模型,通過綜合采樣(SMOTE-Tomek)方法完成對數據集的平衡處理,將CNN 和BiGRU 模型進行特征融合并引入注意力機制進行特征提取,從而提高模型的總體檢測性能。文獻[13]提出一種新的特征驅動的入侵檢測模型X2-BiLSTM,模型集成了X2統計模型和BiLSTM。統計模型用于特征排序,并使用最佳搜索算法搜索最優子集,BiLSTM模型對最優子集進行分類。文獻[14]提出一種結合CNN 和BiGRU 的網絡入侵檢測模型,使用一種結合自適應合成采樣的混合采樣算法和逆向工程神 經 網 絡(Reverse Engineering Neural Networks,RENN)相結合的算法進行采樣處理,采用隨機森林算法和皮爾遜相關系數(Pearson Correlation Co?efficient)相結合方法進行特征選擇,并用CNN 提取空間特征、BiGRU提取遠距離相關特征。
來自谷歌的機器翻譯團隊在2017 年發表的一篇論文中提出了一種包括self-attention 和multi-head attention 的神經網絡架構[15],該架構在機器翻譯任務中取得了優異的成績。之后,許多研究人員將注意力機制應用于入侵檢測模型。文獻[16]提出一種基于LSTM 和注意力機制的檢測模型,并使用卡方分布(chi-square distribution)、統一流形近似與投影(uniform manifold approximation and projection for dimension reduction,UMAP)、主成分分析(principal component analysis)和互信息(mu?tual information)四種約簡算法,實驗在NSL-KDD數據集上評估了所提出的方法,實驗表明,使用具有所有特征注意力和03 成分的主成分分析具有最好的性能。為了檢測更多的攻擊類型,文獻[17]提出一種基于多頭注意力機制,其結構更適合捕獲網絡流量中的分散證據,該模型整體檢測性能提高29%。
盡管許多研究已經將深度學習應用于入侵檢測系統,但仍然存在一些問題。例如,一些入侵檢測模型難以處理復雜和高維的網絡流量,導致特征提取不佳,還有一些模型在二分類的時候準確率普遍很高,但處理多分類問題時的效果不佳。針對這些問題,本文提出了一種融合多頭注意力和雙向門控循環單元的入侵檢測模型。
所提模型主要由兩部分組成:數據預處理模塊和神經網絡模塊,模型結構如圖1所示。

圖1 模型流程圖
在數據預處理模塊中,由于數據集中存在缺失值,首先使用缺失值所在列的均值進行填充,接著使用獨熱編碼對字符數據進行數值化處理,再對所有數據進行最大最小標準化以減少冗余。最后考慮到UNSW-NB15 數據集中的Worms 攻擊種類樣本數據較少,遂使用隨機過采樣方法以解決數據不平衡的問題。最大最小標準化公式如下:
1)輸入層:輸入層使用LeakyReLU 激活函數,他是修正線性單元的改進版本,它的提出就是為了解決神經元“死亡”問題。LeakyReLU 與ReLU 僅在輸入小于0的部分有差別,ReLU輸入小于0的部分值都為0,而LeakyReLU 輸入小于0 的部分值為負,且有微小的梯度。
2)最大池化層(MaxPooling1D)和批量標準化(BatchNormalization):使用一維最大池化層對時域一維信號進行最大值池化,最大池化層的池化大小(pool_size)可以成倍的降低數據維度,減少參數數量,去除冗余信息,從而對特征進行壓縮以簡化網絡的復雜。使用批量標準化對最大池化層的輸出數據進行規范化,進一步提高模型性能和減少訓練時間。
3)融合多頭注意力和BiGRU 的包裝層(wrap?per layer):該層使用多頭注意力包裝了4 層BiGRU網絡,GRU 是在LSTM 的變種[18],雙向GRU 是由兩個GRU 組成的序列處理模型,一個是正向輸入,一個是反向輸入。考慮到網絡數據作為一種時間序列,狀態是相關的,所以使用BiGRU 代替GRU 可以更好地處理數據。雖然BiGRU 可以很好地處理長期序列,但仍然無法并行計算,因此BiGRU 很難單獨處理海量數據的網絡流量。多頭注意力可以用來捕捉輸入和輸出的關系,計算單元的數量由模型決定,從而實現高性能的并行計算。多頭注意力機制的計算過程如下。
Step1:初始化向量Query、Key、Value,將輸入序列每一個字符對應的embedding向量與已經訓練的三個矩陣Wq、Wk、Wv相乘得到Query 向量、Key向量、Value向量:
Step2:計算Attention Score 與Softmax Score。Attention Score 反映了此字符和其他位置字符的相關程度,同樣就反映了對其他位置的“關注程度”。對Attention Score 進行縮放和歸一化操作,得到Softmax Score,公式中dk表示維度:
Step3:最后將每個Value 向量乘以Softmax Score 得到加權的V1和V2,將V1和V2求和就可以得到第一個輸入的Attention Value,再對原始的向量Query、Key、Value 做多次的線性映射,把每次的結果映射到多個空間中去,重復進行上面的過程,每次得到的結果稱作一個“頭”。簡言之,多頭注意力機制就是讓每一個注意力去關注輸入信息的不同部分,然后進行拼接。
如圖2 所示,包裝層用多頭注意力機制包裝了4 層BiGRU 層后,在每一層的每一個輸入輸出的時間步都對數據計算注意力值,并行化后形成一種多通道結構,這樣在每個通道都可用來在輸入輸出中對特征加權,并且每一個通道輸出不同的結果,最后將其連接起來進行推斷。

圖2 MultiHead-BiGRU包裝層
引入多頭注意力機制后,模型能夠更加方便的捕獲序列中任意位置的字符之間的關聯關系,從數據整體計算目標,信息能夠使用不同序列位置的不同子空間的表征信息來進行序列數據處理;而且,多頭注意力機制使用權重求和的方式產生輸出向量,使其梯度在網絡模型中的傳播更加容易。
4)平展層(flatten layer)和全連接層(dense lay?er):使用平展層用來連接包裝層和全連接層,將上一層包裝層的輸出“壓平”,即把多維的輸入一維化輸出給全連接層,全連接層的最后一層作為輸出層,輸出類別的概率。
實驗在UNSW-NB15 與CIC-IDS2017 數據集上進行,并使用分層k 折交叉驗證(stratified k-fold cross validation)方法來尋找最佳模型,使用控制變量的方法,對比池化層的池化大小對模型產生的影響,最終選擇一個最優模型,并將模型與其他入侵檢測模型進行比較。
實驗使用準確率(Accuracy,Acc)、精確度(Pre?cision,Pr)、召回率(Recall,R)和F1 分數(f1-score)衡量模型分類的結果,在下方公式中,TP 表示正確預測流量數據為正常的數量,TN 表示正確預測流量為攻擊的數量,FP 表示錯誤預測流量數據為正確的數量,FN 表示錯誤預測數據流量為攻擊的數量。
實驗在UNSW-NB15 數據集和CIC-IDS2017數據集上進行測試。將UNSW-NB15 的訓練集和測試集用panda 的concat 方法結合在一起,提高樣本數量,結合后的數據共有257673 條數據,CI?CIDS2017 數據集的分類包括Portscan,Dos,DDoS,Web,BENIGH 四種,最終的數據集有1042557 條數據。
本文設置以下實驗:
實驗一:分層k 折交叉驗證模型性能分析試驗。
實驗二:不同池化大小對模型性能影響分析實驗。
實驗三:模型性能對比實驗。
實驗使用Python 語言,Python 版本為3.8,使用Tensorflow 2.20在Jupyter Notebook下開發。試驗基于Windows11 系統進行,硬件參數為CPU 為Intel Core i7-9700,內存為32GB。
模型的基本參數設置如表1所示。

表1 模型設置參數
本節所做的工作是進行分層k 折交叉驗證模型性能實驗,模型分別進行二分類和多分類實驗。
3.3.1 分層k折交叉驗證模型性能分析實驗
UNSW-NB15和CIC-IDS2017數據集上的二分類召回率和f1 分數隨k 值的變化趨勢如圖3 和圖4所示。從中可以看出,隨著k 值的增加,兩個數據集二分類的召回率和f1 分數整體呈上升趨勢。這是因為隨著值的增大,數據集被分割的越來越多,作為訓練集的數據也越來越多,所以準確率也更高。對于CIC-IDS2017 數據集,當k 為4 時,召回率和f1分數取得了不錯的效果,k取5的時候,模型穩定性較差。對于UNSW-NB15數據集,k值取7、8和9 時,對應模型識別正常流量和攻擊流量的效果較好。

圖3 二分類召回率

圖4 二分類f1分數
UNSW-NB15 數據集多分類實驗各類別檢出的精確率和f1 分數如表2 和表3 所示。從表中可以看出,在k 取2、5 和10 的時候,模型無法識別出Analysis 和Backdoor 攻擊,這是由于k 較小時,訓練樣本較少,交叉驗證容易有較高的誤差,k 偏大時,模型總體方差變大,模型性能下降。

表2 UNSW-NB15數據集的多分類精確率

表3 UNSW-NB15數據集的多分類f1分數
在k 取8 時,Backdoor 攻擊能很好地被檢測到,且Reconnaissance、Fuzzers、Shellcode、Worms 和Ge?neric 攻擊的精確率和f1 分數也能取得不錯的結果。針對攻擊類型Worms使用隨機過采樣后,該類的檢測效果有了很大的提升,在k 為8 的模型實驗中,該類的f1 分數達到36.04%。實驗表明,使用隨機過采樣可以在一定程度上解決數據不平衡的問題。
圖5 和圖6 是CIC-IDS2017 數據集的多分類的精確率和f1分數,從圖中可以看出所有類別的檢測精度和f1 分數均高于98.5%。當k 為3 時,模型對正常流量和DDos、PortScan攻擊的檢出都取得了很好的效果。k 值為10 時Dos 攻擊的檢測精度最好,達到99.906%,k 值為5 時Dos 攻擊的f1 分數最高,達到99.858%。

圖5 CIC-IDS2017多分類精確率

圖6 CIC-IDS2017數據集的多分類f1得分
不同k值的模型在UNSW-NB15和CIC-IDS2017數據集上實現了上述實驗結果,根據上面的分析可以看出,為了保證多分類和二分類的性能以及每個攻擊類別都能被模型檢出,應選擇k 值為8 的模型。
3.3.2 不同池化大小對模型性能影響分析實驗
從表4可以看出,當池化大小設置為4時,模型在兩個數據集的多分類下可以達到最好的準確率。當池化大小設置過大時,神經網絡的參數減少,特征減少,導致模型性能下降。池化大小設置過大也違背了最大池化層的初衷,即最大池化層不僅是為了數據降維,也是為了維護數據的邊緣紋理信息,以方便模型提取數據邊緣特征。

表4 不同池化大小對應準確率
3.3.3 模型性能對比實驗
在本節中,基于UNSW-NB15 和CIC-IDS2017數據集,在相同的實驗條件下,我們選擇k-means算法[4]、決策樹算法[5]、隨機森林算法[6]和GRURNN[18],CNN-BiLSTM[20]和WaveNet-BiGRU[20]模型與本文提出的模型進行比較。設置對比實驗是為了進一步驗證該網絡入侵檢測模型的綜合性能。表5 和表6 是不同模型的多分類總體準確率、精確率、召回率和f1分數比較。
從表5 和表6 可以看出,所提出的模型在準確率、準確率、召回率和f1 分數這四個指標上都能取得較好的表現。與決策樹、隨機森林和k-means 等傳統機器學習方法相比,由于神經網絡具有很強的非線性擬合能力,可以映射任何復雜的非線性關系,因此本文模型具有更強的特征提取能力。

表5 UNSW-NB15數據集多分類性能比較

表6 CIC-IDS2017數據集多分類性能比較
與GRU-RNN 和CNN-BiLSTM 模型相比,本文的模型融合了注意力機制和BiGRU,可以捕捉網絡流量中任意位置的序列之間的關系,使整個模型更容易學習上下文長句的依賴。最大池化層可以進一步提取邊緣特征,從而獲得更好的分類結果。在UNSW-NB15數據集的實驗中,WaveNet-BiGRU 模型的整體效果優于所提模型,但在CIC-IDS2017 數據集的實驗中,所提模型在精確率、召回率和f1 分數優于WaveNet-BiGRU。
為解決一般入侵檢測系統難以處理復雜、高維的網絡流量,特征提取效果不佳導致網絡入侵檢測效果不佳的問題。本文提出了一種融合多頭注意力和BiGRU 的入侵檢測模型,模型使用隨機過采樣來解決入侵檢測中的數據不平衡問題,融合多頭注意力和BiGRU 處理長距離序列,使用最大池化層平衡模型訓練速度和性能,同時提取序列邊緣特征,論文使用k 折交叉驗證的方法選擇最佳模型,模型在精確率、準確率、召回率和f1 得分都有一定提高。通過對比實驗證明了多頭注意力和BiGRU相結合的入侵檢測模型具有研究前景。然而對比WaveNet-BiGRU 所提模型的多分類能力仍有進一步提升的空間,處理不平衡數據的能力也有待進一步提升。針對這兩個問題,下一階段我們將重點關注數據集的處理和分類模型的優化。