錢振勇
(紹興文理學院,浙江 紹興 312000)
在拒絕服務攻擊中,如果處在不同位置的多個攻擊者同時向一個或多個目標發起拒絕服務攻擊,或者一個或多個攻擊者控制了位于不同位置的多臺計算機,并利用這些計算機對受害者同時實施拒絕服務攻擊,則稱這種攻擊為分布式拒絕服務攻擊(DDoS)[1]。拒絕服務攻擊主要是以網站、路由器或者域名服務器等網站基礎設施作為攻擊目標,因此危害非常大,常常會對被攻擊對象造成嚴重的損失。
軟件定義網絡(software-defined networking即SDN)[2]作為一種新型的網絡架構,可以在不改變硬件的前提下,以中央控制的方式來利用軟件重新規劃并部署網絡。其核心思想是實現控制層和轉發層分離,交換機只負責高速轉發,所有交換機的控制、管理和決策功能全部集中在控制器[3]。但是也正是因為控制器的高度集中化,一旦控制器受到攻擊,會導致整個網絡癱瘓[4]。
SDN以一種全新的網絡部署架構為抵制DDoS攻擊提供全新的思路和解決方法。在傳統網絡方式中,每年都有大量的網絡因為DDoS造成不可預估的損失。本文旨在模擬SDN架構中測試DDoS的攻擊與防御,對真實網絡各層架構的部署具有一定的借鑒意義。
DDoS攻擊是一種特殊的DOS攻擊,是指在不同位置的多個攻擊者同時向一個或多個目標發起DOS攻擊,能夠以較小的代價使得目標無法響應甚至癱瘓。DDoS攻擊是一種分布式的、大規模的攻擊方式,因此DDoS攻擊的危害也是巨大的,會造成無法估計的損失。
本文中模擬使用的是Ping Flood攻擊,其基本原理是向受害主機(服務器)發送大量請求,攻擊者不斷發送ping命令,利用ICMP回顯請求報文來淹沒目標,導致目標主機無法正常訪問流量。此時,站在正常用戶的角度來看,服務器就會非常卡頓甚至出現不響應的現象,這就造成了服務器的癱瘓。目前,對此類攻擊的檢測技術相對成熟[5-7],可以有效檢測并防御。
Ping Flood攻擊的原理就是利用了ICMP協議的漏洞,因為ICMP在請求時需要有服務器來處理每一個請求并回應,所以Ping Flood攻擊就以壓倒性的趨勢不斷發送請求從而導致流量網絡連接過載出現崩潰的情況。本文模擬測試的是用兩臺主機不斷發送Ping Flood攻擊,使得第三臺主機的流量迅速激增,導致網絡發生中斷,無法正常訪問。可以分為以下兩個步驟:
(1)多個攻擊者主機向目標主機發送大量的ICMP回顯請求報文。
(2)目標主機需要響應每個請求的設備,發送回應應答。
由于傳統網絡和網絡設備在過去存在只可配置、不可編程的問題,導致網絡的分布式管理架構會帶來制約,無法滿足日益增長和不斷變化的需求[8],因此提出了一種新型架構SDN架構——一種將網絡控制、轉發和應用進行分離,實現控制管理加可編程的架構。
SDN網絡架構的出現,引起了網絡安全中的一股熱潮,新型模式的設計搭建使得在抵御網絡攻擊中有著更加優秀的表現,由于SDN架構實現了控制器的高度集中化,在網絡部署多樣性上做了一定的突破。
SDN是一種將數據的控制進行分離,實現了軟件可編程的新型架構。其結構如圖1所示。

圖1 SDN基本結構圖
轉發層,相當于是傳統網絡中的交換機,默認狀態下會存放一張轉發表,區別于傳統自學習的方式,SDN中的轉發表優先級為0,在不知道如何進行轉發的時候,會交給控制器進行處理,并記錄路徑,最后會發送回到轉發層。
控制層,相當于在傳統網絡結構中多加了一層,用程序控制下面的轉發層,轉發層和控制層之間利用通信接口連接。常見的網絡服務主要有opendaylight、ryu、floodlight等等。
應用層的主要任務就是通過API將業務應用接入控制器控制流表,實現對轉發的控制。
基于Ubuntu操作系統下的mininet網絡仿真SDN平臺,由于mininet其本身強大的系統兼容性,可以便利模擬真實環境中的網絡操作與架構。相關設備包括:
ryu控制器:一款SDN控制器。
postman:一款API調試工具,可以對流表進行相關操作。
sFlow:適用于高速交換網絡中的監控軟件,可以實時監控在DOS攻擊下流量信息的實時變化。
利用mininet的仿真軟件定義網絡架構進行測試。因為其支持使用OpenFlow協議和多種網絡相關工具,使得mininet操作使用更加高效,能更好地達到我們所期待的效果。具體可參考OpenFlow Specification[9]。在mininet可視化工具下,創建如圖2所示的網絡拓撲結構。

圖2 網絡拓撲結構
從上至下分別是控制器、交換器和主機,將控制器設置為一個遠程控制器,交換機的DPID是00000000000000001,設置h1-h3主機的IP地址為10.0.0.1-10.0.0.3,并將整個網絡結構設置為全局模式,對比局部模式有助于控制器c0進行相關的操作。
在鏈路信息相通的前提下,在交換機上配置sFlow以便于收集器能在網站中收集到流量信息從而進行數據可視化操作。查看sFlow的WEBUI并在在本地瀏覽器打開8008端口網址,可以看見實時的監控狀態。
接下來進行模擬DDoS攻擊,測試過程中為了模擬真實網絡情況,設置了兩個攻擊者和一個被攻擊者,將h1和h2同時作為攻擊者對h3進行Ping Flood攻擊,在攻擊的同時對流量信息進行實時監控。
攻擊前,需要檢查流量信息是否處于一個正常水平的狀態,所以在h1終端中去ping h3,h2終端中去ping h3。結果顯示,當在h1、h2終端中ping h3的時候,流量信息相較之前顯著提高,但是仍然處在一個正常的水平狀態,具體信息如圖3所示。

圖3 流量信息檢測圖(攻擊前)
確認了當前流量信息處于正常水平后,模擬進行Ping Flood攻擊。具體操作過程如下:第一步:安裝curl文件傳輸工具,對h3主機開啟一個http服務。利用h2對h3進行服務訪問,可以看見正常服務連接。第二步:將h1主機作為一個攻擊者向h3主機進行Ping Flood攻擊,用來模擬DDoS攻擊。

圖4 流量信息檢測圖(攻擊后)
結果顯示,監測到的傳輸流量迅速增長,CPU占用和內存占用也大幅度增加,此時CPU的占用率達到了100%。
維持當前狀態下,在h1、h2和h3三臺主機上模擬實現抵御DDoS的攻擊,目的是要將cpu的占用率降低并且使得網址可以正常訪問。其核心思想是,當檢查到流量信息處于異常狀態時,利用mininet平臺支持的ryu控制器對交換機下發流表,從而抑制攻擊流量。
流表是openFlow中的概念,可以抽象認為流表是open-Flow對網絡設備管理的數據轉發功能的一種體現,記錄的是交換機在運轉過程中數據的轉發。而每一張流表都是由很多條流表項組成的,對應著網絡傳輸中的一條條流。流表作為數據轉發的核心控制中心,交換機會通過查找流表項來處理網絡傳輸中的各類數據。而下發流表就如同下發指令,指明交換機在收到數據后的操作。
抑制流量可以通過postman對流表完成操作。抑制攻擊流量的主要思想如下:
(1)本文模擬使用的是Ping Flood攻擊,因此可以通過下發流表的操作,抑制交換機中端口傳輸的流量。
(2)SDN交換機流表的表項中整合了網絡中各個層次的網絡配置信息,且每個表項中包含Priority、Timeout、cookie、port等字段,利用get操作可以獲得已存在的流表,為了在不影響正常的HTTP服務的前提下銷毀掉ICMP的流量,在原來的基礎上,添加代表ip協議、priority優先級、port端口號的字段等,在post方式下,在body中進行流表編寫。
通過測試,在進行Ping Flood攻擊時,為了呈現更加直觀的效果,將上述過程的流量檢測信息用曲線圖來表示,從正常到開始進行Ping Flood攻擊整個過程如圖5所示。

圖5 流量監測曲線圖(攻擊時)
發現在h1和h2同時作為攻擊者去攻擊h3后,流量信息曲線呈現指數級瞬間上漲,從0漲到600k,并保持在700K上下起伏。而在進行DDoS攻擊緩解的時候,從抑制攻擊流量開始到測試結束,流量信息曲線下降也是呈現指數級,瞬間從700K左右下降到0K,并迅速保持平穩,如圖6所示。這個時候網站已經可以被正常訪問了。

圖6 流量檢測曲線圖(緩解時)
而對于傳統網絡的部署,是無法做到像SDN那樣可以實時監控端口傳輸流量信息的。在SDN網絡架構中,通過對網絡或端口流量進行實時監控,提取關鍵信息,繪制圖表進行分析,通過數據可視化可以實時捕捉各種異常狀態并及時做出相應的處理。
本文基于mininet平臺模擬仿真SDN架構研究DDoS的攻擊和防御,為真實網絡監控提供一定的借鑒意義。利用sFlow來實時監控傳輸流量信息的變化,并在曲線圖中繪制出來得到更加直觀的結果。利用SDN架構的網絡拓撲結構,以中央控制的方式部署網絡結構相較于傳統的網絡部署方式更加具有防御性,對抑制DDoS攻擊更加有效。