文/高曉楠
近年來隨著網(wǎng)絡(luò)需求的不斷增長以及流量模式的不斷變化,傳統(tǒng)網(wǎng)絡(luò)體系已經(jīng)不再適用,SDN架構(gòu)做為一種新的網(wǎng)絡(luò)體系產(chǎn)生。在SDN中,控制和數(shù)據(jù)平面是分離的,網(wǎng)絡(luò)信息和狀態(tài)在邏輯上是由控制器集中控制的,應(yīng)用程序可以實(shí)現(xiàn)對底層網(wǎng)絡(luò)基礎(chǔ)設(shè)施的抽象。SDN體系結(jié)構(gòu)以其集中監(jiān)控和資源調(diào)配、安全策略等基本功能增強(qiáng)了網(wǎng)絡(luò)的安全性,而這些功能在傳統(tǒng)網(wǎng)絡(luò)體系中并不存在。這些特性為SDN在抵御DDoS攻擊提供了新的機(jī)會(huì)。在當(dāng)下網(wǎng)絡(luò)環(huán)境中,高可用性至關(guān)重要,而拒絕服務(wù)(DoS)攻擊和分布式服務(wù)(DDoS)泛洪攻擊是破壞網(wǎng)絡(luò)可用性的主要方法。DoS攻擊或DDoS攻擊是企圖使其目標(biāo)用戶無法使用網(wǎng)絡(luò)資源。由于DoS攻擊可以被視為一種特殊類型的DDoS攻擊,因此在本文的其余部分中,我們只使用術(shù)語DDoS攻擊來指示DoS和DDoS攻擊。雖然SDN的功能(例如,基于軟件的流量分析,邏輯上的集中控制,網(wǎng)絡(luò)的全局視圖以及轉(zhuǎn)發(fā)規(guī)則的動(dòng)態(tài)更新)使得檢測和響應(yīng)DDoS攻擊變得容易,但是SDN中數(shù)據(jù)平面與控制平面的分離也增加了新的攻擊機(jī)會(huì)。 SDN控制層本身可能成為某些攻擊的目標(biāo),并且SDN平臺上可能存在潛在的DDoS漏洞。例如,攻擊者可以利用SDN的特性對SDN的控制層,基礎(chǔ)設(shè)施層平面和應(yīng)用層發(fā)起DDoS攻擊。
圖1:DDoS攻擊流程
將網(wǎng)絡(luò)控制和數(shù)據(jù)平面解耦,可以方便地設(shè)計(jì)和執(zhí)行網(wǎng)絡(luò)流量控制算法,從而使網(wǎng)絡(luò)流量控制更加高效。
用此功能,我們可以動(dòng)態(tài)地將惡意網(wǎng)絡(luò)流與良性網(wǎng)絡(luò)流分開,而無需像在傳統(tǒng)網(wǎng)絡(luò)上那樣安裝防火墻。例如,基于IΕΕΕ802.1X標(biāo) 準(zhǔn)(ΕAPOL中 的 ΕAPOL) 擴(kuò) 展 的FlowNAC[1],實(shí)現(xiàn)了基于流的網(wǎng)絡(luò)訪問控制,并用于評估和分類來自用戶的傳入幀。
SDN實(shí)現(xiàn)了邏輯上的集中控制,這使得使SDN能夠及時(shí)接收所有網(wǎng)絡(luò)狀態(tài)信息,以便監(jiān)控和提供網(wǎng)絡(luò)中的任何威脅。CloudWatcher[2]便是利用此功能在基于SDN的云環(huán)境上進(jìn)行安全監(jiān)控的框架之一。
SDN通過應(yīng)用程序編程接口(API)提供控制平面可編程性。有了這個(gè)特性,網(wǎng)絡(luò)管理員可以很容易地為安全應(yīng)用程序制作一個(gè)簡單的應(yīng)用程序或算法。Fresco[3]就是一個(gè)在SDN的應(yīng)用層面編寫安全應(yīng)用的例子,F(xiàn)RΕSCO 部署在開源控制器 NOX 之上,由應(yīng)用層和安全執(zhí)行內(nèi)核兩部分組成。同時(shí),它提供了由 Python 腳本語言編寫的 API 接口,使得研究人員可以自己編寫具有安全監(jiān)控和威脅檢測功能的 Module 安全模塊。
SDN中數(shù)據(jù)平面設(shè)備只進(jìn)行分組轉(zhuǎn)發(fā)即可,所有指令由控制層下發(fā)。數(shù)據(jù)平面的擴(kuò)展有AVANT-GUARD[4],通過引入連接遷移和執(zhí)行觸發(fā)器模塊,當(dāng)新的數(shù)據(jù)包到達(dá) SDN 的交換機(jī)時(shí),交換機(jī)首先檢測流表中是否存在與該數(shù)據(jù)包匹配的流表項(xiàng)。若流表中包含與該數(shù)據(jù)包匹配的流表項(xiàng),則交換機(jī)按照相應(yīng)的流表項(xiàng)轉(zhuǎn)發(fā)該數(shù)據(jù)包。否則,AVANT-GUARD 便啟動(dòng)連接遷移功能,將相關(guān)的數(shù)據(jù)包信息遷移至連接遷移模塊。
如上文所述,DDoS通過從多個(gè)來源發(fā)送大量的虛假數(shù)據(jù)包,使服務(wù)器變得不可用。早期DoS攻擊屬于點(diǎn)對點(diǎn)攻擊,只有一個(gè)源攻擊者和單個(gè)受害者。隨著時(shí)間的推移,它的攻擊方式逐漸演變?yōu)橥ㄟ^控制網(wǎng)絡(luò)中大量分布式的傀儡主機(jī)同時(shí)向受害者發(fā)起攻擊。即使現(xiàn)在,DDoS攻擊也很容易執(zhí)行,DDoS攻擊流程如圖1所示。
DDoS大體可以分為兩種類型。
2.1.1 網(wǎng)絡(luò)層和傳輸層的DDoS攻擊
攻擊者操縱攻擊源向目標(biāo)網(wǎng)絡(luò)發(fā)送大量的垃圾流量,致使其可用帶寬急劇降低,從而導(dǎo)致目標(biāo)主機(jī)無法與外界進(jìn)行正常通信,常見的攻擊方法有UDP Flood和ICMP Flood。UDP Flood攻擊使用大量的UDP數(shù)據(jù)包(隨機(jī)或同一端口)來攻擊受害者,而ICMP Flood使用ICMP的回顯請求數(shù)據(jù)包來干擾到達(dá)受害者的合法流量。
2.1.2 應(yīng)用層的DDoS攻擊
即主機(jī)資源耗盡型攻擊,利用目標(biāo)主機(jī)提供的網(wǎng)絡(luò)服務(wù)或者網(wǎng)絡(luò)協(xié)議中的某種特性發(fā)送超出目標(biāo)主機(jī)處理能力的虛假請求,大量占用諸如內(nèi)存、CPU等系統(tǒng)資源。例如SYN泛洪攻擊,發(fā)送大量偽造的TCP連接請求,從而使得被攻擊方資源耗盡。
(1)在應(yīng)用層,SDN的北向接口開放性使得惡意代碼植入成為了可能。
(2)在控制層,攻擊者可以通過發(fā)送大量新流,使邏輯集中的控制器帶寬資源耗盡,造成單點(diǎn)失效。
(3)在數(shù)據(jù)層,攻擊方式類似于傳統(tǒng)網(wǎng)絡(luò),通過發(fā)送大量數(shù)據(jù)包阻塞數(shù)據(jù)傳輸鏈路,或者利用協(xié)議漏洞造成系統(tǒng)拒絕服務(wù)。
通常來講阻止受害者服務(wù)器與互聯(lián)網(wǎng)或主服務(wù)器的連接是抵御DDOS攻擊的唯一方法。然而阻止源是最困難的方式,因?yàn)楣粽咄ㄟ^DDoS攻擊從大量分布式僵尸主機(jī)發(fā)起攻擊,因此防御是一個(gè)具有挑戰(zhàn)性的問題。本節(jié),我們將介紹各種現(xiàn)有的DDOS攻擊檢測和防御方法。
DaMask[5]提出了兩個(gè)模塊:DaMask-D是基于異常的檢測模塊,DaMask-M是具有策略選擇和日志生成功能的防御模塊。DAMASK-D檢測模塊采用概率圖模型,解決了數(shù)據(jù)集移位問題。當(dāng)DaMask-M收到DaMask-D的警報(bào)時(shí),DaMask-M匹配不同攻擊的合適對策,并在網(wǎng)絡(luò)控制器上為新類型的攻擊(未記錄在日志數(shù)據(jù)庫中)注冊一個(gè)新的對策策略。T Chin等人提出了類似的方法[6]。針對SYN洪水攻擊,使用Monitors和 Correlators協(xié) 作 來 防 范。Monitors與DaMask-D具有相同的作用,而Correlators與DaMask-M具有相同的作用。
VAVΕ[7]是 對 Source Address Validation Improvements(SAVI)的改進(jìn),用于對抗IP欺騙。VAVΕ采用OpenFlow協(xié)議以全局視角解決源地址驗(yàn)證問題,它可以分析網(wǎng)絡(luò)上的所有流量,并動(dòng)態(tài)更新防止IP欺騙的規(guī)則。
CPRecovery[8]提供了SDN控制器的主備份復(fù)制方法,可用于從發(fā)生故障的主控制器平滑過渡到另一個(gè)輔助(備份)控制器(復(fù)制階段),反之亦然(恢復(fù)階段)。這個(gè)轉(zhuǎn)換由非活動(dòng)探測器通過狀態(tài)更新消息進(jìn)行標(biāo)記,狀態(tài)更新消息在兩個(gè)控制器上交換。這種方法可以防止SDN在遭受DDoS攻擊時(shí)造成單點(diǎn)失效。
FlowTrApp[9]提出了一種流量分析框架,通過對流的速率和流持續(xù)時(shí)間的統(tǒng)計(jì)來識別攻擊流量。在第一次檢測到異常時(shí)不會(huì)阻止攻擊者,當(dāng)攻擊者頻繁發(fā)送與合法流量模式不匹配的惡意流量時(shí),才會(huì)進(jìn)行阻止。
Belyaev[10]等人引入了新的負(fù)載均衡方法,成功增加了DDoS攻擊成本。當(dāng)服務(wù)器上發(fā)生攻擊時(shí),負(fù)載均衡算法開始重寫路由表,使用Bellman-Ford算法定義到端點(diǎn)服務(wù)器的最短路徑,以分散攻擊流量。
SHDA[11]提出了一種應(yīng)用層防御機(jī)制,可以檢測和防御與合法用戶具有類似流量模式的慢速HTTP DDOS攻擊。SHDA一旦通過檢測算法發(fā)現(xiàn)有不完整的HTTP請求,便會(huì)通過控制器更新流規(guī)則。
SDN網(wǎng)絡(luò)架構(gòu)以其集中的網(wǎng)絡(luò)監(jiān)控和資源調(diào)配、集中的規(guī)則控制等功能增強(qiáng)了網(wǎng)絡(luò)安全性,將網(wǎng)絡(luò)發(fā)展推向動(dòng)態(tài)、經(jīng)濟(jì)、高效的新層面。然而這些新特性也增加了新的攻擊機(jī)會(huì),之前針對傳統(tǒng)網(wǎng)絡(luò)的安全工作無法適用于SDN中,這其中最為顯著的威脅就是DDoS攻擊。本文有助于了解如何充分利用SDN的優(yōu)勢來抵御DDoS攻擊,以及如何防止SDN本身成為DDoS攻擊的受害者,這對SDN避免遭受DDoS攻擊至關(guān)重要。