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