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

表1 KDDCup 99 數據描述
在深度學習的方法興起之前,有很多的傳統機器學習方法為攻擊流量分類任務提供解決思路,如Scikit-learn 庫[8]中集成 的LR、NB、KNN、DT、AB、RF 和SVM。以上傳統機器學習算法的測試結果在表2 中給出[9]。

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

圖1 網絡流量預處理流程
在深度學習中,遞歸神經網絡(RNN)是一類善于處理序列數據的網絡。人類對事物的認知不是一蹴而就的,而是一點點深入的。人類會根據已經閱讀過的內容來理解后面的內容,不會把之前的東西都丟掉重新進行思考,對內容的理解是貫穿的。傳統的神經網絡很難做到這一點,而RNN 極大程度上解決了這個問題,是具有循環的網絡,允許信息持續存在,如圖2 所示。

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

圖3 LSTM 網絡
卷積神經網絡是一種帶有卷積結構的深度神經網絡。卷積結構可以減少深層網絡占用的內存量,其中有3 個較為關鍵的操作:一是卷積核局部感受野;二是權重共享;三是pooling 層。這3 個操作有效減少了網絡參數量,緩解了模型的過擬合問題。
數據集本身數據條目信息量較少,因此使用更深層次的網絡結構會由于過擬合的導致精度下降。所以,本工作只采用了類似圖4 的簡單卷積網絡結構。

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

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

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

F1 分數(F1-score)是分類問題的一個重要衡量指標,是精確率和召回率的調和平均數,計算方式為:

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

表4 訓練數據增廣方法消融實驗

表5 遞歸神經網絡數據歸一化消融實驗

表6 一維線性分類網絡數據歸一化消融實驗

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

表8 遞歸神經網絡五分類對比實驗

表9 一維線性分類網絡五分類對比實驗
隨著社會的發展,越來越多的生活場景需要接入網絡,如近些年十分火熱的物聯網。隨著網絡的發展,網絡安全問題變得更加重要。攻擊流量的分類檢測是網絡安全防御的重中之重。針對攻擊流量分類問題,本文使用KDDCup 99 數據集,提出了二維化的流量分類模式,同時通過消融實驗驗證了數據歸一化和訓練數據增廣在該任務中的效果。對比實驗結果表明,深度學習在攻擊流量分類領域具有相當的優勢,同時在流量二維化后使用卷積提取特征以更好地捕獲流量屬性間的關聯,提升分類精度。未來將沿著輕量級二維化攻擊流量分類的方向進行更深入的研究。