趙貝貝 趙 旭
(西安工程大學計算機科學學院,陜西 西安710000)
軟件定義網絡(SDN)是美國斯坦福大學CLean State 課題研究組提出的一種新型網絡架構[1]。相較于傳統網絡,其最大的特點是將控制與轉發(fā)進行解耦,控制器可實現對網絡的全局視圖和集中管控,同時開放的API 和可編程性可讓第三方對網絡進行靈活的設計。雖然SDN 網絡架構的管理和開發(fā)比傳統網絡架構更容易,但是其設計也引入了一些新的安全問題。如果SDN 遭受黑客的攻擊控制器很容易出現單點失效,南北向接口安全也難以保證[2]。
SDN 所面臨的最直接的威脅之一便是分布式拒絕服務(DDoS)攻擊。在進行DDoS 攻擊時,黑客通常利用自己與受害者之間資源的不對等關系,通過僵尸網絡控制大量僵尸主機對受害者發(fā)出巨大數量的服務請求。一般情況下,受害者對服務請求的處理能力有限,因此一些正常用戶的請求就會被淹沒在攻擊流量中,當受害者的資源被耗盡,其服務器便無法服務正常合法的用戶。相較于傳統網絡,在SDN 中實施DDoS 攻擊更加容易,攻擊者們利用SDN 控制- 轉發(fā)分離這一大特性,通過大量肉雞耗盡SDN 交換機流表緩存或控制器的系統資源,使得整個SDN 網絡癱瘓,無法繼續(xù)處理新的網絡請求。因此,SDN 環(huán)境下的DDoS 檢測防御已成為當下互聯網安全領域的一個重要研究內容。
針對SDN 網絡架構中的DDoS 攻擊檢測,已有一系列的研究和成果。文獻[3]提出了一種基于KNN 的DDoS 攻擊檢測方法,選取和構建流量特征集矩陣,并進行正常樣本訓練和異常樣本訓練,通過分類算法KNN 來區(qū)分異常流量和正常流量。該方法具有良好的檢測率及較低的誤報率,但是其增加了SDN 控制器的負載并占用一定的帶寬。文獻[4]通過構建深度學習混合模型檢測DDoS 攻擊。該檢測模型輸入特征為流表特征和自定義的特征,然后通過訓練好的深度學習模型將流量進行分類,該方法檢測準確率較高同時對計算資源需求不高。文獻[5]將從流表項中提取六元組作為特征向量與SVM相結合來檢測DDoS攻擊,該算法有一定的檢測效果,但實驗中模擬的正常流量不夠全面且存在一些偶然性。
基于上述研究和分析,傳統的機器學習方法雖然在檢測DDoS 攻擊中有一定效果,但是它們都只是利用當前時刻的攻擊流量特征做出分類檢測,無法利用流量的歷史特征,而DDoS攻擊進行時,產生的流量特征跟時序是有一定關系的。因此本文利用RNN 可以記憶訓練樣本歷史信息的特點,結合當前流量特征和歷史流量特征信息,可以實現更精確的分類檢測。
RNN 是根據“人的認知是基于過往的經驗和記憶”這一觀點提出的。與DNN,CNN 不同,它可以通過記憶先前的輸入,預測后來的輸出。網絡會對前面的信息進行記憶并應用于當前輸出的計算中。RNN 的結構展開圖如下圖1 所示。
圖1 RNN 結構展開圖
圖中可以看到RNN 由輸入層(Input Layer),隱藏層(Hidden Layer),輸出層(Output Layer)組成。圖示左側可以看到隱藏層有一個箭頭表示數據的循環(huán)更新,這是實現時間記憶功能的方法。t-1,t,t+1 表示分別時間序列,x 表示輸入的樣本,在本文中就是流表項的特征五元組。W、U、V 分別表示輸入、此刻輸入、輸出的樣本權重。St表示樣本在時間t 處的記憶。o 表示隱藏層的輸出值。在t 時刻輸出層值為:
其中,f 和g 均為激活函數。f 可以是tanh,relu,sigmoid 等激活函數,g 通常是softmax。根據RNN 在時序上的展開圖,將式(2)循環(huán)代入到式(1)中可以得到式(3)。
從上述推導可見RNN 任意時刻輸出,與之前時刻的輸入均有關,這使得循環(huán)神經網絡具有處理時序數據的能力。但RNN對長期依賴的處理效果不太令人滿意,因為其采用鏈式法則來求導數,所以在訓練過程中可能出現梯度爆炸和梯度消失,導致梯度中無法很好地在長期依賴中傳遞下去。針對該問題,長短期記憶模塊(LSTM)成為解決其問題的一種方法,但是其結構復雜,參數較多,極大影響模型訓練的效率。門控循環(huán)單元(GRU)是LSTM 網絡的一種變體,它較LSTM 網絡的結構更加簡單,對于解決RNN 網絡中的長依賴問題有很好的效果。因此,本文構建的RNN 模型的隱層循環(huán)體采用GRU 門控單元,GRU可以更好地捕捉時間步距在時間序列中的依賴關系,通過引入了門的概念來修改循環(huán)神經網絡中隱藏狀態(tài)的計算方式。
根據正常情況與攻擊發(fā)生時流量特征的差異性,我們可以把DDoS 攻擊檢測看成分類問題?;赗NN 的DDoS 攻擊檢測主要分為三部分,分別為流表收集,流表項特征提取和RNN 分類模型。流表收集部分通過定期的向OpenFlow交換機發(fā)送流表請求,從而得到交換機給予的反饋流表信息。然后流表項特征提取部分通過收集的流表條目,分析DDoS 攻擊的特點,提取可以用來表述DDoS 攻擊的流表項特征五元組,最后將提取特征向量五元組作為輸入進行RNN 分類檢測以區(qū)分時段內流量為正常類型或攻擊類型。
整個RNN 模型由一個輸入層,3 個隱層循環(huán)體,一層Softmax 全連接輸出層堆疊而成,模型采用沿時間反向傳播算法(BPTT)更新網絡權重。模型訓練過程中,首先需要對輸入的訓練集數據進行預處理,其次對預處理后的數據集按照流表項的形式來進行特征提取,選取源IP 增長速率、端口增長速率、發(fā)送數據包平均時間間隔、流表項速率、流表數均值構成特征向量五元組后作為輸入進行模型訓練。對網絡采用有監(jiān)督學習的方式進行訓練,并采用沿時間反向傳播算法(BPTT)更新網絡權重。輸出結果經softmax 分類為兩種類型,分別為正常流量和攻擊流量。
本文使用TensorFlow 開源框架構建RNN 攻擊檢測模型并使用KDD CUP99 數據集來訓練模型并驗證。采用準確率(Accuracy)和檢測時間兩個參數來評估構建的RNN 分類模型的檢測性能。準確率的公式為下式(4)。
其中,TP 為真陽性,本文中可以理解為被模型正確識別異常流量的概率。TN 為真陰性,表示被模型預測為負類的負樣本。FP(FalsePositive)為偽陽性,可以理解為正常流量被錯誤識別為異常流量的概率,FN(FalseNegative)為偽陰性,可以理解為異常流量被錯誤識別為正常流量的概率。
表1 分別反映了不同機器學習算法構建的DDoS 分類模型在同一測試集中檢測性能??梢钥闯鱿噍^于SVM、BP 神經網絡和CNN,本文所使用的RNN 模型在DDoS 攻擊中的檢測準確率98.2%最高。同時,相較于其他三種機器學習算法,RNN 在DDoS攻擊檢測中效率更高檢測時間更短。
表1 不同算法性能對比
本文提出了SDN 環(huán)境下基于RNN 的DDoS 攻擊檢測方法,相較于傳統機器學習算法合理利用了流量的歷史特征并結合當前流量特征,實現了更精確的DDoS 攻擊分類效果,下一步將RNN 分類模型嵌入SDN 控制器中應用于真實SDN 環(huán)境中進一步驗證。