歐家豪,陳 飛
(南京曉莊學院 信息工程學院,南京 211171)
近年來,隨著大數據、云計算等新興業務的興起,網絡規模不斷膨脹,傳統的網絡體系結構面臨著巨大的壓力。為了解決傳統網絡所面臨的諸多問題,McKeown 教授最早提出了OpenFlow[1]的概念,并于2009年進一步提出了SDN的概念。SDN技術將傳統網絡的轉發層與控制層分離,把控制功能從網絡設備中分離出來,并為應用程序提供可編程接口,從而可以根據上層用戶的需求,靈活的分配調度網絡資源,為未來網絡技術的發展提供了新的發展方向。
分布式拒絕服務攻擊是當今互聯網所面臨的主要安全威脅之一,攻擊者通過控制僵尸網絡向目標主機發起攻擊,使得目標主機的帶寬等資源受到消耗而無法對正常的請求提供服務。與其他攻擊相比,DDoS攻擊發起簡單、破壞性強且難以檢測和防御。
SDN技術出現后,為DDoS攻擊的檢測及防御提供了很多新的思路,目前已經有非常多的利用SDN網絡檢測DDoS攻擊的方法。文獻[2]提出了一種SDN環境下的分布式的DDoS攻擊檢測方法,在數據平面實時監測網絡流量中的攻擊行為,在控制平面實現基于流表的威脅處理;文獻[3]通過構造網絡的流量矩陣和樣本熵矩陣進行組合,并采用主成分分析法對異常流量進行檢測;文獻[4]在NOX控制器上實現了一種攻擊檢測方法,通過統計網絡流量中與DDoS攻擊相關的六元組信息,利用人工神經網絡算法SOM進行DDoS攻擊的檢測。但是以上這些算法,有的僅針對某種特定的異常,有的實現算法復雜,有的忽視了SDN控制器的作用。
在沒有DDoS攻擊產生的情況下,網絡中的數據包應該具有比較大的隨機性;而當DDoS攻擊出現時,網絡上會出現大量具有相同目的主機地址的數據包,網絡的隨機性將會出現明顯的變化。如何衡量網絡隨機性的變化呢?
在信息論中,熵值H可以用來衡量隨機程度的變化。熵值H越高,表示隨機程度越高,信息分布越分散;反之,熵值H越低,表示隨機程度越低。在正常情況下,SDN網絡中的流量隨機程度較高,而當DDoS攻擊發生時,大量集中的流量會造成熵值H出現明顯下降,因此,可以通過檢測熵值H的變化來判斷網絡中是否發生了DDoS攻擊。
根據信息熵的定義,假設1個窗口內有w個數據包,Pi是數據包的某個元素出現的概率,則信息熵可表示為:
將計算出來的信息熵值與閾值進行比較,如果比閾值高說明未發現DDoS攻擊,比閾值低則說明檢測到DDoS攻擊。
在計算熵值H時,可以選擇不同的流量特性,比如數據包的源IP地址、目的IP地址等,考慮到DDoS攻擊產生時短時間內目的IP地址變化不大,本文選擇基于數據包的目的IP地址進行熵值計算。基于熵值計算的DDoS攻擊檢測算法可描述如下:
(1)控制器統計到達的Packet_In數據包的個數,窗口大小為w(即收集到w個數據包便計算一次熵值)。
(2)計算窗口內每一個目的IP地址出現的概率,若IP地址xi出現次數為yi次,則pi=yi/w。
(3)計算窗口中w個數據包的目的IP地址熵值
(4)如果熵值低于閾值,則計數值加1。
(5)如果連續5次計算出的熵值均低于閾值,則警告檢測到DDoS攻擊;否則計數值復位,回到步驟(1)。
本文提出了一種應用于SDN網絡的DDoS攻擊的檢測算法,通過分析控制器收到的數據包的目的IP地址,以計算信息熵值作為判斷DDoS攻擊是否發生的指標,該算法簡單、快速,消耗計算資源少。未來可進一步研究算法中參數的設置及DDoS攻擊的防御方法。