文/高曉楠
近年來隨著網絡需求的不斷增長以及流量模式的不斷變化,傳統網絡體系已經不再適用,SDN架構做為一種新的網絡體系產生。在SDN中,控制和數據平面是分離的,網絡信息和狀態在邏輯上是由控制器集中控制的,應用程序可以實現對底層網絡基礎設施的抽象。SDN體系結構以其集中監控和資源調配、安全策略等基本功能增強了網絡的安全性,而這些功能在傳統網絡體系中并不存在。這些特性為SDN在抵御DDoS攻擊提供了新的機會。在當下網絡環境中,高可用性至關重要,而拒絕服務(DoS)攻擊和分布式服務(DDoS)泛洪攻擊是破壞網絡可用性的主要方法。DoS攻擊或DDoS攻擊是企圖使其目標用戶無法使用網絡資源。由于DoS攻擊可以被視為一種特殊類型的DDoS攻擊,因此在本文的其余部分中,我們只使用術語DDoS攻擊來指示DoS和DDoS攻擊。雖然SDN的功能(例如,基于軟件的流量分析,邏輯上的集中控制,網絡的全局視圖以及轉發規則的動態更新)使得檢測和響應DDoS攻擊變得容易,但是SDN中數據平面與控制平面的分離也增加了新的攻擊機會。 SDN控制層本身可能成為某些攻擊的目標,并且SDN平臺上可能存在潛在的DDoS漏洞。例如,攻擊者可以利用SDN的特性對SDN的控制層,基礎設施層平面和應用層發起DDoS攻擊。

圖1:DDoS攻擊流程
將網絡控制和數據平面解耦,可以方便地設計和執行網絡流量控制算法,從而使網絡流量控制更加高效。
用此功能,我們可以動態地將惡意網絡流與良性網絡流分開,而無需像在傳統網絡上那樣安裝防火墻。例如,基于IΕΕΕ802.1X標 準(ΕAPOL中 的 ΕAPOL) 擴 展 的FlowNAC[1],實現了基于流的網絡訪問控制,并用于評估和分類來自用戶的傳入幀。
SDN實現了邏輯上的集中控制,這使得使SDN能夠及時接收所有網絡狀態信息,以便監控和提供網絡中的任何威脅。CloudWatcher[2]便是利用此功能在基于SDN的云環境上進行安全監控的框架之一。
SDN通過應用程序編程接口(API)提供控制平面可編程性。有了這個特性,網絡管理員可以很容易地為安全應用程序制作一個簡單的應用程序或算法。Fresco[3]就是一個在SDN的應用層面編寫安全應用的例子,FRΕSCO 部署在開源控制器 NOX 之上,由應用層和安全執行內核兩部分組成。同時,它提供了由 Python 腳本語言編寫的 API 接口,使得研究人員可以自己編寫具有安全監控和威脅檢測功能的 Module 安全模塊。
SDN中數據平面設備只進行分組轉發即可,所有指令由控制層下發。數據平面的擴展有AVANT-GUARD[4],通過引入連接遷移和執行觸發器模塊,當新的數據包到達 SDN 的交換機時,交換機首先檢測流表中是否存在與該數據包匹配的流表項。若流表中包含與該數據包匹配的流表項,則交換機按照相應的流表項轉發該數據包。否則,AVANT-GUARD 便啟動連接遷移功能,將相關的數據包信息遷移至連接遷移模塊。

如上文所述,DDoS通過從多個來源發送大量的虛假數據包,使服務器變得不可用。早期DoS攻擊屬于點對點攻擊,只有一個源攻擊者和單個受害者。隨著時間的推移,它的攻擊方式逐漸演變為通過控制網絡中大量分布式的傀儡主機同時向受害者發起攻擊。即使現在,DDoS攻擊也很容易執行,DDoS攻擊流程如圖1所示。
DDoS大體可以分為兩種類型。
2.1.1 網絡層和傳輸層的DDoS攻擊
攻擊者操縱攻擊源向目標網絡發送大量的垃圾流量,致使其可用帶寬急劇降低,從而導致目標主機無法與外界進行正常通信,常見的攻擊方法有UDP Flood和ICMP Flood。UDP Flood攻擊使用大量的UDP數據包(隨機或同一端口)來攻擊受害者,而ICMP Flood使用ICMP的回顯請求數據包來干擾到達受害者的合法流量。
2.1.2 應用層的DDoS攻擊
即主機資源耗盡型攻擊,利用目標主機提供的網絡服務或者網絡協議中的某種特性發送超出目標主機處理能力的虛假請求,大量占用諸如內存、CPU等系統資源。例如SYN泛洪攻擊,發送大量偽造的TCP連接請求,從而使得被攻擊方資源耗盡。
(1)在應用層,SDN的北向接口開放性使得惡意代碼植入成為了可能。
(2)在控制層,攻擊者可以通過發送大量新流,使邏輯集中的控制器帶寬資源耗盡,造成單點失效。
(3)在數據層,攻擊方式類似于傳統網絡,通過發送大量數據包阻塞數據傳輸鏈路,或者利用協議漏洞造成系統拒絕服務。
通常來講阻止受害者服務器與互聯網或主服務器的連接是抵御DDOS攻擊的唯一方法。然而阻止源是最困難的方式,因為攻擊者通過DDoS攻擊從大量分布式僵尸主機發起攻擊,因此防御是一個具有挑戰性的問題。本節,我們將介紹各種現有的DDOS攻擊檢測和防御方法。
DaMask[5]提出了兩個模塊:DaMask-D是基于異常的檢測模塊,DaMask-M是具有策略選擇和日志生成功能的防御模塊。DAMASK-D檢測模塊采用概率圖模型,解決了數據集移位問題。當DaMask-M收到DaMask-D的警報時,DaMask-M匹配不同攻擊的合適對策,并在網絡控制器上為新類型的攻擊(未記錄在日志數據庫中)注冊一個新的對策策略。T Chin等人提出了類似的方法[6]。針對SYN洪水攻擊,使用Monitors和 Correlators協 作 來 防 范。Monitors與DaMask-D具有相同的作用,而Correlators與DaMask-M具有相同的作用。
VAVΕ[7]是 對 Source Address Validation Improvements(SAVI)的改進,用于對抗IP欺騙。VAVΕ采用OpenFlow協議以全局視角解決源地址驗證問題,它可以分析網絡上的所有流量,并動態更新防止IP欺騙的規則。
CPRecovery[8]提供了SDN控制器的主備份復制方法,可用于從發生故障的主控制器平滑過渡到另一個輔助(備份)控制器(復制階段),反之亦然(恢復階段)。這個轉換由非活動探測器通過狀態更新消息進行標記,狀態更新消息在兩個控制器上交換。這種方法可以防止SDN在遭受DDoS攻擊時造成單點失效。
FlowTrApp[9]提出了一種流量分析框架,通過對流的速率和流持續時間的統計來識別攻擊流量。在第一次檢測到異常時不會阻止攻擊者,當攻擊者頻繁發送與合法流量模式不匹配的惡意流量時,才會進行阻止。
Belyaev[10]等人引入了新的負載均衡方法,成功增加了DDoS攻擊成本。當服務器上發生攻擊時,負載均衡算法開始重寫路由表,使用Bellman-Ford算法定義到端點服務器的最短路徑,以分散攻擊流量。
SHDA[11]提出了一種應用層防御機制,可以檢測和防御與合法用戶具有類似流量模式的慢速HTTP DDOS攻擊。SHDA一旦通過檢測算法發現有不完整的HTTP請求,便會通過控制器更新流規則。

SDN網絡架構以其集中的網絡監控和資源調配、集中的規則控制等功能增強了網絡安全性,將網絡發展推向動態、經濟、高效的新層面。然而這些新特性也增加了新的攻擊機會,之前針對傳統網絡的安全工作無法適用于SDN中,這其中最為顯著的威脅就是DDoS攻擊。本文有助于了解如何充分利用SDN的優勢來抵御DDoS攻擊,以及如何防止SDN本身成為DDoS攻擊的受害者,這對SDN避免遭受DDoS攻擊至關重要。