郭衛(wèi)霞,張 偉,楊國玉
(中國大唐集團(tuán)科學(xué)技術(shù)研究院,北京 100043)
信息技術(shù)的高速發(fā)展極大地豐富和便利了人們的學(xué)習(xí)、生活和工作,但與此同時(shí)網(wǎng)絡(luò)攻擊導(dǎo)致的網(wǎng)絡(luò)異常中斷、用戶個(gè)人信息泄露等事件頻頻發(fā)生,互聯(lián)網(wǎng)所面臨的各種安全威脅變得日益嚴(yán)重,因此維護(hù)網(wǎng)絡(luò)安全變得至關(guān)重要。網(wǎng)絡(luò)入侵檢測作為一種動(dòng)態(tài)有效的主動(dòng)檢測技術(shù),能夠通過分析網(wǎng)絡(luò)流量數(shù)據(jù)識(shí)別具有攻擊行為的信息,在網(wǎng)絡(luò)受到攻擊之前進(jìn)行及時(shí)的攔截和響應(yīng),目前已經(jīng)成為信息安全領(lǐng)域研究的重要內(nèi)容之一。
入侵檢測技術(shù)最早于1980 年由Anderson[1]提出。1987 年Denning[2]采納了Anderson 技術(shù)報(bào)告中的檢測建議,提出了入侵檢測專家系統(tǒng)(Intrusion Detection Expert System,IDES),后來大量的研究人員提出了各種入侵檢測算法來提升檢測效果。近些年,機(jī)器學(xué)習(xí)算法被廣泛應(yīng)用在各種入侵檢測技術(shù)中,文獻(xiàn)[3]將支持向量機(jī)(Support Vector Machine,SVM)應(yīng)用于網(wǎng)絡(luò)異常流量檢測中。文 獻(xiàn)[4]利 用K 近 鄰(K-Nearest Neighbor,KNN)算 法進(jìn)行網(wǎng)絡(luò)入侵檢測,提高了分類效果。文獻(xiàn)[5]基于并行K-means 聚類算法對(duì)異常流量數(shù)據(jù)進(jìn)行分簇,降低分類誤差。上述算法在一定程度上提高了入侵檢測精度,但是基于機(jī)器學(xué)習(xí)的入侵檢測算法依賴于人工提取的數(shù)據(jù)特征,需要人為進(jìn)行大量復(fù)雜的特征工程,并且對(duì)于海量多源異構(gòu)的網(wǎng)絡(luò)入侵?jǐn)?shù)據(jù)沒有很好的魯棒性。
近年來,隨著深度學(xué)習(xí)的迅速崛起,卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、深度置信網(wǎng)絡(luò)等多種深度學(xué)習(xí)算法逐漸應(yīng)用到入侵檢測領(lǐng)域。文獻(xiàn)[6]、[7]基于卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行入侵檢測,其漏檢率和誤檢率均大幅低于基于傳統(tǒng)機(jī)器學(xué)習(xí)的入侵檢測算法。文獻(xiàn)[8]、[9]將循環(huán)神經(jīng)網(wǎng)絡(luò)應(yīng)用到入侵檢測算法中,防止了訓(xùn)練過程中過擬合問題的發(fā)生,也提升了分類準(zhǔn)確率。文獻(xiàn)[10-12]提出基于改進(jìn)深度置信網(wǎng)絡(luò)的入侵檢測算法,將深度置信網(wǎng)絡(luò)與極限學(xué)習(xí)機(jī)結(jié)合,提高網(wǎng)絡(luò)泛化能力,最終得到較好的檢測效果。
本文提出一種基于深度級(jí)聯(lián)網(wǎng)絡(luò)的入侵檢測模型,由CNN 網(wǎng)絡(luò)和LSTM 網(wǎng)絡(luò)串聯(lián)構(gòu)成,可以同時(shí)自學(xué)習(xí)流量數(shù)據(jù)的空間特征和時(shí)序特征,避免繁瑣的特征工程,提高模型的表達(dá)能力和泛化能力。
基于深度級(jí)聯(lián)網(wǎng)絡(luò)的入侵檢測模型的第一層CNN網(wǎng)絡(luò)采用16 層的VGGNet[13]來提取流量數(shù)據(jù)的空間特征。VGGNet 是由牛津大學(xué)Visual Geometry Group 聯(lián)合Google DeepMind 公司一起研發(fā)的深度卷積神經(jīng)網(wǎng)絡(luò),它構(gòu)建了很多不同深度(11~19 層)的網(wǎng)絡(luò),主要貢獻(xiàn)在于探索了卷積神經(jīng)網(wǎng)絡(luò)的深度對(duì)其最終的檢測性能有一定程度的影響。
VGG16 網(wǎng)絡(luò)總體包含了5 個(gè)卷積層、5 個(gè)池化層、3個(gè)全連接層以及1 個(gè)Softmax 輸出層,一共進(jìn)行了13 次卷積操作,卷積層數(shù)較深,且每層通道數(shù)較多,因而能夠提取到較為豐富和抽象的高級(jí)語義特征;網(wǎng)絡(luò)結(jié)構(gòu)非常規(guī)整,統(tǒng)一采用3×3 大小的卷積核(stride 為1)和2×2 的池化核(stride 為2),使得網(wǎng)絡(luò)收斂速度較快;卷積層與層之間的池化層采用Max-Pooling,隱層的激活單元全部采用ReLU 激活函數(shù),結(jié)構(gòu)十分簡潔。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,其中Conv1~Conv5 表示5 個(gè)卷積層,C 表示卷積操作,P 表示池化操作,F(xiàn)C 為全連接層。
圖1 VGG16 網(wǎng)絡(luò)結(jié)構(gòu)
本文采用長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory Network,LSTM)[14]提取流量數(shù)據(jù)的時(shí)序特征。LSTM 是一種特殊的RNN 網(wǎng)絡(luò),常用于自然語言處理、語音識(shí)別等的序列信號(hào)處理任務(wù)中,能夠解決RNN 網(wǎng)絡(luò)長時(shí)間序列訓(xùn)練中存在的梯度消失問題。LSTM 細(xì)胞結(jié)構(gòu)如圖2所示,通過輸入門、遺忘門和輸出門3 個(gè)門控單元結(jié)構(gòu),對(duì)于處理長依賴問題有很好的效果。
圖2 LSTM 細(xì)胞結(jié)構(gòu)
LSTM 每個(gè)門控結(jié)構(gòu)計(jì)算操作如下:
(1)遺忘門:決定從細(xì)胞狀態(tài)中丟失上一時(shí)刻輸入信息的比例,使用當(dāng)前時(shí)刻的輸入xt和上一時(shí)刻隱藏層的輸出ht-1,通過激活函數(shù)映射為[0,1]中的一個(gè)值保存至細(xì)胞狀態(tài)Ct-1中,其中0 表示完全丟棄,1 表示完全保留。
式中,Wf和bf分別為遺忘門的循環(huán)權(quán)重和偏置常量,σ為Sigmoid 激活函數(shù),ft為丟失比例。
(2)輸入門:決定當(dāng)前輸入信息保存至細(xì)胞狀態(tài)的比例,首先由Sigmod 層確定當(dāng)前細(xì)胞中哪些信息需要更新,然后由tanh 層生成候選值向量,用來更新當(dāng)前細(xì)胞中的信息。最終的細(xì)胞狀態(tài)是由遺忘門丟棄上一時(shí)刻細(xì)胞的值和輸入門保留當(dāng)前輸入的信息共同決定的,整體操作如下:
(3)輸出門:根據(jù)當(dāng)前細(xì)胞狀態(tài)決定最終的輸出值,首先由Sigmod 層確定當(dāng)前時(shí)刻細(xì)胞狀態(tài)中信息的輸出比例,然后將細(xì)胞狀態(tài)經(jīng)由tanh 層映射為[-1,1]中的一個(gè)值,并和Sigmod 層的輸出相乘即為最終的輸出值,計(jì)算公式如下:
網(wǎng)絡(luò)流量數(shù)據(jù)通常是按照時(shí)間序列采集存儲(chǔ)的,LSTM 通過3 個(gè)門控單元對(duì)數(shù)據(jù)進(jìn)行非線性映射,解決了數(shù)據(jù)在網(wǎng)絡(luò)中傳輸時(shí)間越長丟失越嚴(yán)重的問題,能夠更好地保留每一時(shí)刻流量信息的關(guān)鍵特征。
本文把VGGNet 和LSTM 網(wǎng)絡(luò)結(jié)合起來,構(gòu)成一個(gè)更深層次的多特征融合的神經(jīng)網(wǎng)絡(luò),同時(shí)提取網(wǎng)絡(luò)流量的空間特征和時(shí)序特征,使得網(wǎng)絡(luò)可以更全面地表達(dá)流量的屬性?;谏疃燃?jí)聯(lián)網(wǎng)絡(luò)的入侵檢測模型整體網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示,首先將流量數(shù)據(jù)經(jīng)過預(yù)處理后得到的特征向量轉(zhuǎn)化為11×11 的灰度圖像作為CNN 網(wǎng)絡(luò)的輸入,先經(jīng)過VGG16 網(wǎng)絡(luò)提取流量的空間特征,然后將全連接層輸出的特征圖分為10 個(gè)時(shí)間步驟送入LSTM 網(wǎng)絡(luò),提取流量的時(shí)序特征,本文采用的LSTM 網(wǎng)絡(luò)包含2個(gè)隱藏層,各有256 個(gè)神經(jīng)元細(xì)胞,可以更好地保留流量的特征。LSTM 網(wǎng)絡(luò)輸出的向量送入全連接層,并采用Softmax 進(jìn)行分類,輸出流量數(shù)據(jù)屬于各類別的概率,概率最大的類別即為網(wǎng)絡(luò)預(yù)測該條流量所屬的類別。
圖3 深度級(jí)聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)
本文選擇深度學(xué)習(xí)框架TensorFlow 1.8.0 作為實(shí)驗(yàn)平臺(tái),平臺(tái)軟硬件配置如下:操作系統(tǒng)為Ubuntu 16.04,16 GB內(nèi) 存,GPU 為NVIDIA GeForce GTX Titan Xp,GPU 加 速庫為CUDA 9.0 和CUDNN 7.6。
網(wǎng)絡(luò)載入利用ImageNet[15]預(yù)訓(xùn)練過的VGG16 網(wǎng)絡(luò)來初始化特征提取網(wǎng)絡(luò)的權(quán)重,訓(xùn)練過程中選用SGD隨機(jī)梯度下降算法優(yōu)化網(wǎng)絡(luò)模型,總迭代次數(shù)為70 000次,學(xué)習(xí)率初始值設(shè)為0.001,動(dòng)量系數(shù)為0.9,5 萬次迭代后學(xué)習(xí)率衰減為0.000 1。
實(shí)驗(yàn)采用KDDCUP99 數(shù)據(jù)集[16],該數(shù)據(jù)集是基于美國國防部高級(jí)規(guī)劃署,通過仿真不同的用戶類型、網(wǎng)絡(luò)流量和攻擊手段,采集了9 周的網(wǎng)絡(luò)連接和系統(tǒng)審計(jì)數(shù)據(jù)整理而成。KDDCUP99 共有500 萬條記錄,每條記錄包含41 個(gè)特征和1 個(gè)分類標(biāo)記(label),label 分為正常(Normal)和異常(Attack),異常類型包含Dos、Probe、R2L和U2R 4 種情況。
考慮到訓(xùn)練時(shí)間和內(nèi)存占用情況,本文選用KDDCUP99數(shù)據(jù)集中的“kddcup.data_10_percent”作為訓(xùn)練集,共494 021條,“corrected”作為測試集,共311 029 條,實(shí)驗(yàn)數(shù)據(jù)的類別分布情況如表1 所示。
表1 數(shù)據(jù)集類別分布 (條)
KDDCUP99 數(shù)據(jù)集的41 維特征中有38 維是數(shù)字特征,其余3 維是符號(hào)特征,而CNN 要求輸入數(shù)據(jù)為數(shù)字矩陣,因此在進(jìn)行模型訓(xùn)練之前需要對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理。
符號(hào)特征數(shù)字化:將protocol_type、service 和flag 這3種符號(hào)特征轉(zhuǎn)換為二進(jìn)制向量,如protocol_type 中的TCP、UDP、ICMP 協(xié)議分別表示為[0,0,1]、[0,1,0]、[1,0,0]。同理,flag 特征可轉(zhuǎn)換為11 維二進(jìn)制特征,service 特征可轉(zhuǎn)換為70 維二進(jìn)制特征,最終數(shù)據(jù)集中的每一條記錄可由41 維轉(zhuǎn)換為122 維。
數(shù)字特征歸一化:為了消除特征之間由于量綱不同導(dǎo)致的差異性,對(duì)所有特征采用最大最小歸一化法進(jìn)行均值化處理,將每個(gè)特征的取值映射為[0,1]之間,公式如下:
式中,Mmax和Mmin分別為某一維特征中的最大值和最小值,y 為原始特征值,y′為歸一化之后的值。
入侵檢測算法的性能通常通過準(zhǔn)確率AC、檢測率DR、誤報(bào)率FA 來衡量。AC 是指正確分類的樣本數(shù)占總測試樣本數(shù)量的比例,DR 是指正確識(shí)別為攻擊樣本數(shù)占總測試攻擊樣本數(shù)量的比例,F(xiàn)A 是指錯(cuò)誤識(shí)別為攻擊的正常樣本數(shù)占總測試正常樣本數(shù)量的比例。準(zhǔn)確率和檢測率越高,誤報(bào)率越低,說明該入侵檢測算法的性能越好。各評(píng)價(jià)指標(biāo)計(jì)算公式如下:
式中,TP 為被正確識(shí)別為攻擊樣本的數(shù)量,F(xiàn)P 為被錯(cuò)誤識(shí)別為攻擊的正常樣本的數(shù)量,TN 為被正確識(shí)別為正常樣本的數(shù)量,F(xiàn)N 為被錯(cuò)誤識(shí)別為正常的攻擊樣本的數(shù)量。
為了驗(yàn)證本文改進(jìn)算法的有效性,本次實(shí)驗(yàn)分別對(duì)比了VGGNet、LSTM 以及改進(jìn)后的深度級(jí)聯(lián)網(wǎng)絡(luò)對(duì)不同種類攻擊的識(shí)別情況,檢測率對(duì)比結(jié)果如表2 所示,可以看出,改進(jìn)后的深度級(jí)聯(lián)網(wǎng)絡(luò)在Normal、Dos、Probe、R2L和U2R 這5 類攻擊上檢測率均高于VGGNet 和LSTM 網(wǎng)絡(luò),這說明將CNN 網(wǎng)絡(luò)與LSTM 結(jié)合,能夠獲得更好的檢測能力。但對(duì)于異常R2L 和U2R,訓(xùn)練集樣本數(shù)量較少,模型學(xué)習(xí)到的特征也相對(duì)較少,檢測率略顯不足。
表2 各網(wǎng)絡(luò)對(duì)不同種類攻擊的檢測率對(duì)比(%)
本文還對(duì)比了不同大小的訓(xùn)練集對(duì)VGGNet、LSTM以及本文改進(jìn)算法的影響,各算法的檢測準(zhǔn)確率和誤報(bào)率對(duì)比如圖4 和圖5 所示,其中訓(xùn)練集采用不同比例的kddcup.data_10_percent 數(shù)據(jù)集,由圖可知,當(dāng)訓(xùn)練集樣本數(shù)量較少時(shí),CNN 的檢測性能存在明顯優(yōu)勢,隨著訓(xùn)練集樣本數(shù)量的增多,LSTM 的檢測性能優(yōu)勢逐漸顯現(xiàn),深度級(jí)聯(lián)網(wǎng)絡(luò)的檢測效果更佳。由此可以驗(yàn)證在訓(xùn)練樣本充足的情況下,采用CNN 網(wǎng)絡(luò)和LSTM 同時(shí)學(xué)習(xí)流量數(shù)據(jù)的空間特征和時(shí)序特征,能夠更好地提升入侵檢測性能。
圖4 不同大小訓(xùn)練集下各算法的準(zhǔn)確率對(duì)比
圖5 不同大小訓(xùn)練集下各算法的誤報(bào)率對(duì)比
本文改進(jìn)的深度級(jí)聯(lián)網(wǎng)絡(luò)與常見的機(jī)器學(xué)習(xí)算法的性能比較結(jié)果見表3,由此可見本文提出的深度級(jí)聯(lián)網(wǎng)絡(luò)相較于傳統(tǒng)的機(jī)器學(xué)習(xí)算法有較大的性能提高,對(duì)比效果較好的KNN-RF 算法,深度級(jí)聯(lián)網(wǎng)絡(luò)的準(zhǔn)確率提升1.03%,誤報(bào)率下降1.38%,這也驗(yàn)證了在入侵檢測方面,深度神經(jīng)網(wǎng)絡(luò)憑借強(qiáng)大的特征學(xué)習(xí)能力,比傳統(tǒng)的機(jī)器學(xué)習(xí)算法更具有優(yōu)勢。
表3 本文和機(jī)器學(xué)習(xí)算法性能對(duì)比(%)
本文與其他基于深度學(xué)習(xí)的入侵檢測算法性能對(duì)比見表4,可以看出,本文提出的深度級(jí)聯(lián)網(wǎng)絡(luò)的準(zhǔn)確率均高于基于DBN、CNN、RNN 的入侵檢測模型,但誤報(bào)率也相對(duì)較高,后期可以進(jìn)一步優(yōu)化本文算法以獲得更好的整體檢測性能。
表4 本文和其他深度學(xué)習(xí)算法性能對(duì)比(%)
本文針對(duì)海量多源異構(gòu)的網(wǎng)絡(luò)流量數(shù)據(jù)難以提取特征的問題,提出一種基于深度級(jí)聯(lián)網(wǎng)絡(luò)的入侵檢測算法,同時(shí)利用卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的優(yōu)勢,將VGG16 網(wǎng)絡(luò)與LSTM 級(jí)聯(lián),分別提取流量數(shù)據(jù)的空間特征和時(shí)序特征,并通過KDDCUP99 數(shù)據(jù)集進(jìn)行訓(xùn)練和測試。實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)的深度級(jí)聯(lián)網(wǎng)絡(luò)能夠有效地提高入侵檢測準(zhǔn)確率,降低誤報(bào)率。但對(duì)于稀疏攻擊U2R 和R2L,本文模型仍需要進(jìn)行優(yōu)化改進(jìn)。