摘 要:針對IPv4網絡環境下的隨機包標記法不能直接應用于IPv6的問題,依據IPv6自身的特點提出了一種基于擴展報頭隨機標記的IPv6攻擊源追蹤方案。對IPv6報頭進行分析研究,選取了合適的標記區域及編碼格式,對PMTU算法進行了修改以更好地滿足追蹤的需要,采用攻擊樹生成算法重構攻擊路徑。理論分析與仿真實驗結果表明,該方案能夠有效地重構攻擊路徑,實現對IPv6攻擊源的追蹤。
關鍵詞:網絡追蹤; IPv6; 隨機包標記; 擴展包頭; 分布式拒絕服務攻擊
中圖分類號:TP393.03文獻標志碼:A
文章編號:1001-3695(2010)06-2335-03
doi:10.3969/j.issn.10013695.2010.06.097
IPv6 attack source traceback scheme based on extension headerprobabilistic marking
YANG Jun, WANG Zhenxing, GUO Haoran
(School of Information Engineering, PLA Information Engineering University, Zhengzhou 450002, China)
Abstract:The probabilistic packet marking for IPv4 networks could not applied to IPv6 without any change.This paper proposed an IPv6 attack source traceback scheme based on extension header probabilistic marking according to the features of IPv6.It analysed the IPv6 header, selected the appropriate marking areas and gave the specification of coding,made some changes to PMTU algorithm so as to satisfy the demand of traceback,adopted the algorithm of generating attack tree to reconstruct the attack paths.Theoretic analysis and simulation results prove that it can reconstruct the attack paths effectively,realize the aim of IPv6 attack source traceback.
Key words:IP traceback; IPv6; probabilistic packet marking(PPM); extension header; DDoS
互聯網升級和過渡到IPv6是必然的趨勢。然而,IPv6并未對現有網絡體系結構產生根本性的改變,數據包的網絡傳輸機制與IPv4基本相同,這就意味著類似于IPv4下的網絡安全威脅將依然存在[1],DDoS就是其中典型的攻擊方式。
DDoS通過耗盡服務器的資源使得合法用戶無法獲取正常的服務。入侵檢測、防火墻等安全措施能比較有效地阻止此類攻擊行為,但卻無法確定攻擊源的真實位置。這主要是TCP/IP允許主機自己填寫源IP地址,并且在TCP/IP中也沒有提供一種機制來驗證源IP地址的真實性,因此需要一種安全機制,當攻擊發生時能夠確定攻擊源的真實位置以及攻擊路徑,這就是攻擊源追蹤技術。
在攻擊源追蹤技術的發展過程中,先后出現了多種技術,主要應用于IPv4網絡環境,包括入口過濾[2]、鏈路測試[3]、路由器日志法[4]、基于ICMP報文的iTrace方法[5]以及包標記法[6,7]。有關IPv6網絡環境下的攻擊源追蹤的研究目前還較少。文獻[8]提出了IPv6下基于改進的SPIE源追蹤方案,作為路由器日志法在IPv6環境下的一種實現,該方案仍然需要較大的計算開銷和路由器日志存儲空間。文獻[9]對IPv6環境下基于包采樣和基于包標記的攻擊源追蹤策略作了一定的說明,提出可以使用IPv6基本報頭中的通信流類別字段和流標簽字段來存放標記信息,但是使用這兩個字段作為標記信息的存放區域帶有較大的局限性。
包標記法中的隨機包標記法(PPM)因其在追蹤速度、路由器開銷以及追蹤能力等方面都有較大的優勢,是當前研究較多的追蹤技術。其中比較有代表性的是Savage等人[6]提出的分段標記算法(fragment marking scheme,FMS)和Song等人[7]提出的高級標記算法(advanced marking scheme,AMS)。但由于IPv6在報頭格式以及分片機制等方面都與IPv4有很大不同,IPv4下的攻擊源追蹤技術不能直接應用于IPv6,要將該技術應用于IPv6網絡環境還需要進行較大的改進。本文以IPv6協議自身的特性為切入點,研究適合于IPv6環境的隨機包標記攻擊源追蹤方案。
1 基于IPv6擴展報頭的隨機包標記法
隨機包標記追蹤技術的基本思想是:路由器以一定概率對經過的數據包進行采樣,同時對數據包進行標記,標記內容包括攻擊路徑上任意兩個相鄰路由器的地址,受害者根據收到的標記信息恢復攻擊路徑。
1.1 標記區域的選擇
包標記法一般選擇報頭中不常使用的字段作為標記信息的存放區域,這也是標記區域的選擇原則。在IPv4下,標記區域通常是用于分片的標志域(identification)和偏移域(offset),這主要是由于數據包在途中分段處理的情況很少出現(不超過0.25%[10])。IPv6與IPv4報頭相比有很大不同,它由基本報頭和擴展報頭組成。要實現IPv6下的隨機包標記,首先需要從IPv6報頭中尋找合適的標記區域。圖1顯示了40 Byte的IPv6基本報頭的格式。
基本報頭的八個字段為版本、通信流類別、流標簽、載荷長度、下一報頭、跳限制、源地址以及目的地址。可以看到,IPv6基本報頭的格式更加簡潔,去掉了不需要的或很少使用的字段。
IPv6簡潔的基本報頭格式也為尋找標記信息的存儲區域帶來了困難,在RFC 2460中除了通信流類別、流標簽字段沒有定義詳細的使用細節,其余的字段都有其特殊的意義及用途而不能用于標記信息的存放。根據標記區域選擇原則,20 bit的通信流類別和8 bit的流標簽字段可用來保存標記信息,但其使用帶有局限性。首先是28 bit的標記空間相對128 bit的IPv6地址長度來說容量偏小,將2×128 bit的路徑邊信息編碼成為28 bit的字段值,將耗費比較大的計算代價;其次是FRC 2474和RFC 3697已對兩個字段作出說明,其使用也將逐步規范。因此,需要進一步從擴展報頭中尋找標記區域。
IPv6定義了多個擴展報頭,能提供對多種應用的支持,同時又為以后支持新的應用提供了可能。RFC 2460規定的所有IPv6節點必須支持的IPv6擴展報頭有逐跳選項報頭、目標選項報頭、路由報頭、片段報頭、身份驗證報頭以及封裝安全有效載荷。比較這些擴展報頭,只有逐跳選項擴展報頭是每個中間路由器都必須處理的惟一一個擴展報頭,同時,該擴展報頭能提供足夠大的存儲空間并且擁有更好的靈活性,在數據存儲及格式編碼上都存在優勢,適合用來存放標記信息。
1.2 標記信息編碼
確定逐跳選項擴展報頭作為標記信息的存放區域后,需要定義標記信息的存放格式以及編碼規范。本方案將標記信息存放區域作為逐跳選項擴展報頭的一個選項,滿足類型—長度—值(TLV)的編碼格式,便于相關節點對其進行處理。圖2顯示了用于存儲路徑信息的逐跳選項擴展報頭格式。
用三元組〈distance,ESAddr,EEAddr〉表示一條邊。其中:距離域distance表示該邊的起點距離受害者的跳數;ESAddr和EEAddr分別記錄邊的頭尾節點的全球IPv6地址,這里用未經壓縮的128 bit的全球IPv6地址,可降低受害者重構攻擊路徑時的處理開銷。
在選項類型字段中,最高的兩位定義為00,表示當處理選項的路由節點不能識別選項的類型時應當跳過這個選項,可以避免用于存儲標記信息的選項字段被干擾。
選項類型字段中的第三高位定義為1,表示在通往目標的路徑中,選項數據可以改變(0表示不能改變),可以使選項字段中跳數域distance的值隨著路由跳數的增加依次遞增。
字段sttl表示數據包自第一次被標記后經過的路由器跳數,用于自適應邊標記算法中標記概率的計算。
1.3 PMTU發現算法修改
路由器在對采樣的數據包進行標記時,在逐跳選項擴展報頭中新增加了一個選項字段用做標記信息的存放區域,這會增加報文的長度,有可能導致報文的長度超過路徑MTU。由于IPv6路由器不支持報文的拆分,數據包將被丟棄,這會影響到標記信息的傳送。為避免這種情況的發生,需要對路徑MTU發現算法作出一定的修改,使得被標記過的數據包不會因為長度的增加而被丟棄。
首先需要確定數據包增加長度的字節數,分兩種情況:a)被采樣的數據本身含有逐跳選項擴展報頭,這時只需增加一個長度l=16×2+1+1+1+1=36 Byte的選項字段; b)被采樣的數據本身不攜帶逐跳選項擴展報頭,增加的長度除了36 Byte的選項字段,還包括1 Byte的下一報頭字段,1 Byte的報頭擴展長度字段以及3 Byte的填充字節以滿足8 Byte的對齊要求,增加的總長度為l=36+1+1+3=40 Byte。選取其中較大的值40 Byte來重新計算路徑MTU,算法修改后如下:
M=max(PMTU,1280)-40 Byte;
for every packet p{
if p.size>M{
fp[i]=Fragment(p,M);
send(fp[i]);
}
else
send(p);
}
1.4 自適應的邊標記算法
自適應的邊標記算法因其在受害者重構攻擊路徑時擁有更好的收斂效果[7],是當前研究的熱點。本文所提方案中,每個路由器以概率r采樣其所轉發的IPv6報文,先判斷采樣到的報文是否被標記過。如果沒有被標記,則按照圖1的格式構造逐跳選項擴展報頭用于標記信息的存放;如果被標記過則重新計算標記概率為r/Sttl,并以該值重新進行標記。本文稱此標記算法為V6PPM,其描述如下:
路由器R的標記過程:
for each packet p
Select a random number r in the range[0,1)
if( p.distance==0)
Set p.ESAddr=R.address
Set p.distance=p.distance+1
Set p.sttl=p.sttl+1
else if (p.distance==1)
Set p.EEAddr=R.address
Set p.distance=p.distance+1
Set p.sttl=p.sttl+1
else if(p.distance>1 p.EEAddr !=NULL)
Set r=r/p.sttl
Set p.ESAddr=R.address
Set p.distance=1
Set p.sttl=p.sttl+1
else
Set p.sttl=p.sttl+1
1.5 攻擊路徑重組
當受害者V檢測到有攻擊發生時,會收集其所接收數據包中的標記信息,這些信息將會組成一個邊的集合E,攻擊路徑的重組即是依據路徑邊集合生成完整的攻擊拓撲圖。本文在此提出基于攻擊樹生成算法的攻擊路徑重組方案。
通過分析可發現,在DDoS中,攻擊路徑在拓撲形狀上表現為一棵樹型結構,在此稱之為攻擊樹。
攻擊樹定義:受害者V為樹的根節點;攻擊路徑上除V的其余路由器節點構成m(m>0)個互不相交的有限集合T1,T2,…,Tm。其中每個集合又是一棵樹,稱為根的子樹。
攻擊樹的生成過程就是攻擊路徑的重構過程。其主要過程如下:
a)確定V為樹的根節點。
b)在邊集合E中找出所有尾節點為V的邊〈1,R′,V〉,將R′作為攻擊樹中V的孩子節點。
c)在邊集合E中找出所有尾節點為R′的邊〈2,R″, R′〉,將R″作為攻擊樹中R′的孩子節點。
d)重復以上過程,直到找出所有的邊〈max(d),R*,R#〉,將R*作為攻擊樹的葉節點。
e)所得到的樹T即代表了整個攻擊路徑。
攻擊路徑重組算法偽代碼描述如下:
Set T as a tree with root V
Set Sd as an empty set where 1≤d≤max(d)
for d = 1 to max(d)
for each packet p in P where p.Distance = = d
ifp not in Sd
Add p to Sd
for each item w in S1
if w.EEAddr = = V.Addr
Add w.EEAddr to T1
for d = 2 to max(d)
for each item w in Sd
for each item m in Sd1
if w.EEAddr = = m.ESAddr
Add w.EEAddr to Sd
Output T
2 性能開銷分析
攻擊源追蹤方法的優缺點主要體現在追蹤速度、DDoS追蹤能力、事后追蹤能力、路徑重組開銷[11]等方面。V6PPM在實現數據包標記時采取對攻擊路徑邊進行標記,由前面的路徑重構算法可看到,V6PPM能同時追蹤多個攻擊源。由于隨機報標記法本身即具備事后追蹤的能力,V6PPM同樣具備該特點。以下將主要就追蹤速度和路徑重組開銷對V6PPM展開分析。
2.1 V6PPM算法的收斂時間分析
追蹤速度可以用時間衡量,但在目前的大多數研究中都采用報文數目作為衡量標準,也即算法的收斂時間。
收斂時間指的是受害者重構出完整攻擊路徑所需要收集的數據包的最小數目,計為M。
設r為每個路由器對數據包的采樣率,q為距離受害者d跳遠的路由器所標記的信息能被接收到的概率,則有
qV6PPM=r(1-r2/2)(1-r2/3)…(1-r2/d)=r∏di=2(1-r2/i)
根據對coupon collector problem的求解,可以得到V6PPM算法的收斂時間M的期望值為
E(M)V6PPM≈ln(d)/r∏di=2(1-r2/i)
而根據ASM算法有[7]
qAMS=r(1-r)d-1
E(M)AMS≈ln(d)/r(1-r)d-1
當d>1時,顯然有qAMS
2.2 路徑重組開銷分析
為了解決標記空間不足的問題,FMS算法將邊信息分段,分散標記在多個報文中。受害者重構攻擊路徑時首先要還原出路徑邊信息,當有多個攻擊源時,片段重組非常耗時。
AMS算法彌補了FMS的弱點,通過記錄邊的hash值,解決標記空間不足的問題,但其需要一個假設前提,即受害者V預先知道其上游的網絡拓撲結構。以此上游拓撲為背景,受害者V將標記信息中包含的邊的hash值與上游拓撲進行匹配比較來重構攻擊路徑。
V6PPM算法利用了IPv6擴展報頭靈活可擴展的特性,標記信息為128 bit未經壓縮的IPv6全球地址。受害者V在重構攻擊路徑時,收集到的標記信息即為完整的路徑邊信息。與FMS算法相比,V6PPM算法節省了路徑片段重組的開銷。相較于AMS算法,V6PPM算法在標記信息時無須計算路徑邊的hash值,也無須知道上游的網絡拓撲結構這樣的過強假設,具有更好的實用性。
3 仿真實驗
為了驗證所提出的攻擊源追蹤方案在IPv6環境下的運行效果,以NS2(version 2.31)為仿真實驗平臺,分別實現了IPv4環境下的AMS算法和IPv6環境下的V6PPM算法。因為在每條攻擊路徑上路由器對數據包的采樣是獨立的,且所有路徑重構時間與攻擊源的個數呈線性比例關系[7],所以只選取了一條跳數為15的攻擊路徑作為實驗對象。圖3顯示了路由器以不同的概率采樣數據包時,攻擊路徑重構完成百分比與受害者接收數據包數量的對應關系。可以看到,IPv6下的V6PPM算法達到了預期的追蹤效果。
4 結束語
本文根據IPv6自身特點提出了一種適于IPv6環境下的攻擊源追蹤方案。理論分析與仿真結果表明,該方案在對IPv6攻擊源進行追蹤時能達到預期的效果。由于所提出的方案需要額外的空間來存儲標記信息,勢必會占用部分網絡帶寬,造成一定的影響,如何減小這種影響將是下一步努力的方向。
參考文獻:
[1]李振強,趙曉宇,馬嚴.IPv6安全脆弱性研究[J].計算機應用研究,2006,23(11):109-112.
[2]SUNG M,XU J. IP tracebackbased intelligent packet filtering: a novel technique for defending against Internet DDoS attacks[J].IEEE Trans on Parallel and Distributed Systems,2003,14(9):861-872.
[3]STON R. Center track:an IP overlay network for tracking DoS floods [C]//Proc of USENIX Security Symposium. 2000.
[4]LEE T H, WU Weikai, YAU T, et al. Scalable packet digesting schemes for IP traceback[C]//Proc of IEEE International Conference on Communications. 2004:1008-1013.
[5]MANKIN A,MASSEY D, WU C,et al. On design and evaluation of “intentiondriven” ICMP traceback[C]//Proc of IEEE International Conference on Computer Communications and Networks. 2001:159-165.
[6]SAVAGE S,WETHERALL D.Practical network support for IP traceback[C]//Proc of ACM SIGCOMM Conference. 2000:295-300.
[7]SONG D,PERRING A. Advanced and authenticated marking schemes for IP traceback[C]//Proc of IEEE INFOCOMM Conference. 2001:878-886.
[8]占勇軍,謝冬青,周再紅,等. IPv6下基于改進的SPIE源追蹤方案[J].計算機工程與科學,2007,29(4):11-13.
[9]周曜,劉耀宗,蔣道霞,等.移動IPv6中的攻擊源追蹤問題研究[J].計算機應用研究,2008,25(3):903-905.
[10]STOICA I, ZHANG Hui. Providing guaranteed services without per flow management[C]//Proc of ACM SIGCOMM Conference.New York:ACM Press, 1999:81-94.
[11]夏春和,王海泉,吳震,等.攻擊源定位問題的研究[J].計算機研究與發展,2003,40(7):1021-1027.