摘要:現(xiàn)有的DDoS防御方法大多是針對(duì)傳統(tǒng)IPv4網(wǎng)絡(luò)提出的,而且它們的防御實(shí)時(shí)性還有待進(jìn)一步提高。針對(duì)這種情況,提出了一種IPv6環(huán)境下實(shí)時(shí)防御DDoS的新方法,其核心思想是首先在受害者自治系統(tǒng)內(nèi)建立決策判據(jù)樹(shù),然后依據(jù)決策判據(jù)1和2對(duì)該樹(shù)進(jìn)行實(shí)時(shí)監(jiān)控,如果發(fā)現(xiàn)攻擊,就發(fā)送過(guò)濾消息通知有關(guān)實(shí)體在受害端和源端一起對(duì)攻擊包進(jìn)行過(guò)濾,從而保護(hù)受害者。實(shí)驗(yàn)證明,該方法能夠在秒鐘數(shù)量級(jí)檢測(cè)到攻擊并且對(duì)攻擊包進(jìn)行過(guò)濾,能有效地防范多個(gè)DDoS攻擊源。另外,該方法還能準(zhǔn)確地區(qū)分攻擊流和高業(yè)務(wù)流,可以在不恢復(fù)攻擊路徑的情況下直接追蹤到攻擊源所在的自治系統(tǒng)(甚至是子網(wǎng))。
關(guān)鍵詞:網(wǎng)絡(luò)安全; 分布式拒絕服務(wù)攻擊; 防御技術(shù); IPv4; IPv6
中圖分類(lèi)號(hào):TP309.2
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2008)06-1828-05
0引言
在DDoS攻擊中,攻擊包的源地址是偽造的。如果能夠驗(yàn)證源地址的合法性,就可以過(guò)濾掉所有源地址不合法的數(shù)據(jù)包,從而能夠消除DDoS威脅。這種技術(shù)被稱(chēng)為“源地址驗(yàn)證”。IPv6地址長(zhǎng)度是128位,這就為基于地址本身所包含的驗(yàn)證信息來(lái)實(shí)現(xiàn)“源地址驗(yàn)證”提供了可能。Tuomas Aura提出的地址加密生成(CGA)[1]就是利用IPv6的后64位實(shí)現(xiàn)地址驗(yàn)證的一種技術(shù)。它不需要第三方參與驗(yàn)證,實(shí)現(xiàn)了“節(jié)點(diǎn)—節(jié)點(diǎn)”式驗(yàn)證。由于DDoS攻擊中存在大量的待驗(yàn)證源地址,這種“節(jié)點(diǎn)—節(jié)點(diǎn)”式驗(yàn)證機(jī)制就會(huì)比較費(fèi)時(shí)。于是,2005年鄭輝等人[2]又依據(jù)混沌理論提出了一種“節(jié)點(diǎn)—節(jié)點(diǎn)集”式的源地址驗(yàn)證機(jī)制,以此就能較好地防御DDoS攻擊。但是,這種方法也存在著一些局限性,比如其可表達(dá)的網(wǎng)絡(luò)規(guī)模有限,整個(gè)地址的分配和驗(yàn)證流程有待深入研究,邊界路由器很可能會(huì)由于負(fù)擔(dān)過(guò)重而崩潰等。
另一方面,王效亮在研究原有IPv4網(wǎng)絡(luò)中IP追蹤技術(shù)的基礎(chǔ)上,提出了一種IPv6下自適應(yīng)概率標(biāo)記方案[3]。與固定概率標(biāo)記方案相比,它減少了重構(gòu)攻擊路徑所需的數(shù)據(jù)包數(shù)量,并且還使得攻擊者無(wú)法通過(guò)偽造標(biāo)記信息來(lái)干擾追蹤。
為了確保防御DDoS攻擊的實(shí)時(shí)性以及避免重構(gòu)攻擊路徑所耗費(fèi)的時(shí)間,本文提出了一種IPv6環(huán)境下新的DDoS防御方法,其核心思想是對(duì)進(jìn)入某個(gè)自治系統(tǒng)(autonomic system,AS)的數(shù)據(jù)包按照其所屬的AS和子網(wǎng)實(shí)時(shí)進(jìn)行主從分類(lèi)統(tǒng)計(jì)、分析,如果檢測(cè)到異常,就能立即通知本地AS和攻擊包所屬的AS在其邊界路由器進(jìn)行針對(duì)性的數(shù)據(jù)包過(guò)濾操作。當(dāng)然,在檢測(cè)到攻擊的同時(shí),也能追蹤到攻擊包的來(lái)源(來(lái)源于哪一個(gè)AS,或者來(lái)源于哪一個(gè)子網(wǎng))。
1基本原理
1.1IPv 6全局單播地址
全局單播地址等價(jià)于公用 IPv4地址。在 IPv6網(wǎng)絡(luò)中,該地址是全局可路由和可達(dá)的。依據(jù)RFC 3587[4]中的定義,IANA當(dāng)前分配的全局單播地址結(jié)構(gòu)如圖1所示。
其中,前三位固定,用于標(biāo)志該地址是全局單播地址;全局路由前綴用于標(biāo)志一個(gè)特定的組織站點(diǎn),前48位用于創(chuàng)建站點(diǎn)地址前綴,創(chuàng)建的站點(diǎn)地址將被分配給組織的單個(gè)站點(diǎn),IPv6網(wǎng)絡(luò)中的路由器會(huì)把匹配這48位地址前綴的數(shù)據(jù)包轉(zhuǎn)發(fā)到組織站點(diǎn)的路由器;子網(wǎng)ID用于標(biāo)志組織站點(diǎn)中的子網(wǎng),能夠用來(lái)創(chuàng)建65 536個(gè)子網(wǎng)或多個(gè)層次的尋址層次結(jié)構(gòu);接口ID用于標(biāo)志站點(diǎn)內(nèi)子網(wǎng)上的接口。
由此可見(jiàn),全局單播地址形成了一個(gè)三級(jí)結(jié)構(gòu)(圖1):公用拓?fù)渚褪怯商峁┮蛱鼐W(wǎng)接入的ISP和連接到IPv6網(wǎng)絡(luò)的組織構(gòu)成的集合;站點(diǎn)拓?fù)涫墙M織站點(diǎn)內(nèi)的子網(wǎng)構(gòu)成的集合;接口標(biāo)志符標(biāo)志組織站點(diǎn)中子網(wǎng)上的特定接口。
由于任何一個(gè)IPv6子網(wǎng)(又稱(chēng)為鏈路[5])都使用 64位網(wǎng)絡(luò) ID(記為NetID,每個(gè)子網(wǎng)以其N(xiāo)etID標(biāo)志)和 64位接口 ID(記為InterfaceID),從數(shù)據(jù)包的源地址(全局單播地址)的前64位,就可以檢測(cè)出該包來(lái)源于哪個(gè)子網(wǎng)。
1.2 自治系統(tǒng)
本文的DDoS防御方法主要是以AS作為研究對(duì)象的,所以有必要先對(duì)AS有一個(gè)全面的認(rèn)識(shí)。
AS指的是在一個(gè)管理機(jī)構(gòu)控制之下的網(wǎng)絡(luò)和路由器的集合。其中所有路由器必須相互連接,運(yùn)行相同的路由協(xié)議,同時(shí)由TANA分配一個(gè)單獨(dú)的16位數(shù)字,作為自治系統(tǒng)編號(hào)(autonomous system number,ASN)。AS間使用外部路由協(xié)議。目前,在IPv6環(huán)境下,AS內(nèi)路由協(xié)議主要采用IS-ISv6和OSPFv3,AS間路由協(xié)議通常采用BGP4+[6]。
AS內(nèi)包括以下三類(lèi)路由器:接入路由器,用于為子網(wǎng)用戶(hù)提供網(wǎng)絡(luò)接入(如圖2中的R1、R7);轉(zhuǎn)接路由器,通常用于連接不同子網(wǎng)(如圖2中的R2、R6);邊界路由器,在AS的邊界上用于連接其他AS(如圖2中的R3、R4、R5)。
現(xiàn)在的因特網(wǎng)就是由很多AS組成的,而每一個(gè)AS又包括若干個(gè)子網(wǎng),它們之間的關(guān)系如圖2所示。
2實(shí)時(shí)防御方法
2.1術(shù)語(yǔ)定義
為了能更好地表達(dá)后續(xù)內(nèi)容,現(xiàn)定義以下一些術(shù)語(yǔ):
a)攻擊機(jī)。發(fā)送DDoS攻擊包的主機(jī)。
b)受害機(jī)。DDoS攻擊者所選擇的攻擊對(duì)象,多為網(wǎng)絡(luò)中的服務(wù)器,比如搜狐服務(wù)器。
c)攻擊源自治系統(tǒng)。包含一個(gè)或多個(gè)攻擊機(jī)的自治系統(tǒng)。
d)受害者自治系統(tǒng)。包含一個(gè)或多個(gè)受害機(jī)的自治系統(tǒng)。
e)一次數(shù)據(jù)包。就服務(wù)器而言,在訪問(wèn)它的所有數(shù)據(jù)包中如果一個(gè)源IPv6地址所對(duì)應(yīng)的包數(shù)僅為1,那么該地址所對(duì)應(yīng)的那個(gè)數(shù)據(jù)包就被稱(chēng)為一次數(shù)據(jù)包。
f)子網(wǎng)訪問(wèn)主機(jī)。凡是有起源于某子網(wǎng)的數(shù)據(jù)包訪問(wèn)主機(jī),就稱(chēng)該子網(wǎng)訪問(wèn)這臺(tái)主機(jī)。
g)攻擊源子網(wǎng)。包含一個(gè)或多個(gè)攻擊機(jī)的子網(wǎng)。
2.2 設(shè)計(jì)依據(jù)
據(jù)Symantec公司統(tǒng)計(jì),2006年上半年平均每天發(fā)生927次DDoS攻擊,與2004年下半年相比增加了679%[7]。而且,越來(lái)越多的攻擊發(fā)生在AS之間。比如,圖2中攻擊源自治系統(tǒng)ASn中的一臺(tái)“攻擊機(jī)(記為A)”就正在向受害者自治系統(tǒng)AS1中的“受害機(jī)(記為V)”發(fā)送大量的DDoS攻擊包。
訪問(wèn)V的每一個(gè)數(shù)據(jù)包(不論是合法包還是攻擊包)都具有以下三個(gè)屬性:
a)P_ASN。用于指明該包產(chǎn)生于哪個(gè)AS。
b)P_NetID。用于指明該包產(chǎn)生于哪個(gè)子網(wǎng)。
c)P_InterfaceID。用于指明該包產(chǎn)生于P_NetID所指示的子網(wǎng)中的哪臺(tái)主機(jī)。
根據(jù)這三個(gè)屬性,筆者可以對(duì)訪問(wèn)V的每一個(gè)數(shù)據(jù)包進(jìn)行分類(lèi)統(tǒng)計(jì),從而可以建立一棵決策判據(jù)樹(shù),如圖3所示。
在該樹(shù)中,除去根節(jié)點(diǎn)(受害機(jī)V)外,可以分為三層,即AS層、子網(wǎng)層和接口層。AS層的節(jié)點(diǎn)用對(duì)應(yīng)的ASN標(biāo)志(ASiN表示第i個(gè)AS的ASN,i=1,2,…,n),子網(wǎng)層的節(jié)點(diǎn)用對(duì)應(yīng)的NetID標(biāo)志(NetIDZWi.t表示第i個(gè)AS中的第 t個(gè)子網(wǎng)的NetID),接口層的節(jié)點(diǎn)用對(duì)應(yīng)的InterfaceID標(biāo)志(InterfaceID i.t.m表示第i個(gè)AS中的第t個(gè)子網(wǎng)內(nèi)的第m臺(tái)主機(jī)的InterfaceID)。
AS層的任一個(gè)節(jié)點(diǎn)ASiN都對(duì)應(yīng)一個(gè)變量NumSNASiN(NumSN是the Number of Subnet的英文縮寫(xiě),意思為子網(wǎng)的數(shù)目),它表示節(jié)點(diǎn)ASiN的所有子節(jié)點(diǎn)的個(gè)數(shù),也即自治系統(tǒng)ASi中訪問(wèn)過(guò)V的子網(wǎng)數(shù)。
子網(wǎng)層的任一個(gè)節(jié)點(diǎn)NetIDZWi.t都對(duì)應(yīng)一個(gè)變量NumOOPZWi.t(NumOOP是the Number of Only One Package的英文縮寫(xiě),意思為一次數(shù)據(jù)包的數(shù)目),它表示節(jié)點(diǎn)NetIDZWi.t的所有子節(jié)點(diǎn)中變量NumP(其定義參見(jiàn)下段內(nèi)容)的值為1的節(jié)點(diǎn)數(shù),亦即在訪問(wèn)V的所有一次數(shù)據(jù)包中來(lái)源于ZWi.t的一次數(shù)據(jù)包總數(shù)。
接口層的任一個(gè)節(jié)點(diǎn)InterfaceIDi.t.s都對(duì)應(yīng)一個(gè)變量NumPInterfaceIDi.t.s(NumP是the Number of Package的英文縮寫(xiě),意思為數(shù)據(jù)包的數(shù)目),它表示與InterfaceIDi.t.s所對(duì)應(yīng)的接口向V所發(fā)送的數(shù)據(jù)包數(shù)目。
決策判據(jù)樹(shù)的建立算法如下:
Step1建立根節(jié)點(diǎn)V(用V的IPv6全局單播地址標(biāo)志);
Step2對(duì)于訪問(wèn)V的每一個(gè)數(shù)據(jù)包,依據(jù)其三個(gè)屬性,執(zhí)行下列步驟:
Step2.1判斷該包的P_ASN是否出現(xiàn)在AS層,如果出現(xiàn),就執(zhí)行Step 2.2;否則執(zhí)行下列步驟:
a)為V新建一個(gè)子節(jié)點(diǎn)P_ASN,并把該節(jié)點(diǎn)對(duì)應(yīng)的變量NumSN置1;
b)為節(jié)點(diǎn)P_ASN新建一個(gè)子節(jié)點(diǎn)P_NetID,并把該節(jié)點(diǎn)對(duì)應(yīng)的變量NumOOP置1;
c)為節(jié)點(diǎn)P_NetID新建一個(gè)子節(jié)點(diǎn)P_InterfaceID,并把該節(jié)點(diǎn)對(duì)應(yīng)的變量NumP置1;
d)返回Step2;
Step2.2判斷該包的P_NetID屬性是否出現(xiàn)在節(jié)點(diǎn)P_ASN的子節(jié)點(diǎn)中,如果出現(xiàn),就執(zhí)行Step 2.3;否則執(zhí)行下列步驟:
a)把節(jié)點(diǎn)P_ASN對(duì)應(yīng)的變量NumSN自增1;
b)為節(jié)點(diǎn)P_ASN新建一個(gè)子節(jié)點(diǎn)P_NetID,并把該節(jié)點(diǎn)對(duì)應(yīng)的變量NumOOP置1;
c)為節(jié)點(diǎn)P_NetID新建一個(gè)子節(jié)點(diǎn)P_InterfaceID,并把該節(jié)點(diǎn)對(duì)應(yīng)的變量NumP置1;
d)返回Step2;
Step2.3判斷該包的P_InterfaceID屬性是否出現(xiàn)在節(jié)點(diǎn)P_NetID的子節(jié)點(diǎn)中,如果出現(xiàn),就執(zhí)行Step 2.4;否則執(zhí)行下列步驟:
a)把節(jié)點(diǎn)P_NetID對(duì)應(yīng)的變量NumOOP自增1;
b)為節(jié)點(diǎn)P_NetID新建一個(gè)子節(jié)點(diǎn)P_InterfaceID,并把該節(jié)點(diǎn)對(duì)應(yīng)的變量NumP置1;
c)返回Step2;
Step2.4判斷節(jié)點(diǎn)P_InterfaceID對(duì)應(yīng)的變量NumP是否為1,如果不為1,就執(zhí)行Step 2.5;否則執(zhí)行下列步驟:
a)把節(jié)點(diǎn)P_NetID對(duì)應(yīng)的變量NumOOP自減1;
b) 把節(jié)點(diǎn)P_InterfaceID對(duì)應(yīng)的變量NumP自增1;
c)返回Step2;
Step2.5把節(jié)點(diǎn)P_InterfaceID對(duì)應(yīng)的變量NumP自增1,然后返回Step2。
隨著時(shí)間的推移,訪問(wèn)V的數(shù)據(jù)包越來(lái)越多,決策判據(jù)樹(shù)也在不斷變化。其中,變量NumSNASiN的值呈現(xiàn)遞增規(guī)律,用NumSNASiN|t表示NumSNASiN在t時(shí)刻的值,記
ki=(NumSNASiN|t2-NumSNASiN|t1)/(t2-t1)
其中:ki的實(shí)際意義是指就節(jié)點(diǎn)ASiN而言,在時(shí)間間隔ΔT =t2-t1內(nèi)訪問(wèn)V的子網(wǎng)數(shù)增加率。
在正常情況(即沒(méi)有發(fā)生DDoS攻擊)下, ki數(shù)值較小(也可能為0);但是當(dāng)V遭受到DDoS攻擊時(shí),如果ASi是攻擊源自治系統(tǒng),那么ki數(shù)值就會(huì)很大,這是因?yàn)閺腁Si會(huì)有海量的DDoS攻擊包涌向V,而這些包的128位源IP地址又是偽造的(地址中的前64位,即NetID,自然也是偽造的),于是就造成NumSNASiN的值陡增。
因此,筆者可以建立一個(gè)用于判斷DDoS攻擊是否發(fā)生的判據(jù)(決策判據(jù)1):如果Ki超過(guò)K(事先確定的閾值),就說(shuō)明存在DDoS攻擊,攻擊源自治系統(tǒng)是ASi。
不過(guò),該判據(jù)還存在一個(gè)局限:如果DDoS攻擊者在偽造源IP地址時(shí),只使用有限個(gè)NetID(不論是真實(shí)的NetID還是偽造的NetID),就能夠避開(kāi)“決策判據(jù)1”。為此,本文又研究了第二個(gè)判據(jù)。
2.3體系結(jié)構(gòu)和組成
上一節(jié)介紹了實(shí)時(shí)防御方法的設(shè)計(jì)依據(jù),下面詳細(xì)介紹其體系結(jié)構(gòu)和各組成部分。
圖4描述了實(shí)時(shí)防御方法的體系結(jié)構(gòu)。它要求每個(gè)AS都要包括三種實(shí)體,即BR、DCenter和緩存器。下面介紹這三種實(shí)體的功能以及它們之間的關(guān)系。
1)BR(border router,邊界路由器)
除了完成連接不同AS的功能外,BR還包括三個(gè)模塊,即ASN標(biāo)記模塊、包屬性提取模塊和過(guò)濾模塊。ASN標(biāo)記模塊負(fù)責(zé)把本地ASN標(biāo)記到流出本地AS的所有數(shù)據(jù)包上(已被標(biāo)記過(guò)的數(shù)據(jù)包除外);包屬性提取模塊負(fù)責(zé)從每個(gè)流向本地AS中某個(gè)(或某些)受保護(hù)主機(jī)的數(shù)據(jù)包中提取屬性信息(P_ASN,P_NetID和P_InterfaceID),每個(gè)包可以產(chǎn)生一條包屬性信息記錄(該記錄包括四個(gè)字段,即包目的IP地址、P_ASN、P_NetID和P_InterfaceID),每當(dāng)產(chǎn)生H條這樣的記錄時(shí),就傳送給DCenter;在提取完屬性信息后,就可以刪除掉包中的ASN標(biāo)記;過(guò)濾模塊負(fù)責(zé)一方面接收DCenter發(fā)來(lái)的本地過(guò)濾消息,并根據(jù)此消息過(guò)濾數(shù)據(jù)包,從而保護(hù)對(duì)應(yīng)主機(jī)免遭DDoS攻擊;另一方面接收DCenter轉(zhuǎn)發(fā)的由其他AS中DCenter產(chǎn)生的外地過(guò)濾消息,并根據(jù)該消息對(duì)起源于本地AS的流出數(shù)據(jù)包(流出數(shù)據(jù)包如果已被標(biāo)記上ASN,那么就不起源于本地AS;否則就起源于本地AS)進(jìn)行過(guò)濾。不論是本地過(guò)濾消息還是外地過(guò)濾消息,過(guò)濾模塊在這些消息起作用一定時(shí)間(建議值3~5 min)后,就撤銷(xiāo)和刪除它們。
2) DCenter(defense center,防御中心)
每一個(gè)AS中只有一個(gè)DCenter,它包括以下四個(gè)模塊,即決策判據(jù)樹(shù)模塊、實(shí)時(shí)監(jiān)控模塊、裁減模塊和外地過(guò)濾消息處理模塊。決策判據(jù)樹(shù)模塊負(fù)責(zé)接收本地AS中所有BR發(fā)來(lái)的包屬性信息記錄,并根據(jù)這些記錄建立和實(shí)時(shí)更新一棵(或多棵)以受保護(hù)主機(jī)為根節(jié)點(diǎn)的決策判據(jù)樹(shù);實(shí)時(shí)監(jiān)控模塊負(fù)責(zé)對(duì)決策判據(jù)樹(shù)AS層和子網(wǎng)層中的每一個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的變量值進(jìn)行實(shí)時(shí)采樣,并且計(jì)算K或L,然后根據(jù)決策判據(jù)1或2判斷是否存在攻擊,如果發(fā)現(xiàn)攻擊,就立即執(zhí)行下述操作:
a)向本地AS中的所有BR產(chǎn)生并且發(fā)送本地過(guò)濾消息。如果是根據(jù)決策判據(jù)1發(fā)現(xiàn)攻擊的話,本地過(guò)濾消息(稱(chēng)之為1型本地過(guò)濾消息)包括受保護(hù)主機(jī)IP地址、攻擊源ASN和攻擊源AS中非攻擊源子網(wǎng)NetID集(在決策判據(jù)樹(shù)中攻擊源ASN節(jié)點(diǎn)的所有孫子節(jié)點(diǎn)中,如果有某個(gè)孫子節(jié)點(diǎn)對(duì)應(yīng)的變量NumP不為1,那么該孫子節(jié)點(diǎn)的父節(jié)點(diǎn)所標(biāo)志的子網(wǎng)就是非攻擊源子網(wǎng));否則,本地過(guò)濾消息(稱(chēng)之為2型本地過(guò)濾消息)包括受保護(hù)主機(jī)IP地址、攻擊源ASN和攻擊源子網(wǎng)NetID。
b)向攻擊源AS中的DCenter產(chǎn)生并且發(fā)送外地過(guò)濾消息。如果是根據(jù)決策判據(jù)1發(fā)現(xiàn)攻擊的話,外地過(guò)濾消息(稱(chēng)之為1型外地過(guò)濾消息)包括受保護(hù)主機(jī)IP地址和攻擊源AS中非攻擊源子網(wǎng)NetID集;否則,外地過(guò)濾消息(稱(chēng)之為2型外地過(guò)濾消息)包括受保護(hù)主機(jī)IP地址和攻擊源子網(wǎng)NetID。
裁減模塊負(fù)責(zé)定期對(duì)決策判據(jù)樹(shù)進(jìn)行裁減。一般DDoS攻擊會(huì)造成接口層中包含大量對(duì)應(yīng)變量NumP值為1的節(jié)點(diǎn),它們的存在會(huì)影響到對(duì)決策判據(jù)樹(shù)的實(shí)時(shí)更新和監(jiān)控性能。因此,有必要對(duì)這些節(jié)點(diǎn)進(jìn)行裁減,這就是裁減模塊的任務(wù)。
外地過(guò)濾消息處理模塊負(fù)責(zé)接收其他AS中DCenter發(fā)來(lái)的外地過(guò)濾消息,然后把該消息轉(zhuǎn)發(fā)給本地AS中的所有BR。
3)緩存器
當(dāng)有大量的包屬性信息記錄流向DCenter時(shí),DCenter的決策判據(jù)樹(shù)模塊如果來(lái)不及處理,就可以將它們先存放到緩存器中,等到空閑時(shí)再處理它們。
2.4實(shí)時(shí)防御過(guò)程
圖5描述了模擬實(shí)驗(yàn)中所用的網(wǎng)絡(luò)拓?fù)洌ň彺嫫鳑](méi)標(biāo)出來(lái))。
圖5中有兩個(gè)攻擊機(jī)A1和A2正在對(duì)一個(gè)受害機(jī)V實(shí)施DDoS攻擊(它們各自每秒都發(fā)送五千左右的攻擊包;在偽造攻擊包的源IP地址時(shí),A1偽造整個(gè)128位地址, A2只偽造后64位地址,前64位使用NetIDZW3.1),并且還有三個(gè)客戶(hù)機(jī)C1、C2和C3在向V發(fā)送合法的數(shù)據(jù)流。為了能更好地理解2.3節(jié)中的體系結(jié)構(gòu),下面以保護(hù)AS1中的V為例來(lái)描述實(shí)施防御方法的防御過(guò)程。
1)首先,每個(gè)AS中的所有BR都要在起源于本地AS的流出數(shù)據(jù)包上標(biāo)記本地ASN。為此,本文定義了一個(gè)新的擴(kuò)展報(bào)頭——P_ASN屬性報(bào)頭,其格式如圖6所示。
每當(dāng)要標(biāo)記本地ASN,BR都需要為對(duì)應(yīng)數(shù)據(jù)包創(chuàng)建P_ASN屬性報(bào)頭。其中,P_ASN域用于存放本地ASN。由于要求每個(gè)擴(kuò)展報(bào)頭都是8 Byte的整數(shù)倍,在創(chuàng)建P_ASN屬性報(bào)頭時(shí)還需要通過(guò)使用填料n選項(xiàng)來(lái)把2 Byte字節(jié)的填料插入該擴(kuò)展報(bào)頭中,以確保其長(zhǎng)度達(dá)到一個(gè)8 Byte。
2) BR1為每個(gè)流向V的數(shù)據(jù)包創(chuàng)建一條包屬性信息記錄(其中,P_ASN字段值等于該包的 P_NetID屬性報(bào)頭中的P_ASN域值;P_NetID字段值等于該包源IP地址前64位;P_InterfaceID字段值等于該包源IP地址后64位),并把這些記錄發(fā)給DCenter1。創(chuàng)建完包屬性信息記錄后,BR1還要負(fù)責(zé)刪除對(duì)應(yīng)包中的P_NetID屬性報(bào)頭。
3) DCenter1的決策判據(jù)樹(shù)模塊利用接收到的包屬性信息記錄建立和實(shí)時(shí)更新一棵以V為根節(jié)點(diǎn)的決策判據(jù)樹(shù)。由于A1和A2對(duì)V實(shí)施攻擊,在對(duì)該樹(shù)的實(shí)時(shí)監(jiān)控中,實(shí)時(shí)監(jiān)控模塊會(huì)產(chǎn)生以下四條過(guò)濾消息:
a)發(fā)給BR1的1型本地過(guò)濾消息。該消息內(nèi)容包括受保護(hù)主機(jī)IP地址是V的地址,攻擊源ASN是AS2N和攻擊源AS2中非攻擊源子網(wǎng)NetID集僅包括NetIDZW2.1。
b)發(fā)給BR1的2型本地過(guò)濾消息。該消息內(nèi)容包括:受保護(hù)主機(jī)IP地址是V的地址,攻擊源ASN是AS3N和攻擊源子網(wǎng)NetID是NetIDZW3.1。
c)發(fā)給DCenter2的1型外地過(guò)濾消息。該消息內(nèi)容包括:受保護(hù)主機(jī)IP地址是V的地址和攻擊源AS2中非攻擊源子網(wǎng)NetID集僅包括NetIDZW2.1。
d)發(fā)給DCenter3的2型外地過(guò)濾消息。該消息內(nèi)容包括:受保護(hù)主機(jī)IP地址是V的地址和攻擊源子網(wǎng)NetID是NetIDZW3.1。
4) BR1接收到第a)和b)條過(guò)濾消息后,就會(huì)對(duì)流向V的所有數(shù)據(jù)包按如下規(guī)則進(jìn)行過(guò)濾:
規(guī)則1(根據(jù)第a)條消息)如果數(shù)據(jù)包的P_ASN屬性為AS2N且P_NetID屬性不為NetIDZW2.1,就過(guò)濾該包。
規(guī)則2(根據(jù)第b)條消息)如果數(shù)據(jù)包的P_ASN屬性為AS3N且P_NetID屬性為NetIDZW3.1,就過(guò)濾該包。
5) DCenter2在接收到第c)條過(guò)濾消息后把它轉(zhuǎn)發(fā)給BR2;BR2根據(jù)該消息對(duì)所有起源于AS2并且流向V的數(shù)據(jù)包進(jìn)行過(guò)濾,過(guò)濾規(guī)則是包的P_NetID屬性如果不為NetIDZW2.1,就過(guò)濾該包。
6) DCenter3在接收到第d)條過(guò)濾消息后把它轉(zhuǎn)發(fā)給BR3;BR3根據(jù)該消息對(duì)所有起源于AS3并且流向V的數(shù)據(jù)包進(jìn)行過(guò)濾,過(guò)濾規(guī)則是包的P_NetID屬性如果為NetIDZW3.1,就過(guò)濾該包。
7) BR1、 BR2和 BR3在啟用過(guò)濾規(guī)則3~5 min后要撤銷(xiāo)它們。
3模擬實(shí)驗(yàn)與結(jié)果分析
為了驗(yàn)證該實(shí)時(shí)防御方法的有效性,筆者采用多線程技術(shù)在C++Builder 6集成開(kāi)發(fā)環(huán)境下構(gòu)建了一個(gè)模擬實(shí)驗(yàn)平臺(tái),實(shí)驗(yàn)拓?fù)浣Y(jié)構(gòu)如圖5所示。
為了便于比較分析,本文進(jìn)行了兩次實(shí)驗(yàn),相關(guān)實(shí)驗(yàn)信息如表1所示。其中,V的流量統(tǒng)計(jì)工作是由BR1在轉(zhuǎn)發(fā)數(shù)據(jù)包的同時(shí)完成的。
由圖7可以看出:在沒(méi)有部署實(shí)施防御方法的情況下,當(dāng)A1和A2先后向V發(fā)送DDoS攻擊包時(shí),V的流量會(huì)由起初的正常流量0.5 tpps左右(tpps: thousand packages per second),先陡增到5.5 tpps左右,再繼續(xù)陡增到10.7 tpps左右;只要A1和A2不停止攻擊,V的流量就會(huì)一直維持在高值狀態(tài),最終會(huì)導(dǎo)致V無(wú)法為其他用戶(hù)提供服務(wù),甚至崩潰。另外,還可以看出,C1、C2和C3發(fā)送的流量大約為5.5 tpps(本文把這個(gè)流量稱(chēng)為正常流量或合法流量),A1的攻擊流量大約為5 tpps,A2的攻擊流量大約為5.2 tpps。
如果部署實(shí)時(shí)防御方法來(lái)保護(hù)V,那么防御效果如何?由圖8可以看出。
在t=10 s后,V的流量先陡增到1.2 tpps左右就馬上回落到正常流量0.5 tpps左右,根本來(lái)不及上升到5.5 tpps左右,這充分說(shuō)明實(shí)時(shí)防御方法在短時(shí)間內(nèi)就檢測(cè)到了A1的攻擊,并對(duì)其所發(fā)送的攻擊包進(jìn)行了檢測(cè)過(guò)濾,而且過(guò)濾操作沒(méi)有過(guò)濾掉合法流量;在t=20 s后,V的流量先陡增到5tpps左右,就馬上又回落到正常流量0.25 tpps左右,而不是5.5 tpps左右,這是因?yàn)閷?shí)時(shí)防御方法在檢測(cè)到了A2的攻擊后,不僅過(guò)濾了A2所發(fā)送的攻擊包,而且還過(guò)濾掉了C2所發(fā)送的數(shù)據(jù)包。但這是值得的,本文以犧牲V不能為AS3中子網(wǎng)3.1內(nèi)的用戶(hù)(如C2)提供服務(wù)為代價(jià),確保了既能過(guò)濾掉來(lái)源于A2的所有攻擊包又使V能為其他絕大多數(shù)用戶(hù)(如C1和C3)提供服務(wù);在t=10~190 s期間,由于實(shí)驗(yàn)中設(shè)定過(guò)濾消息的有效時(shí)間是180 s,這段時(shí)間會(huì)持續(xù)對(duì)A1所發(fā)送的攻擊包進(jìn)行檢測(cè)過(guò)濾,但是因?yàn)锳1攻擊直到t=240 s才結(jié)束,所以當(dāng)t=190 s時(shí),隨著針對(duì)A1攻擊流量過(guò)濾操作的結(jié)束,V的流量曲線又再次出現(xiàn)了陡增,不過(guò)馬上又回落下來(lái)(這是因?yàn)閷?shí)時(shí)防御方法再次檢測(cè)到網(wǎng)絡(luò)中仍然存在A1的攻擊,于是再次對(duì)其所發(fā)送的攻擊包進(jìn)行了長(zhǎng)達(dá)180 s的檢測(cè)過(guò)濾)。
在t=20~200 s期間,由于這180 s會(huì)對(duì)來(lái)源于AS3中子網(wǎng)3.1的所有數(shù)據(jù)包(包括C2發(fā)送的數(shù)據(jù)包)進(jìn)行過(guò)濾,所以V的流量曲線位于0.25 tpps左右(由C1和C3發(fā)送的數(shù)據(jù)包形成);由于A2已經(jīng)于t=60 s處停止攻擊,所以當(dāng)t=200 s時(shí),隨著針對(duì)來(lái)源于AS3中子網(wǎng)3.1的數(shù)據(jù)包過(guò)濾操作的結(jié)束,V的流量曲線又再次回到0.5 tpps左右(V又可以為C2提供服務(wù))。
通過(guò)上述對(duì)比可以發(fā)現(xiàn),實(shí)時(shí)防御方法(其具體防御過(guò)程請(qǐng)參見(jiàn)2.4節(jié))能夠?qū)崟r(shí)(秒級(jí))檢測(cè)到攻擊的存在,并且在過(guò)濾攻擊包的過(guò)程中還能保證V可以為絕大多數(shù)合法用戶(hù)提供服務(wù)。它不僅可以有效地防范擁有多個(gè)攻擊源的大規(guī)模DDoS攻擊,而且還可以追蹤到這些攻擊源所在的自治系統(tǒng),甚至還可能追蹤到它們所在的攻擊源子網(wǎng)(參見(jiàn)決策判據(jù)1和2)。
4結(jié)束語(yǔ)
以前的DDoS防御方法往往是針對(duì)IPv4網(wǎng)絡(luò)提出的,隨著IPv4向IPv6網(wǎng)絡(luò)的快速發(fā)展,于是就有必要對(duì)如何在IPv6環(huán)境中防御DDoS攻擊進(jìn)行深入研究。基于因特網(wǎng)是由很多AS組成這一事實(shí),本文在仔細(xì)分析DDoS攻擊之“源地址欺騙”特點(diǎn)以及IPv6地址結(jié)構(gòu)之后提出了一種IPv6環(huán)境下實(shí)時(shí)DDoS防御方法。它的核心思想是,首先在受害者自治系統(tǒng)內(nèi)建立決策判據(jù)樹(shù),然后依據(jù)決策判據(jù)1和2對(duì)該樹(shù)進(jìn)行實(shí)時(shí)監(jiān)控,如果發(fā)現(xiàn)攻擊,就發(fā)送過(guò)濾消息通知相關(guān)實(shí)體(包括受害者自治系統(tǒng)和攻擊源自治系統(tǒng)中的BR)在受害端和源端對(duì)攻擊包進(jìn)行檢測(cè)過(guò)濾,從而保護(hù)受害者。實(shí)驗(yàn)證明,該方法能夠在秒鐘數(shù)量級(jí)檢測(cè)到攻擊并且對(duì)攻擊包進(jìn)行過(guò)濾,能有效地防范多個(gè)DDoS攻擊源。另外,該方法還能準(zhǔn)確地區(qū)分攻擊流和高業(yè)務(wù)流,需要較少的人工管理,可以在不恢復(fù)攻擊路徑的情況下就直接追蹤到攻擊源所在的AS(甚至是子網(wǎng))。
雖然實(shí)時(shí)防御方法有以上優(yōu)勢(shì),但仍然存在一些問(wèn)題,比如,如何確保過(guò)濾消息在傳送過(guò)程中的安全,閾值K和L以及變量H的具體取值。這些問(wèn)題仍然需要進(jìn)一步深入的研究。
參考文獻(xiàn):
[1]TUOMAS A. RFC 3972, Cryptographically generated addresses(CGA)[S]. 2005.
[2]鄭輝,陳茂科,段海新,等. 基于混沌序列的IPv6地址分配與驗(yàn)證[J]. 通信學(xué)報(bào),2005,26(B01):109-112.
[3]王效亮.IPv6下拒絕服務(wù)攻擊追蹤的研究[D]. 太原:太原理工大學(xué),2006.
[4]HINDEN R,DEERING S,NORDMARK E. RFC 3587,IPv6 global unicast address format[S]. 2003.
[5]Microsoft Corp.Microsoft Windows的TCP/IP基礎(chǔ)知識(shí)[EB/OL]. [2007-03-30]. http: //www.microsoft.com /china /technet /itsolutions /network /evaluate /technol /tcpipfund /tcpipfund_ch03.mspx#EIOAC.
[6]牛瑛霞. 一大進(jìn)步,IPv6與IPv4協(xié)議的比較[EB/OL]. [2007-03-30]. http: //www.pconline.com.cn /network /skills /0703 /977522_2.html.
[7]王飛. DDoS網(wǎng)絡(luò)攻擊日益猖獗網(wǎng)絡(luò)貿(mào)易深受其害[EB/OL]. [2007-03-30]. http://www.enet.com.cn/article/2006/0228/A20060228506069.shtml.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文