詹鴻輝,程仲漢
(福建警察學院計算機與信息安全管理系,福建福州 350007)
隨著云計算、大數據和第五代移動通信技術的發展,互聯網化需求進一步擴大,網絡安全防護內容也隨之增加。入侵檢測系統(intrusion detection system,IDS),能夠在入侵到達計算機系統之前主動進行防御,加強了網絡空間安全性,成為計算機安全檢測和防御領域的一項重要技術。但是,網絡威脅的多樣性以及網絡安全事件頻發,基于傳統機器學習的方法已經不適應新的網絡安全防護場景。近年來,深度學習在網絡安全領域廣泛應用,但仍面臨數據不平衡和實時檢測等問題。如何提高鑒別異常流量的準確率,同時保障用戶的安全訪問,在網絡安全防范領域具有重要研究價值。
目前,入侵檢測系統根據入侵檢測的行為分為兩種模式:異常檢測和誤用檢測。基于異常的入侵檢測領域研究主要有傳統機器學習和深度學習。在傳統機器學習研究上,陳晨等[1]利用PSOGWO 算法提出了一種融合粒子群搜索的灰狼優化算法。付子爔等[2]結合SVM 和K 最近鄰近(K-nearest neighbor,KNN)算法,并采用平衡k維樹作為數據結構提出了IL-SVM-KNN 分類器。Logeswari 等[3]提出了一種新穎的HFS-LGBM IDS,首先應用隨機森林遞歸特征消除(RF-RFE)方法得到最優特征集,然后使用LightGBM 算法進行檢測任務。Duo 等[4]采用粒子群優化-支持向量機(PSO-SVM)和遺傳算法,構建了基于支持向量機的異常檢測模型。以上方法需要人工提取特征,處理高維數據的特征需要消耗大量計算資源,不僅需要大量時間,還會遺漏部分有效特征,導致準確率低。
還有一類是基于深度學習的入侵檢測方法。Yin等[5]基于深度學習對入侵檢測系統進行建模,提出不同的神經元數量和學習速率對模型性能具有影響。董衛宇[6]采用堆疊含有多個通過殘差模塊的Attention(注意力)模塊,提出一種基于堆疊卷積注意力(STACON-ATTN)的DNN 網絡流量異常檢測模型。曹衛東等[7]用變分自編碼(variational auto-encoder,VAE)處理數據,提出基于深度生成模型的半監督入侵檢測模型。連鴻飛等[8]結合CNN、雙向LSTM 和注意力機制,提出一種過采樣算法與混合神經網絡相結合的入侵檢測模型。上述方法取得了不錯的效果,但是在對已知網絡攻擊的檢測上仍待提高。
本文提出一種基于數據清洗的數據轉換。首先,在數據預處理上使用特征值歸一化方法,再將一維向量數據轉換成二維的圖像數據。其次,針對NSL-KDD數據集[9]的不平衡問題,在經典卷積神經網絡[10]基礎結構上將批歸一化層應用于卷積層-池化層之后,卷積層過渡到全連接層使用Flatten 函數。最后,在全連接層中間引入Dropout 層。此外,運用Xavier 方法[11]初始化模型權重和Adam[12]優化算法等常用的深度學習技術。由此,提出一種基于卷積神經網絡的改進異常流量鑒別方法CNN-BDF(CNN-BatchNorm_Dropout_Flatten)。在卷積神經網絡的基礎上,加入了批歸一化層、Dropout 層、Flatten 函數三個層面的改進。實驗結果表明,本文所提出的入侵檢測模型在各項評估指標上具有不錯的提升。
深度學習是機器學習新的研究方向,是一種網絡層更深的神經網絡,能夠學習樣本數據的內在規律和表示層次[13]。卷積神經網絡(convolutional neural networks,CNN)是一類包含卷積計算且具有深度結構的前饋神經網絡(feedforward neural networks),是深度學習的代表算法之一。
卷積神經網絡是一種前饋神經網絡,對于圖像識別有出色表現。本文先將一維的入侵檢測數據轉換為二維數據,然后再進行訓練。卷積神經網絡由具有可學習的權重和偏置常量的神經元組成。每個神經元都接收一部分輸入,并進行卷積計算[14]。卷積神經網絡的基本結構由輸入層、卷積層、池化層、全連接層和輸出層組成。卷積神經網絡通常包含以下幾層:
(1)卷積層(convolutional layer),卷積神經網絡中的卷積層由若干卷積單元構成,各個卷積單元的參數通過反向傳播算法優化得來。卷積運算能提取輸入數據的不同特征,首層卷積層可能只提取部分低級的特征。例如線條、邊緣和角等層級,更深卷積層則能從低級特征中迭代提取更復雜的特征。
(2)激活層(activation),是神經網絡中神經元上運行的函數,負責將神經元的輸入映射到輸出端。其中,線性整流層(rectified linear units layer,ReLU layer)[15]是神經網絡常用的激活函數。公式如下:
f(x)=max(0,x)
(3)池化層(pooling layer),在卷積層處理后一般會產生維度較大的特征,該層將特征切分成幾個區域,取其最大值或平均值,產生新的、維度更小的特征。其作用是降低數據的空間尺寸,減少網絡中參數的數量,計算資源耗費,也能有效控制過擬合。
(4)全連接層(fully-connected layer),將所有局部特征結合轉換成全局特征,用于計算每一類的得分。根據計算神經網絡的推測結果與真實標簽的差距,構造損失函數。將損失函數對各種權重、卷積核參數求導,慢慢優化參數找到損失函數的最小值。這一過程稱為梯度下降。經過訓練的模型即可用于分類任務。
對異常流量的鑒別實際上是根據數據特征對進行分類的問題。本文采用卷積神經網絡對數據進行訓練后得出異常流量分類CNN-BDF 網絡。針對實驗采用的NSL-KDD 數據集的不平衡問題,在經典卷積神經網絡基礎結構上將批歸一化層應用于卷積神經網絡。CNN-BDF 還將Flatten 層應用于卷積層到全連接層的過渡,在全連接層中間引入Dropout 層。并調整卷積層的關鍵參數以提高模型準確性。
CNN-BDF 神經網絡共有14 層,結構和參數如圖1所示。

圖1 CNN-BDF 模型結構
CNN-BDF 的分層結構描述如下:
(1)第1 層為輸入層。入侵記錄數據是一維數據,經過特征編碼和數據特征值歸一化處理后,首先去除一列空值數據,將單條數據由一維1×41 處理為一維1×40,最后將剩余40 列一維數據轉換成二維1×5×8大小的圖像數據。
(2)第3 和第7 層是卷積層。卷積層進行卷積運算,對于輸入數據,以一定間隔滑動卷積核的窗口并應用。在卷積運算之前需要進行填充處理,以調整輸出的大小,填充值設置為1。卷積核的位置間隔,也稱為步幅。在保證網絡精度的情況下,減少參數,將卷積核大小都設置為2×2,步幅設置為1。在一定程度上提高了對數據特征的獲取。
(3)第2、4、8 層為激活函數層,使用ReLU 作為激活函數。第5 和第9 層為最大池化層,其作用是對微小的位置變化具有魯棒性[16],并且能減少計算量。
(4)第6 和第10 層為批歸一化層(batch norm,BN)。為了使各層擁有適當的廣度,BN 層可以將激活值的分布調整成高斯分布。
(5)第12~14 層包含全連接層和Dropout 層。Dropout 可以簡單地實現,在某種程度上能夠抑制過擬合,在每一個batch 的訓練中隨機減掉一些神經元。這里將Dropout 值設置為0.5。
(6)第11 層為Flatten 全連接層。Flatten 層將輸入“壓平”,即把多維的輸入一維化,多應用于卷積層到全連接層的過渡。
在CNN-BDF 的基礎上,采用以下3 種優化方法:
(1)Xavier 初始化方法。在深度學習中,神經網絡的權重初始化方法對模型的收斂速度和性能具有重要的影響。隨著網絡深度的增加,訓練中容易出現梯度消失或梯度爆炸等問題。因此,對權重W的初始化至關重要,本文采用正態分布N(mean=0,std=0.01)的值填充輸入張量,將網絡中參數weight 初始化,初始化參數值符合正態分布。參數初始化的目的是為了讓神經網絡在訓練過程中抑制過擬合、提高泛化能力,有利于提升模型的收斂速度和性能表現。
(2)本文模型訓練所采用的損失函數為交叉熵損失函數,這是一個平滑函數,其本質是信息理論中的交叉熵在分類問題中的應用。NSL-KDD 數據集的各類標簽分布不平衡,交叉熵相比其他方法計算得到梯度更加穩定。
(3)梯度下降是一種通用的優化算法,能為大范圍的問題找到最優解。梯度下降的中心思想就是迭代地調整參數從而使成本函數最小化。Adam 優化算法結合AdaGrad 和RMSProp 兩種優化算法的優點。對梯度的一階矩估計(即梯度的均值)和二階矩估計(即梯度的未中心化的方差)進行綜合考慮。在深度學習中易于實現,能降低模型訓練對計算機資源的需求。這里對Adam 算法的網絡參數學習率、權重分別預設為0.001和0.0001開始學習以提升模型性能。
為驗證模型的有效性,進行實驗對比,將原生的卷積神經網絡所訓練的模型記為CNN。為驗證本文模型具有更好的效果,同時對比CNN、SVM、RandomForest、lightGBM 方法,選取多分類任務中常用的3 種指標,分別為準確率、查準率、查全率,以此評估模型。
(1)準確率(Acc)是模型正確檢測的樣本數占總樣本數的比值。
(2)查準率(precision)是被正確檢測的樣本數占被檢測到樣本總數的比值。
(3)查全率(recall)是被正確檢測的樣本數占該類樣本總數的比值。
實驗環境參數如表1所示。

表1 實驗環境參數
使用2009年公開的NSL-KDD 數據集,它是對KDD CUP99 數據集的改進,解決了KDD99 的一些固有問題[17]。NSL-KDD 訓練集中沒有冗余記錄,不會導致分類器頻繁的記錄。NSL-KDD 測試集沒有重復記錄,使檢測評估更具有準確性。NSL-KDD 中共有數據148517 條,每條數據有41 位特征值。其中,訓練集有125973 條數據,測試集有22544 條數據。數據中的入侵檢測攻擊類別如表2所示。

表2 NSL-KDD 訓練集的攻擊類型
(1)NSL-KDD 內的訓練集和測試集中包含的攻擊方法不同,在測試集中含有17 種未在訓練集出現的標簽類型,共計3751 條,刪除這類樣本更易于評價模型對已知網絡攻擊的檢測效果。
(2)本文使用的數據集的41 列特征內含有字符數據和數值數據,在機器學習中一般使用數值數據。數據含有protcol_type、service、flag 和label 4 列字符數據。因此,使用LabelEncoder(標簽編碼)中的fit_transform 函數進行特征編碼將上述4 列特征轉化為數值型特征。為加快本文模型收斂速度,使用MinMaxScaler(特征值歸一化)方法對所有數據預處理。
由于原始的入侵數據是一維的向量數據,而卷積神經網絡一般用于處理二維的圖像數據。因此,本文采用數據清洗的方法對一維41 列數據進行檢查后發現數據集中第20 列全為空值,予以刪除。而后將剩余的40 列一維數據轉換成二維5×8 大小的圖像數據,該方法簡單且易于實現。
對于對比模型SVM,將C 設置為100 且選擇高斯核函數作為模型的超參數。將lightGBM 模型的最大深度設置為3,學習率設置為0.1。
將本文的CNN-BDF 算法與CNN、SVM、Random-Forest、lightGBM 算法進行實驗對比,以驗證本文方法的有效性。對比結果如表3~5所示。

表3 總體指標對比
表3 是CNN-BDF 和CNN、SVM、RandomForest、lightGBM 在總體準確率、查準率、查全率上的對比結果。CNN-BDF 的準確率達到89.01%,準確率高于CNN,也高于傳統的機器學習算法。CNN-BDF 的查準率達到84.72%,與CNN 相比有效提高了查準率、查全率。在高于傳統機器學習算法查準率的同時保證了較好的查全率。由表3 可知,本文提出的CNN-BDF 模型在數據集的分類效果上高于其他模型。
由表4 可知,CNN-BDF 模型在normal 類型的查準率上高于其他4 種模型。CNN-BDF 模型在Dos 類型的查準率上略低于其他模型,但在Probe、R2L 兩種類型上分別高于CNN 模型和CNN、SVM 模型。SVM 在U2R 類型的查準率僅有4.54%,而文中模型達到了62.5%。總體來說,CNN-BDF 模型在查準率上優于其他4 種模型。

表4 查準率對比
由表5 可知,CNN-BDF 模型在Dos、Probe、normal類型上的查全率總體上優于CNN、SVM、lightGBM 模型,雖與RandomForest 模型相比有微小差距,但在U2R、R2L 類型的查全率上本文模型遠高于Random-Forest 模型。本文提出的模型對U2R、R2L 類型的檢測有較好的效果。

表5 查全率對比
綜合表3~5 實驗結果,本文提出的模型在提高查準率的同時也保證了好的查全率。
針對目前入侵檢測算法對已知的異常網絡流量的檢測率低和準確率不高的問題,提出了特征值歸一化的預處理方法和基于數據清洗的數據轉換方法,將向量數據轉換為圖像數據。CNN-BDF 算法采用經典卷積神經網絡基礎結構上加入批歸一化層和Flatten 函數,并在全連接層間引入Dropout 層。實驗結果表明,相比CNN、SVM、RandomForest、lightGBM,CNN-BDF 模型具有較高準確率和查準率,有效提升了已知的異常網絡流量的檢測效果。不過,在未知攻擊類型的檢測效果上還有待改進,今后將繼續研究網絡結構,分析特征間的關聯性,以改進模型對未知攻擊類型的檢測效果。此外,將增加時間維度的衡量,提高檢測的實時性。