云計算做數(shù)據(jù)包分析防御DDOS攻擊
在云計算環(huán)境,云主機(jī)提供被請求的云服務(wù),有時在收到大量的請求時可能崩潰。這就是發(fā)生了拒絕服務(wù)(DoS)攻擊。它放正常用戶不能正常訪問。DoS攻擊通常采用IP欺騙的手法用來隱藏真正的攻擊源,同時使得攻擊源地址看起來都不相同。
本文中我們提供了一個在云計算環(huán)境下防御DDoS攻擊的方法,這個新的跳數(shù)統(tǒng)計過濾的方法提供了一個在云計算環(huán)境下的獨立網(wǎng)絡(luò) ,可以容易的的防止DoS的解決方案。這個方法也能夠降低正常用戶云服務(wù)的不可用率,降低更新的數(shù)量,節(jié)省了計算時間。該方法模擬了CloudSim Toolkit環(huán)境和相應(yīng)的產(chǎn)生的結(jié)果。
一、介紹
云計算被定義為一種新型的計算形式,以可以動態(tài)擴(kuò)展的虛擬資源在互聯(lián)網(wǎng)上提供服務(wù)。高級的云計算技術(shù)包括了,節(jié)省消耗,高可用和可擴(kuò)展的特性。
DoS 攻擊不在于通過修改數(shù)據(jù)獲得非法訪問,而是希望使目標(biāo)的服務(wù)或者整個網(wǎng)絡(luò)崩潰,或者是擾亂正常用戶的訪問。DoS攻擊能在一個源或者多個源發(fā)起。多個源的攻擊被稱為分布式拒絕服務(wù)攻擊(DDoS)。
當(dāng)操作系統(tǒng)注意到某個服務(wù)的工作負(fù)載較高,它將分配更多的計算資源來應(yīng)付增加的負(fù)載。攻擊者可以淹沒一個單點的,系統(tǒng)基礎(chǔ)的地址來達(dá)到使目標(biāo)服務(wù)的全不可用目的。這些攻擊者比較典型的手法就是洪水攻擊,基本是由攻擊者發(fā)起大量的無意義的報文給某一確定的在云上面開放的服務(wù)。每一個請求都會被服務(wù)去處理以驗證是否為合法請求,這就使得每個共計請求都會占用一定量的工作負(fù)載。在洪水般的攻擊下通常會造成服務(wù)器的拒絕服務(wù)。
二、跳數(shù)計算
雖然跳數(shù)信息沒有直接存儲在IP頭中,但它可以試用TTL字段計算出來。TTL在IP頭中是一個8位的字段,起初是用來指定互聯(lián)網(wǎng)上每個報的最大生命周期的。每個中間的路由器會把經(jīng)過它的IP包在轉(zhuǎn)發(fā)到下一跳前把TTL值減一。
A.提取最終的TTL值
當(dāng)一個數(shù)據(jù)包到達(dá)目的地址提取TTL字段值的時候,這個值被稱為最終TTL值。跳數(shù)統(tǒng)計的挑戰(zhàn)在于在目的地址只能看到最終TTL值。如果所有的操作系統(tǒng)都是用相同的TTL初始值的將會很簡單,但實際他們并沒有再初始TTL值上達(dá)成共識。另外,由于操作系統(tǒng)對于給定的IP地址可能會隨時改變,我們就不能假設(shè)每個IP地址都使用一個不變的TTL初始值。
B.研究TTL的初始值
根據(jù)以上得出,大多數(shù)現(xiàn)代的操作系統(tǒng)只選擇使用幾種初始TTL值,如 30,32,60,64,128和255.只有很少的互聯(lián)網(wǎng)主機(jī)會被分割超過30跳以上,因此我們可以初步判定數(shù)據(jù)包的初始TTL值為在以上集合總大于最終TTL值的最小數(shù)值。
例如,如果最終TTL值為112,那么在可能的128和255中選擇最小的是128為初始值。這樣給出最終的TTL值就能夠找到初始的TTL值。初始TTL值可以由以下方法計算得出:
Initial TTL=32 if final TTL <=32
Initial TTL =64 if 32<final TTL<=64
Initial TTL =128 if 64<final TTL <=128
Initial TTL =255 if 128<final TTL <=255
C.IP2HC表
IP2HC表是一個在數(shù)據(jù)包源IP地址和這個IP的跳數(shù)做映射的表。這是一個以源IP地址為索引來匹配跳數(shù)信息。
三、防止DoS攻擊的算法
該算法使用跳數(shù)過濾機(jī)制,并且提供了一個在云計算環(huán)境中執(zhí)行的明確思想。
這個算法需要在云上連續(xù)的監(jiān)控通過網(wǎng)絡(luò)的數(shù)據(jù)包,然后我們從監(jiān)控到的TCP/IP包中提取出SYN標(biāo)識、TTL值和源IP信息。該算法識別每個捕獲的包的四元組的整個操作如下,
如果SYN標(biāo)識被設(shè)置,并且源IP地址在IP2HC表中存在,然后試用IP包的TTL值計算跳數(shù)。現(xiàn)在檢查跳數(shù)是否和存儲的跳數(shù)是否一致,如果不一致就更新這個IP地址對應(yīng)的跳數(shù)字段的值。
如果SYN標(biāo)識被設(shè)置但是源IP地址在IP2HC表中不存在,那么就計算跳數(shù),然后把源IP地址和對應(yīng)的跳數(shù)作為新的條目添加到該表中。
如果SYN標(biāo)識沒有被設(shè)置,并且IP地址存在于IP2HC表中,那么就計算跳數(shù)。如果跳數(shù)與IP2HC表中存儲的對應(yīng)跳數(shù)不符,那么可以判定這個包是虛假的或者這個包是非法的。
如果SYN標(biāo)識沒有被設(shè)置并且源IP地址不存在于IP2HC表中,這意味著這個包是虛假的,因為每個合法的IP地址都有一個可用的TCP連接信息記錄在IP2HC表中的。
這個檢測算法提取去了每個IP包的源IP地址和最終TTL值。算法用推測出初始的TTL值減去最終的TTL值來獲得中間的跳數(shù)。源IP地址作為表的索引檢索這個IP地址的正確跳數(shù)。如果某個數(shù)據(jù)包計算跳數(shù)和表中的匹配,這個包為可信的,反之這個包就比較像是虛假的。
算法-1
參考下面的標(biāo)識:
synflag = Syn bit of TCP packet.
mcount =malicious packet counter.
Tf= final value of TTL.
Ti=initial value of TTL.
偽代碼如下:
- For each packet
- Set TTL = ExtractFinalValueOfTTL( );
- //get time-to-leave field of IP packet
- Set srcIp = ExtractSourceIP( );
- //get source IP address from IP packet
- Set synflag = ExtractSynBit( );
- //get Syn flag value from TCP packet
- If (synflag is set)
- {
- If (establish_tcp_connection( ))
- //true when connection established
- {
- If ( srcIp is exist in IP2HC table )
- {
- ComputePacket ( srcIp , TTL , synflag);
- // function call which filter the spoofed
- Packet
- }
- else //new connection packet
- {
- Hc=ComputeHopCount( TTL );
- //get hop-count value
- NewEntryInTable(srcIp,Hc);
- //Add entry into IP2HC table
- }
- }
- else
- {
- // ignore packet
- }
- }
- else //synflag is not set
- {
- If ( srcIp exist in IP2HC Table)
- {
- ComputePacket ( srcIp , TTL, synflag );
- // function call which filter the spoofed
- packet
- }
- else
- {
- ‘drop the packet’ //Packet is spoofed
- mcount++; // increment in malicious
- packet by 1
- }
- }
- ComputePacket ( string srcIp , int Tf , boolean
- synflag)
- {
- Hc=ComputeHopCount( Tf ); //get hop-count
- value
- Hs=RetreiveStoredHopCount(srcIp);
- //get stored hop-count value
- If ( Hc != Hs )
- {
- if( synflag is set)
- {
- UpdateTable ( srcIp , Hc);
- //update hop-count value in IP2HC
- table
- }
- else
- {
- ‘drop the packet’ //Packet is spoofed
- mcount++;
- // increment in malicious packet by 1
- }
- }
- else
- {
- ‘allow the packet’ // packet is legitimate
- }
- }
- int ComputeHopCount( int Tf )
- {
- Set Ti= InvestigateInitialTTL(Tf);
- return Ti - Tf; //return hop-count value
- }
四、模擬結(jié)果
我們在CloudSim Toolkit上模擬我們的算法,在云主機(jī)上已經(jīng)到達(dá)了1000 pps。實驗結(jié)果見表1,其中包括了包的SYN標(biāo)識(Syn)和源IP地址(Src)的各種情況,Syn=0表示SYN 標(biāo)識沒有被設(shè)置,Syn=1表示SYN標(biāo)識已經(jīng)被設(shè)置。同樣Src標(biāo)識當(dāng)前源IP地址是否在IP2HC表中。Src=0表示條目不存在,Src=1表示條目存在。
第一個實驗包括了580(337+243,見表1)個惡意包,和173個新條目,并且只有83個條目被更新。相反,需要在表中需要被更新的包是130(Syn=1且Src=1)。所以有效包的(實際上已縮減)是47個(130-83)??偣部s減在表中更新數(shù)是30.15%(總共允許的報數(shù)/所有包數(shù)),這比常規(guī)的方法改善了很多。
在對模擬樣本輸入到達(dá)率為‘A’的計算時間的各種結(jié)果進(jìn)行了分析匯總為表2。
表2:樣本輸入
圖3中展示了我們提出的方法可能節(jié)省的計算時間,在2,3,4的用樣本里趨勢有變化。樣本2需要更多的時間,樣本3和4因為依賴于接收包的字段。計算時間是云網(wǎng)絡(luò)性能衡量的相關(guān)因素。它提高了云主機(jī)的處理能力,可用資源損失達(dá)到最小化。
圖3:計算時間
五、結(jié)論
云計算越來越流行,但是隨著云的廣泛使用,其安全問題也越來越明顯。一個運安全的主要的威脅是分布式拒絕服務(wù)攻擊(DDoS)或者是更為簡單的拒絕服務(wù)攻擊(DoS)。提高資源的可用率,是很有必要提供一種防御DDoS攻擊的機(jī)制。其中一種防御方法就是跳數(shù)過濾方法(HCF)。本文展示了一個版本的跳數(shù)統(tǒng)計方法,不只是檢測惡意數(shù)據(jù)包也包括了更新IP的跳數(shù)表的機(jī)制。通過分析TCP協(xié)議的SYN標(biāo)識減少了更新次數(shù),也就節(jié)省了計算時間。
原文地址:http://irnet.sg/irnet_journal/journal/IJCSEE/IJCSEE_Vol1Iss1/06.pdf