郭嘉濤,朱敏杰,汪菲霞
(南華大學(xué)計(jì)算機(jī)學(xué)院,衡陽(yáng) 421000)
隨著互聯(lián)網(wǎng)的發(fā)展,應(yīng)用層業(yè)務(wù)變得很復(fù)雜。網(wǎng)絡(luò)不僅包括CDN 內(nèi)容分發(fā),還包括P2P業(yè)務(wù)。當(dāng)傳統(tǒng)的安全裝置進(jìn)行安全防范時(shí),他們必須在所有流量上執(zhí)行安全檢測(cè)。這種完整的業(yè)務(wù)檢測(cè)模式是設(shè)備處理性能瓶頸問(wèn)題的根本原因。全部檢測(cè)意味著流量是否是異常的都需要設(shè)備來(lái)檢測(cè)它,而這顯著地消耗設(shè)備的性能。在實(shí)際情況下,由于攻擊流量所占的比例不會(huì)超過(guò)全部流量的千分之一,所以實(shí)際上大量的檢測(cè)任務(wù)是毫無(wú)意義的。另外,互聯(lián)網(wǎng)的發(fā)展雖然給予了我們很大地方便,但也因此帶來(lái)了很多隱患。隨著網(wǎng)絡(luò)的參與人數(shù)增多,網(wǎng)絡(luò)惡意攻擊等原因引起的網(wǎng)絡(luò)流量異常,對(duì)網(wǎng)絡(luò)性能有很大影響。一些異常流量的攻擊性干擾導(dǎo)致正常網(wǎng)絡(luò)的操作次序和網(wǎng)絡(luò)安全受到了嚴(yán)重威脅。在這種情況下,為了確保網(wǎng)絡(luò)的正常運(yùn)行,并為用戶提供良好的網(wǎng)絡(luò)環(huán)境,也成為一個(gè)備受關(guān)注的問(wèn)題。因此,本文基于AI 學(xué)習(xí)識(shí)別和過(guò)濾掉網(wǎng)絡(luò)中大量的白流量,并對(duì)惡意和可疑流量進(jìn)行檢測(cè)。
傳統(tǒng)機(jī)器學(xué)習(xí)對(duì)流量分類(lèi)特征的提取十分繁瑣,而且效率并不高效。所以本文采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行流量分類(lèi)與檢測(cè)任務(wù)。
由于流量實(shí)際上為一串二進(jìn)制比特序列,且其前784字節(jié)能夠較好的映射出流量的內(nèi)在特征,故而可以將流量限制為784字節(jié)的長(zhǎng)度,并進(jìn)一步轉(zhuǎn)化為28×28的灰度圖。
傳統(tǒng)的CNN 網(wǎng)絡(luò)模型通常為串行結(jié)構(gòu),即卷積-池化-全連接,但為了進(jìn)一步利用原始圖像(流量)的信息,在輸入層與輸出層的Full Connection 之間建立跳層連接。另一方面?zhèn)鹘y(tǒng)CNN 的池化操作可能會(huì)丟失些許圖像域的信息,故而使用卷積步長(zhǎng)為2的卷積操作去代替池化操作。
針對(duì)上述兩點(diǎn),并搭建好平臺(tái)后,將數(shù)據(jù)傳入模型進(jìn)行訓(xùn)練,在模型中建立一個(gè)正常流量與異常流量的特征庫(kù),以達(dá)到全流量分類(lèi)的目的。
基于全流量分類(lèi)的基礎(chǔ),再對(duì)異常流量進(jìn)行分類(lèi)識(shí)別,以達(dá)到快速檢測(cè)的目的。
訓(xùn)練模型,首先要擁有數(shù)據(jù)。如果沒(méi)有數(shù)據(jù),那么也就無(wú)法訓(xùn)練模型。所以第一步就是收集所需的訓(xùn)練數(shù)據(jù)。從網(wǎng)上收集數(shù)據(jù),數(shù)據(jù)來(lái)源于USTC-TK2016數(shù)據(jù)集。其包含十類(lèi)惡意流量與十類(lèi)正常流量。訓(xùn)練集數(shù)據(jù)的類(lèi)型、數(shù)量及比例如表1所示。
表1 訓(xùn)練集數(shù)據(jù)類(lèi)型、數(shù)量及比例
本次研究使用的數(shù)據(jù)壓縮類(lèi)型為pcap,采用SplitCap(開(kāi)源pcap 文件分割器)按流對(duì)pcap切割,獲取到每個(gè)Flow 的pcap 文件。進(jìn)一步將每一條數(shù)據(jù)的長(zhǎng)度處理為784字節(jié),對(duì)于數(shù)據(jù)長(zhǎng)度小于784 字節(jié)的pcap 文件,在數(shù)據(jù)末尾進(jìn)行零填充至784 字節(jié)的長(zhǎng)度,再處理為28×28 的灰度圖(如圖2 所示),最后將數(shù)據(jù)保存為pickle 的數(shù)據(jù)格式,以便訓(xùn)練時(shí)讀取數(shù)據(jù)。
圖2 各類(lèi)流量的灰度圖
使用CNN 實(shí)現(xiàn)流量分類(lèi),將輸入數(shù)據(jù)轉(zhuǎn)化為圖像后,需進(jìn)一步消除不同類(lèi)型網(wǎng)絡(luò)流量之間的量綱關(guān)系,則需對(duì)流量進(jìn)行歸一化處理。具體計(jì)算流程如下:
假設(shè)每一條數(shù)據(jù)對(duì)于表示為行列的矩陣:
求解出矩陣中的最大值:
最后得出歸一化的灰度圖:
圖1 特征工程處理流程
根據(jù)卷積神經(jīng)網(wǎng)絡(luò)中卷積層、池化層以及全連接層的特性,決定在多個(gè)卷積層之間加入池化層,采用傳統(tǒng)CNN網(wǎng)絡(luò)結(jié)構(gòu)圖(如圖3)。
圖3 傳統(tǒng)CNN網(wǎng)絡(luò)模型
卷積層中使用的卷積核大小為常用的[3,3]與[5,5],并設(shè)置步長(zhǎng)為2,填充方式采用SAME,激活函數(shù)采用整流線性激活函數(shù)RELU。其中[3,3]與[5,5]的較小卷積核利于提取到圖像域中更細(xì)化的特征,而激活函數(shù)RELU是對(duì)卷積后的輸出做一個(gè)非線性變換,可以緩解過(guò)擬合的問(wèn)題,如圖4所示。
圖4 卷積計(jì)算原理
全連接層(fully connected layers,F(xiàn)C)在整個(gè)結(jié)構(gòu)中是作為“分類(lèi)器”來(lái)使用。如果說(shuō)卷積層、池化層和激活函數(shù)層等操作的作用是為了把原始數(shù)據(jù)映射到隱層特征空間的話,全連接層則是把學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間。
在傳統(tǒng)CNN 網(wǎng)絡(luò)的基礎(chǔ)上,在輸入層與輸出層的fully connection 之間建立跳躍連接??梢赃M(jìn)一步利用原始圖像的特征,以達(dá)到更優(yōu)的效果,如圖5所示。
圖5 Skip connection CNN 模型結(jié)構(gòu)
針對(duì)傳統(tǒng)CNN 網(wǎng)絡(luò)訓(xùn)練的結(jié)果(表2、圖6、圖7)所得結(jié)果可知,傳統(tǒng)的CNN 在流量分類(lèi)任務(wù)方面可達(dá)到較好的效果,但有些許不足,例如Neris、Virut、Gmail、Outlook 等 流量 預(yù)測(cè) 指標(biāo)與其余流量之間有較大的差距,而在輸入層與輸出層的Full connect 之間加入skip connec?tion,可以進(jìn)一步利用原始圖像特征信息,達(dá)到更優(yōu)的分類(lèi)效果(見(jiàn)表3、圖8、圖9)。
表2 傳統(tǒng)CNN網(wǎng)絡(luò)預(yù)測(cè)效果展示
表3 Skip connection CNN 網(wǎng)絡(luò)預(yù)測(cè)效果展示
圖6 傳統(tǒng)CNN預(yù)測(cè)指標(biāo)recall/f1/precision
圖7 傳統(tǒng)CNN預(yù)測(cè)的整體效果
圖8 Skip connection CNN 預(yù)測(cè)指標(biāo)recall/f1/precision
圖9 Skip connection CNN 預(yù)測(cè)的整體效果