徐東方,徐洪珍,2,3+,鄧德軍
(1.東華理工大學 信息工程學院,江西 南昌 330013;2.東華理工大學 軟件學院,江西 南昌 330013;3.東華理工大學 江西省網絡空間安全智能感知重點實驗室,江西 南昌 330013)
網絡入侵檢測可分為基于誤用和基于異常的檢測方式[1,2]?;谡`用的網絡入侵檢測采用預定義的已知攻擊模式,對已知網絡攻擊具有較高的檢測準確率,但不能檢測新的網絡攻擊類型,具有一定的局限性[3]?;诋惓5木W絡入侵檢測通過分析用戶行為,對網絡入侵進行監(jiān)測,定義常規(guī)用戶活動特征模型,將網絡入侵事件分為正?;虍惓!R虼?,該方法可以檢測新的攻擊?;诋惓5木W絡入侵檢測通常通過訓練由機器學習或深度學習組成的網絡模型來檢測網絡中存在的異常行為[4]。但隨著攻擊類別的多樣化和網絡流量的激增,傳統機器學習算法對大規(guī)模網絡入侵數據的高維性和非線性特征的處理具有一定的局限性,難以適應新型的網絡攻擊環(huán)境,而深度學習算法由于具有較優(yōu)的深層特征提取能力而被廣泛用于網絡入侵檢測領域[5]。
本文提出一種基于CNN-BLSTM-XGB的混合網絡入侵檢測方法,從入侵檢測數據時間和空間層面進行特征提取,采用XGBoost完成對特征信息的識別、分類,在NSL-KDD和CICIDS2017兩種數據集上可以更高效、更準確地實現網絡入侵數據的多元分類。
針對基于深度學習領域網絡入侵檢測方法的研究,Jia等[6]使用信息熵來確定深度置信網絡(deep belief network,DBN)中隱含神經元的數目和網絡深度,獲得較高的檢測精度。Rao等[7]采用平滑L1正則化來加強自編碼器(Autoencoder,AE)的稀疏性,利用深度神經網絡(deep neural networks,DNN)對攻擊類別進行分類,該方法在檢測率和誤報率方面均優(yōu)于傳統模型。Li等[8]針對網絡入侵數據時序特征檢出率低問題,提出GRU-RNN網絡模型,該模型采用NSL-KDD數據集進行多分類評估。Ma等[9]為了提升網絡入侵數據的時序感知力,使用WaveNet對卷積進行堆疊操作,BiGRU對模型進行訓練與分類,通過NSL-KDD、UNSW-NB15和CICIDS2017這3個數據集進行分類評估以驗證模型的性能。Abdulhammed等[10]使用主成分分析(principal component analysis,PCA)作為網絡入侵數據降維,然后采用隨機森林(RF)對PCA處理后的CICIDS2017數據集進行二分類與多分類實驗。為了充分提取網絡入侵數據的空間與時序特征信息,Abdallah等[11]將CNN與LSTM組合,從數據的時間和空間層面進行考慮,通過InSDN數據集進行評估,在二元分類取得較高的檢測準確率。但該方法將LSTM直接用于CNN網絡后面進行時間特征提取,經CNN提取后的特征信息輸入到LSTM,損失了部分時序信息。
雖然目前研究者們對網絡入侵檢測的研究方法已經取得了較高的檢測準確率,但還存在以下問題:第一,單一模型無法充分提取網絡入侵的多種數據特征信息。例如,CNN可以學習網絡入侵數據的空間特征,而LSTM可以對數據的時序特征進行提取。多模型的結合會提取到更全面更充分的特征信息。第二,網絡入侵多分類準確率偏低。現有的方法研究大多數基于異常和正常進行二元分類,事實上網絡入侵檢測的攻擊類型有很多種,對不同攻擊數據進行標記,檢測難度要高于二元分類問題。
本文在對網絡入侵數據進行預處理的基礎上,采用CNN與BLSTM結合搭建網絡特征提取結構,可以比單一神經網絡提取到更加全面的特征信息,且可以從前后兩個方向提取網絡數據集中隱藏的時間序列信息。另外,傳統神經網絡采用softmax激活函數構建的單層分類器,容易受到噪聲數據的影響,造成分類精度降低,而XGBoost可以克服單一分類器對網絡入侵檢測數據分類的不足[12]。因此,本文結合CNN、BLSTM和XGBoost各自的優(yōu)勢,提出基于CNN-BLSTM-XGBoost的混合網絡入侵檢測方法,具有更好的網絡入侵檢測多分類準確率。圖1、圖2分別給出本方法的整體框架和CNN-BLSTM-XGBoost網絡模型。
圖1 基于CNN-BLSTM-XGBoost的網絡入侵檢測框架
圖2 CNN-BLSTM-XGBoost網絡模型
2.1.1 獨熱編碼
獨熱編碼通過將離散特征映射到歐式空間,可以更好地計算離散特征之間的距離,有利于提高模型的運算效率。NSL-KDD數據集中存在3個離散特征值:“flag”、“pro-tocol_type”、“service”。原始NSL-KDD數據集已劃分好相應的訓練集和測試集,但測試集中“flag”、“protocol_type”、“service”特征維度比訓練集少6個類別信息。對訓練集和測試集的3個特征分開進行獨熱編碼,會造成生成的數據相差6個特征維度。因此,本文首先把訓練集和測試集合并,再統一進行獨熱編碼處理。經獨熱編碼量化后,數據由原來的42維變?yōu)?21維數據。CICIDS2017數據集沒有相關離散特征,無需進行獨熱編碼處理。
2.1.2 數據清洗
數據清洗通過檢查數據的一致性,處理數據集中的無效值和冗余信息,可以有效提高用于訓練模型的數據質量。對兩個數據集中的Nan值分別進行填零處理。CICIDS2017數據集中每個數據包含84個特征字段,但存在一些冗余數據,如:“Flow ID”、“Source IP”、“Source Port”、“Destination IP”、“Protocol”和“Time stamp”特征字段,網絡入侵檢測反應的是具有網絡行為的特征信息,而這6個字段為特定網絡標識的特征字段,因此歸為冗余特征,進行刪除,每條樣本特征維度由84個減少為77個。CICIDS2017數據集中的“Flow Bytes/s”與“Flow Packets/s”特征包含“infinity”值,在處理這些數據通常有兩種處理辦法,一種是直接刪除,另一種是替換特征列中的最大值,本文采用的是后者,通過檢索相同特征列中最大值進行替換。原始數據經數據清洗處理可以有效避免對模型訓練產生影響。
2.1.3 標準化處理
數據的標準化處理使得數據與原始數據保持相同的線性關系,有助于提高模型的收斂速度和精度。本文采用的標準化公式如下
(1)
式中:r為原始數值特征,z為標準化后的值,μ與s分別為特征數值的平均值與標準差。
CNN-BLSTM-XGBoost網絡模型如圖2所示,其中特征提取、特征融合和檢測分類的過程如下。
2.2.1 特征提取
圖3 BLSTM 網絡結構
CNN與BLSTM的相互獨立化設定有助于最大化提取網絡入侵數據的特征信息。網絡入侵數據的特征提取具體過程如下:
(1)利用CNN提取空間特征的步驟如下:
步驟1 將經過預處理的網絡入侵數據傳入卷積層;
步驟2 通過第一個雙層卷積提取淺層網絡入侵數據的空間特征信息,并通過權值共享,降低模型復雜度,這里采用ReLU函數對提取特征信息做非線性映射。ReLU函數表示為
f(x)=max(0,x)
(2)
步驟3 采用最大池化層對上述雙層卷積進行2倍欠采樣,對提取的特征信息降維處理,以減少計算量;
步驟4 重復第二步和第三步提取深層網絡入侵數據的特征信息;
步驟5 利用BN緩解網絡梯度消失,提高模型訓練速度;
步驟6 加入參數為0.3的丟棄層,防止過擬合;
步驟7 將提取特征信息扁平化,輸入全連接層,輸出空間特征信息,記為X1。
(2)利用BLSTM提取時序特征信息的步驟如下:
(3)
(4)
(5)
步驟2 經BLSTM處理,將輸出序列yt依次輸入BN層、參數為0.3丟棄層和Flatten層進行處理,輸出時序特征信息,記為X2。
2.2.2 特征融合
使用Keras序貫模型中Concatenate層[15]對CNN和BLSTM提取的特征信息進行融合,保存CNN-BLSTM的網絡結構與權重信息,輸出網絡圖層,網絡圖層包含CNN-BLSTM模型的網絡結構與權重信息。圖4給出了詳細的特征融合結構信息。
圖4 特征融合的結構信息
特征信息融合的步驟如下:
步驟1 Concatenate層融合X1,X2特征信息為總特征輸出信息;
步驟2 輸出網絡圖層,用于XGBoost模型的加載使用。
2.2.3 檢測分類
極端梯度提升(eXtreme gradient boosting,XGBoost)[16]是一種強大的分類和回歸方法,以弱預測模型集成的形式產生最終預測結果。與其它集成算法相比,XGBoost具有更快、更準確的優(yōu)勢[17]。
經特征融合層輸出的融合特征信息僅包含各個攻擊特征類別信息,但XGBoost模型輸入數據形狀需要同時包含樣本總數和特征個數。因此,本文通過XGBoost調用Keras中的model類獲取CNN-BLSTM模型的輸入層到Concatenate層的網絡結構,即獲取網絡圖層。網絡圖層輸出的特征信息用于XGBoost模型輸入,經XGBoost模型訓練輸出最終的檢測分類結果。XGBoost檢測分類可歸結為構建樹的過程,通過對目標函數(obj)進行優(yōu)化,分數越小,樹的結構越好,分類的結果就越準確。
其中,XGBoost構建樹的過程如下:
步驟1 XGBoost加載訓練好的CNN-BLSTM網絡結構與權重信息,獲取網絡圖層,輸出經CNN-BLSTM提取的特征信息;
(6)
式中:fj是第j棵樹的葉子分數,F表示決策樹的集合,表示為
(7)
式中:f(x) 表示其中的一棵樹,wq(x)代表葉節(jié)點的權重,q表示每棵樹的結構,T表示樹中葉子節(jié)點個數,即表示每個分支預測的攻擊類別。Rm→T表示將樣本映射到對應的葉子節(jié)點,該模型的目標是從n個訓練樣本集中學習k棵樹;
步驟3 通過最小化目標函數優(yōu)化最終結果,目標函數L(t)表示為
(8)
(9)
(10)
(11)
L(t)≈
(12)
式中:Ij={i|q(xi)=j} 表示葉子t的實集,gi表示損失函數的一階導數,hi表示損失函數的二階導數,可分別表示為
(13)
(14)
(15)
(16)
步驟6 算法結束,輸出分類檢測結果。
本實驗采用window11系統,AMD Ryzen 75800H CPU,內存8.0 GB,顯卡NVIDIA GeForce RTX 3060,采用Python3.9,Keras深度學習框架進行實現。
本文采用目前主流的NSL-KDD數據集和CICIDS2017數據集分別對提出的方法進行評估。NSL-KDD數據集克服了KDD cup99數據集的缺點,廣泛應用于網絡入侵檢測方法的評估[18],共包含DoS、Probe、R2L和U2R這4種異常類型的樣本和一個正常類型樣本。這些樣本被細化為39種攻擊類型,表1為對數據劃分后的數據分布情況。
表1 NSL-KDD數據集
CICIDS2017數據集[19]是最新的網絡入侵檢測數據集之一,包含良性和最新的攻擊類型數據,類似真實世界數據(PCAPs),通過使用加拿大研究所網站公開提供的CICFlowMeter軟件,對數據集進行完整的標記。數據采集共計5天時間,包含2 830 473條數據樣本,每條記錄包含83個不同的特征與一個標簽列,標簽類別包含一個良性類別和14種攻擊類型數據,具體的采樣信息見表2。
表2 CICIDS2017數據集
為了評估模型的檢測性能,使用精確率(precision)、召回率(Recall)、F度量(F1score)和準確率(Accuracy)作為評價指標。這些指標通過使用4種度量來計算,即真陽性(TP):正確分類的異常記錄的數量。真陰性(TN):正確分類的正常記錄數量。假陽性(FP):分類錯誤的正常記錄數量。假陰性(FN):錯誤分類的異常記錄數量。
準確率:真實樣本檢測與總記錄的百分比
(17)
精確率:精度是正確預測的攻擊與總預測攻擊的比例
(18)
召回率:表示預測為正類樣本數量與正類樣本總數的比例
(19)
F度量:表示精度和召回率指標的調和
(20)
圖5 CNN-BLSTM模型損失(NSL-KDD)
由圖5、圖6所示,CNN-BLSTM模型迭代次數分別在80和90次達到收斂,數據集的不平衡性導致驗證集在前期訓練過程中擬合性不是很好。圖7、圖8為XGBoost模型訓練的損失曲線,在NSL-KDD數據集上,訓練次數在600收斂,在CICIDS2017數據集上訓練至1000達到收斂,經CNN-BLSTM提取的特征信息在XGBoost訓練模型中擬合性能良好。多分類的實驗結果如表3、表4所示。
表3 NSL-KDD數據集的不同攻擊類型評估/%
表4 CICIDS2017數據集的不同攻擊類型評估/%
圖6 CNN-BLSTM模型損失(CICIDS2017)
圖7 XGBoost模型損失(NSL-KDD)
圖8 XGBoost模型損失(CICIDS2017)
實驗給出所有攻擊類別的評分結果,由表1、表2給出的樣本分布情況,結合表3、表4每種攻擊類別的檢測率來看,小樣本數據的檢測準確率、精度等較低。CICIDS2017數據集中“Infiltration”、“Web Attack Sql Injection”和“Heartbleed”攻擊類型檢測精確率為1,反應異常,實則為模型的誤判;根據表2中的樣本分布,這3類數據占比可以忽略不記,樣本過少,導致模型在訓練過程中偏向多類別數據,難以學習到少數類數據的特征信息,很難被模型識別,因此容易產生誤判。小樣本數據一般屬于罕見攻擊類型,對于樣本中大部分特征,模型具有良好的檢測率,說明CNN-BLSTM設計的合理與有效性,可以充分學習到樣本的類別信息,因此可以很好區(qū)分每種攻擊數據的類型。
由表5結果顯示,本文提出的方法與CNN、CNN-BLSTM模型分類相比,在精確率等評價指標均有一定的提升,CNN-BLSTM與CNN對比,模型準確率等也有小幅度提升,驗證BLSTM的增加對網絡入侵數據中時序特征提取的有效性。CNN-BLSTM與XGBoost模型的結合,兩種數據集的檢測準確率均有提升,也驗證了采用XGBoost模型替換帶有softmax激活函數全連接層的有效性。為了進一步說明本方法的效果,本文還與現有的一些類似工作進行了對比。Abdallah等[11]提出CNN-LSTM的網絡入侵檢測方法,使用InSDN數據集進行評估,本文根據文獻中提供的網絡結構以及相關參數使用本文數據集進行方法復現。與其它方法對比情況見表6。
表5 自身模型多分類對比/%
表6 與其它模型多分類對比/%
文獻[11]的方法與表5中本文設計的CNN-BLSTM模型相比,在NSL-KDD數據集上檢測準確率高0.01個百分點,但是在CICIDS2017數據集上表現不如本文構建的CNN-BLSTM模型。從表6可以看出,本文研究方法,總體表現優(yōu)于其它方法。CICIDS2017數據集中的精確率比文獻[9]略低,但是在NSL-KDD數據集上,本文方法具有更好的表現力??傮w來說,本文提出的網絡入侵檢測方法具有較高的檢測準確率。
當前的網絡入侵檢測方法無法充分且全面提取網絡入侵特征信息,因而無法對攻擊信息進行良好的分類。本文提出的CNN-BLSTM-XGB入侵檢測方法可以充分且全面挖掘入侵數據的時空特征信息,在兩種不同的網絡入侵公開數據集進行方法評估,均具有較高的檢測準確率。同時也給出具體攻擊類別的檢測結果,除了數據中的罕見攻擊類型產生誤判,其它攻擊類型均具有良好的檢測準確率??紤]到小樣本攻擊類型數據量少,很難被模型學習到,而GAN在圖像數據平衡方面已取得一定的成效,下一步工作將GAN引入網絡入侵數據平衡處理部分,或許會取得不錯的平衡效果。