陳解元
(國家計算機網絡與信息安全管理中心,北京100032)
信息技術的廣泛應用和網絡空間的興起發展,極大促進了經濟社會繁榮進步,同時也帶來新的安全風險和挑戰。網絡安全威脅逐步從信息竊聽、篡改、傳播病毒等方式上升為更新穎的高強度DDoS攻擊、0day漏洞利用、APT攻擊等形式,造成的大規模數據泄露和網絡黑產行業大規模增長嚴重危害信息系統運營者權益和用戶個人隱私[1]。網絡空間中信息傳輸與交互均以流量為載體,通過異常流量檢測,及時發現網絡異常情況和攻擊行為,對于強化網絡安全應急響應能力,維護網絡空間安全具有重要意義[2]。
入侵檢測[3]作為一種主動安全防護技術,從網絡系統中的關鍵節點收集信息,即時監視并分析網絡中是否有違反安全策略的行為。入侵檢測系統(IDS)[4]按照信息來源的差異分為兩類:基于主機IDS和基于網絡IDS,其中主機IDS[5]數據來源主要為防火墻、主機、網絡設備等產生的日志,但隨著大數據和云計算技術的發展,海量安全事件給設備和安全運維人員帶來了“感知”上的巨大壓力。基于網絡的入侵檢測系統[6]數據來源是網絡上傳輸的數據包和網絡設備的告警日志,在發現蠕蟲病毒攻擊、DDoS攻擊、未知行為攻擊等方面的有效性逐步得到驗證,異常流量檢測技術也受到越來越多的關注。
迄今為止,國內外學者已提出了多種異常流量檢測方法,目前主流的研究方向是基于機器學習或深度學習的方法。其中,段詠程等[7]提出了一種基于隨機森林網絡安全態勢要素提取方法;BIERSACK E等[8]提出了SVM算法,尋找出一個超平面將樣本點與原點分離,用于異常檢測;王輝[9]等在原有的樸素貝葉斯模型基礎上引入屬性加值算法,通過對分類參數的調控來優化分類精確度;文獻[10]提出一種KNN算法,將入侵檢測問題簡化為二進制問題以減少數據集不均衡帶來的影響,從而提高檢測率。傳統機器學習算法性能依賴流量特征選取,而深度學習算法通過表征學習,逐層提取抽象特征,在原始流量異常檢測方面優勢明顯。文獻[11]提出一種混合聚類神經網絡模型,通過聚類分析剔除孤立樣本后挑選具有代表性的樣本訓練神經網絡;文獻[12]提出一種多層網絡結構CNN算法,利用不同尺度卷積核對大量高維無標簽原始數據進行不同層次特征提取。上述方法雖然有較高的檢測率,但這些研究并沒有充分考慮異常流量的結構化特征,如源目IP間會話的時空特征、DoS攻擊流量間時間特征等,造成有效特征遺漏。
針對以上問題,本文提出一種基于深度學習的異常流量檢測方法,利用卷積神經網絡和長短期記憶網絡的混合算法提取網絡流量數據的時空特征,以提高入侵檢測的準確率。并在CIC-IDS2017數據集上對算法進行驗證測試。
卷積神經網絡的基本思路是通過提取圖像中相鄰像素之間相似的表達和特征,對輸入向量進行卷積操作,以提取局部特征作為下一層的輸入,通過逐層提取與組合,轉化為抽象且全面的信息,是深度學習的代表算法之一。本文構建的異常流量檢測算法,使用CNN和LSTM的組合在時間和空間上學習和分類流包,保留特征序列的順序性特點,以層次化的時空特征更準確地識別流量特征。CNN部分由輸入層+卷積層1+池化層1+卷積層2+池化層2+全連接層組成,向LSTM部分輸出一個高維包向量。LSTM部分由LSTM層1+LSTM層2+全連接層和輸出層組成。整體過程將高維包向量處理成一個表示屬于每個分類概率的向量,最終由Softmax層輸出最終結果。算法流程如圖1所示。

圖1 整體算法流程圖
數據預處理階段的目標是將pcap格式的網絡流量數據轉化為卷積神經網絡可運算的二維灰度圖像,過程主要包括數據歸一化、符號數據轉換兩個步驟。本文以會話(Session)為基本研究單元,其包含一組雙方通信的數據包(Package)。
數據歸一化階段首先將訓練數據集提供的數據按攻擊類型切分,使用pkt2flow工具按照攻擊源IP和目的IP分割成相應的數據包,與源目互換后的數據包組合成時間序列的會話組。將按照會話分類的pcap文件切分為q個數據包后,每個數據包取前x個字節。
符號數據轉換階段,以CIC-IDS2017數據集為例,官方已經為流量數據進行了特征提取,共產生Flow ID、Source IP、Source Port等80余條特征,以及正常或攻擊類型標簽。通過獨熱編碼(One-Hot Encoding),將每一組特征取值表示為y維向量,如此轉化為q個x×y大小的二維圖像。在時序特征提取階段,每次輸入的單元數量必須為固定值n。
其中,切分數據包長度x和會話中數據包的數量n對算法效率和準確度影響較大,根據多次實驗對比,取最佳數據包長度x=100,數據包數量n=8,該取值在多個測試數據集中具有普遍適用性。
基礎的卷積神經網絡由卷積(convolution)、激活(activation)和池化(pooling)三種結構組成。卷積層1使用帶有小卷積核的卷積層來提取輸入向量的局部特征,如協議類型和IP信息,在池化層1上可以得到準確的特征結果。在卷積層2使用較大的卷積核來分析兩個相隔較遠的部分之間的關系,如數據包中有效載荷的信息。
在卷積層中,使用不同的卷積核分別在前一層的特征圖上滑動,掃描特征圖上的值進行內積求和,再通過激活函數計算非線性映射,從而得出當前層的特征矩陣,公式表示為:

式(2)為卷積層激活函數,其中k為特征圖中通道數量,A為Z向量通過激活函數的輸出向量。

式(3)表示池化函數,其中p為預先指定的參數。在卷積層進行特征提取后,輸出的特征圖會被傳遞至池化層進行特征選擇和信息過濾,將特征圖中單個點的結果替換為其相鄰區域的特征圖統計量,保留有效特征的同時實現特征圖降維,避免過擬合現象。

經過兩次卷積和池化操作,整個流量圖像被提取到一個較小的特征塊中,代表整個數據包的特征信息,該特征塊作為時序特征提取部分的輸入層。
長短期記憶模型是一種特殊的循環神經網絡(RNN)模型,用于處理具有長期依賴關系的時間序列數據。和傳統的循環神經網絡一樣,模型結構分為三層,分別為輸入層、輸出層和隱藏層。輸入層和輸出層不再保持一一對應關系[13],并將循環神經網絡中的每個隱藏單位換成了具有記憶功能的門控單元,每個門包含一個Sigmoid神經網絡層和一個乘法操作,Sigmoid層輸出特征通過量。本文LSTM部分由兩個LSTM層、全連接層、Softmax層組成。
令x t和h t分別表示輸入和輸出,Ct表示LSTM的節點。第一步是確定模型將從一組單元中丟棄哪些信息,遺忘門公式:

遺忘門讀取h t-1和x t,向Ct-1輸出0~1之間的狀態值,其中1表示完全保留,0表示完全丟棄。W和b分別為權值和偏置量。

式(5)決定哪些信息需要更新,由式(6)生成一個向量作為更新的替代項,將這兩部分組合起來,通過式(7)對C t的狀態值進行刷新。

式(8)決定單元格狀態C t的哪些部分被導出,通過式(9)中tanh函數獲得-1~1之間的對應值,輸出最終結果。
本文實驗搭建的軟硬件環境為:Kali Linux 2019操作系統,基于Python3.6的TensorFlow和Keras軟件框架;Xeon Siliver 4210@2.2 GHz CPU,64 GB內存,NVIDIA Tesla P100顯卡。
為了驗證本文算法在原始網絡流量數據上的通用性,數據集選用CIC-IDS2017,該數據集來自加拿大網絡安全研究所,包含了基于HTTP、HTTPS、FTP、SSH等網絡協議在內的真實網絡數據流量51 GB,其中攻擊流量包括FTP-Patator、SSH-Patator、DoS、Heartbleed、Web攻擊、滲透、僵尸網絡和DDoS 8種類型,并對流量數據進行了特征提取,共生成80余條特征,最后以標簽的形式表明正常流量或攻擊類型。數據類型如表1所示。

表1 CIC-IDS2017數據集分布
根據CIC-IDS2017數據集分類后各樣本數據量及噪聲率,從中選取了7類樣本進行模型訓練、驗證和測試,其中各類流量的攻擊行為標簽分布如表2所示。

表2 各流量類型分布
參照機器學習和其他異常流量檢測算法評價參數,選擇準確率(Accuracy,ACC)、檢測率(Detection Rate,DR)、誤 警 率(False Alarm Rate,FAR)、分 類 器精度得分(F1-score)評價本算法,并與CNN算法和CNN1D(一維卷積神經網絡)+LSTM算法進行對比。指標公式為:

其中,TP表示歸類正確的目標樣本數量,TN為歸類正確的其他樣本數量,FP為識別錯誤的目標樣本數量,FN為被遺漏識別的目標樣本數量。
訓練過程如圖2所示,在使用相同訓練數據情況下,本文方法對比CNN和CNN1D+LSTM方法有更快的收斂速度,在較少迭代次數情況下準確率明顯優于其他方法,在多次迭代情況下準確率能保持相近或略高于CNN1D+LSTM方法,在訓練集上的最終準確率達到98.8%。

圖2 本文算法與其他算法訓練過程對比
從表3三種算法評價指標對比結果可以看出,與單獨的CNN算法[14]相比,本文算法有效地提高了FTP-Pataor、DoS和Infiltration攻擊流量的識別準確率。除DoS流量識別外,本文算法準確率較CNN和CNN1D+LSTM方法均存在明顯優勢,此外,本文算法的一個重要優勢是在獲得高檢測率的同時,保持了極低的誤警率,能夠更準確地對網絡流量進行分類。

表3 卷積神經網絡算法對比
在相同的CIC-IDS2017數據集上,橫向選取了Random Forest、SVM、DNN、Bi-LSTM等5類機器學習算法作對比[15],表4的實驗結果表明,本文提出的CNN+LSTM算法在準確率、檢測率、誤警率指標方面均優于其他算法。

表4 機器學習算法橫向對比
針對傳統入侵檢測系統側重于告警日志,在大規模復雜網絡環境下檢測精度低、系統開銷大的問題,本文提出一種基于卷積神經網絡(CNN)和長短期記憶網絡(LSTM)的混合算法,從網絡流量中提取特征,分析流量中隱含的網絡攻擊。在CNN提取單個數據包空間特征的基礎上,充分發掘攻擊數據包之間的結構特點,通過LSTM算法提取數據流的時間特征并進行融合。實驗結果表明,本文算法總體準確率達到98.8%,對絕大多數攻擊類型的識別準確率超過99.5%,與單獨使用CNN算法及橫向機器學習算法相比,本文算法在絕大多數情況下獲得了更高的準確率,同時保持了極低的誤警率,有效提高了基于流量的入侵檢測算法準確度。但受限于卷積神經網絡算法存在權值、閾值較多的特點,參數選擇不恰當易陷入局部極小值。在未來的工作中,將進一步優化算法參數,優化樣本量差異較大情況下檢測準確率,減少訓練開銷。