劉江豪,張安琳,黃子奇,黃道穎*,陳孝文
(1.鄭州輕工業大學計算機與通信工程學院,鄭州 450000;2.北方信息控制研究院集團有限公司,南京 211153;3.鄭州輕工業大學工程訓練中心,鄭州 450000)
沒有網絡安全就沒有國家安全。全球大國戰略競爭不斷加劇,隨著大數據、人工智能以及物聯網技術的不斷發展,網絡攻擊更加頻繁,攻擊方式日新月異,網絡安全問題呈現出更為嚴峻的態勢。為保障網絡和信息化的穩步發展,各國逐步完善網絡空間安全國家戰略,網絡作戰能力的提升將是國防安全的新重點[1]。入侵檢測作為網絡安全系統的第二道防線,在識別日益增多的網絡入侵行為方面引起眾多研究者的關注。
入侵檢測系統(Intrusion Detection System,IDS)在部署前要進行大量的測試、評估和調整,需要對帶有入侵和異常行為的標記流量進行系統評估。因此,所用測試數據集的質量對入侵檢測系統的性能起著至關重要的作用[2]。基于網絡的理想數據集應該包含最新攻擊行為和正常用戶行為的真實網絡流量,不僅正確標記、公開可用,而且需跨越較長的時間[3]。但理想的入侵檢測數據集并不存在,通常研究人員使用的數據集都是次優的。常用的實驗分析基準數據集有KDD-Cup99 和NSL-KDD 等,目前所做的研究都是基于這些舊數據集[4]。但這些數據集存在著一些致命問題:沒有考慮到現代入侵檢測需要過濾的更高級的威脅,不能反映最新、最真實的網絡流量特性,缺乏多樣性[5]。
CSE-CIC-IDS2018 入侵檢測數據集是通信安全機構(CSE)和加拿大網絡安全研究所(CIC)合作項目。研究人員在其早期數據集版本CIC-IDS2017上做了大量的研究工作,文獻[6]認為其不僅包含最新的網絡攻擊,而且滿足現實世界攻擊的所有標準,幾乎沒有重大缺陷。CSE-CIC-IDS2018 數據集相較于之前的CIC-IDS2017 更為龐大,但其中網絡流量包含許多與入侵檢測無關或相關性很小的特征。當分析大量數據時,這些冗余特征會增加計算工作量,降低檢測速度,影響入侵檢測系統的整體性能。但目前對CSE-CIC-IDS2018 數據集進行的入侵檢測研究還沒有太多的文獻可供參考。本文的目的是通過機器學習的特征遞減式訓練,分析各分類器與CSE-CIC-IDS2018 數據集的特征數量依賴關系,嘗試從候選特征中選出少數“優秀”的特征,從而降低數據維數,提高系統檢測效率[7]。
CSE-CIC-IDS2018 入 侵 檢 測 數 據 集(https://www.unb.ca/cic/datasets/ids-2018.html)所提供的流量模擬真實網絡流量,由B-Profile 和M-Profile 兩部分組成[8]。B-Profile 負責描述用戶交互的抽象行為,生成正常的流量;M-Profile 用于描述和執行攻擊場景,生成帶有攻擊行為的流量[9]。該數據集共包含7 種攻擊場景:
1)暴力破解(Brute Force);
2)心血漏洞(Heartbleed);
3)僵尸網絡(Botnet);
4)拒絕服務(Denial of Service,DoS);
5)分布式拒絕服務(Distributed Denial of Service,DDoS);
6)萬維網攻擊(Web Attacks);
7)網絡滲透(Infiltration of the Network From Inside)。
CSE-CIC-IDS2018 數據集以pcap 文件和csv文件兩種方式被提供。pcap 文件由捕獲的網絡流量和計算機的系統日志形成,主要用于數據挖掘技術的相關研究及應用。csv 文件多用于人工智能的相關分析,由CICFlowMeter-V3 流量特征提取工具從捕獲的流量中提取。該工具可獲取流量的83 個統計特征,其中不包含數據集的標簽,標簽為研究人員根據實驗環境標注。數據集的特征及說明如表1所示。

表1 數據集特征
初步分析可以發現,其中包含許多與入侵檢測無關或相關性很小的冗余特征,實驗時可能會影響入侵檢測系統的整體性能。
K 近鄰(k-Nearest Neighbor,KNN)于1968 年由Cover 和Hart 提出,是最簡單的機器學習算法之一,同時也是懶惰學習的著名代表。KNN 模型依據給定的訓練集樣本,找出其中與之某種距離度量最靠近的k 個樣本,以這k 個臨近的樣本信息為依據來進行預測。KNN 模型構造簡單,分類精度高,對異常數據、噪聲等有較高的容忍度,適用于多分類問題。
決策樹(Decision Tree,DT)產生于20 世紀60年代。決策樹算法可以對數據進行擬合,執行回歸任務;也可以尋找決策邊界,完成分類問題;此外,也可實現多輸出任務。其基本思想是從訓練的數據集中歸納出分類規則。經典的決策樹算法有以信息增益為特征選擇準則的ID3,以信息增益率為特征選擇準則的C4.5 和基尼指數為特征選擇準則的CART。決策樹模型準確性高且生成模式簡單,對噪聲數據具有良好的魯棒性。
隨機森林(Random Forest,RF)是決策樹的一種集成,是當下最強大的機器學習算法之一,由Leo Breiman 和Adele Cutler 提出[10]。隨機森林在決策樹生長時引入額外的隨機,降低了決策樹之間的關聯性,使模型的準確性進一步提高。隨機森林模型訓練速度較快,能處理高維數據,且不易產生過擬合,對各類數據集有較強的適應性。
Softmax 回歸模型是Logistic 回歸模型在多類別分類問題上的一般化歸納,也可稱為多類別Logistic回歸。Softmax 回歸廣泛應用于機器學習和卷積神經網絡,可以將多個神經元的輸出映射在(0,1)區間中,從而得到樣本屬于某類別的分類概率。
越重要的特征對分類器預測結果影響越大。通過隨機森林算法進行特征重要性評估,可以計算出每個特征對該樣本的貢獻值,以此進行特征篩選。
隨機森林主要通過兩種方法來計算特征重要性,分別為平均不純度減少和平均準確率減少。
3.1.1 平均不純度減少
平均不純度減少(Mean Decrease Impurity,MDI)用來說明每個特征對誤差的平均減小程度。底層實現的評分標準依據基尼重要性(Gini Importance)。基尼重要性評分VIMj通過基尼指數變化得到,即第j個特征在隨機森林的全部決策樹中節點分裂不純度的平均改變量。
基尼指數計算公式為:

其中,K 表示特征樣本類別數,pmk表示k 類別在節點m 中的占比。
節點m 處特征Xj的重要性為:

其中,GIl和GIr表示節點m 左右分支的新節點的基尼指數。
第i 顆樹中特征Xj的重要性為:

若在有n 顆樹的隨機森林中,則特征Xj的重要性為:

將重要性進行歸一化處理,得到基尼重要性評分VIMj,即特征重要性評分:

3.1.2 平均準確率減少
平均準確率減少(Mean Decrease Accuracy,MDA)核心思想是打亂特征的特征值順序,評估順序變動對模型準確率的影響程度。該方法主要利用袋外誤差估計(The out-of-bag(OOB)error estimate)進行評估。對于樹Ti,使用OOB 樣本數據計算得出基本誤差e1,接著隨機打亂OOB 中特征j 的順序,得到誤差e2。該方法通過計算e1-e2來評估特征j的重要性。重要特征的順序變動會極大降低模型的準確率,而不重要特征的亂序操作則對準確率影響較小。
相較MDI,MDA 計算量更大。通常機器學習中多用MDI 進行特征重要性計算。
在使用不平衡數據集訓練分類系統時,分類器很容易偏向多數類而忽略少數類。若選定隨機樣本用于分類器的訓練和測試,很可能在訓練集中找不到特定攻擊標簽的實例,以至于面對此類的攻擊時無法檢測,致使構建的檢測模型效果不佳。基于不平衡數據的分類模型研究主要分為數據層面研究和算法層面研究。
在數據層面對數據集進行平衡,核心思想是采樣,主要包括欠采樣和過采樣。
3.2.1 欠采樣
欠采樣的基本思想是刪除其中一些多數類的部分樣本,主要方式是隨機采樣。
3.2.2 過采樣
過采樣的基本思想是增加少數類的樣本數量。相較于欠采樣,過采樣更加復雜,通過學習少數類樣本特征生成新的少數類樣本數據,是一個生成合成數據的過程。
SMOTE(Synthetic Minority Over-sampling Technique)是應用最廣泛的過采樣算法,其基本原理是計算近鄰少數類樣本之間的線性差值,以此合成新的少數類樣本[11]。

其中,i=1,2,…N;xnews表示算法合成的新樣本;x 表示少數類樣本;rand(0,1)表示0 到1 之間的隨機數;y[i]表示x 的第i 個臨近樣本。
在真實的網絡環境下,捕獲的數據可能含有大量的缺失值、噪聲,以及由于人工錄入而產生的異常信息,因此,需要對數據集信息進行預處理以提高數據的質量[12]。
本文主要對CSE-CIC-IDS2018 數據集的csv文件進行分析,csv 文件由10 個文件組成,如表2所示。由于文件較大,前期對各文件單獨進行處理,后期整合。預處理過程主要包括數據清洗、數據集合并、數據集平衡、特征選擇、數據歸一化和數據集分割等。

表2 csv 文件信息
4.1.1 缺失值
該數據集缺失值均出現在Flow Byts/s 特征下。在處理缺失數據問題時,通常采用刪除、補全和忽略等方法。由于該數據集十分龐大,且缺失比例較小,本文采用刪除元組的方法將出現缺失值的數據行刪除。
4.1.2 無窮值
特征Flow Byts/s 和Flow Pkts/s 下存在無窮值。在數據處理過程中,無窮值無法正常計算。該數據集無窮值基本都出現在正常流量中,對分類無影響,因此,將含有無窮值的信息行直接刪除。
4.1.3 重復數據
重復數據對入侵檢測系統的訓練幾乎沒有幫助,因此,只保留第一次出現的數據,將重復的數據刪除。
4.1.4 異常值
數據集錄入時,錯誤地將表頭信息多次寫入數據中,這里將其直接刪除。
為了得到完整的入侵檢測數據集,將經過數據清洗的數據集文件合并。合并時,按照特征列對各文件進行縱向拼接。
經統計,合并后的數據集共有15 種標簽,包括1 種正常流量的標簽和14 種攻擊流量的標簽,各標簽分布和占比如表3 所示。

表3 數據集標簽分布
通過表3 可以看出,數據集的正常流量占比超過85%,部分攻擊流量占比不足0.01%,流量占比嚴重不平衡。
因計算機性能限制,從Benign 流量中隨機選取1 000 000 條用于本次實驗。使用SMOTE 算法對數據量較少的DDOS attack-LOIC-UDP、Brute Force-Web、Brute Force -XSS、SQL Injection 數據進行過采樣操作。數據過采樣操作僅在訓練集中使用。
本文使用人工選擇和特征重要性分析相結合的方式進行特征選擇。
異常檢測系統應該根據網絡流量的行為特征進行分類,不應偏向于IP 地址等具有特定網絡標識的信息[13],因此,將涉及特定網絡標識的5 個特征刪除,見表4 所示。

表4 具有特定網絡標識的5 個特征
pandas.describe()方法可以描述數據的平均值、標準差、最小值等信息。通過計算發現文件中存在數據全為0 的10 個特征,見表5。在對分類器進行訓練時,信息相同的數據不會對分類提供有效信息,因此,將這10 個特征刪除。

表5 數據全為0 的10 個特征
不同的指標評價體系中,量綱或量綱單位通常是不同的。某些指標可能因為不同數量級的變化區間而被忽視,因此,需要對數據進行歸一化處理以消除數據間的量綱影響。歸一化時,通常將數據映射到[0,1]區間內。分別對數據集的每一特征維度進行歸一化操作,其基本原理可表示為:

其中,x 為某一特征維度下的數據值,x'為經過歸一化處理后的數據值,xmin為該特征維度下的最小值,xmax為該特征維度下的最大值。
將經過其他預處理的數據集打亂順序并按照7∶3 的比例隨機拆分為訓練集和測試集。設置固定的隨機數種子,確保進行不同輪次的分類操作時所使用的訓練集和測試集是相同的。數據集分割操作可通過scikit-learn 中的train_test_split()方法實現。
本文實驗在windows10 操作系統,CPU 為Intel Core i5-9400F 2.90 GHz,內存16 GB 的計算機上運行,處理過程主要使用python 的pandas、imblearn 和scikit-learn 等相關庫。
每種分類器分別進行68 次訓練,從訓練所有特征開始,依次按照特征重要性評分從低到高刪除一個特征,直至剩余最后一個特征。訓練過程中記錄各分類器的準確率、精確率和訓練時間。
入侵檢測應盡量避免將攻擊流量識別為正常流量,即要同時保證具有較高的準確率和精確率。因此,本文使用準確率(Accuracy)、精確率(Precise)和訓練時間對分類器運行的結果進行評估。準確率是分類正確的正樣本和負樣本占樣本總數的比例,通常情況下,準確率越高分類器越好;精確率(也稱查準率)是分類正確的正樣本數占被分類為正樣本的樣本數的比例,體現了分類器的精度,在不平衡數據集分類中常作為重要評估指標。

其中,TP 表示正確地把正樣本預測為正,FN 表示錯誤地把正樣本預測為負,FP 表示錯誤地把負樣本預測為正,TN 表示正確地把負樣本預測為負。
本文使3.1.1 節所述平均不純度減少算法計算特征重要性評分。
對經過數據清洗和人工選擇特征后的數據集進行特征重要性計算,得到剩余68 個特征的特征重要性評分,如下頁圖1 所示。平均不純度減少計算過程中對結果進行了歸一化處理,所有特征的評分之和為1,其特征評分代表了該特征對數據分類的貢獻大小。可以看到,第57 個特征評分最高,為0.150 698 48,說明該特征對分類器的分類貢獻最大;第60 個特征重要性次之,為0.072 224 96;第42個特征貢獻最小,僅為0.000 165 79。

圖1 特征重要性評分
根據特征重要性評分將原特征序號映射為特征重要性評分從小到大的新序號,其映射關系及特征重要性評分如表6 所示。

表6 特征映射關系對照表
可以看到,原評分最高的第57 個特征在新的排序中序號變為68;原評分最低的第42 個特征在新的排序中序號變為1。按照特征重要性排序后的特征及其評分如下頁圖2 所示。

圖2 特征重要性排序
在接下來分類器的訓練中,從訓練包含所有特征的數據開始,按照5.2 節特征重要性排序,每輪訓練依次刪除一個特征,直至剩余最后一個特征。即第1 次訓練含有68 個特征的數據,第2 次訓練除了序號1 之外的剩余67 個特征的數據,第3 次訓練除了序號1 和2 之外的剩余66 個特征的數據……第67 次訓練剩余序號為67 和68 特征的數據,第68 次訓練只包含第68 個特征的數據。每個分類器分別完成68 次訓練,記錄不同特征個數對分類器評估指標的影響。
5.3.1 K 近鄰
如5.1 節所述,分類器的評估指標是通過準確率、精確率和訓練時間來表征的。
圖3 為K 近鄰分類器評估指標(準確率和精確率)與特征數量的關系圖。分析各項指標可以發現,特征減少至12 個時,分類器兩指標精度有微小的上升,考慮是產生干擾的非關鍵特征被刪除;特征數量為8~12 時,K 近鄰分類器取得較好的分類效果;特征少于4 時,準確率和精確率急劇下降,特征數量過少,所提供信息不足以進行高精度流量分類。

圖3 K 近鄰運行結果
K 近鄰訓練時間與特征數量關系如圖4 所示。特征數量基本和訓練時間呈線性關系,特征數量越少,訓練所用時間越短。K 近鄰算法每預測一個數據點的分類都需要重新進行一次全局的運算,相較于其他幾種分類器,訓練時間較長。時間的波動部分,考慮是python 解釋器無法鎖頻導致[14]。

圖4 K 近鄰訓練時間
5.3.2 決策樹
決策樹評估指標(準確率和精確率)與特征數量關系如圖5 所示。特征數量為4 時,決策樹分類器取得最高準確率,但精確率相對較低,有較多攻擊流量被識別為正常流量;特征數量為5~12 時準確率較高;特征數量大于7 時精確率較為穩定;特征數量小于5 時分類器準確率和精確率急劇下降。

圖5 決策樹運行結果
決策樹訓練時間與特征數量關系如圖6 所示。決策樹訓練時間和特征數量呈線性關系,且較為穩定,總體時間略高于隨機森林,低于K 近鄰和Softmax。

圖6 決策樹訓練時間
5.3.3 隨機森林
隨機森林評估指標(準確率和精確率)與特征數量關系如圖7 所示。隨機森林在特征數量為9-26時取得較好地分類效果;數量小于5 時準確率開始大幅下降。

圖7 隨機森林運行結果
隨機森林訓練時間與特征數量關系如下頁圖8所示。隨機森林訓練時間與特征數量正相關,但具有波動性。相較于其他分類器,隨機森林所需時間最短。

圖8 隨機森林運行時間
5.3.4 Softmax 回歸
Softmax 回歸評估指標(準確率和精確率)與特征數量關系如圖9 所示。Softmax 分類器準確率和精確率與特征數量正相關。特征數量小于6 時,各指標具有較大的變化;特征數量大于6 時,各指標數據穩步提升,正確率最高接近92.8%。相較于其他幾種分類器,softmax 分類更依賴特征數量,使用中需要耗費更多的時間和計算資源。

圖9 Softmax 回歸運行結果
Softmax 回歸訓練時間與特征數量關系如圖10所示。特征數量大于2 時,訓練時間與特征數量呈線性關系,且較為穩定。

圖10 softmax 回歸運行時間
本文對CSE-CIC-IDS2018 入侵檢測數據集進行了降維分析,使用平均不純度減少的計算方法對該數據集進行了特征重要性計算,通過K 近鄰、決策樹、隨機森林和Softmax 分類器的特征遞減式訓練,探究了不同特征維數對該數據集分類效果的影響。
實驗證明,在保證分類效果的前提下,使用決策樹分類算法最低可以將該數據集的依賴特征由83 個縮減至7 個,K 近鄰和隨機森林分類算法可以將依賴特征分別縮減至8 個和9 個,達到了降維、提升模型和計算性能等效果。