杭?jí)赧?,?偉,張仁杰
(南京郵電大學(xué)計(jì)算機(jī)學(xué)院,南京 210023)
(*通信作者電子郵箱chenwei@njupt.edu.cn)
隨著網(wǎng)絡(luò)科技的快速發(fā)展,網(wǎng)絡(luò)涉及人類社會(huì)的各個(gè)方面,網(wǎng)絡(luò)安全問題也越來越受到人們的關(guān)注?!?018 年中國互聯(lián)網(wǎng)安全報(bào)告》指出,2018 年網(wǎng)宿云安全平臺(tái)共監(jiān)測(cè)攔截了75.46億次有針對(duì)性的爬蟲攻擊事件,9 578.88億次分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)攻擊事件,9.53億次Web應(yīng)用攻擊,相較2017年呈翻倍式增長(zhǎng)。2018年思科發(fā)布的新的視覺網(wǎng)絡(luò)指數(shù)(Visual Networking Index,VNI)[1]中預(yù)測(cè),到2022 年,互聯(lián)網(wǎng)連接設(shè)備預(yù)計(jì)將達(dá)到285 億,約為全球人口的3倍,全球互聯(lián)網(wǎng)用戶將占全球人口的60%,全球IP流量將超過互聯(lián)網(wǎng)元年(1984 年)到2016 年底這32 年間的流量總和,將增加三倍以上,每年將產(chǎn)生4.8 ZB 的網(wǎng)絡(luò)流量。因此,維持網(wǎng)絡(luò)的安全運(yùn)行需要引起重視。異常檢測(cè)是網(wǎng)絡(luò)安全的研究重點(diǎn),其中網(wǎng)絡(luò)流量異常檢測(cè)通過對(duì)流量數(shù)據(jù)的分析,可以檢測(cè)出網(wǎng)絡(luò)中是否存在攻擊。
但是傳統(tǒng)的機(jī)器學(xué)習(xí)方法對(duì)特征的依賴度很大,良好的特征取決于研究者的經(jīng)驗(yàn),選取不同的特征對(duì)檢測(cè)的準(zhǔn)確度有很大的影響。而卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)具備良好的表征學(xué)習(xí)能力,能自主學(xué)習(xí)特征,實(shí)現(xiàn)低級(jí)特征到高級(jí)特征的抽象提取。因此,近年來CNN 常被應(yīng)用于異常流量檢測(cè)。
本文對(duì)傳統(tǒng)的CNN 結(jié)構(gòu)進(jìn)行了改進(jìn),提出了一種基于改進(jìn)的一維卷積神經(jīng)網(wǎng)絡(luò)(Improved one-Dimentional Convolutional Neural Network,ICNN-1D)的異常流量檢測(cè)方法(Abnormal Flow detection Method based on ICNN-1D,AFMICNN-1D),在流量檢測(cè)中,無須人為設(shè)置關(guān)鍵參數(shù)與提取特征。傳統(tǒng)的CNN 大多用于圖像識(shí)別等,因?yàn)閳D像中每個(gè)相鄰的像素之間關(guān)系緊密,可以通過池化操作獲取圖像的邊緣信息和背景信息,但相鄰的流量特征之間并沒有相關(guān)性,池化操作反而會(huì)損失信息。因此本文ICNN-1D在每一次卷積之后沒有池化操作,以盡可能保留完整的流量信息;另外,ICNN-1D使用全局池化(Global Pooling,GP)和一層全連接來代替?zhèn)鹘y(tǒng)多層全連接分類操作,能大大減少訓(xùn)練參數(shù),縮短訓(xùn)練時(shí)間,減少過擬合現(xiàn)象的發(fā)生。
目前,已有許多機(jī)器學(xué)習(xí)算法應(yīng)用于異常流量檢測(cè),利用不同的機(jī)器學(xué)習(xí)算法降低誤報(bào)率,檢測(cè)異常的網(wǎng)絡(luò)行為。入侵檢測(cè)技術(shù)是計(jì)算機(jī)網(wǎng)絡(luò)安全的重要組成部分,1980 年由Anderson[2]首次提出。Shon 等[3]提出了一種將遺傳算法和支持向量機(jī)(Support Vector Machine,SVM)相結(jié)合的異常檢測(cè)分類器,對(duì)真實(shí)環(huán)境數(shù)據(jù)集有廣泛的適應(yīng)性;趙夫群[4]提出了一種用于網(wǎng)絡(luò)入侵檢測(cè)的最小二乘支持向量機(jī)(Least Squares Support Vector Machine,LSSVM);Jha 等[5]使用馬爾可夫(Markov)模型研究網(wǎng)絡(luò)異常檢測(cè);Bamakan等[6]使用支持向量分類(Support Vector Classification,SVC)對(duì)網(wǎng)絡(luò)入侵進(jìn)行分類;Pan 等[7]提出了一種混合機(jī)器學(xué)習(xí)技術(shù),它結(jié)合了k 近鄰(k-Nearest Neighbor,kNN)和SVM 來檢測(cè)攻擊。傳統(tǒng)的機(jī)器學(xué)習(xí)方法在網(wǎng)絡(luò)流量異常檢測(cè)中十分有效,并且有一定的準(zhǔn)確率,但實(shí)驗(yàn)過程中的調(diào)優(yōu)較為困難,而且需要人為選擇特征,構(gòu)造樣本特征效率低,檢測(cè)性能取決于參數(shù)調(diào)優(yōu)和選擇特征的質(zhì)量。
為了解決上述問題,研究人員引入了深度學(xué)習(xí)技術(shù)。近幾年來,深度學(xué)習(xí)廣泛應(yīng)用于語音識(shí)別、圖像識(shí)別和自然語言處理領(lǐng)域。由于深度學(xué)習(xí)可以從原始數(shù)據(jù)中提取高級(jí)特征,因此許多領(lǐng)域都在積極利用深度學(xué)習(xí)方法,部分學(xué)者也開始將深度學(xué)習(xí)方法與異常檢測(cè)領(lǐng)域相結(jié)合。Salama 等[8]引入深度置信網(wǎng)絡(luò)(Deep Belief Network,DBN)、深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)用于提取特征,利用SVM 作為分類器對(duì)流量進(jìn)行分類;Alom 等[9]使用受限玻爾茲曼機(jī)(Restricted Boltzmann Machine,RBM)訓(xùn)練了一個(gè)深度置信網(wǎng)絡(luò),在NSL-KDD訓(xùn)練數(shù)據(jù)上具有97.5%的準(zhǔn)確率;Javaid等[10]結(jié)合稀疏自編碼器(Sparse Autoencoder)的編碼層(用于特征提取)和softmax 函數(shù)(用于類的概率估計(jì)),設(shè)計(jì)了一種“自學(xué)習(xí)”分類機(jī)制對(duì)NSL-KDD 進(jìn)行分類;Khan 等[11-12]利用基于CNN 的殘差網(wǎng)絡(luò)(ResNet)和GoogleNet 模型進(jìn)行惡意軟件檢測(cè);Kumar等[13]通過建立CNN模型,檢測(cè)基于模式識(shí)別的惡意代碼;賈凡等[14]實(shí)現(xiàn)了一種基于CNN 的入侵檢測(cè)算法;Bontemps 等[15]提出了一個(gè)基于長(zhǎng)短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)的異常檢測(cè)系統(tǒng),報(bào)告了該方法中的β參數(shù)變化會(huì)引起預(yù)測(cè)錯(cuò)誤和虛假警報(bào);王偉[16]針對(duì)傳統(tǒng)基于機(jī)器學(xué)習(xí)方法的異常檢測(cè)需要手動(dòng)提取特征的問題,將流量轉(zhuǎn)化為灰度圖,利用深度學(xué)習(xí)的方法實(shí)現(xiàn)了流量特征的自動(dòng)提取和流量識(shí)別;何文河等[17]提出了一種改進(jìn)的反向傳播(Back Propagation,BP)神經(jīng)網(wǎng)絡(luò)算法用于異常檢測(cè),但是收斂速度很慢。
基于傳統(tǒng)機(jī)器學(xué)習(xí)的異常檢測(cè)方法通常需要人工選擇流量特征,而特征工程一般都要求研究者有相關(guān)的專業(yè)背景,同時(shí)也應(yīng)具備較為豐富的機(jī)器學(xué)習(xí)經(jīng)驗(yàn)。特征選擇的優(yōu)秀與否,會(huì)直接影響到最終檢測(cè)的性能。另外,基于深度學(xué)習(xí)的方法雖然在樣本識(shí)別能力和性能上有了一定的提升,但是在網(wǎng)絡(luò)訓(xùn)練過程中會(huì)存在過擬合問題,且參數(shù)眾多,訓(xùn)練時(shí)間較長(zhǎng),檢測(cè)精度和效率都需要進(jìn)一步提升。
CNN 是一種經(jīng)典的深度學(xué)習(xí)算法,與其他深度學(xué)習(xí)算法相比,它的優(yōu)勢(shì)就是在于它共享相同的卷積核,能明顯減少參數(shù)數(shù)量和計(jì)算時(shí)間。因此,本文提出了一種基于CNN 的異常流量檢測(cè)方法,將原始網(wǎng)絡(luò)流量特征經(jīng)過預(yù)處理后作為輸入數(shù)據(jù)進(jìn)行訓(xùn)練。此外,與其他基于CNN 的異常流量檢測(cè)方法不同,本文方法在卷積之后不再采用池化操作。實(shí)驗(yàn)結(jié)果表明,與現(xiàn)有池化操作的方法相比,本文方法具有較好的檢測(cè)效果。
傳統(tǒng)的CNN 模型結(jié)構(gòu)是“卷積-池化-全連接”。在卷積神經(jīng)網(wǎng)絡(luò)中,一個(gè)卷積層可以包含很多個(gè)卷積面。假設(shè)輸入是一個(gè)M×N的圖像,用矩陣x表示,卷積核是大小為m×n的矩陣w,偏置是b,卷積后結(jié)果中的每一個(gè)元素就是圖像中對(duì)應(yīng)卷積核大小的區(qū)域與卷積核進(jìn)行內(nèi)積加上偏置得到的,那么:
其中:*代表卷積;g(·)代表激活函數(shù)。一般情況,g(·)為校正線性單元(Rectified Linear Unit,ReLU):
在卷積神經(jīng)網(wǎng)絡(luò)中,下采樣過程也稱為池化過程,主要有兩種池化操作:平均池化和最大池化。平均池化公式如下:
其中:C代表卷積面;λ、τ代表對(duì)卷積面進(jìn)行塊大小為λ*τ的下采樣。
經(jīng)過多層卷積-池化之后,通過全連接層對(duì)抽象出的高級(jí)特征進(jìn)行分類:
其中:W代表全連接層權(quán)重;X代表經(jīng)過卷積池化的特征圖(feature map)轉(zhuǎn)化為向量之后作為全連接層的輸入;b為全連接層的偏置。經(jīng)過計(jì)算之后,softmax 函數(shù)將結(jié)果的每一個(gè)元素值限制在[0,1]內(nèi),且和為1。
池化層也叫下采樣或欠采樣。池化操作的目的是特征降維,壓縮數(shù)據(jù)和參數(shù)數(shù)量,避免發(fā)生過擬合。對(duì)于圖像而言,它將輸入的圖像分為大小相同的若干個(gè)矩陣區(qū)域,然后對(duì)每一個(gè)矩陣區(qū)域求其最大值(最大池化)或者平均值(平均池化),從而減小了數(shù)據(jù)的空間大小,參數(shù)量和計(jì)算量也會(huì)減少,避免了過擬合。圖像經(jīng)過最大池化提取到紋理信息,經(jīng)過平均池化可以提取到背景信息,但流量特征進(jìn)行池化反而會(huì)損失信息,影響檢測(cè)性能。
在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中,卷積層通過池化(一般為最大池化)后,通常會(huì)將結(jié)果壓平,送入兩個(gè)及以上的全連接層,再使用softmax 函數(shù)計(jì)算樣本關(guān)于每個(gè)類別的概率值。樣本的類別即為求得的最大概率值。但是,多個(gè)全連接層面臨一個(gè)問題:參數(shù)眾多。例如,將特征向量送入網(wǎng)絡(luò)模型,在經(jīng)過最后一次卷積之后,得到一個(gè)W×H×C的特征圖。設(shè)定全連接層神經(jīng)元個(gè)數(shù)為M,那么全連接層共需要W×H×C×M個(gè)參數(shù)。這使得整個(gè)網(wǎng)絡(luò)參數(shù)多,計(jì)算速度慢,參數(shù)更新復(fù)雜,效率低下,甚至造成過擬合。
Lin 等[18]提出了一種新型的深度網(wǎng)絡(luò)結(jié)構(gòu)“網(wǎng)中網(wǎng)”(Network In Network,NIN),提出了一種新策略,即在卷積后采用全局平均池化得出分類結(jié)果。經(jīng)過多次卷積之后最終得到與樣本類別數(shù)相同個(gè)數(shù)的特征圖(W×H×Label),其中Label代表樣本類別數(shù)。對(duì)每一個(gè)特征圖求均值,最終得到1× 1×Label的矩陣,轉(zhuǎn)化為一維向量之后得到該樣本數(shù)據(jù)的分類結(jié)果。簡(jiǎn)而言之,全局池化就是使得池化的滑動(dòng)窗口大小和特征圖的大小相等,一個(gè)特征圖輸出一個(gè)值。全局池化相較全連接層的優(yōu)點(diǎn)在于全局池化沒有參數(shù)設(shè)置,只需求整個(gè)特征圖的均值或最大值,極大縮短了訓(xùn)練時(shí)間;同時(shí),也不需要根據(jù)優(yōu)化算法進(jìn)行調(diào)參,能很好地避免過擬合的現(xiàn)象發(fā)生;另外,全局池化能夠匯聚空間信息,所以對(duì)輸入的空間轉(zhuǎn)換具有更好的魯棒性。全局池化分為全局平均池化(Global Average Pooling,GAP)和全局最大池化(Global Max Pooling,GMP),GMP 只提取每個(gè)特征圖中最重要的區(qū)域,而GAP 會(huì)對(duì)特征圖中每一個(gè)區(qū)域進(jìn)行考慮,求均值。
異常檢測(cè)是網(wǎng)絡(luò)入侵檢測(cè)的主要研究方向。異常流量是在網(wǎng)絡(luò)中偏移正常流量的情形,正常流量會(huì)隨著網(wǎng)絡(luò)的環(huán)境、用戶的操作發(fā)生變化,因此,異常流量要根據(jù)同一網(wǎng)絡(luò)狀態(tài)下的正常流量作出判斷,尋找出不正常的預(yù)期行為。在流量檢測(cè)中,異常流量的某些特征值必定會(huì)與正常流量的特征值有區(qū)別。例如,在CIC-IDS-2017 數(shù)據(jù)集中,分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)攻 擊 的Bwd Packet Length Std 特征與其他類別流量相比具有較大差異。正常流量與其他攻擊流量(除拒絕服務(wù)攻擊(Denial of Service,DoS)該特征值大部分為0,而DDoS 攻擊流量具有較大的數(shù)值。由此可見,每一種攻擊的某些特征都會(huì)與其他攻擊及正常流量有區(qū)別。因此,通過對(duì)流量特征進(jìn)行不斷的學(xué)習(xí),就可以對(duì)網(wǎng)絡(luò)流量進(jìn)行分類,識(shí)別出正異常流量。
本文提出了一種基于改進(jìn)的一維卷積神經(jīng)網(wǎng)絡(luò)的異常流量檢測(cè)方法(AFM-ICNN-1D)。輸入數(shù)據(jù)是流量特征向量,每個(gè)特征之間不具備相關(guān)性,多次池化會(huì)造成局部信息的損失,影響檢測(cè)的效果,因此,本文方法在卷積之后不采用池化操作;另外,在全連接層之前加入全局池化層,并且采用了跨層聚合,減少參數(shù),縮減訓(xùn)練時(shí)間。實(shí)驗(yàn)結(jié)果表明,該方法可以快速、有效地識(shí)別出日常的網(wǎng)絡(luò)攻擊。
考慮到對(duì)流量特征進(jìn)行池化會(huì)造成信息損失,同時(shí)傳統(tǒng)CNN 的全連接層因參數(shù)眾多而導(dǎo)致訓(xùn)練速度慢,也會(huì)產(chǎn)生過擬合的問題,本文方法除去了傳統(tǒng)CNN 結(jié)構(gòu)中卷積之后的池化操作,并采用前文提到的全局池化方法來緩解多層全連接分類參數(shù)眾多、易過擬合的問題。本文ICNN-1D 具有如下特點(diǎn):
1)每次卷積后不做池化操作,保存最后一層卷積得到的特征圖;
2)采用跨層聚合的思想,多次卷積之后的結(jié)果分別進(jìn)行全局平均池化和全局最大池化,將得到的兩個(gè)結(jié)果通過keras中的concatenate方法進(jìn)行合并,重構(gòu)得到一個(gè)特征向量;
3)使用全連接層結(jié)合softmax得到分類結(jié)果,與真實(shí)值比較計(jì)算損失值,通過Adam 優(yōu)化算法,迭代更新權(quán)值和偏置,直至收斂。
AFM-ICNN-1D 的整體結(jié)構(gòu)如圖1 所示,主要包含3 個(gè)步驟:
步驟1 數(shù)據(jù)預(yù)處理。此步驟主要是標(biāo)準(zhǔn)化數(shù)據(jù)值,由于特征值的數(shù)量級(jí)不一致,會(huì)影響檢測(cè)性能及分類結(jié)果,所以將每個(gè)特征取值范圍映射到[0,1]區(qū)間。
算法1 數(shù)據(jù)預(yù)處理算法。
步驟2 訓(xùn)練。根據(jù)最后預(yù)測(cè)的結(jié)果與真實(shí)值計(jì)算損失,通過反向傳播不斷迭代更新參數(shù)直至收斂。另外,在訓(xùn)練過程中利用先驗(yàn)經(jīng)驗(yàn)結(jié)合實(shí)驗(yàn)結(jié)果修改一些超參數(shù)以提高檢測(cè)性能,獲得較高的準(zhǔn)確率和召回率。
ICNN-1D 包含2個(gè)卷積層(conv1d1、conv1d2),2個(gè)全局池化層(gap1、gmp1)和1 個(gè)全連接層dense1。為了網(wǎng)絡(luò)具備適度的稀疏性,使用ReLU 作為激活函數(shù),在全局池化結(jié)果合并后使用的dropout 按一定概率暫時(shí)將一些神經(jīng)元從網(wǎng)絡(luò)中移除,避免過擬合現(xiàn)象的發(fā)生。
算法2 AFM-ICNN-1D的檢測(cè)分類算法。
每一條網(wǎng)絡(luò)流量記錄的特征值構(gòu)成一維向量,因此本文采用一維卷積神經(jīng)網(wǎng)絡(luò)。
在訓(xùn)練階段,首先,數(shù)據(jù)標(biāo)準(zhǔn)化之后,將訓(xùn)練集送入ICNN-1D 進(jìn)行訓(xùn)練。每次訓(xùn)練從訓(xùn)練集中隨機(jī)選取一個(gè)固定大小的塊(batch)作為輸入。輸入數(shù)據(jù)維度為特征值個(gè)數(shù)(n_features),通道(channel)為單通道。
其次,input經(jīng)過conv1d1、conv1d2 兩次卷積,利用卷積層對(duì)數(shù)據(jù)進(jìn)行特征提取。每次卷積的輸出結(jié)果在激活函數(shù)ReLU 的作用下作為下一層的輸入數(shù)據(jù)。卷積后特征圖中每個(gè)元素運(yùn)算公式定義為:
其中:i代表卷積后特征圖元素的位置,j代表該層卷積的卷積核序列號(hào),c代表卷積核長(zhǎng)度,m代表特征圖的長(zhǎng)度,b為偏置,g()為式(2)的ReLU函數(shù)。
然后保存卷積結(jié)果,分別送入全局平均池化和全局最大池化(gmp1、gap1),得到1×k個(gè)特征圖,k表示保存卷積結(jié)果中特征圖的個(gè)數(shù)。
其中:i代表第i個(gè)特征圖,max()、avg()分別對(duì)該特征圖中的數(shù)值求最大和平均。
在全局池化后合并結(jié)果并壓平,得到2×k維數(shù)據(jù)集合進(jìn)行分類操作,輸出該流量在各個(gè)類別概率值,概率最大值代表的類別即為該流量在AFM-ICNN-1D 中的預(yù)測(cè)類別。最后,根據(jù)真實(shí)值與預(yù)測(cè)值計(jì)算損失誤差,迭代更新參數(shù),直至收斂,得出一個(gè)訓(xùn)練模型。
步驟3 測(cè)試。在進(jìn)行訓(xùn)練(步驟2)之后得到一個(gè)檢測(cè)模型,使用測(cè)試數(shù)據(jù)集來檢測(cè)其性能,根據(jù)真實(shí)值與預(yù)測(cè)值計(jì)算出評(píng)估指標(biāo)值,判斷性能是否優(yōu)秀。如果測(cè)試結(jié)果表明該性能較優(yōu),則停止訓(xùn)練,AFM-ICNN-1D 由此得到;否則,將繼續(xù)步驟2,重復(fù)訓(xùn)練。
圖1 AFM-ICNN-1D結(jié)構(gòu)Fig.1 Structure of AFM-ICNN-1D
本文方法使用ICNN-1D 構(gòu)建模型,能有效地避免人工選擇特征的繁瑣,直接將數(shù)據(jù)集每條記錄預(yù)處理后的原始特征作為模型輸入,讓網(wǎng)絡(luò)自主提取。由于流量特征之間不具備關(guān)聯(lián)性,卷積之后不使用池化操作很好地保留了流量的局部特征。在分類階段,ICNN-1D沒有采用多層全連接進(jìn)行分類,而是在全連接之前跨層聚合全局池化的結(jié)果,再使用一層全連接。與傳統(tǒng)基于CNN 的方法相比,AFM-ICNN-1D 能大大減少訓(xùn)練參數(shù),縮短訓(xùn)練時(shí)間。
本文實(shí)驗(yàn)使用的數(shù)據(jù)集是CIC-IDS-2017,該數(shù)據(jù)集包含了正常流量和常見攻擊。數(shù)據(jù)捕獲從2017 年7 月3 日(星期一)上午9 點(diǎn)開始,截止到2017 年7 月7 日(星期五)下午5 點(diǎn)。星期一只捕獲到正常流量,星期二至星期五捕獲到9 種攻擊,分別為暴力破解FTP(FTP-Parator)、暴力破解SSH(SSHParator)、心臟出血漏洞(Heartbleed)、Web 攻擊(Web Attack)、滲透(Infiltration)、僵尸網(wǎng)絡(luò)(Botnet)、端口掃描攻擊(PortScans)、DoS 和DDoS。數(shù)據(jù)集中每一條記錄均有78 個(gè)特征值。由于采用5天的數(shù)據(jù)量較多,因此,選取周一50%的正常流量,以及周二至周五捕獲到的異常流量作為本文實(shí)驗(yàn)的數(shù)據(jù)集。
在特征向量中,不同的特征一般具有不同的量綱和數(shù)量級(jí)。這種情況會(huì)造成每個(gè)樣本不同特征值之間大小差異很大,從而影響到網(wǎng)絡(luò)模型性能,數(shù)量級(jí)大的特征會(huì)明顯影響到分類的結(jié)果。例如,在本文采用的數(shù)據(jù)集中,F(xiàn)low Duration 特征值范圍在[-1,119 999 993],F(xiàn)wdPacket Length Max 的特征值范圍在[0,23 360],這兩個(gè)特征具有不同的數(shù)量級(jí)。因此,需要采用標(biāo)準(zhǔn)化處理,消除數(shù)量級(jí)不同對(duì)實(shí)驗(yàn)結(jié)果產(chǎn)生的影響,同時(shí)加快計(jì)算處理。
本文實(shí)驗(yàn)采用了去均值方差歸一化處理方式,使用sklearn 中StandardScaler 模塊對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,將數(shù)據(jù)歸一化到均值為0、方差為1的正態(tài)分布的正負(fù)數(shù)之間。均值方差歸一化計(jì)算公式如式(8)所示。
式中:X代表每一組特征值,Xmean代表該組特征的平均值,σ代表該組特征的標(biāo)準(zhǔn)差。
本文實(shí)驗(yàn)訓(xùn)練和測(cè)試均在Windows 系統(tǒng)環(huán)境下進(jìn)行,使用keras搭建網(wǎng)絡(luò)模型,采用Tensorflow-CPU進(jìn)行計(jì)算,實(shí)現(xiàn)本文提到的AFM-ICNN-1D。
在機(jī)器學(xué)習(xí)或深度學(xué)習(xí)中,研究者需要在學(xué)習(xí)之前根據(jù)自己的經(jīng)驗(yàn)和專業(yè)知識(shí)設(shè)置一些參數(shù),選擇一組相對(duì)最優(yōu)的超參數(shù)訓(xùn)練出模型,這些參數(shù)不會(huì)根據(jù)優(yōu)化算法進(jìn)行迭代更新,稱為超參數(shù)。
經(jīng)過多次實(shí)驗(yàn)調(diào)整參數(shù),本實(shí)驗(yàn)選擇了以下超參數(shù)訓(xùn)練出一維卷積神經(jīng)網(wǎng)絡(luò):
1)學(xué)習(xí)率:它決定著損失函數(shù)(loss)能否在合適的時(shí)間收斂到最小值。因?yàn)檫^小的學(xué)習(xí)率會(huì)造成收斂速度十分緩慢,而過大的學(xué)習(xí)率可能造成梯度在最小值附近來回震蕩,從而無法達(dá)到收斂。經(jīng)過多次小范圍的調(diào)整,本文實(shí)驗(yàn)的學(xué)習(xí)率設(shè)置為0.01時(shí),網(wǎng)絡(luò)效率較優(yōu)。
2)mini-batch:假設(shè)訓(xùn)練集含有100 條數(shù)據(jù),將這100 條數(shù)據(jù)分成10 個(gè)塊,那么其中每一個(gè)塊稱之為一個(gè)mini-batch。模型訓(xùn)練中,每次取出一個(gè)mini-batch,計(jì)算損失,根據(jù)優(yōu)化算法,更新網(wǎng)絡(luò)權(quán)重和偏置。如果mini-batch 的值太小,則無法運(yùn)用到矩陣庫的快速運(yùn)算,從而學(xué)習(xí)變得緩慢;如果值選擇太大,不能很好地更新權(quán)重。因此,需要選擇一個(gè)折中的值,使得運(yùn)算速率、權(quán)重更新最優(yōu)化。本實(shí)驗(yàn)中mini-batch 設(shè)置為100。
3)epoch:網(wǎng)絡(luò)每次訓(xùn)練完全部訓(xùn)練集稱為一個(gè)epoch 周期。如果epoch 設(shè)置太小,會(huì)使得網(wǎng)絡(luò)沒有充足的數(shù)據(jù)和時(shí)間去訓(xùn)練得到最優(yōu)參數(shù);如果epoch 設(shè)置過大,會(huì)使得網(wǎng)絡(luò)訓(xùn)練過擬合,造成測(cè)試準(zhǔn)確率較低。由于本文實(shí)驗(yàn)訓(xùn)練數(shù)據(jù)較多,epoch設(shè)置為5,訓(xùn)練效果較好。
一般來說,為了得到較優(yōu)的準(zhǔn)確率,研究者一般會(huì)將網(wǎng)絡(luò)模型設(shè)計(jì)得較深,以得到更高級(jí)的特征。但層數(shù)越深,參數(shù)越多。從理論上說,參數(shù)越多,模型擬合程度越好,但也越容易出現(xiàn)過擬合。根據(jù)多次實(shí)驗(yàn),本文實(shí)驗(yàn)的卷積核大小、卷積核個(gè)數(shù)、卷積層數(shù)分別設(shè)置為3、64、2。
本實(shí)驗(yàn)采用精確率(precision)、召回率(recall)、F1-Score及ROC(Receiver Operating Characteristic)曲線來作為評(píng)估性能的指標(biāo)。
混淆矩陣是評(píng)估指標(biāo),也是本文采用的指標(biāo)的基礎(chǔ),通過混淆矩陣計(jì)算出4 個(gè)基礎(chǔ)指標(biāo):真正類(True Positive,TP)代表被正確分類的正例數(shù)量;假負(fù)類(False Negative,F(xiàn)N)代表將正例錯(cuò)分為負(fù)例的數(shù)量;假正類(False Positive,F(xiàn)P)代表將負(fù)例錯(cuò)分為正例的數(shù)量;真負(fù)類(True Negative,TN)代表正確分類的負(fù)例數(shù)量。
表1 ICNN-1D結(jié)構(gòu)與參數(shù)Tab.1 Structure and parameters of ICNN-1D
在混淆矩陣計(jì)算出基礎(chǔ)指標(biāo)后,可以獲得本文所采用的4個(gè)指標(biāo)。
精準(zhǔn)率P即分類結(jié)果預(yù)測(cè)為正例的樣本中實(shí)際為正例的比例。計(jì)算如下:
召回率R即真實(shí)值為正例中預(yù)測(cè)正確的比例。計(jì)算如下:
F1-Score 是綜合精確率和召回率兩個(gè)指標(biāo)所產(chǎn)生的值,它的范圍是[0,1],1 代表性能最好,0 代表性能最差。計(jì)算如下:
ROC 曲線是由真陽性率(True Positive Rate,TPR)和假陽性率(False Positive Rate,F(xiàn)PR)繪制而成,F(xiàn)PR 和TPR 分別為x、y軸。TPR 代表在所有正例中正確分類的比重,F(xiàn)PR 代表在所有負(fù)例中被錯(cuò)誤分為正例的比重。ROC 曲線越接近左上角,代表分類性能越好。
在訓(xùn)練過程中,設(shè)置epoch 為5,損失值逐漸減少直至收斂,訓(xùn)練集和驗(yàn)證集F1值高達(dá)97%以上。在測(cè)試集進(jìn)行分類后輸出10維的混淆矩陣,如表2、3所示,該矩陣對(duì)角線的數(shù)值為各類別樣本被預(yù)測(cè)正確的比重(精確到小數(shù)點(diǎn)后兩位)。表2 是有池化層的卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的結(jié)果,可以看出,幾乎每一類別預(yù)測(cè)準(zhǔn)確率都在87%以上,DoS 和DDoS 相對(duì)相低;表3 是沒有池化操作的卷積神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的結(jié)果,可以看出,與有池化相比,該網(wǎng)絡(luò)的預(yù)測(cè)準(zhǔn)確率都達(dá)到了94%以上,效果更佳。
在CIC-IDS-2017 測(cè)試集中,每一個(gè)類別的預(yù)測(cè)精準(zhǔn)率和召回率都在94%以上,同時(shí),F(xiàn)1值幾乎都接近97%。通過這三個(gè)指標(biāo)可以看出本文提出的AFM-ICNN-1D 對(duì)CIC-IDS-2017數(shù)據(jù)集的檢測(cè)性能較好。為了更加直觀地評(píng)估該方法的檢測(cè)性能,根據(jù)測(cè)試后的結(jié)果繪制了關(guān)于誤報(bào)率和召回率的曲線圖,即ROC 曲線圖。ROC 曲線越接近左上角說明分類越準(zhǔn)確,檢測(cè)性能越優(yōu)秀。從CIC-IDS-2017 測(cè)試集ROC 曲線(圖2)可以看出,本文提出的方法對(duì)CIC-IDS-2017 數(shù)據(jù)集10分類測(cè)試的ROC擬合程度較好。
表2 測(cè)試集混淆矩陣(有池化操作)Tab.2 Test set confusion matrix(with pooling)
表3 測(cè)試集混淆矩陣(無池化操作)Tab.3 Test set confusion matrix(without pooling)
圖2 CIC-IDS-2017測(cè)試集上的ROC曲線Fig.2 ROC curves on CIC-IDS-2017 test set
將AFM-ICNN-1D 與基于兩層全連接模型(dense100-dense10)異常流量檢測(cè)方法(AFM-Dense100-Dense10)進(jìn)行對(duì)比,dense100-dense10具體結(jié)構(gòu)與參數(shù)如表4所示。
dense100-dense10在卷積后采用兩層全連接,第一層全連接有100 個(gè)神經(jīng)元,第二層神經(jīng)元個(gè)數(shù)為數(shù)據(jù)集的類別個(gè)數(shù),即10,其余超參數(shù)設(shè)置與ICNN-1D 一致。ICNN-1D 共有13 898 個(gè)參數(shù),相較于dense100-dense10,減少了約97%。經(jīng)實(shí)驗(yàn),AFM-ICNN-1D 的訓(xùn)練時(shí)間需要35 min 47 s,而AFDDense100-Dense10 則需要57 min 43 s,相比較而 言,AFMICNN-1D 減少了約40%的訓(xùn)練時(shí)間。與AFM-ICNN-1D 的實(shí)驗(yàn)結(jié)果相比,AFM-Dense100-Dense10 的測(cè)試效果(表5)不佳,個(gè)別類別的識(shí)別準(zhǔn)確率僅達(dá)到40%左右??梢?,AFM-ICNN-1D 在時(shí)間和測(cè)試準(zhǔn)確率方面與AFD-Dense100-Dense10 相比都具有較好的表現(xiàn)。
表4 dense100-dense10網(wǎng)絡(luò)結(jié)構(gòu)與參數(shù)Tab.4 Network structure and parameters of dense100-dense10
將本文方法與kNN、隨機(jī)森林(Random Forests,RF)、ID3算法、Adaboost 迭代算法、多層感知機(jī)(Multi-Layer Perceptron,MLP)、樸素貝葉斯(Naive-Bayes)和二次判別分析(Quadratic Discriminant Analysis,QDA)在CIC-IDS-2017 數(shù)據(jù)集上進(jìn)行比較,結(jié)果如表6,可以看出AFM-ICNN-1D具有較好精準(zhǔn)率、召回率及F1值。由表6 可知,傳統(tǒng)機(jī)器學(xué)習(xí)中kNN、RF、ID3 算法也同樣具有較好的檢測(cè)結(jié)果,但是,為了降維和提高準(zhǔn)確率,機(jī)器學(xué)習(xí)方法需要進(jìn)行特征選擇;而本文方法在特征選擇這一方面具有較好的優(yōu)越性,可以使用卷積自動(dòng)將低級(jí)特征抽象為高級(jí)的特征,節(jié)省時(shí)間與人力。另外,本文方法在多分類的檢測(cè)上也具有較好的結(jié)果。
表5 測(cè)試集混淆矩陣(AFD-Dense100-Dense10)Tab.5 Test dataset confusion matrix(AFD-Dense100-Dense10)
表6 各異常流量檢測(cè)方法的P、R和F1值Tab.6 Precision,recall and F1-Score of abnormal flow detection methods
為了驗(yàn)證本文方法的通用性,本文還使用了另一個(gè)網(wǎng)絡(luò)安全領(lǐng)域常用的數(shù)據(jù)集NSL-KDD 進(jìn)行測(cè)試,由于NSL-KDD數(shù)據(jù)集中含有字符特征,需將其進(jìn)行數(shù)值化處理。同樣,在訓(xùn)練時(shí),epoch仍為5,模型達(dá)到最優(yōu),準(zhǔn)確率(accuracy)達(dá)到96%以上。由表7 可見,本文提出的AFM-ICNN-1D 方法對(duì)NSLKDD 數(shù)據(jù)仍然具有很好的性能。Normal、DoS、遠(yuǎn)程用戶攻擊(Remote-to-Login,R2L)、提權(quán)攻擊(User-to-Root,U2R)和端口攻擊(Probe)這5 個(gè)類的精準(zhǔn)率分別為95.6%、99.3%、97.4%、97.0%和93.3%,同時(shí)各個(gè)類的召回率和F1-Score 指標(biāo)也都達(dá)到90%以上。由此可見,AFM-ICNN-1D 對(duì)于CICIDS-2017 和NSL-KDD 這兩個(gè)數(shù)據(jù)集的檢測(cè)性能都較好,本文的檢測(cè)方法具有較好的通用性。
表7 本文方法在NSL-KDD數(shù)據(jù)集上的P、R和F1值Tab.7 Precision,recall and F1-Score of the proposed method on NSL-KDD dataset
深度學(xué)習(xí)能從原始數(shù)據(jù)中自動(dòng)抽象提取高層特征,學(xué)習(xí)樣本的內(nèi)規(guī)律和層次,對(duì)海量高維數(shù)據(jù)具有較高的適應(yīng)性,很好地解決了傳統(tǒng)機(jī)器學(xué)習(xí)中特征工程的問題,因此本文提出了基于改進(jìn)一維CNN 的異常流量檢測(cè)方法AFM-ICNN-1D。本文方法與基于傳統(tǒng)CNN 結(jié)構(gòu)的方法區(qū)別在于未采用卷積后的池化操作,另外,在全連接層前使用全局池化,并利用跨層聚合將結(jié)果作為全連接層輸入。實(shí)驗(yàn)結(jié)果表明,本文的AFM-ICNN-1D 方法具有良好的檢測(cè)性能,與基于兩層全連接模型的檢測(cè)方法相比,該方法的參數(shù)量更少,且訓(xùn)練時(shí)間較短。
將來仍有兩項(xiàng)工作要做:首先,需要提高檢測(cè)精度及方法的泛化能力,嘗試修改CNN 模型的結(jié)構(gòu)以達(dá)到目標(biāo);其次,由于檢測(cè)時(shí)間也是異常流量檢測(cè)的關(guān)鍵,因此在提高檢測(cè)精度的同時(shí)還應(yīng)強(qiáng)調(diào)該方法需要滿足檢測(cè)時(shí)間的要求。此外,還將考慮如何將該方法運(yùn)用到在線流量檢測(cè)中。