李少晗,周程昊,程永新,楊 棟
(1.海裝裝備項(xiàng)目管理中心,北京 100071;2.電子科技大學(xué),四川 成都 610054;3.中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
多年來(lái),隨著信息通信技術(shù)(Information Communications Technology,ICT)的發(fā)展,網(wǎng)絡(luò)在各個(gè)國(guó)家人們生活的方方面面扮演著重要角色,同時(shí)對(duì)ICT 系統(tǒng)的攻擊也在日益增長(zhǎng)。因此,信息通信系統(tǒng)對(duì)有效的網(wǎng)絡(luò)安全解決方案需求迫切。入侵檢測(cè)系統(tǒng)(Intrusion Detection System,IDS)是一種在網(wǎng)絡(luò)安全管理中使用廣泛的方法,實(shí)現(xiàn)了對(duì)各種類(lèi)型攻擊的檢測(cè)與分類(lèi)。第一個(gè)針對(duì)入侵檢測(cè)(Intrusion Detection,ID)的工作是John Anderson于1931 年為美國(guó)空軍完成的一份報(bào)告《Computer Security Threat Monitoring and Surveillance》[1],提出了利用審計(jì)跟蹤數(shù)據(jù)監(jiān)視入侵活動(dòng)的思想。后來(lái),文獻(xiàn)[2]詳細(xì)綜述了在2001 年到2013 年間出現(xiàn)的網(wǎng)絡(luò)攻擊及其技術(shù)。
IDS 通過(guò)監(jiān)視計(jì)算機(jī)網(wǎng)絡(luò)來(lái)檢測(cè)惡意事件,防止非法操作影響計(jì)算機(jī)安全和網(wǎng)絡(luò)安全。通常,根據(jù)網(wǎng)絡(luò)入侵檢測(cè)的方式,將IDS 分類(lèi)為基于主機(jī)的ID 系統(tǒng)(Host-based Intrusion Detection System,HIDS)和基于網(wǎng)絡(luò)的ID 系統(tǒng)(Network Intrusion Detection System,NIDS)。HIDS 依賴(lài)于系統(tǒng)中的日志文件、系統(tǒng)日志、軟件日志以及文件系統(tǒng)等其他信息。NIDS 則在流量流中檢查每個(gè)流量包。本文將主要聚焦于NIDS。
目前,市場(chǎng)上現(xiàn)有的商業(yè)NIDS 大多基于統(tǒng)計(jì)機(jī)制和閾值計(jì)算機(jī)制。這兩種機(jī)制都使用特征選取,如分組長(zhǎng)度、到達(dá)時(shí)間、流量大小和其他網(wǎng)絡(luò)傳輸參數(shù)等特征,將它們做成一個(gè)特定時(shí)間窗口內(nèi)的模型。
自學(xué)習(xí)系統(tǒng)是當(dāng)下處理網(wǎng)絡(luò)攻擊的有效防御手段之一。它使用機(jī)器學(xué)習(xí)中的有監(jiān)督、半監(jiān)督和無(wú)監(jiān)督的學(xué)習(xí)策略,通過(guò)一個(gè)龐大的正常和攻擊連接語(yǔ)料庫(kù)來(lái)學(xué)習(xí)正常和惡意行為模式之前的差異。雖然已經(jīng)有了各種機(jī)器學(xué)習(xí)解決方案,但在早期商業(yè)系統(tǒng)中的適用性并不強(qiáng)[3]。現(xiàn)有的機(jī)器學(xué)習(xí)方法有較高的誤報(bào)率和龐大的計(jì)算開(kāi)銷(xiāo)[4]。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的子領(lǐng)域,可以通過(guò)神經(jīng)網(wǎng)絡(luò)自動(dòng)完成特征的提取和融合。深度學(xué)習(xí)在圖像處理、語(yǔ)音識(shí)別、自然語(yǔ)言處理和許多其他領(lǐng)域的任務(wù)中取得了振奮人心的成果。這些成果很多已經(jīng)轉(zhuǎn)換成為網(wǎng)絡(luò)安全領(lǐng)域的重要任務(wù)[5-7]。本文基于深度學(xué)習(xí)的方法使用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,RNN)、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)、長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)等輕量級(jí)網(wǎng)絡(luò)實(shí)現(xiàn)KDDCup 99 的5 分類(lèi)任務(wù),通過(guò)流量二維化和相關(guān)預(yù)處理操作使分類(lèi)平均準(zhǔn)確率達(dá)到94.1%。
本次工作中使用的數(shù)據(jù)集為KDDCup 99 挑戰(zhàn)賽的公開(kāi)數(shù)據(jù)集,包含了5 種類(lèi)別的攻擊流量數(shù)據(jù),分別為Normal(正常記錄)、DoS(拒絕服務(wù)攻擊)、Probe(監(jiān)視和其他探測(cè)活動(dòng))、R2L(來(lái)自遠(yuǎn)程機(jī)器的非法訪問(wèn))和U2R(普通用戶(hù)對(duì)本地超級(jí)用戶(hù)特權(quán)的非法訪問(wèn))。該數(shù)據(jù)集是從一個(gè)模擬的美國(guó)空軍局域網(wǎng)上采集的9 個(gè)星期的網(wǎng)絡(luò)連接數(shù)據(jù)。測(cè)試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)有著不同的概率分布,包含了一些未出現(xiàn)在訓(xùn)練數(shù)據(jù)中的攻擊類(lèi)型,使得入侵檢測(cè)更具有現(xiàn)實(shí)性。數(shù)據(jù)分布如表1 所示,大部分方法在使用此數(shù)據(jù)集評(píng)估算法時(shí)都只使用了官方提供的10%訓(xùn)練集進(jìn)行訓(xùn)練。本次工作內(nèi)容中模型均在10%訓(xùn)練集中訓(xùn)練完成。

表1 KDDCup 99 數(shù)據(jù)描述
在深度學(xué)習(xí)的方法興起之前,有很多的傳統(tǒng)機(jī)器學(xué)習(xí)方法為攻擊流量分類(lèi)任務(wù)提供解決思路,如Scikit-learn 庫(kù)[8]中集成 的LR、NB、KNN、DT、AB、RF 和SVM。以上傳統(tǒng)機(jī)器學(xué)習(xí)算法的測(cè)試結(jié)果在表2 中給出[9]。

表2 傳統(tǒng)機(jī)器學(xué)習(xí)算法在KDDCup 99 中多分類(lèi)實(shí)驗(yàn)結(jié)果
之后有很多人在該數(shù)據(jù)集上進(jìn)行了更多的嘗試和改進(jìn)。文獻(xiàn)[10]討論了在訓(xùn)練階段僅考慮普通數(shù)據(jù)的非參數(shù)密度估計(jì)方法。文獻(xiàn)[11]討論了各種集合學(xué)習(xí)方法。文獻(xiàn)[12]使用遺傳算法,旨在模擬時(shí)間和空間信息,以識(shí)別復(fù)雜的異常行為。文獻(xiàn)[13]討論了基于內(nèi)核機(jī)制的實(shí)時(shí)IDS,還提出與離線入侵檢測(cè)系統(tǒng)相比,具有最小二乘的支持向量機(jī)分類(lèi)器的在線特征提取機(jī)制表現(xiàn)良好。文獻(xiàn)[14]討論了多層感知機(jī)(Multilayer Perceptron,MLP)在NIDS 中的應(yīng)用。文獻(xiàn)[5-7]詳細(xì)討論了淺層網(wǎng)絡(luò)和深層網(wǎng)絡(luò)的效果。
首先,對(duì)原始數(shù)據(jù)集進(jìn)行預(yù)處理,將數(shù)據(jù)處理成可直接讀取的csv 格式;其次,通過(guò)dataset 處理數(shù)據(jù)轉(zhuǎn)變成二維化的數(shù)據(jù),再使用二維卷積以更好地進(jìn)行特征提取;最后,經(jīng)過(guò)線性層完成分類(lèi)。
本方法采用KDDCup 99 公開(kāi)數(shù)據(jù)集中的網(wǎng)絡(luò)入侵檢測(cè)數(shù)據(jù)包kddcup_data_10percent。該數(shù)據(jù)包是對(duì)kddcup_data 數(shù)據(jù)包(約490 萬(wàn)條數(shù)據(jù)記錄)10%的抽樣。在該數(shù)據(jù)集的41個(gè)固定的特征屬性中,9 個(gè)特征屬性為離散型,其他均為連續(xù)型。預(yù)處理過(guò)程主要分為4 步。
(1)字符串轉(zhuǎn)換。原始數(shù)據(jù)中很多列的屬性為字符串,如TCP、Normal 等。這些字符串類(lèi)型的數(shù)據(jù)無(wú)法進(jìn)行訓(xùn)練。本方法通過(guò)一個(gè)詳細(xì)的對(duì)應(yīng)表將這些字符串類(lèi)型的屬性轉(zhuǎn)化為離散的數(shù)字。
(2)數(shù)值歸一化。將所有字符串轉(zhuǎn)變?yōu)殡x散數(shù)字后,這些數(shù)字的范圍尺度大小不一,有的是0、1離散數(shù)據(jù),有的跨度為0 到幾百萬(wàn),一定程度上會(huì)對(duì)模型訓(xùn)練產(chǎn)生影響。但是,從另一個(gè)角度來(lái)看,某些巨大的數(shù)字也許是更明顯的特征,也許能更好地幫助模型進(jìn)行分類(lèi)。具體任務(wù)需要通過(guò)消融實(shí)驗(yàn)進(jìn)行探究。
(3)數(shù)據(jù)增廣。通過(guò)表1 可以看出,使用的訓(xùn)練集中的數(shù)據(jù)分布并不均衡,其中U2R 只有52條數(shù)據(jù)供訓(xùn)練,可以預(yù)見(jiàn)U2R 類(lèi)別的召回率比較低。為了改善這個(gè)問(wèn)題,本方法采取一種簡(jiǎn)單的復(fù)制數(shù)據(jù)增廣方式提升樣本數(shù)少的分類(lèi)的訓(xùn)練條數(shù)。
(4)二維化。為了更好地利用屬性間的關(guān)系,本方法嘗試適合序列數(shù)據(jù)的RNN 和LSTM,略微提升了精確度,說(shuō)明利用屬性間關(guān)系可以一定程度上提升分類(lèi)準(zhǔn)確率。本方法又嘗試將一維數(shù)據(jù)轉(zhuǎn)化為二維數(shù)據(jù),使用二維卷積提取特征來(lái)提升準(zhǔn)確率。
圖1 為KDDCup 99 數(shù)據(jù)集預(yù)處理流程。

圖1 網(wǎng)絡(luò)流量預(yù)處理流程
在深度學(xué)習(xí)中,遞歸神經(jīng)網(wǎng)絡(luò)(RNN)是一類(lèi)善于處理序列數(shù)據(jù)的網(wǎng)絡(luò)。人類(lèi)對(duì)事物的認(rèn)知不是一蹴而就的,而是一點(diǎn)點(diǎn)深入的。人類(lèi)會(huì)根據(jù)已經(jīng)閱讀過(guò)的內(nèi)容來(lái)理解后面的內(nèi)容,不會(huì)把之前的東西都丟掉重新進(jìn)行思考,對(duì)內(nèi)容的理解是貫穿的。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)很難做到這一點(diǎn),而RNN 極大程度上解決了這個(gè)問(wèn)題,是具有循環(huán)的網(wǎng)絡(luò),允許信息持續(xù)存在,如圖2 所示。

圖2 遞歸神經(jīng)網(wǎng)絡(luò)
雖然RNN 具有信息持續(xù)存在的特點(diǎn),但是隨著距離的增加,RNN 無(wú)法有效利用歷史信息。長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)[15]是為了解決長(zhǎng)依賴(lài)問(wèn)題提出的。和RNN 類(lèi)似,LSTM 也擁有這種鏈狀結(jié)構(gòu),但是重復(fù)模塊擁有不同的結(jié)構(gòu)。與神經(jīng)網(wǎng)絡(luò)簡(jiǎn)單的一層相比,LSTM 擁有4 層。這4 層以特殊的方式進(jìn)行交互,網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。

圖3 LSTM 網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是一種帶有卷積結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò)。卷積結(jié)構(gòu)可以減少深層網(wǎng)絡(luò)占用的內(nèi)存量,其中有3 個(gè)較為關(guān)鍵的操作:一是卷積核局部感受野;二是權(quán)重共享;三是pooling 層。這3 個(gè)操作有效減少了網(wǎng)絡(luò)參數(shù)量,緩解了模型的過(guò)擬合問(wèn)題。
數(shù)據(jù)集本身數(shù)據(jù)條目信息量較少,因此使用更深層次的網(wǎng)絡(luò)結(jié)構(gòu)會(huì)由于過(guò)擬合的導(dǎo)致精度下降。所以,本工作只采用了類(lèi)似圖4 的簡(jiǎn)單卷積網(wǎng)絡(luò)結(jié)構(gòu)。

圖4 卷積神經(jīng)網(wǎng)絡(luò)
實(shí)驗(yàn)中的模型均是在python 3.6、pytorch 1.6.0環(huán)境下進(jìn)行搭建,并在Nvidia 1060 6 GB 的顯卡上進(jìn)行訓(xùn)練。其中,網(wǎng)絡(luò)訓(xùn)練的batchsize 大小設(shè)置為1 024,學(xué)習(xí)率設(shè)置為0.000 1,使用RMSprop 優(yōu)化器和ReduceLROnPlateau 學(xué)習(xí)率調(diào)整策略進(jìn)行20 次迭代優(yōu)化。
本文使用KDDCup 99 作為實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行五分類(lèi)任務(wù)。該數(shù)據(jù)集包含4 種網(wǎng)絡(luò)攻擊流量和1種正常流量。KDDCup 99 數(shù)據(jù)集使用的是DARPA 1998 DataSet 的原始數(shù)據(jù),在DARPA 98 數(shù)據(jù)集的基礎(chǔ)上進(jìn)行預(yù)處理,提取出以“連接”為單位的一條條記錄。DARPA 98 數(shù)據(jù)集是MIT Lincoln 實(shí)驗(yàn)室搭建的一個(gè)模擬US 空軍局域網(wǎng)的環(huán)境,捕獲了9周的原始數(shù)據(jù)包,包含多種攻擊。
本次任務(wù)主要通過(guò)多分類(lèi)各類(lèi)別的精確率、召回率、F1 分?jǐn)?shù)和準(zhǔn)確率作為評(píng)價(jià)指標(biāo)。評(píng)價(jià)指標(biāo)主要由混淆矩陣中概念計(jì)算得出,混淆矩陣如表3 所示。

表3 混淆矩陣
精確率(Precision)計(jì)算的是所有被認(rèn)為是正樣本的條目中預(yù)測(cè)正確的比例:

召回率(Recall)計(jì)算的是所有正樣本中被成功找出的條目的比例:

F1 分?jǐn)?shù)(F1-score)是分類(lèi)問(wèn)題的一個(gè)重要衡量指標(biāo),是精確率和召回率的調(diào)和平均數(shù),計(jì)算方式為:

本文首先對(duì)訓(xùn)練數(shù)據(jù)增廣方法和數(shù)據(jù)歸一化方法在本任務(wù)中是否適用進(jìn)行了消融實(shí)驗(yàn),具體見(jiàn)后續(xù)實(shí)驗(yàn)結(jié)果分析。
從表1 可以得知,U2R 類(lèi)型的訓(xùn)練數(shù)據(jù)只有52 條,R2L 的訓(xùn)練數(shù)據(jù)只有1 126 條。這兩種類(lèi)型的訓(xùn)練數(shù)據(jù)和其他類(lèi)別相比極不均衡。從表4 可以看出,如果不進(jìn)行訓(xùn)練,數(shù)據(jù)的增廣U2R 類(lèi)型的數(shù)據(jù)甚至出現(xiàn)了塌縮,且R2L 類(lèi)別的 F1-score 也都比較差。在使用訓(xùn)練數(shù)據(jù)增廣方法后,兩個(gè)類(lèi)別的F1-score都出現(xiàn)了一定程度的提升,同時(shí)測(cè)試集整體的準(zhǔn)確率變化很小,在一定程度上解決了訓(xùn)練集數(shù)據(jù)分布不均衡的問(wèn)題。表4中模型后的參數(shù)為數(shù)據(jù)組織維度和線性層/卷積層層數(shù)。
根據(jù)表4 得出的結(jié)論,認(rèn)為訓(xùn)練數(shù)據(jù)增廣方法對(duì)本任務(wù)具有一定的效果,所以在后續(xù)任務(wù)中均默認(rèn)使用訓(xùn)練數(shù)據(jù)增廣方法。從表5、表6 和表7 中可以看出,在本任務(wù)中使用常見(jiàn)的數(shù)據(jù)歸一化會(huì)降低分類(lèi)的準(zhǔn)確率。根據(jù)數(shù)據(jù)分析認(rèn)為,該項(xiàng)任務(wù)中偏大的屬性本身是該類(lèi)別較為突出的特征,進(jìn)行歸一化后反而會(huì)影響對(duì)該類(lèi)別特征的提取,進(jìn)而影響最后的分類(lèi)效果。

表4 訓(xùn)練數(shù)據(jù)增廣方法消融實(shí)驗(yàn)

表5 遞歸神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)歸一化消融實(shí)驗(yàn)

表6 一維線性分類(lèi)網(wǎng)絡(luò)數(shù)據(jù)歸一化消融實(shí)驗(yàn)

表7 二維卷積神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)歸一化消融實(shí)驗(yàn)
在KDDCup 99 中進(jìn)行的完整對(duì)比試驗(yàn)如表8、表9 和表10 所示,所有實(shí)驗(yàn)結(jié)果均采取數(shù)據(jù)增廣措施。其中,遞歸神經(jīng)網(wǎng)絡(luò)部分的方法名后面的參數(shù)為每一層隱含單元個(gè)數(shù)和隱含層層數(shù)。從對(duì)比實(shí)驗(yàn)可以比較明顯看出,由于數(shù)據(jù)本身信息量較少,當(dāng)網(wǎng)絡(luò)逐漸變復(fù)雜時(shí),分類(lèi)效果并不會(huì)一直提升,應(yīng)該適當(dāng)選取輕量級(jí)的網(wǎng)絡(luò)。遞歸神經(jīng)網(wǎng)絡(luò)(RNN)的優(yōu)勢(shì)是記憶能力,善于處理時(shí)序信息,但是本次任務(wù)的數(shù)據(jù)雖然是序列數(shù)據(jù)但不包含時(shí)序信息,前后關(guān)聯(lián)度不夠緊密,因此RNN效果并不是特別好。一維線性層通過(guò)線性變化也在本任務(wù)中有著不錯(cuò)的表現(xiàn),已經(jīng)超越了表2 中所有的傳統(tǒng)機(jī)器學(xué)習(xí)方法。本文使用的KDDCup 99 流量二維化方法則是取得了更優(yōu)的分類(lèi)效果,在五分類(lèi)任務(wù)中獲得了0.941 的平均分類(lèi)準(zhǔn)確率。在使用訓(xùn)練數(shù)據(jù)增廣方法后,U2R 和R2L 兩個(gè)類(lèi)別的分類(lèi)情況也有所改善。

表8 遞歸神經(jīng)網(wǎng)絡(luò)五分類(lèi)對(duì)比實(shí)驗(yàn)

表9 一維線性分類(lèi)網(wǎng)絡(luò)五分類(lèi)對(duì)比實(shí)驗(yàn)
隨著社會(huì)的發(fā)展,越來(lái)越多的生活場(chǎng)景需要接入網(wǎng)絡(luò),如近些年十分火熱的物聯(lián)網(wǎng)。隨著網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)安全問(wèn)題變得更加重要。攻擊流量的分類(lèi)檢測(cè)是網(wǎng)絡(luò)安全防御的重中之重。針對(duì)攻擊流量分類(lèi)問(wèn)題,本文使用KDDCup 99 數(shù)據(jù)集,提出了二維化的流量分類(lèi)模式,同時(shí)通過(guò)消融實(shí)驗(yàn)驗(yàn)證了數(shù)據(jù)歸一化和訓(xùn)練數(shù)據(jù)增廣在該任務(wù)中的效果。對(duì)比實(shí)驗(yàn)結(jié)果表明,深度學(xué)習(xí)在攻擊流量分類(lèi)領(lǐng)域具有相當(dāng)?shù)膬?yōu)勢(shì),同時(shí)在流量二維化后使用卷積提取特征以更好地捕獲流量屬性間的關(guān)聯(lián),提升分類(lèi)精度。未來(lái)將沿著輕量級(jí)二維化攻擊流量分類(lèi)的方向進(jìn)行更深入的研究。