錢振勇
(紹興文理學(xué)院,浙江 紹興 312000)
在拒絕服務(wù)攻擊中,如果處在不同位置的多個(gè)攻擊者同時(shí)向一個(gè)或多個(gè)目標(biāo)發(fā)起拒絕服務(wù)攻擊,或者一個(gè)或多個(gè)攻擊者控制了位于不同位置的多臺(tái)計(jì)算機(jī),并利用這些計(jì)算機(jī)對(duì)受害者同時(shí)實(shí)施拒絕服務(wù)攻擊,則稱這種攻擊為分布式拒絕服務(wù)攻擊(DDoS)[1]。拒絕服務(wù)攻擊主要是以網(wǎng)站、路由器或者域名服務(wù)器等網(wǎng)站基礎(chǔ)設(shè)施作為攻擊目標(biāo),因此危害非常大,常常會(huì)對(duì)被攻擊對(duì)象造成嚴(yán)重的損失。
軟件定義網(wǎng)絡(luò)(software-defined networking即SDN)[2]作為一種新型的網(wǎng)絡(luò)架構(gòu),可以在不改變硬件的前提下,以中央控制的方式來(lái)利用軟件重新規(guī)劃并部署網(wǎng)絡(luò)。其核心思想是實(shí)現(xiàn)控制層和轉(zhuǎn)發(fā)層分離,交換機(jī)只負(fù)責(zé)高速轉(zhuǎn)發(fā),所有交換機(jī)的控制、管理和決策功能全部集中在控制器[3]。但是也正是因?yàn)榭刂破鞯母叨燃谢?,一旦控制器受到攻擊,?huì)導(dǎo)致整個(gè)網(wǎng)絡(luò)癱瘓[4]。
SDN以一種全新的網(wǎng)絡(luò)部署架構(gòu)為抵制DDoS攻擊提供全新的思路和解決方法。在傳統(tǒng)網(wǎng)絡(luò)方式中,每年都有大量的網(wǎng)絡(luò)因?yàn)镈DoS造成不可預(yù)估的損失。本文旨在模擬SDN架構(gòu)中測(cè)試DDoS的攻擊與防御,對(duì)真實(shí)網(wǎng)絡(luò)各層架構(gòu)的部署具有一定的借鑒意義。
DDoS攻擊是一種特殊的DOS攻擊,是指在不同位置的多個(gè)攻擊者同時(shí)向一個(gè)或多個(gè)目標(biāo)發(fā)起DOS攻擊,能夠以較小的代價(jià)使得目標(biāo)無(wú)法響應(yīng)甚至癱瘓。DDoS攻擊是一種分布式的、大規(guī)模的攻擊方式,因此DDoS攻擊的危害也是巨大的,會(huì)造成無(wú)法估計(jì)的損失。
本文中模擬使用的是Ping Flood攻擊,其基本原理是向受害主機(jī)(服務(wù)器)發(fā)送大量請(qǐng)求,攻擊者不斷發(fā)送ping命令,利用ICMP回顯請(qǐng)求報(bào)文來(lái)淹沒(méi)目標(biāo),導(dǎo)致目標(biāo)主機(jī)無(wú)法正常訪問(wèn)流量。此時(shí),站在正常用戶的角度來(lái)看,服務(wù)器就會(huì)非??D甚至出現(xiàn)不響應(yīng)的現(xiàn)象,這就造成了服務(wù)器的癱瘓。目前,對(duì)此類攻擊的檢測(cè)技術(shù)相對(duì)成熟[5-7],可以有效檢測(cè)并防御。
Ping Flood攻擊的原理就是利用了ICMP協(xié)議的漏洞,因?yàn)镮CMP在請(qǐng)求時(shí)需要有服務(wù)器來(lái)處理每一個(gè)請(qǐng)求并回應(yīng),所以Ping Flood攻擊就以壓倒性的趨勢(shì)不斷發(fā)送請(qǐng)求從而導(dǎo)致流量網(wǎng)絡(luò)連接過(guò)載出現(xiàn)崩潰的情況。本文模擬測(cè)試的是用兩臺(tái)主機(jī)不斷發(fā)送Ping Flood攻擊,使得第三臺(tái)主機(jī)的流量迅速激增,導(dǎo)致網(wǎng)絡(luò)發(fā)生中斷,無(wú)法正常訪問(wèn)??梢苑譃橐韵聝蓚€(gè)步驟:
(1)多個(gè)攻擊者主機(jī)向目標(biāo)主機(jī)發(fā)送大量的ICMP回顯請(qǐng)求報(bào)文。
(2)目標(biāo)主機(jī)需要響應(yīng)每個(gè)請(qǐng)求的設(shè)備,發(fā)送回應(yīng)應(yīng)答。
由于傳統(tǒng)網(wǎng)絡(luò)和網(wǎng)絡(luò)設(shè)備在過(guò)去存在只可配置、不可編程的問(wèn)題,導(dǎo)致網(wǎng)絡(luò)的分布式管理架構(gòu)會(huì)帶來(lái)制約,無(wú)法滿足日益增長(zhǎng)和不斷變化的需求[8],因此提出了一種新型架構(gòu)SDN架構(gòu)——一種將網(wǎng)絡(luò)控制、轉(zhuǎn)發(fā)和應(yīng)用進(jìn)行分離,實(shí)現(xiàn)控制管理加可編程的架構(gòu)。
SDN網(wǎng)絡(luò)架構(gòu)的出現(xiàn),引起了網(wǎng)絡(luò)安全中的一股熱潮,新型模式的設(shè)計(jì)搭建使得在抵御網(wǎng)絡(luò)攻擊中有著更加優(yōu)秀的表現(xiàn),由于SDN架構(gòu)實(shí)現(xiàn)了控制器的高度集中化,在網(wǎng)絡(luò)部署多樣性上做了一定的突破。
SDN是一種將數(shù)據(jù)的控制進(jìn)行分離,實(shí)現(xiàn)了軟件可編程的新型架構(gòu)。其結(jié)構(gòu)如圖1所示。
圖1 SDN基本結(jié)構(gòu)圖
轉(zhuǎn)發(fā)層,相當(dāng)于是傳統(tǒng)網(wǎng)絡(luò)中的交換機(jī),默認(rèn)狀態(tài)下會(huì)存放一張轉(zhuǎn)發(fā)表,區(qū)別于傳統(tǒng)自學(xué)習(xí)的方式,SDN中的轉(zhuǎn)發(fā)表優(yōu)先級(jí)為0,在不知道如何進(jìn)行轉(zhuǎn)發(fā)的時(shí)候,會(huì)交給控制器進(jìn)行處理,并記錄路徑,最后會(huì)發(fā)送回到轉(zhuǎn)發(fā)層。
控制層,相當(dāng)于在傳統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)中多加了一層,用程序控制下面的轉(zhuǎn)發(fā)層,轉(zhuǎn)發(fā)層和控制層之間利用通信接口連接。常見(jiàn)的網(wǎng)絡(luò)服務(wù)主要有opendaylight、ryu、floodlight等等。
應(yīng)用層的主要任務(wù)就是通過(guò)API將業(yè)務(wù)應(yīng)用接入控制器控制流表,實(shí)現(xiàn)對(duì)轉(zhuǎn)發(fā)的控制。
基于Ubuntu操作系統(tǒng)下的mininet網(wǎng)絡(luò)仿真SDN平臺(tái),由于mininet其本身強(qiáng)大的系統(tǒng)兼容性,可以便利模擬真實(shí)環(huán)境中的網(wǎng)絡(luò)操作與架構(gòu)。相關(guān)設(shè)備包括:
ryu控制器:一款SDN控制器。
postman:一款A(yù)PI調(diào)試工具,可以對(duì)流表進(jìn)行相關(guān)操作。
sFlow:適用于高速交換網(wǎng)絡(luò)中的監(jiān)控軟件,可以實(shí)時(shí)監(jiān)控在DOS攻擊下流量信息的實(shí)時(shí)變化。
利用mininet的仿真軟件定義網(wǎng)絡(luò)架構(gòu)進(jìn)行測(cè)試。因?yàn)槠渲С质褂肙penFlow協(xié)議和多種網(wǎng)絡(luò)相關(guān)工具,使得mininet操作使用更加高效,能更好地達(dá)到我們所期待的效果。具體可參考OpenFlow Specification[9]。在mininet可視化工具下,創(chuàng)建如圖2所示的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
圖2 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
從上至下分別是控制器、交換器和主機(jī),將控制器設(shè)置為一個(gè)遠(yuǎn)程控制器,交換機(jī)的DPID是00000000000000001,設(shè)置h1-h3主機(jī)的IP地址為10.0.0.1-10.0.0.3,并將整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置為全局模式,對(duì)比局部模式有助于控制器c0進(jìn)行相關(guān)的操作。
在鏈路信息相通的前提下,在交換機(jī)上配置sFlow以便于收集器能在網(wǎng)站中收集到流量信息從而進(jìn)行數(shù)據(jù)可視化操作。查看sFlow的WEBUI并在在本地瀏覽器打開(kāi)8008端口網(wǎng)址,可以看見(jiàn)實(shí)時(shí)的監(jiān)控狀態(tài)。
接下來(lái)進(jìn)行模擬DDoS攻擊,測(cè)試過(guò)程中為了模擬真實(shí)網(wǎng)絡(luò)情況,設(shè)置了兩個(gè)攻擊者和一個(gè)被攻擊者,將h1和h2同時(shí)作為攻擊者對(duì)h3進(jìn)行Ping Flood攻擊,在攻擊的同時(shí)對(duì)流量信息進(jìn)行實(shí)時(shí)監(jiān)控。
攻擊前,需要檢查流量信息是否處于一個(gè)正常水平的狀態(tài),所以在h1終端中去ping h3,h2終端中去ping h3。結(jié)果顯示,當(dāng)在h1、h2終端中ping h3的時(shí)候,流量信息相較之前顯著提高,但是仍然處在一個(gè)正常的水平狀態(tài),具體信息如圖3所示。
圖3 流量信息檢測(cè)圖(攻擊前)
確認(rèn)了當(dāng)前流量信息處于正常水平后,模擬進(jìn)行Ping Flood攻擊。具體操作過(guò)程如下:第一步:安裝curl文件傳輸工具,對(duì)h3主機(jī)開(kāi)啟一個(gè)http服務(wù)。利用h2對(duì)h3進(jìn)行服務(wù)訪問(wèn),可以看見(jiàn)正常服務(wù)連接。第二步:將h1主機(jī)作為一個(gè)攻擊者向h3主機(jī)進(jìn)行Ping Flood攻擊,用來(lái)模擬DDoS攻擊。
圖4 流量信息檢測(cè)圖(攻擊后)
結(jié)果顯示,監(jiān)測(cè)到的傳輸流量迅速增長(zhǎng),CPU占用和內(nèi)存占用也大幅度增加,此時(shí)CPU的占用率達(dá)到了100%。
維持當(dāng)前狀態(tài)下,在h1、h2和h3三臺(tái)主機(jī)上模擬實(shí)現(xiàn)抵御DDoS的攻擊,目的是要將cpu的占用率降低并且使得網(wǎng)址可以正常訪問(wèn)。其核心思想是,當(dāng)檢查到流量信息處于異常狀態(tài)時(shí),利用mininet平臺(tái)支持的ryu控制器對(duì)交換機(jī)下發(fā)流表,從而抑制攻擊流量。
流表是openFlow中的概念,可以抽象認(rèn)為流表是open-Flow對(duì)網(wǎng)絡(luò)設(shè)備管理的數(shù)據(jù)轉(zhuǎn)發(fā)功能的一種體現(xiàn),記錄的是交換機(jī)在運(yùn)轉(zhuǎn)過(guò)程中數(shù)據(jù)的轉(zhuǎn)發(fā)。而每一張流表都是由很多條流表項(xiàng)組成的,對(duì)應(yīng)著網(wǎng)絡(luò)傳輸中的一條條流。流表作為數(shù)據(jù)轉(zhuǎn)發(fā)的核心控制中心,交換機(jī)會(huì)通過(guò)查找流表項(xiàng)來(lái)處理網(wǎng)絡(luò)傳輸中的各類數(shù)據(jù)。而下發(fā)流表就如同下發(fā)指令,指明交換機(jī)在收到數(shù)據(jù)后的操作。
抑制流量可以通過(guò)postman對(duì)流表完成操作。抑制攻擊流量的主要思想如下:
(1)本文模擬使用的是Ping Flood攻擊,因此可以通過(guò)下發(fā)流表的操作,抑制交換機(jī)中端口傳輸?shù)牧髁俊?/p>
(2)SDN交換機(jī)流表的表項(xiàng)中整合了網(wǎng)絡(luò)中各個(gè)層次的網(wǎng)絡(luò)配置信息,且每個(gè)表項(xiàng)中包含Priority、Timeout、cookie、port等字段,利用get操作可以獲得已存在的流表,為了在不影響正常的HTTP服務(wù)的前提下銷毀掉ICMP的流量,在原來(lái)的基礎(chǔ)上,添加代表ip協(xié)議、priority優(yōu)先級(jí)、port端口號(hào)的字段等,在post方式下,在body中進(jìn)行流表編寫。
通過(guò)測(cè)試,在進(jìn)行Ping Flood攻擊時(shí),為了呈現(xiàn)更加直觀的效果,將上述過(guò)程的流量檢測(cè)信息用曲線圖來(lái)表示,從正常到開(kāi)始進(jìn)行Ping Flood攻擊整個(gè)過(guò)程如圖5所示。
圖5 流量監(jiān)測(cè)曲線圖(攻擊時(shí))
發(fā)現(xiàn)在h1和h2同時(shí)作為攻擊者去攻擊h3后,流量信息曲線呈現(xiàn)指數(shù)級(jí)瞬間上漲,從0漲到600k,并保持在700K上下起伏。而在進(jìn)行DDoS攻擊緩解的時(shí)候,從抑制攻擊流量開(kāi)始到測(cè)試結(jié)束,流量信息曲線下降也是呈現(xiàn)指數(shù)級(jí),瞬間從700K左右下降到0K,并迅速保持平穩(wěn),如圖6所示。這個(gè)時(shí)候網(wǎng)站已經(jīng)可以被正常訪問(wèn)了。
圖6 流量檢測(cè)曲線圖(緩解時(shí))
而對(duì)于傳統(tǒng)網(wǎng)絡(luò)的部署,是無(wú)法做到像SDN那樣可以實(shí)時(shí)監(jiān)控端口傳輸流量信息的。在SDN網(wǎng)絡(luò)架構(gòu)中,通過(guò)對(duì)網(wǎng)絡(luò)或端口流量進(jìn)行實(shí)時(shí)監(jiān)控,提取關(guān)鍵信息,繪制圖表進(jìn)行分析,通過(guò)數(shù)據(jù)可視化可以實(shí)時(shí)捕捉各種異常狀態(tài)并及時(shí)做出相應(yīng)的處理。
本文基于mininet平臺(tái)模擬仿真SDN架構(gòu)研究DDoS的攻擊和防御,為真實(shí)網(wǎng)絡(luò)監(jiān)控提供一定的借鑒意義。利用sFlow來(lái)實(shí)時(shí)監(jiān)控傳輸流量信息的變化,并在曲線圖中繪制出來(lái)得到更加直觀的結(jié)果。利用SDN架構(gòu)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),以中央控制的方式部署網(wǎng)絡(luò)結(jié)構(gòu)相較于傳統(tǒng)的網(wǎng)絡(luò)部署方式更加具有防御性,對(duì)抑制DDoS攻擊更加有效。