方 峰,蔡志平,肇啟佳,林加潤,朱 明
?
使用Spark Stream ing的自適應(yīng)實時DDoS檢測和防御技術(shù)*
方峰,蔡志平+,肇啟佳,林加潤,朱明
國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院,長沙410073
ISSN 1673-9418 CODEN JKYTA8
Journal of Frontiers of Computer Science and Technology
1673-9418/2016/10(05)-0646-11
E-mail: fcst@vip.163.com http: //www.ceaj.org Tel: +86-10-89056056
* The National Natural Science Foundation of China under Grant Nos. 61379145, 61363071 (國家自然科學(xué)基金). Received 2015-07,Accepted 2015-09.
CNKI網(wǎng)絡(luò)優(yōu)先出版: 2015-10-16, http://www.cnki.net/kcms/detail/11.5602.TP.20151016.1108.006.htm l
FANG Feng, CAI Zhiping, ZHAO Qijia, et al. Adaptive technique for real-time DDoS detection and defense using Spark Stream ing. Journal of Frontiers of Com puter Science and Technology, 2016, 10(5): 601-611.
摘要:分布式拒絕服務(wù)(distributed denial of service,DDoS)攻擊是重要的安全威脅,網(wǎng)絡(luò)速度的不斷提高給傳統(tǒng)的檢測方法帶來了新的挑戰(zhàn)。以Spark等為代表的大數(shù)據(jù)處理技術(shù),給網(wǎng)絡(luò)安全的高速檢測帶來了新的契機(jī)。提出了一種基于Spark Stream ing框架的自適應(yīng)實時DDoS檢測防御技術(shù),通過對滑動窗口內(nèi)源簇進(jìn)行分組,并根據(jù)與各分組內(nèi)源簇比例的偏差統(tǒng)計,檢測出DDoS攻擊流量。通過感知合法的網(wǎng)絡(luò)流量,實現(xiàn)了對DDoS攻擊的自適應(yīng)快速檢測和有效響應(yīng)。實驗結(jié)果表明,該技術(shù)可極大地提升檢測能力,為保障網(wǎng)絡(luò)服務(wù)性能和安全檢測的可擴(kuò)展性提供了一種可行的解決方案。
關(guān)鍵詞:DDoS檢測;DDoS防御;實時檢測;自適應(yīng)檢測;Spark Stream ing
分布式拒絕服務(wù)(distributed denial of service, DDoS)攻擊是威脅極大的一類網(wǎng)絡(luò)攻擊行為。DDoS防護(hù)服務(wù)市場領(lǐng)導(dǎo)者Black Lotus發(fā)布的最新報告顯示,全球大型服務(wù)提供商都飽受各種DDoS攻擊。DDoS攻擊范圍非常廣泛,涵蓋各行各業(yè),其中64%的平臺提供商、66%的托管解決方案提供商和66%的VoIP服務(wù)提供商受到影響。DDoS攻擊是用很多計算機(jī)發(fā)起協(xié)作性的DoS攻擊來攻擊一個或者多個目標(biāo),它試圖耗盡一臺服務(wù)器的計算資源,以使服務(wù)器無法響應(yīng)合法用戶的資源請求。其典型的攻擊方法就是數(shù)據(jù)包泛洪,通過每秒發(fā)送數(shù)千個數(shù)據(jù)包到目標(biāo)主機(jī)以致網(wǎng)絡(luò)鏈路擁塞。大量的非法網(wǎng)絡(luò)流量一般是黑客通過控制連接到網(wǎng)絡(luò)的一大批肉機(jī)(僵尸網(wǎng)絡(luò))產(chǎn)生的。因為攻擊規(guī)模大和不斷變化,所以DDoS攻擊檢測和防御技術(shù)具有很大的挑戰(zhàn)性。成功的防御機(jī)制,必須能有效地過濾掉惡意流量,且盡可能小地減少對合法用戶流量的影響,能持續(xù)快速地對威脅做出響應(yīng),并具有微小的延時開銷(特別是當(dāng)沒有遭到攻擊時)。
實時異常檢測[1]的目標(biāo)是能實時捕獲系統(tǒng)中的異常行為,包括接受連續(xù)不斷的數(shù)據(jù)流,實時分析數(shù)據(jù)和及時的應(yīng)對策略,它的挑戰(zhàn)來自于輸入數(shù)據(jù)的體積、流速和復(fù)雜多樣性。但近幾年,DDoS攻擊呈現(xiàn)攻擊流量不斷增大的趨勢,可達(dá)每秒數(shù)十GB甚至數(shù)百GB的攻擊帶寬,傳統(tǒng)的防御技術(shù)和機(jī)制已很難應(yīng)對。一旦防御失敗,對于商業(yè)的持續(xù)運行將造成十分嚴(yán)重的后果。因此,企業(yè)數(shù)據(jù)中心的DDoS檢測必須建立在低延時的有大數(shù)據(jù)處理能力的可擴(kuò)展的框架上。
數(shù)據(jù)的迅猛增加使得Hadoop、Spark等大數(shù)據(jù)處理技術(shù)得到了快速發(fā)展。但是Hadoop目前只能處理批數(shù)據(jù),無法處理實時數(shù)據(jù)。Spark是一個分布式的實時數(shù)據(jù)處理的優(yōu)秀框架,相比Hadoop,它是基于內(nèi)存的計算框架,避免了傳統(tǒng)的MapReduce[2]編程模型帶來的巨大的I/O通信開銷瓶頸。目前的大數(shù)據(jù)處理性能在內(nèi)存中可達(dá)到Hadoop的100倍,在硬盤中的速度也可達(dá)到Hadoop的10倍。
Spark有兩個關(guān)鍵概念:彈性分布數(shù)據(jù)集(resilient distributed dataset,RDD)和有向無環(huán)圖(directed acyclic graph,DAG)執(zhí)行引擎。RDD是一個分布式的內(nèi)存抽象,它允許在大型分布式集群上進(jìn)行高容錯的內(nèi)存計算。Spark有兩種RDD:基于現(xiàn)有編程集合(如map、list等)的并行集合和存儲在HDFS中的文件。對RDD的操作分兩種:轉(zhuǎn)換和動作。轉(zhuǎn)換是為輸入的RDD或現(xiàn)存的RDD創(chuàng)建出一個新的數(shù)據(jù)集,動作是在執(zhí)行對數(shù)據(jù)集的計算后返回一個值。相比而言,轉(zhuǎn)換只是定義一個新的RDD,是一個惰性操作,而動作執(zhí)行真正的計算,它能計算出結(jié)果或?qū)懭胪獠看鎯橘|(zhì)。每當(dāng)用戶對RDD進(jìn)行動作,會在考慮所有轉(zhuǎn)換的依賴關(guān)系后生成一個有向無環(huán)圖,它消除了傳統(tǒng)MapReduce的多步執(zhí)行模型且提升了性能。
Spark也有對流的實現(xiàn),具有高可擴(kuò)展和高容錯的特點。Spark Stream ing是將流式計算分解成一系列短小的批處理作業(yè)。這里的批處理引擎是Spark,也就是把Spark Stream ing的輸入數(shù)據(jù)按照batch size(如1 s)分成一段一段的數(shù)據(jù)(discretized stream, DStream),每一段數(shù)據(jù)都轉(zhuǎn)換成Spark中的RDD,然后將Spark Stream ing中對DStream的Transformation操作變?yōu)镾park中對RDD的Transformation操作,將RDD經(jīng)過操作變成中間結(jié)果保存在內(nèi)存中。整個流式計算根據(jù)業(yè)務(wù)的需求可以對中間結(jié)果進(jìn)行疊加,或者存儲到外部設(shè)備。
將數(shù)據(jù)流技術(shù)用于緩解DDoS攻擊是網(wǎng)絡(luò)安全研究的重要趨勢,特別是最近已經(jīng)出現(xiàn)了一些優(yōu)秀的彈性可擴(kuò)展的數(shù)據(jù)流引擎和框架[3]。本文做了以下工作:
(1)利用彈性可擴(kuò)展的數(shù)據(jù)流框架Spark Streaming 和Kafka消息中間件,實現(xiàn)了對連續(xù)不斷到來的網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行實時查詢分析處理。
(2)利用基于源簇統(tǒng)計的分組策略,將正常流量與DDoS流量的偏差根據(jù)動態(tài)自適應(yīng)計算出的流量閥值區(qū)分開,能有效檢測出DDoS攻擊,并制定針對攻擊流量的緩解策略,有效防御應(yīng)對DDoS攻擊。
(3)在低延時和準(zhǔn)確性兩個方面對實時DDoS檢測框架通過實驗進(jìn)行了驗證。
近年來,針對有效解決DDoS攻擊問題的迫切需求,DDoS檢測已成為研究熱點。在網(wǎng)絡(luò)入侵方面主要有兩類檢測方法[4]:基于特征的方法和基于異常的方法?;谔卣鞯姆椒╗5]通過檢查每一個數(shù)據(jù)包的特征,以決定轉(zhuǎn)發(fā)或丟棄。但是它有一些局限性:不是所有的協(xié)議都可以被標(biāo)記出特征,并且針對每個新型的攻擊,需要有與之對應(yīng)的特征才能被檢測出[6]。與基于特征的方法相反,基于異常的方法試圖通過覆蓋更寬的范圍,從當(dāng)前和相關(guān)的流量中[4]發(fā)現(xiàn)偏差以檢測威脅。因為單獨來看,每一個惡意數(shù)據(jù)包可能是合法的,但通過識別當(dāng)前和上下文的流行為后,就會發(fā)現(xiàn)它是惡意的。很多基于異常的方法,通過對流量特征的復(fù)雜分析[6-11],可檢測和緩解多種類型的攻擊。目前的挑戰(zhàn)在于如何定義一種適合在線實時處理,并且能足夠精確緩解攻擊的流量分析方法。文獻(xiàn)[6]中提到的基于挖掘工具的方法更適合于用來做研究,而不適合于用來檢測威脅。簡單觀察整體流量[12-15]的方法無法給出要丟棄哪些攻擊數(shù)據(jù)包。
可以應(yīng)用于網(wǎng)絡(luò)安全檢測的大數(shù)據(jù)處理技術(shù)包括MapReduce、Hadoop和Spark等,由于網(wǎng)絡(luò)流量數(shù)據(jù)的大容量、實時性和不穩(wěn)定性,現(xiàn)有的大數(shù)據(jù)技術(shù)框架可能無法穩(wěn)定地進(jìn)行處理。Linkedin開源的Kafka為消息的順序傳遞提供了可靠的機(jī)制,是一個高吞吐量分布式消息系統(tǒng)中間件。首先,Kafka的開發(fā)者們認(rèn)為不需要在內(nèi)存里緩存什么數(shù)據(jù),操作系統(tǒng)的文件緩存已經(jīng)足夠完善和強(qiáng)大,只要你不進(jìn)行隨機(jī)寫,順序讀寫的性能是非常高效的。Kafka的數(shù)據(jù)只會順序append,數(shù)據(jù)的刪除策略累積到一定程度或者超過一定時間再刪除。Kafka另一個獨特的地方是將消費者信息保存在客戶端而不是MQ服務(wù)器,這樣服務(wù)器就不用記錄消息的投遞過程,每個客戶端都知道自己下一次應(yīng)該從什么地方什么位置讀取消息,消息的投遞過程也是采用客戶端主動pull的模型,這樣大大減輕了服務(wù)器的負(fù)擔(dān)。Kafka還強(qiáng)調(diào)減少數(shù)據(jù)的序列化和拷貝開銷,會將一些消息組織成Message Set進(jìn)行批量存儲和發(fā)送,并且客戶端在pull數(shù)據(jù)的時候,盡量以zero-copy的方式傳輸,利用sendfile這樣的高級IO函數(shù)來減少拷貝開銷。Spark Stream ing 1.3.0版本提供了相關(guān)的API實現(xiàn)對Kafka的較好支持,因此可以實現(xiàn)對連續(xù)不斷到來的網(wǎng)絡(luò)流量數(shù)據(jù)進(jìn)行實時查詢分析處理。
本文基于對網(wǎng)絡(luò)DDoS攻擊流量在給定時間窗口內(nèi)的源簇特征的統(tǒng)計分析,提出了一種自適應(yīng)的DDoS攻擊檢測防御架構(gòu)。以下將介紹網(wǎng)絡(luò)和流量模型,定義攻擊模型和狀態(tài),對DDoS攻擊檢測和防御問題進(jìn)行建模。
3.1網(wǎng)絡(luò)DDoS攻擊流量模型
該網(wǎng)絡(luò)包括4種類型的實體:(1)受保護(hù)的網(wǎng)絡(luò)實體,即被攻擊的網(wǎng)絡(luò)主機(jī);(2)合法主機(jī),即占用受保護(hù)網(wǎng)絡(luò)實體資源的終端;(3)DDoS防御系統(tǒng)主機(jī),用于運行DDoS防御系統(tǒng)的主機(jī);(4)僵尸機(jī),即被攻擊者控制的網(wǎng)絡(luò)主機(jī)。
受保護(hù)的網(wǎng)絡(luò)實體、合法主機(jī)和僵尸機(jī)通過網(wǎng)絡(luò)鏈路和路由交換機(jī)相連,當(dāng)通信鏈路中含有DDoS攻擊流量時,其流量模型如圖1所示。
通常DDoS攻擊流量的特征是在較短的時間內(nèi)發(fā)送大量的網(wǎng)絡(luò)數(shù)據(jù)包,為了及時檢測出DDoS攻擊流量,本文采用滑動時間窗口的檢測方法。假設(shè)滑動窗口大小為D,滑動距離為d,網(wǎng)絡(luò)最大流量負(fù)載為L,合法流量的平均負(fù)載為βL,攻擊流量平均負(fù)載為γL。當(dāng)滑動窗口內(nèi)含有t時間長度攻擊流量時,t×γL部分的流量源簇(按不同源IP地址統(tǒng)計的平均包數(shù)、平均包大小和平均包時間間隔)與D×βL部分的流量源簇有一定偏差,因此,如果計算出偏差超出一定的閥值(合法流量源簇之間偏差最大值),就能檢測出DDoS攻擊。
Fig.1 Traffic model of network DDoS attack圖1 網(wǎng)絡(luò)DDoS攻擊流量模型
本文定義了兩個輸入數(shù)據(jù)流:網(wǎng)絡(luò)流S和聚合的網(wǎng)絡(luò)流Sa。S表示發(fā)送到受保護(hù)網(wǎng)絡(luò)實體的數(shù)據(jù)包流量,其中每個包可以被看作是一個元組
3.2自適應(yīng)DDoS攻擊檢測和防御框架
基于對3.1節(jié)網(wǎng)絡(luò)DDoS攻擊流量模型的分析,本文設(shè)計了自適應(yīng)的DDoS攻擊防御系統(tǒng)(圖2)。檢測控制中心(detection control center,DCC)根據(jù)Sa中當(dāng)前時間窗口源簇的特征與歷史數(shù)據(jù)集(historical dataset,HD)中源簇的參考特征比較,進(jìn)行DDoS攻擊檢測。緩解中心(m itigation center,MC)設(shè)在輸入流S和受保護(hù)的網(wǎng)絡(luò)實體之間,當(dāng)流量負(fù)載超過αL時就對流量進(jìn)行過濾,過濾標(biāo)準(zhǔn)由DCC確定,MC的輸出流Sm是S的子集。若流量負(fù)載低于αL,則MC的輸出流Sm等于S,MC不被激活,只簡單地轉(zhuǎn)發(fā)S數(shù)據(jù)包,因為這些流量對受保護(hù)的網(wǎng)絡(luò)實體來說開銷很微小。DDoS攻擊防御框架將計算并聚合多個相同源IP地址的流量特征,并以源簇(srcCL)形式被保存在各個分組中。
Fig.2 Adaptive DDoS attack detection and defensesystem architecture圖2 自適應(yīng)DDoS攻擊檢測和防御系統(tǒng)架構(gòu)
給定一個受保護(hù)的實體和它的最大負(fù)載L,通過監(jiān)測超過負(fù)載閥值αL時的流量檢測可能的威脅。每當(dāng)應(yīng)用過濾時,必須保證最大程度地將合法用戶流量轉(zhuǎn)發(fā)到受保護(hù)的網(wǎng)絡(luò)實體。不僅要在真正有威脅時保護(hù)主機(jī),也要在出現(xiàn)合法的峰值負(fù)載(如瞬間擁塞)時保護(hù)主機(jī)。因此,在攻擊流量和由合法用戶產(chǎn)生的峰值流量之前,使用真實的合法流量與受害主機(jī)保持通信。防御機(jī)制必須確保流入到受保護(hù)網(wǎng)絡(luò)實體的惡意IPs在被檢測出之前,無法達(dá)到網(wǎng)絡(luò)的最大負(fù)載。其中的挑戰(zhàn)在于在S中使用什么樣的丟包標(biāo)準(zhǔn),保證整體流量負(fù)載不超過L的前提下,盡可能多地轉(zhuǎn)發(fā)合法流量。為什么只有當(dāng)流量超過αL時才過濾流量,有兩方面原因:一方面,本文的解決方案并不打算分析異常原因,也不區(qū)分流量峰值是否合法;另一方面,當(dāng)沒有超出αL時,轉(zhuǎn)發(fā)潛在的惡意流量就使得攻擊者很難適配系統(tǒng)對攻擊的響應(yīng)機(jī)制。3.2.1源簇分組策略
為了將DDoS攻擊流量從混合流量中區(qū)分出來,采用了分組策略(圖3),在分組前,先對D時間窗口內(nèi)的流量按源地址聚簇(算法1),簡稱源簇(SourceIPs cluster, srcCLi)。統(tǒng)計出相同源IP地址的平均特征fi= (φi,ωi,τi),其中φi表示每條流的平均包數(shù)目,ωi表示每條流的平均包字節(jié)數(shù),τi表示每條流中的平均包間隔時間。算法1的第1~8行統(tǒng)計得到每個源地址的每條流的平均特征,第9~10行統(tǒng)計出并保存每個源地址的平均特征。因為DDoS攻擊數(shù)據(jù)包在一段時間內(nèi)都會呈現(xiàn)出比較固定的特征,如固定的每秒發(fā)包數(shù)目、固定的包字節(jié)、固定的平均間隔時間。取參考點О=(Оφ,Оω,Оτ)(取特征的0.95分位點,因為在之前的研究[4]中表明,超過90%的網(wǎng)絡(luò)數(shù)據(jù)流都是包數(shù)較少的微型流),即可將DDoS攻擊流量集中分到某個分組中。
算法1聚簇
1. Procedure CLUSTERTING
2.srcCL←null /*源簇集合初始化*/
3.for each tuple t do /*遍歷元組*/
4.srcIP←t.srcIP /*賦值源IP地址*/
5.avgFeature←{0, 0, 0} /*初始化每個源IP
地址對應(yīng)的平均特征*/
6.for each tuple tu do /*遍歷元組*/
7.if tu.srcIP equals srcIP then /*匹配相
同的源IP地址*/
8.GetFeature(tu.dstIP, tu.pktNum, tu.pktSize, tu.pktInterval) /*特征統(tǒng)計*/ 9.avgFeature←{avgPktNum, avgPktSize, avgPktInterval} /*賦值統(tǒng)計出的平均特征*/ 10.srcCL.addFeature(srcIP, avgFeature) /*插入源簇集合*/ 3.2.2檢測控制中心
檢測控制中心(DCC)接收流量Sa,屬于同一源簇的源IP地址特征結(jié)合在一起,因此每個源簇i(srcCLi)由特征表示。其中φi表示每條流的平均包數(shù)目,ωi表示每條流的平均包字節(jié)數(shù),τi表示每條流中的平均包間隔時間。在當(dāng)前窗口中的信息是指最近的數(shù)據(jù)部分,例如,φi可以表示為在剛過去一小時內(nèi),從srcCLi發(fā)送到受保護(hù)網(wǎng)絡(luò)實體的每條流的平均包數(shù)目。通過將源IP地址簇進(jìn)行分組觀察源簇的走向,并研究各個分組中源簇數(shù)比例隨時間變化的情況。具體而言,將空間劃分成8個不同的組{G0, G1,…,G7},并保存屬于各組的源簇數(shù)目。通過比較源簇特征和參考點О=(Оφ,Оω,Оτ)進(jìn)行分組(圖3)。參考點不是固定值,它必須根據(jù)流入受保護(hù)網(wǎng)絡(luò)實體的流量特征計算得到,其值取保存在歷史數(shù)據(jù)集中的每個特征值的0.95分位數(shù)。之所以是0.95分位數(shù),是因為在之前的研究[4]中表明,超過90%的網(wǎng)絡(luò)數(shù)據(jù)流都是包數(shù)較少的微型流。本文的這種方法,將大部分(如果3個特征之間相互獨立,則95%× 95%×95%≈85%)流向受保護(hù)網(wǎng)絡(luò)實體的流(在短時間周期被發(fā)送的數(shù)目較少和字節(jié)較短的包)分到了G0組。
如果新的源簇的特征預(yù)分組的數(shù)目比例與相應(yīng)每個分組的數(shù)目比例的偏差超出了閥值,則認(rèn)為有異常。當(dāng)前流量中,屬于各分組的源簇數(shù)目用{?0,?1,…,?7}表示,相對應(yīng)的各分組中的參考源簇數(shù)目用{n0,n1,…,n7}表示。使用這些量計算每個分組的當(dāng)前比例和參考比例。如果參考比例與當(dāng)前比例之間的差值超出給定閾值tol,將檢測出流量異常,例如,。檢測偏差閥值tol受合法流量之間統(tǒng)計量的最大偏差所約束,若tol過小,則造成較高的誤檢測率,若tol過大,則檢測出攻擊流量的延遲較大。因此在使用下文所述的檢測方法前,對已設(shè)定了滑動時間窗口D和滑動時間距離d的合法流量之間統(tǒng)計量的偏差范圍進(jìn)行了不間斷的評估,以動態(tài)確定出合適的檢測偏差閥值tol。
Fig.3 Grouping strategy圖3 分組策略
3.2.3緩解中心
緩解中心(MC)能過濾掉惡意流量并極小影響合法流量而緩解攻擊。算法2給出了流向受保護(hù)網(wǎng)絡(luò)實體的數(shù)據(jù)包是否被丟棄的步驟和順序。第1~4行,若沒有超出受保護(hù)網(wǎng)絡(luò)實體的最大負(fù)載且緩解沒被激活,則數(shù)據(jù)包將被轉(zhuǎn)發(fā)。第5~6行,若減緩被激活,緩解中心必須保證讓合法流量優(yōu)先轉(zhuǎn)發(fā)的同時不超過網(wǎng)絡(luò)的最大負(fù)載。屬于G0組流量的過濾優(yōu)先讓在檢測威脅之前與受保護(hù)網(wǎng)絡(luò)實體的源簇通過。第7~9行,因為大部分源簇都屬于G0組,所以屬G0組的流量用布隆過濾器(bloom filter,BF)[16]過濾。另一方面,屬G1, G2,…, G7組流量的過濾優(yōu)先讓頻繁與受保護(hù)網(wǎng)絡(luò)實體通信的源簇通過,在這種情況下,第10~11行,根據(jù)保存在白名單(acquaintance-list,AL)里的信息對每個源簇進(jìn)行過濾。此外,屬于每個分組包的轉(zhuǎn)發(fā)還要由它將占用多少鏈路的負(fù)載所決定,因此每個分組的流量盡可能讓合法流量優(yōu)先通過。第12~13行,那些分組未知的源簇(可能既不是攻擊也不是瞬間擁塞的流量)的數(shù)據(jù)包的轉(zhuǎn)發(fā)要依賴于是否有可用的負(fù)載。第14~15行,過濾掉不屬于以上條件的流量。
算法2過濾
1. Procedure FILTERING(InputStream)
2.srcCL←CreateCluster(InputStream) /*從輸入
流創(chuàng)建源簇*/
3.if exceed max load L then /*若當(dāng)前流量超出網(wǎng)絡(luò)
最大負(fù)載*/
4.Discard(InputStream)/*進(jìn)行過濾*/
5.else if m itigation is not active then /*若緩解沒被
激活*/
6.GoToEntity(InputStream) /*轉(zhuǎn)發(fā)當(dāng)前流量至受保護(hù)網(wǎng)絡(luò)實體*/
7.else
8.if BelongToG0(srcCLi) &InBloomFilter(srcCLi) &hasAvailLoad then
9.GoToEntity(srcCLi, srcIP) /*若源簇屬G0組,在布隆過濾集合中,有可用負(fù)載,則轉(zhuǎn)發(fā)*/
10.if BelongToOtherGroup(srcCLi) & InAcquainList(srcCLi) & hasAvailLoad then
11.GoToEntity(srcCLi, srcIP) /*若源簇屬其他組,在白名單集合中,有可用負(fù)載,則轉(zhuǎn)發(fā)*/
12.if BelongToUnKnown(srcCli)
& hasAvailLoad then
13.GoToEntity(srcCLi, srcIP) /*若源簇分
組未知,有可用負(fù)載,則轉(zhuǎn)發(fā)*/
14.else
15.DisCard(srcCLi, srcIP) /*若其他情況,被過濾*/
布隆過濾器(BF)用來過濾屬于G0組源簇的數(shù)據(jù)包,這是一個空間有效的概率性數(shù)據(jù)結(jié)構(gòu),被用于檢查一個集合中是否有某個元素[16]。布隆過濾器允許新的元素加入到集合里,但元素的刪除并不是微不足道。本文將基本的布隆過濾器改進(jìn)為一個基于時間戳的布隆過濾器,屬于集合的元素與時間戳相關(guān)聯(lián),這個時間戳在被加到布隆過濾器時就被指定(基于時間的BF跟基礎(chǔ)的BF[16]具有相同的時間空間上的復(fù)雜性)。這樣,能保存屬于G0組一定時間周期內(nèi)的源簇(本文緩解機(jī)制里的最后5 m in)。
白名單(AL)用于保存那些屬于G1, G2,…,G7組的源簇。當(dāng)緩解攻擊時,每一個源簇會被指定一個被轉(zhuǎn)發(fā)的概率和比例。比起偶爾與受保護(hù)網(wǎng)絡(luò)實體通信的源簇數(shù)據(jù)包,那些屬于與受保護(hù)網(wǎng)絡(luò)實體頻繁通信的源簇的數(shù)據(jù)包將有更高的概率被轉(zhuǎn)發(fā)。
應(yīng)該注意的是,無論是使用BF還是AL,人們始終不能確保流向受保護(hù)網(wǎng)絡(luò)實體的單一源簇不會超出鏈路的最大負(fù)載L。雖然攻擊者不了解受保護(hù)網(wǎng)絡(luò)實體的流量,但如果一組源地址與保存在BF和AL的有重疊,就需要一個機(jī)制確保這些流量不會讓受保護(hù)網(wǎng)絡(luò)實體的容量飽和。出于這個目的,根據(jù)每個分組平時正常的負(fù)載情況,為每個分組分配一個相對于最大負(fù)載的一個負(fù)載比例。
本文的DDoS攻擊防御框架使用了VMware集群配置,集群由兩臺浪潮英信服務(wù)器組成,每臺具體配置是英特爾Xeon?CPU E7-4820 v2 2.00 GHz處理器,32 GB DDR3內(nèi)存,4 TB硬盤,每臺處理器有18個核,32個線程,安裝Linux CentOS6.5 64位系統(tǒng)。集群包括3個虛擬機(jī),每個虛擬機(jī)安裝JDK/JRE v1.7版本,CDH v5.0發(fā)行版本(內(nèi)含Spark v1.3.0版本和Hadoop v2.4.0版本),所有虛擬機(jī)共享硬件資源,一個控制節(jié)點,兩個計算節(jié)點。
本文的技術(shù)架構(gòu)(圖4)主要由兩個組件構(gòu)成,一個是消息中間件(Kafka)模塊,另一個是實時統(tǒng)計檢測的Spark集群。
4.1消息中間件模塊
本文通過消息中間件將Netflow協(xié)議產(chǎn)生的流量日志文件與Spark集群相連接,Spark可集成一些消息中間件(如Apache Kafka、RabbitMQ等),之所以選擇Kafka v3.3.4版本,是因為它可非常穩(wěn)定地與Spark兼容。Kafka為消息傳輸創(chuàng)建了專用的隊列,以正確的順序提供有保障的消息傳輸,人們可以使用Kafka集群處理大體積的數(shù)據(jù)。
4.2實時檢測的Spark集群
Fig.4 DDoS attack detection and defense architecture based on Spark Stream ing圖4 基于Spark Stream ing的DDoS攻擊檢測和防御架構(gòu)
如圖4所示,實現(xiàn)了一個Spark集群,流量數(shù)據(jù)以連續(xù)不斷的流通過Kafka隊列傳給Spark集群處理。流量被分割成微小的批次(DStream),對DStream進(jìn)行轉(zhuǎn)換和相關(guān)的動作,通過算法3檢測出DDoS攻擊。第2~4行對流進(jìn)行Map操作后將二進(jìn)制流處理成字符串元組,再把元組Map成新的DStream。第5行使用了Spark Stream ing框架支持的滑動窗口對DStream進(jìn)行處理。第6行對新窗口內(nèi)的不同源IP地址進(jìn)行聚簇。第7~9行根據(jù)源簇的分組比例計算出窗口內(nèi)的統(tǒng)計偏差。第10~16行與檢測閥值threshold比較,通過作用于緩解中心模塊,若未超出閥值,則不過濾當(dāng)前流量,直接將其流入受保護(hù)網(wǎng)絡(luò)實體,若超出閥值,則過濾當(dāng)前流量,有選擇地將其流入受保護(hù)網(wǎng)絡(luò)實體。
算法3檢測新窗口數(shù)據(jù)流異常
1. Procedure DETECTING(InputDStream)
2.dtModel←InputDStream.map(Stream s){ /*對
輸入流量數(shù)據(jù)進(jìn)行Map操作*/
3.tuple←ParseTuple(s) /*從流量數(shù)據(jù)中解
析出元組對象*/
4.return Map(tuple.srcIP, tuple) /*返回以源IP地址為key,與之對應(yīng)元組對象為value的鍵值對并進(jìn)行Map操作*/
5.}.reduceByKeyAndWindow(srcIP, [Tuple], windowLength, slidingInterval){ /*設(shè)定數(shù)據(jù)處理的時間窗口和滑動距離*/
6.srcCL←CreateCluster(srcIP) /*按源IP地址
聚簇*/
groupi) /*源簇預(yù)分組的各組比例值*/
8.ri←GetRatioOfGroup(groupi) /*已有分組
中各組源簇的比例值*/
9.d←max| ri-?i| /*計算偏差值*/
10.if d≤threshold then
11.AddToGroup(srcCLi, groupi)
12.return false /*若偏差值不超出設(shè)定的閥值,直接將源簇加入所屬分組中,并返回false */
13.else
14.AddToGroupWithFilter(srcCLi, groupi)
15.return true /*若偏差值超出設(shè)定的閥值,將源簇有過濾地加入所屬分組中,并返回true */
16.}
下面對自適應(yīng)DDoS攻擊防御系統(tǒng)進(jìn)行了測試和評估。如上文所述,一個有效的DDoS防御機(jī)制必須能快速地檢測攻擊,過濾掉攻擊流量,并最大限度地減少對合法用戶流量的影響。出于這個目的,用于評估的度量如下:(1)檢測時間,攻擊開始和攻擊檢測之間經(jīng)過的時間;(2)緩解精度,合法用戶流量受影響的程度。
實驗的合法流量數(shù)據(jù)使用了新西蘭懷卡托大學(xué)WAND網(wǎng)絡(luò)研究組在2013年10月21日公開的“ISPDSL II”[17]部分?jǐn)?shù)據(jù),DDoS攻擊流量數(shù)據(jù)使用了CAIDA[18]公開的“DDoS 2007”數(shù)據(jù)?!癐SPDSL II”合法流量負(fù)載在11 Mb/s至13 Mb/s,原始攻擊流量負(fù)載在500 Kb/s至600 Kb/s,本文將“DDoS 2007”攻擊流量放大到12 Mb/s至14 Mb/s后與“ISPDSL II”合法流量進(jìn)行了合成。實驗采用的滑動時間窗口大小為3 600 s,滑動時間距離為300 s,合法流量數(shù)據(jù)從第900 s(第10個時間窗口)開始加入了500 s的DDoS攻擊流量數(shù)據(jù)。
5.1分組效果
在評估度量之前,先對分組策略的各分組源簇比例偏差進(jìn)行了統(tǒng)計。該實驗使用了7個時間窗口的DDoS攻擊數(shù)據(jù),圖5(a)描述了合法流量在各分組源簇比例偏差值,最大源簇比例偏差值低于0.004。圖5(b)描述了混合DDoS攻擊流量在各分組源簇比例偏差值,檢測閥值設(shè)為0.004,從含有DDoS攻擊流量(第10個時間窗口)的時間段內(nèi),G0、G3、G4和G6分組的源簇比例偏差值有十分明顯的上升趨勢,因此本文的分組策略對檢測DDoS攻擊流量的效果很好。
5.2檢測時間
快速檢測出流入的DDoS攻擊流量對于緩解效果至關(guān)重要。圖6表示出了當(dāng)發(fā)生攻擊期間的時刻t的源簇分組比例與合法源簇分組比例之間的最大偏差(maxi|ri-?i|)。當(dāng)攻擊開始時這種差異迅速增加。如果檢測得到這個最大值超過允許的范圍,那么這個異常會被檢測出來。例如:設(shè)檢測閥值為0.004,那么檢測攻擊要經(jīng)過6 s的時間。
5.3緩解精度
該實驗研究BF和AL如何有效地防止非法數(shù)據(jù)轉(zhuǎn)發(fā)到受保護(hù)的實體上。為了做到這一點,在檢測到攻擊時(第906 s),系統(tǒng)丟棄所有不屬于BF或AL的數(shù)據(jù)包。首先測量與該MC組件轉(zhuǎn)發(fā)的合法流量,并丟棄非法流量的精度。圖7給出了合法流量與非法流量被轉(zhuǎn)發(fā)到受保護(hù)網(wǎng)絡(luò)實體的比例??梢宰⒁獾剑诠羝陂g,合法流量被轉(zhuǎn)發(fā)的百分比約為95%。非法流量在全部轉(zhuǎn)發(fā)到受保護(hù)實體并實施攻擊前被檢測,一旦緩解被激活,約超過97%的非法流量會被丟棄。
Fig.5 Source cluster proportional deviation of legitimate traffic and mixed DDoS attack traffic in each packet圖5 合法流量及混合DDoS攻擊流量在各分組源簇比例偏差值
Fig.6 Detection time圖6 檢測時間
Fig.7 M itigation precision圖7 緩解精度
本文提出了基于Spark Stream ing的自適應(yīng)DDoS攻擊防御框架,利用數(shù)據(jù)流實現(xiàn)應(yīng)用的實時性要求。通過連續(xù)提取源簇的特征和保持分組的源簇數(shù)據(jù)檢測DDoS攻擊,對于合法用戶來說緩解了DDoS攻擊的影響。本文的緩解機(jī)制對瞬間擁塞問題也能起到很好的緩解作用,因為用戶的優(yōu)先級與其歷史訪問次數(shù)正相關(guān),若優(yōu)先級較高則優(yōu)先轉(zhuǎn)發(fā)。該系統(tǒng)已在彈性可擴(kuò)展的Spark Streaming框架上進(jìn)行了實現(xiàn),實驗評估顯示,它在檢測和緩解方面都有非常好的效果。
References:
[1] Bhuyan M H, Bhattacharyya D K, Kalita J K. Network anomaly detection methods, systems and tools[J]. IEEE Communications Surveys & Tutorials, 2014, 16(1): 303-336.
[2] Dean J, Ghemawat S. Mapreduce: simplified data processing on large clusters[J]. Communications of the ACM, 2008, 51 (1): 107-113.
[3] Gulisano V, Jim enez-Peris R, Patino-M artnez M, et al. StreamCloud: a large scale data streaming system[C]//Pro-ceedings of the 2010 IEEE 30th International Conference on Distributed Computing Systems, Genova, Italy, Jun 21-25, 2010. Piscataway, USA: IEEE, 2010: 126-137.
[4] Kompella R R, Singh S, Varghese G. On scalable attack detection in the network[C]//Proceedings of the 4th ACM SIGCOMM Conference on Internet Measurement, Sicily, Italy, 2004. New York, USA:ACM, 2004: 187-200.
[5] Roesch M. Snort[EB/OL]. (2012)[2015-07-10]. http://www. snort.org/.
[6] Lakhina A, Crovella M, Diot C. M ining anomalies using trace feature distributions[C]//Proceedings of the 2005 ACM SIGCOMM Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications, Philadelphia, USA, Aug 22-26, 2005. New York, USA:ACM, 2005: 217-228.
[7] Chandola V, Banerjee A, Kumar V. Anomaly detection: a survey[J].ACM Computing Surveys, 2009, 41(3): 15.
[8] Silveira F, Diot C, Taft N, et al. Astute: detecting a different class of trace anomalies[J]. ACM SIGCOMM Computer Communication Review, 2010, 40(4): 267-278.
[9] Tang Chenghua, Liu Pengcheng, Tang Shensheng, et al. Anomaly intrusion behavior detection based on fuzzy clustering and features selection[J]. Journal of Computer Research and Development, 2015, 52(3): 718-728.
[10] Cheng Jieren, Yin Jianping, Liu Yun, et al. Detecting distributed denial of service attack based on address correlation value[J]. Journal of Computer Research and Development, 2009, 46(8): 1334-1340.
[11] Liu Yun, Cai Zhiping, Zhong Ping, et al. Detection approach of DDoS attacks based on conditional random fields[J]. Journal of Software, 2011, 22(8): 1897-1910.
[12] Krishnamurthy B, Sen S, Zhang Yin, et al. Sketch-based change detection: methods, evaluation, and applications[C]// Proceedings of the 3rd ACM SIGCOMM Conference on Internet Measurement, M iam i Beach, USA, Oct 27-29, 2003. New York, USA:ACM, 2003: 234-247.
[13] Barford P, K line J, Plonka D, et al. A signal analysis of network trace anomalies[C]//Proceedings of the 2nd ACM SIGCOMM Workshop on Internet Measurment, Marseille, France, Nov 6-8, 2002. New York, USA:ACM, 2002: 71-82.
[14] Roughan M, Griffin T, Mao Z M, et al. Combining routing and trace data for detection of IP forwarding anomalies[J]. ACM SIGMETRICS Performance Evaluation Review, 2004, 32(1): 416-417.
[15] Cai Zhiping, Wang Zhijun, Zheng Kai, et al. A distributed TCAM coprocessor architecture for integrated longest prefix matching, policy filtering, and content filtering[J]. IEEE Transactions on Computers, 2013, 62(3): 417-427.
[16] Broder A Z, M itzenmacher M. Network applications of Bloom filters: a survey[J]. Internet Mathematics, 2003, 1 (4): 485-509.
[17] WITS: Waikato Internet traffic storage, WAND network reseach group“ISPDSL II”[EB/OL]. (2013)[2015-07-10]. http://wand.net.nz/w its/.
[18] Hick P, Aben E, Clay K. The CAIDA“DDoS Attack 2007”dataset[EB/OL].(2012)[2015-07-10]. http://www.caida.org.
附中文參考文獻(xiàn):
[9]唐成華,劉鵬程,湯申生,等.基于特征選擇的模糊聚類異常入侵行為檢測[J].計算機(jī)研究與發(fā)展, 2015, 52(3): 718-728.
[10]程杰仁,殷建平,劉運,等.基于地址相關(guān)度的分布式拒絕服務(wù)攻擊檢測方法[J].計算機(jī)研究與發(fā)展, 2009, 46(8): 1334-1340.
[11]劉運,蔡志平,鐘平,等.一種基于條件隨機(jī)場的DDoS攻擊檢測方法[J].軟件學(xué)報, 2011, 22(8): 1897-1910.
FANG Feng was born in 1987. He is an M.S. candidate at National University of Defense Technology. His research interests include network security and big data processing, etc.
方峰(1987—),男,安徽蒙城人,國防科技大學(xué)碩士研究生,主要研究領(lǐng)域為網(wǎng)絡(luò)安全,大數(shù)據(jù)處理等。
CAI Zhiping was born in 1975. He received the Ph.D. degree from National University of Defense Technology in 2005. Now he is a professor and M.S. supervisor at National University of Defense Technology. His research interests include network virtualization, network security, big data processing and software-defined networking, etc.
蔡志平(1975—),男,湖南益陽人,2005年于國防科技大學(xué)獲得博士學(xué)位,現(xiàn)為國防科技大學(xué)副教授、碩士生導(dǎo)師,主要研究領(lǐng)域為網(wǎng)絡(luò)虛擬化,網(wǎng)絡(luò)安全,大數(shù)據(jù)處理,軟件定義網(wǎng)絡(luò)等。
ZHAO Qijia was born in 1985. He is an M.S. candidate at National University of Defense Technology. His research interests include network security and machine learning, etc.
肇啟佳(1985—),男,吉林長春人,國防科技大學(xué)碩士研究生,主要研究領(lǐng)域為網(wǎng)絡(luò)安全,機(jī)器學(xué)習(xí)等。
LIN Jiarun was born in 1987. He is a Ph.D. candidate at National University of Defense Technology. His research interests include cloud computing security, network security and machine learning, etc.
林加潤(1987—),男,福建莆田人,國防科技大學(xué)博士研究生,主要研究領(lǐng)域為云計算安全,網(wǎng)絡(luò)安全,機(jī)器學(xué)習(xí)等。
ZHU M ing was born in 1986. He is a Ph.D. candidate at National University of Defense Technology. His research interests include w ireless networks, network virtualization and software-defined networking, etc.
朱明(1986—),男,吉林長春人,國防科技大學(xué)博士研究生,主要研究領(lǐng)域為無線網(wǎng)絡(luò),網(wǎng)絡(luò)虛擬化,軟件定義網(wǎng)絡(luò)等。
Abstract:Distributed denial of service (DDoS) attack is an important security threat, the constant improvement of network speed to the traditional detection methods has brought new challenges. Represented by Spark and so on, the big data processing technology brings new opportunity to the completion of high-speed safety detection. This paper proposes an adaptive technique for real-time DDoS detection and defense using Spark Stream ing framework. Based on source cluster grouping in sliding w indows, and the deviation of proportionate to the source cluster of groups, this paper detects out the DDoS attack traffic trace, and realizes the adaptive rapid and precise detection of DDoS attacks through sensing legitimate network traffic. The experimental results show that the technique can greatly improve detection capabilities, in order to ensure the security of network service performance and the extensibility of detection, this paper provides a feasible solution.
Key words:DDoS detection; DDoS defense; real-time detection; adaptive detection; Spark Stream ing
Adaptive Technique for Real-Time DDoS Detection and Defense Using Spark Stream ing?
FANG Feng, CAI Zhiping+, ZHAO Qijia, LIN Jiarun, ZHU M ing
College of Computer Science, National University of Defense Technology, Changsha 410073, China + Corresponding author: E-mail: zpcai@nudt.edu.cn
doi:10.3778/j.issn.1673-9418.1507073
文獻(xiàn)標(biāo)志碼:A
中圖分類號:TP393