詹鴻輝,程仲漢
(福建警察學(xué)院計(jì)算機(jī)與信息安全管理系,福建福州 350007)
隨著云計(jì)算、大數(shù)據(jù)和第五代移動(dòng)通信技術(shù)的發(fā)展,互聯(lián)網(wǎng)化需求進(jìn)一步擴(kuò)大,網(wǎng)絡(luò)安全防護(hù)內(nèi)容也隨之增加。入侵檢測(cè)系統(tǒng)(intrusion detection system,IDS),能夠在入侵到達(dá)計(jì)算機(jī)系統(tǒng)之前主動(dòng)進(jìn)行防御,加強(qiáng)了網(wǎng)絡(luò)空間安全性,成為計(jì)算機(jī)安全檢測(cè)和防御領(lǐng)域的一項(xiàng)重要技術(shù)。但是,網(wǎng)絡(luò)威脅的多樣性以及網(wǎng)絡(luò)安全事件頻發(fā),基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法已經(jīng)不適應(yīng)新的網(wǎng)絡(luò)安全防護(hù)場(chǎng)景。近年來(lái),深度學(xué)習(xí)在網(wǎng)絡(luò)安全領(lǐng)域廣泛應(yīng)用,但仍面臨數(shù)據(jù)不平衡和實(shí)時(shí)檢測(cè)等問(wèn)題。如何提高鑒別異常流量的準(zhǔn)確率,同時(shí)保障用戶的安全訪問(wèn),在網(wǎng)絡(luò)安全防范領(lǐng)域具有重要研究?jī)r(jià)值。
目前,入侵檢測(cè)系統(tǒng)根據(jù)入侵檢測(cè)的行為分為兩種模式:異常檢測(cè)和誤用檢測(cè)?;诋惓5娜肭謾z測(cè)領(lǐng)域研究主要有傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。在傳統(tǒng)機(jī)器學(xué)習(xí)研究上,陳晨等[1]利用PSOGWO 算法提出了一種融合粒子群搜索的灰狼優(yōu)化算法。付子爔等[2]結(jié)合SVM 和K 最近鄰近(K-nearest neighbor,KNN)算法,并采用平衡k維樹(shù)作為數(shù)據(jù)結(jié)構(gòu)提出了IL-SVM-KNN 分類(lèi)器。Logeswari 等[3]提出了一種新穎的HFS-LGBM IDS,首先應(yīng)用隨機(jī)森林遞歸特征消除(RF-RFE)方法得到最優(yōu)特征集,然后使用LightGBM 算法進(jìn)行檢測(cè)任務(wù)。Duo 等[4]采用粒子群優(yōu)化-支持向量機(jī)(PSO-SVM)和遺傳算法,構(gòu)建了基于支持向量機(jī)的異常檢測(cè)模型。以上方法需要人工提取特征,處理高維數(shù)據(jù)的特征需要消耗大量計(jì)算資源,不僅需要大量時(shí)間,還會(huì)遺漏部分有效特征,導(dǎo)致準(zhǔn)確率低。
還有一類(lèi)是基于深度學(xué)習(xí)的入侵檢測(cè)方法。Yin等[5]基于深度學(xué)習(xí)對(duì)入侵檢測(cè)系統(tǒng)進(jìn)行建模,提出不同的神經(jīng)元數(shù)量和學(xué)習(xí)速率對(duì)模型性能具有影響。董衛(wèi)宇[6]采用堆疊含有多個(gè)通過(guò)殘差模塊的Attention(注意力)模塊,提出一種基于堆疊卷積注意力(STACON-ATTN)的DNN 網(wǎng)絡(luò)流量異常檢測(cè)模型。曹衛(wèi)東等[7]用變分自編碼(variational auto-encoder,VAE)處理數(shù)據(jù),提出基于深度生成模型的半監(jiān)督入侵檢測(cè)模型。連鴻飛等[8]結(jié)合CNN、雙向LSTM 和注意力機(jī)制,提出一種過(guò)采樣算法與混合神經(jīng)網(wǎng)絡(luò)相結(jié)合的入侵檢測(cè)模型。上述方法取得了不錯(cuò)的效果,但是在對(duì)已知網(wǎng)絡(luò)攻擊的檢測(cè)上仍待提高。
本文提出一種基于數(shù)據(jù)清洗的數(shù)據(jù)轉(zhuǎn)換。首先,在數(shù)據(jù)預(yù)處理上使用特征值歸一化方法,再將一維向量數(shù)據(jù)轉(zhuǎn)換成二維的圖像數(shù)據(jù)。其次,針對(duì)NSL-KDD數(shù)據(jù)集[9]的不平衡問(wèn)題,在經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)[10]基礎(chǔ)結(jié)構(gòu)上將批歸一化層應(yīng)用于卷積層-池化層之后,卷積層過(guò)渡到全連接層使用Flatten 函數(shù)。最后,在全連接層中間引入Dropout 層。此外,運(yùn)用Xavier 方法[11]初始化模型權(quán)重和Adam[12]優(yōu)化算法等常用的深度學(xué)習(xí)技術(shù)。由此,提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的改進(jìn)異常流量鑒別方法CNN-BDF(CNN-BatchNorm_Dropout_Flatten)。在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,加入了批歸一化層、Dropout 層、Flatten 函數(shù)三個(gè)層面的改進(jìn)。實(shí)驗(yàn)結(jié)果表明,本文所提出的入侵檢測(cè)模型在各項(xiàng)評(píng)估指標(biāo)上具有不錯(cuò)的提升。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)新的研究方向,是一種網(wǎng)絡(luò)層更深的神經(jīng)網(wǎng)絡(luò),能夠?qū)W習(xí)樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次[13]。卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)是一類(lèi)包含卷積計(jì)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)(feedforward neural networks),是深度學(xué)習(xí)的代表算法之一。
卷積神經(jīng)網(wǎng)絡(luò)是一種前饋神經(jīng)網(wǎng)絡(luò),對(duì)于圖像識(shí)別有出色表現(xiàn)。本文先將一維的入侵檢測(cè)數(shù)據(jù)轉(zhuǎn)換為二維數(shù)據(jù),然后再進(jìn)行訓(xùn)練。卷積神經(jīng)網(wǎng)絡(luò)由具有可學(xué)習(xí)的權(quán)重和偏置常量的神經(jīng)元組成。每個(gè)神經(jīng)元都接收一部分輸入,并進(jìn)行卷積計(jì)算[14]。卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)由輸入層、卷積層、池化層、全連接層和輸出層組成。卷積神經(jīng)網(wǎng)絡(luò)通常包含以下幾層:
(1)卷積層(convolutional layer),卷積神經(jīng)網(wǎng)絡(luò)中的卷積層由若干卷積單元構(gòu)成,各個(gè)卷積單元的參數(shù)通過(guò)反向傳播算法優(yōu)化得來(lái)。卷積運(yùn)算能提取輸入數(shù)據(jù)的不同特征,首層卷積層可能只提取部分低級(jí)的特征。例如線條、邊緣和角等層級(jí),更深卷積層則能從低級(jí)特征中迭代提取更復(fù)雜的特征。
(2)激活層(activation),是神經(jīng)網(wǎng)絡(luò)中神經(jīng)元上運(yùn)行的函數(shù),負(fù)責(zé)將神經(jīng)元的輸入映射到輸出端。其中,線性整流層(rectified linear units layer,ReLU layer)[15]是神經(jīng)網(wǎng)絡(luò)常用的激活函數(shù)。公式如下:
f(x)=max(0,x)
(3)池化層(pooling layer),在卷積層處理后一般會(huì)產(chǎn)生維度較大的特征,該層將特征切分成幾個(gè)區(qū)域,取其最大值或平均值,產(chǎn)生新的、維度更小的特征。其作用是降低數(shù)據(jù)的空間尺寸,減少網(wǎng)絡(luò)中參數(shù)的數(shù)量,計(jì)算資源耗費(fèi),也能有效控制過(guò)擬合。
(4)全連接層(fully-connected layer),將所有局部特征結(jié)合轉(zhuǎn)換成全局特征,用于計(jì)算每一類(lèi)的得分。根據(jù)計(jì)算神經(jīng)網(wǎng)絡(luò)的推測(cè)結(jié)果與真實(shí)標(biāo)簽的差距,構(gòu)造損失函數(shù)。將損失函數(shù)對(duì)各種權(quán)重、卷積核參數(shù)求導(dǎo),慢慢優(yōu)化參數(shù)找到損失函數(shù)的最小值。這一過(guò)程稱(chēng)為梯度下降。經(jīng)過(guò)訓(xùn)練的模型即可用于分類(lèi)任務(wù)。
對(duì)異常流量的鑒別實(shí)際上是根據(jù)數(shù)據(jù)特征對(duì)進(jìn)行分類(lèi)的問(wèn)題。本文采用卷積神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練后得出異常流量分類(lèi)CNN-BDF 網(wǎng)絡(luò)。針對(duì)實(shí)驗(yàn)采用的NSL-KDD 數(shù)據(jù)集的不平衡問(wèn)題,在經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)上將批歸一化層應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)。CNN-BDF 還將Flatten 層應(yīng)用于卷積層到全連接層的過(guò)渡,在全連接層中間引入Dropout 層。并調(diào)整卷積層的關(guān)鍵參數(shù)以提高模型準(zhǔn)確性。
CNN-BDF 神經(jīng)網(wǎng)絡(luò)共有14 層,結(jié)構(gòu)和參數(shù)如圖1所示。
圖1 CNN-BDF 模型結(jié)構(gòu)
CNN-BDF 的分層結(jié)構(gòu)描述如下:
(1)第1 層為輸入層。入侵記錄數(shù)據(jù)是一維數(shù)據(jù),經(jīng)過(guò)特征編碼和數(shù)據(jù)特征值歸一化處理后,首先去除一列空值數(shù)據(jù),將單條數(shù)據(jù)由一維1×41 處理為一維1×40,最后將剩余40 列一維數(shù)據(jù)轉(zhuǎn)換成二維1×5×8大小的圖像數(shù)據(jù)。
(2)第3 和第7 層是卷積層。卷積層進(jìn)行卷積運(yùn)算,對(duì)于輸入數(shù)據(jù),以一定間隔滑動(dòng)卷積核的窗口并應(yīng)用。在卷積運(yùn)算之前需要進(jìn)行填充處理,以調(diào)整輸出的大小,填充值設(shè)置為1。卷積核的位置間隔,也稱(chēng)為步幅。在保證網(wǎng)絡(luò)精度的情況下,減少參數(shù),將卷積核大小都設(shè)置為2×2,步幅設(shè)置為1。在一定程度上提高了對(duì)數(shù)據(jù)特征的獲取。
(3)第2、4、8 層為激活函數(shù)層,使用ReLU 作為激活函數(shù)。第5 和第9 層為最大池化層,其作用是對(duì)微小的位置變化具有魯棒性[16],并且能減少計(jì)算量。
(4)第6 和第10 層為批歸一化層(batch norm,BN)。為了使各層擁有適當(dāng)?shù)膹V度,BN 層可以將激活值的分布調(diào)整成高斯分布。
(5)第12~14 層包含全連接層和Dropout 層。Dropout 可以簡(jiǎn)單地實(shí)現(xiàn),在某種程度上能夠抑制過(guò)擬合,在每一個(gè)batch 的訓(xùn)練中隨機(jī)減掉一些神經(jīng)元。這里將Dropout 值設(shè)置為0.5。
(6)第11 層為Flatten 全連接層。Flatten 層將輸入“壓平”,即把多維的輸入一維化,多應(yīng)用于卷積層到全連接層的過(guò)渡。
在CNN-BDF 的基礎(chǔ)上,采用以下3 種優(yōu)化方法:
(1)Xavier 初始化方法。在深度學(xué)習(xí)中,神經(jīng)網(wǎng)絡(luò)的權(quán)重初始化方法對(duì)模型的收斂速度和性能具有重要的影響。隨著網(wǎng)絡(luò)深度的增加,訓(xùn)練中容易出現(xiàn)梯度消失或梯度爆炸等問(wèn)題。因此,對(duì)權(quán)重W的初始化至關(guān)重要,本文采用正態(tài)分布N(mean=0,std=0.01)的值填充輸入張量,將網(wǎng)絡(luò)中參數(shù)weight 初始化,初始化參數(shù)值符合正態(tài)分布。參數(shù)初始化的目的是為了讓神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中抑制過(guò)擬合、提高泛化能力,有利于提升模型的收斂速度和性能表現(xiàn)。
(2)本文模型訓(xùn)練所采用的損失函數(shù)為交叉熵?fù)p失函數(shù),這是一個(gè)平滑函數(shù),其本質(zhì)是信息理論中的交叉熵在分類(lèi)問(wèn)題中的應(yīng)用。NSL-KDD 數(shù)據(jù)集的各類(lèi)標(biāo)簽分布不平衡,交叉熵相比其他方法計(jì)算得到梯度更加穩(wěn)定。
(3)梯度下降是一種通用的優(yōu)化算法,能為大范圍的問(wèn)題找到最優(yōu)解。梯度下降的中心思想就是迭代地調(diào)整參數(shù)從而使成本函數(shù)最小化。Adam 優(yōu)化算法結(jié)合AdaGrad 和RMSProp 兩種優(yōu)化算法的優(yōu)點(diǎn)。對(duì)梯度的一階矩估計(jì)(即梯度的均值)和二階矩估計(jì)(即梯度的未中心化的方差)進(jìn)行綜合考慮。在深度學(xué)習(xí)中易于實(shí)現(xiàn),能降低模型訓(xùn)練對(duì)計(jì)算機(jī)資源的需求。這里對(duì)Adam 算法的網(wǎng)絡(luò)參數(shù)學(xué)習(xí)率、權(quán)重分別預(yù)設(shè)為0.001和0.0001開(kāi)始學(xué)習(xí)以提升模型性能。
為驗(yàn)證模型的有效性,進(jìn)行實(shí)驗(yàn)對(duì)比,將原生的卷積神經(jīng)網(wǎng)絡(luò)所訓(xùn)練的模型記為CNN。為驗(yàn)證本文模型具有更好的效果,同時(shí)對(duì)比CNN、SVM、RandomForest、lightGBM 方法,選取多分類(lèi)任務(wù)中常用的3 種指標(biāo),分別為準(zhǔn)確率、查準(zhǔn)率、查全率,以此評(píng)估模型。
(1)準(zhǔn)確率(Acc)是模型正確檢測(cè)的樣本數(shù)占總樣本數(shù)的比值。
(2)查準(zhǔn)率(precision)是被正確檢測(cè)的樣本數(shù)占被檢測(cè)到樣本總數(shù)的比值。
(3)查全率(recall)是被正確檢測(cè)的樣本數(shù)占該類(lèi)樣本總數(shù)的比值。
實(shí)驗(yàn)環(huán)境參數(shù)如表1所示。
表1 實(shí)驗(yàn)環(huán)境參數(shù)
使用2009年公開(kāi)的NSL-KDD 數(shù)據(jù)集,它是對(duì)KDD CUP99 數(shù)據(jù)集的改進(jìn),解決了KDD99 的一些固有問(wèn)題[17]。NSL-KDD 訓(xùn)練集中沒(méi)有冗余記錄,不會(huì)導(dǎo)致分類(lèi)器頻繁的記錄。NSL-KDD 測(cè)試集沒(méi)有重復(fù)記錄,使檢測(cè)評(píng)估更具有準(zhǔn)確性。NSL-KDD 中共有數(shù)據(jù)148517 條,每條數(shù)據(jù)有41 位特征值。其中,訓(xùn)練集有125973 條數(shù)據(jù),測(cè)試集有22544 條數(shù)據(jù)。數(shù)據(jù)中的入侵檢測(cè)攻擊類(lèi)別如表2所示。
表2 NSL-KDD 訓(xùn)練集的攻擊類(lèi)型
(1)NSL-KDD 內(nèi)的訓(xùn)練集和測(cè)試集中包含的攻擊方法不同,在測(cè)試集中含有17 種未在訓(xùn)練集出現(xiàn)的標(biāo)簽類(lèi)型,共計(jì)3751 條,刪除這類(lèi)樣本更易于評(píng)價(jià)模型對(duì)已知網(wǎng)絡(luò)攻擊的檢測(cè)效果。
(2)本文使用的數(shù)據(jù)集的41 列特征內(nèi)含有字符數(shù)據(jù)和數(shù)值數(shù)據(jù),在機(jī)器學(xué)習(xí)中一般使用數(shù)值數(shù)據(jù)。數(shù)據(jù)含有protcol_type、service、flag 和label 4 列字符數(shù)據(jù)。因此,使用LabelEncoder(標(biāo)簽編碼)中的fit_transform 函數(shù)進(jìn)行特征編碼將上述4 列特征轉(zhuǎn)化為數(shù)值型特征。為加快本文模型收斂速度,使用MinMaxScaler(特征值歸一化)方法對(duì)所有數(shù)據(jù)預(yù)處理。
由于原始的入侵?jǐn)?shù)據(jù)是一維的向量數(shù)據(jù),而卷積神經(jīng)網(wǎng)絡(luò)一般用于處理二維的圖像數(shù)據(jù)。因此,本文采用數(shù)據(jù)清洗的方法對(duì)一維41 列數(shù)據(jù)進(jìn)行檢查后發(fā)現(xiàn)數(shù)據(jù)集中第20 列全為空值,予以刪除。而后將剩余的40 列一維數(shù)據(jù)轉(zhuǎn)換成二維5×8 大小的圖像數(shù)據(jù),該方法簡(jiǎn)單且易于實(shí)現(xiàn)。
對(duì)于對(duì)比模型SVM,將C 設(shè)置為100 且選擇高斯核函數(shù)作為模型的超參數(shù)。將lightGBM 模型的最大深度設(shè)置為3,學(xué)習(xí)率設(shè)置為0.1。
將本文的CNN-BDF 算法與CNN、SVM、Random-Forest、lightGBM 算法進(jìn)行實(shí)驗(yàn)對(duì)比,以驗(yàn)證本文方法的有效性。對(duì)比結(jié)果如表3~5所示。
表3 總體指標(biāo)對(duì)比
表3 是CNN-BDF 和CNN、SVM、RandomForest、lightGBM 在總體準(zhǔn)確率、查準(zhǔn)率、查全率上的對(duì)比結(jié)果。CNN-BDF 的準(zhǔn)確率達(dá)到89.01%,準(zhǔn)確率高于CNN,也高于傳統(tǒng)的機(jī)器學(xué)習(xí)算法。CNN-BDF 的查準(zhǔn)率達(dá)到84.72%,與CNN 相比有效提高了查準(zhǔn)率、查全率。在高于傳統(tǒng)機(jī)器學(xué)習(xí)算法查準(zhǔn)率的同時(shí)保證了較好的查全率。由表3 可知,本文提出的CNN-BDF 模型在數(shù)據(jù)集的分類(lèi)效果上高于其他模型。
由表4 可知,CNN-BDF 模型在normal 類(lèi)型的查準(zhǔn)率上高于其他4 種模型。CNN-BDF 模型在Dos 類(lèi)型的查準(zhǔn)率上略低于其他模型,但在Probe、R2L 兩種類(lèi)型上分別高于CNN 模型和CNN、SVM 模型。SVM 在U2R 類(lèi)型的查準(zhǔn)率僅有4.54%,而文中模型達(dá)到了62.5%??傮w來(lái)說(shuō),CNN-BDF 模型在查準(zhǔn)率上優(yōu)于其他4 種模型。
表4 查準(zhǔn)率對(duì)比
由表5 可知,CNN-BDF 模型在Dos、Probe、normal類(lèi)型上的查全率總體上優(yōu)于CNN、SVM、lightGBM 模型,雖與RandomForest 模型相比有微小差距,但在U2R、R2L 類(lèi)型的查全率上本文模型遠(yuǎn)高于Random-Forest 模型。本文提出的模型對(duì)U2R、R2L 類(lèi)型的檢測(cè)有較好的效果。
表5 查全率對(duì)比
綜合表3~5 實(shí)驗(yàn)結(jié)果,本文提出的模型在提高查準(zhǔn)率的同時(shí)也保證了好的查全率。
針對(duì)目前入侵檢測(cè)算法對(duì)已知的異常網(wǎng)絡(luò)流量的檢測(cè)率低和準(zhǔn)確率不高的問(wèn)題,提出了特征值歸一化的預(yù)處理方法和基于數(shù)據(jù)清洗的數(shù)據(jù)轉(zhuǎn)換方法,將向量數(shù)據(jù)轉(zhuǎn)換為圖像數(shù)據(jù)。CNN-BDF 算法采用經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)上加入批歸一化層和Flatten 函數(shù),并在全連接層間引入Dropout 層。實(shí)驗(yàn)結(jié)果表明,相比CNN、SVM、RandomForest、lightGBM,CNN-BDF 模型具有較高準(zhǔn)確率和查準(zhǔn)率,有效提升了已知的異常網(wǎng)絡(luò)流量的檢測(cè)效果。不過(guò),在未知攻擊類(lèi)型的檢測(cè)效果上還有待改進(jìn),今后將繼續(xù)研究網(wǎng)絡(luò)結(jié)構(gòu),分析特征間的關(guān)聯(lián)性,以改進(jìn)模型對(duì)未知攻擊類(lèi)型的檢測(cè)效果。此外,將增加時(shí)間維度的衡量,提高檢測(cè)的實(shí)時(shí)性。