DDOS攻擊下基于TTL策略的數(shù)據(jù)安全方法研究
主動(dòng)防御DDOS攻擊,保護(hù)服務(wù)器端數(shù)據(jù)安全的核心是在發(fā)現(xiàn)可疑連接時(shí),主動(dòng)去鑒別這種連接是不是異常的,而不是被動(dòng)等待更多的DDOS特征信息。在發(fā)現(xiàn)異常連接后,采用一種根據(jù)TTL字段和IP字段進(jìn)行帶寬限制的方法,以扼制有害數(shù)據(jù),以達(dá)到主動(dòng)防御DDOS攻擊的目的。
1 主動(dòng)檢測(cè)方法
隨著Internet用戶上網(wǎng)帶寬的增加和互聯(lián)網(wǎng)上DDOS黑客工具的不斷發(fā)布,DDOS攻擊的實(shí)施越來越容易,DDOS攻擊事件正在呈上升趨勢(shì)。由于商業(yè)競(jìng)爭(zhēng)、打擊報(bào)復(fù)和網(wǎng)絡(luò)敲詐等多種因素,很多企業(yè)長(zhǎng)期以來一直為DDOS攻擊所困擾。隨之而來的是客戶投訴、法律糾紛、客戶流失等一系列問題。因此,防御DDOS攻擊,保護(hù)服務(wù)器端數(shù)據(jù)安全成為企業(yè)必須考慮的頭等大事。在所有的DDOS防范方法中,受害服務(wù)器端的防范方法受到了最多的重視,在這一端最大的困難是發(fā)現(xiàn)DDOS攻擊跡象時(shí),已進(jìn)入DDOS攻擊的高峰期,此時(shí)很難采取有效的防范方法來抑制攻擊的進(jìn)行。本文提出的對(duì)策是盡量在早期發(fā)現(xiàn)DDOS攻擊,再使用準(zhǔn)確的帶寬限制方法過濾惡意數(shù)據(jù)。
1.1 半開連接分析
在傳送數(shù)據(jù)包之前,TCP協(xié)議需要用三次握手在客戶端和服務(wù)器端之間建立連接。半開連接是指在服務(wù)器端收到客戶端發(fā)出的SYN請(qǐng)求后,發(fā)出ACK/SYN,此時(shí)在服務(wù)器上保留一定的資源來記錄此TCP連接狀況,實(shí)際上在系統(tǒng)的內(nèi)存中有一個(gè)專門的隊(duì)列包含所有的半開連接,這個(gè)隊(duì)列的大小是有限的,因而只要有意使服務(wù)器建立過多的半開連接就可以使服務(wù)器無法再響應(yīng)新的TCP連接請(qǐng)求。在正常情況下,如果產(chǎn)生半開連接,是因?yàn)榫W(wǎng)絡(luò)延遲或錯(cuò)誤,比如第二次握手(ACK/SYN)或第三次握手(ACK)的TCP包由于延遲或錯(cuò)誤發(fā)生了丟失,這時(shí)在服務(wù)器端就會(huì)產(chǎn)生半開連接。通常為了保證服務(wù)質(zhì)量,服務(wù)器會(huì)重試幾次,重試的次數(shù)和重發(fā)的時(shí)間根據(jù)操作系統(tǒng)的不同而有所區(qū)別。重發(fā)的目的是為了提高三次握手的可靠性,降低網(wǎng)絡(luò)擁塞帶來的損失,這種半開連接我們稱做正常的半開連接。在SYN淹沒攻擊中,在受害服務(wù)器上也會(huì)產(chǎn)生大量的半開連接。在這種情況下,攻擊者向受害服務(wù)器發(fā)送大量的偽造了源IP地址的SYN包。當(dāng)接受到這樣的SYN請(qǐng)求包后,服務(wù)器轉(zhuǎn)到“syn已接受”(syn-received)狀態(tài),然后根據(jù)源IP地址發(fā)送一個(gè)ACK/SYN包到客戶端。然而這個(gè)源IP地址往往都是偽造的,因此這些ACK/SYN包不會(huì)被應(yīng)答,服務(wù)器保留這些半開連接,并重試數(shù)次。這種類型的半開連接和前面討論的正常的半開連接是不同的。這些由DDOS攻擊產(chǎn)生的半開連接被稱為異常的半開連接。對(duì)于服務(wù)器來說,是很難靠其自身來判斷哪一個(gè)半開連接是由網(wǎng)絡(luò)擁塞造成的,哪一個(gè)是由DDOS攻擊產(chǎn)生的。避免此類DDOS攻擊的關(guān)鍵問題是區(qū)分正常的半開連接和異常的半開連接,對(duì)于異常的半開連接,對(duì)此連接發(fā)送RST指令重置此連接,釋放系統(tǒng)資源。大多數(shù)正常的半開連接是由于網(wǎng)絡(luò)擁塞造成的,而異常的半開連接卻與網(wǎng)絡(luò)擁塞沒有必然聯(lián)系。網(wǎng)絡(luò)擁塞可以通過一些特征來發(fā)現(xiàn),比如網(wǎng)絡(luò)延時(shí)變長(zhǎng)了,包的丟失率增加了,一些擁塞的路由器接近能力上限。如果這些信息能夠被捕獲,可以判斷這些在服務(wù)器上的半開連接是屬于正常的半開連接,否則屬于異常的半開連接。#p#
1.2 路由節(jié)點(diǎn)的延時(shí)測(cè)試方法
路由路徑上結(jié)點(diǎn)的延時(shí)被一個(gè)叫做DARB(DelayProbing)的主動(dòng)方法來探測(cè)。DARB方法沿著流量出去的方向,向著被探測(cè)目標(biāo)發(fā)送具有特定TTL(Time To Live,存[1]時(shí)間(TTL)是IP分組中的一個(gè)值,指示了一個(gè)IP包可以在網(wǎng)絡(luò)上被路由器轉(zhuǎn)發(fā)的次數(shù)。網(wǎng)絡(luò)中的路由器通過察看這個(gè)值就可以判斷這個(gè)IP分組是不是已經(jīng)在網(wǎng)絡(luò)中停留了很久,進(jìn)而決定是否要將其丟棄。出于多種原因,一個(gè)IP分組可能在很長(zhǎng)一段時(shí)間內(nèi)不能抵達(dá)目的地。例如:錯(cuò)誤的路由有可能導(dǎo)致一個(gè)IP分組在網(wǎng)絡(luò)中無限地循環(huán)。一種解決方法就是在一定時(shí)間后丟棄這個(gè)分組,然后發(fā)送一個(gè)信息通知這個(gè)分組的發(fā)送者,由它決定是否重發(fā)這個(gè)分組。TTL的初始值一般是系統(tǒng)缺省值,它位于IP分組的頭部,占用8個(gè)二進(jìn)制位。最初設(shè)定TTL值的目的是讓它來指定一段特定的時(shí)間(以秒為單位),當(dāng)這段時(shí)間耗盡的時(shí)候就將這個(gè)分組丟棄。由于每個(gè)路由器至少會(huì)讓這個(gè)TTL值減1,所以這個(gè)TTL值經(jīng)常用來指定在一個(gè)分組被丟棄之前允許經(jīng)過的路由器數(shù)。每個(gè)路由器收到一個(gè)分組后就將它的TTL值減1,一旦這個(gè)值被減為0,路由器就會(huì)丟棄這個(gè)分組,并發(fā)送一個(gè)ICMP信息給這個(gè)分組的最初的發(fā)送者。根據(jù)發(fā)送出去的包和收到返回的ICMP包的時(shí)間差值,我們可以計(jì)算出從此主機(jī)到該路由器的時(shí)間延時(shí)。通過設(shè)定不同的TTL值,可以得到探測(cè)主機(jī)到指定路由器的時(shí)間延時(shí)。
1.3 評(píng)估半開連接
當(dāng)DARB方法返回延時(shí)結(jié)果時(shí),需要評(píng)沽這些結(jié)果并將半開連接分為正常的半開連接或者是異常的半開連接。如果返回的結(jié)果有一個(gè)很大的延時(shí)值,意味該個(gè)半開連接有很大的可能性是由于網(wǎng)絡(luò)擁塞造成的,如果返回一個(gè)很小的值,特別是接近0時(shí),說明網(wǎng)絡(luò)處于良好狀態(tài),一般是不會(huì)產(chǎn)生半開連接的,該半開連接將被認(rèn)為是異常的,可能是由DDoS攻擊造成的。#p#
2基于TTL的帶寬限制策略
當(dāng)可疑半開連接達(dá)到一定數(shù)目時(shí),DDOS警告將會(huì)發(fā)出,響應(yīng)策略將會(huì)用來扼制惡意攻擊流量。一個(gè)好的響應(yīng)機(jī)制應(yīng)該有以下特征:
1)能夠準(zhǔn)確地丟棄和限制攻擊流量。一個(gè)精確的響應(yīng)機(jī)制能丟棄或限制大部分的攻擊數(shù)據(jù)包來減少DDOS攻擊的危害。
2)較少的副作用。在對(duì)抗DDOS攻擊時(shí),保證服務(wù)器在被攻擊期間也能向合法用戶提供正常的服務(wù),不會(huì)因?yàn)檫^濾攻擊數(shù)據(jù),而將大量的合法用戶數(shù)據(jù)包丟棄。
3)較低的執(zhí)行開銷。由于響應(yīng)機(jī)制部署在受害者端,大量的流量聚集在這一端,如果響應(yīng)機(jī)制本身需要較高的執(zhí)行開銷,它很難有效地處理大量數(shù)據(jù),而且更嚴(yán)重的是重量級(jí)的響應(yīng)機(jī)制本身也會(huì)成為DDOS的攻擊目標(biāo)。根據(jù)以上基本要求,在本文中提出一個(gè)簡(jiǎn)單有效的響應(yīng)措施,為阻止攻擊數(shù)據(jù)繼續(xù)向受害服務(wù)器發(fā)送惡意數(shù)據(jù)包,采用對(duì)可疑數(shù)據(jù)限制帶寬的方法。帶寬限制規(guī)則基于TTL值和源IP地址的判別方法,利用IP包頭的TTL字段的值和IP字段共同區(qū)分合法用戶和惡意數(shù)據(jù)。
2.1TTL字段
目前大部分的防火墻基于IP地址和端口進(jìn)行信息過濾,所以此類防火墻很難防范使用偽造源IP地址的攻擊包。在DDOS攻擊期間,攻擊者通常選擇一些無法到達(dá)的IP地址作為攻擊包的偽造地址,以隱藏攻擊源的真實(shí)身份,并使得阻止DDOS攻擊更加困難,因此根據(jù)源IP地址和端口來阻止DDOS攻擊是不可靠的方法。
本文提出使用TTL字段來制定帶寬限制的規(guī)則。IP包頭的TTL字段指示了該IP包被刪除之前還可能被轉(zhuǎn)發(fā)的次數(shù)。盡管攻擊源可以在IP字段中偽造源IP地址,但很難控制該包在Internet上的路由路徑。根據(jù)調(diào)查表明,端到端的路由路徑是相對(duì)穩(wěn)定的,在Internet上三分之二的路由路徑在幾天內(nèi),甚至幾個(gè)星期內(nèi)是不會(huì)變化的[2]。當(dāng)多個(gè)包被從源端發(fā)送到目的端時(shí),這些包的路由路徑基本上是相同的,路由跳數(shù)(Hop)也是一致的,通常跳數(shù)信息指示了該包經(jīng)過了多少路由器。因此不管攻擊者如何偽造源IP地址,從同一個(gè)攻擊源來的攻擊數(shù)據(jù)包將由同一個(gè)路由路徑到達(dá)受害者端。以此觀察為基礎(chǔ),包中的TTL字段將會(huì)被用來構(gòu)建數(shù)據(jù)流量的帶寬限制規(guī)則。Internet上的每一個(gè)路由器在將一個(gè)包轉(zhuǎn)發(fā)到下一個(gè)路由器之前會(huì)將TTL字段減1,如果攻擊包從一個(gè)攻擊源發(fā)出,并且具有相同的TTL值,那么這些包到達(dá)目的地之后將會(huì)有相同的TTL值。我們假設(shè)攻擊者不會(huì)改變每一個(gè)包的TTL初始值,因?yàn)閺哪壳癉DOS攻擊工具來看,都沒有改變初始TTL的機(jī)制。TTL的初始值和操作系統(tǒng)有關(guān),比如當(dāng)前的操作系統(tǒng),如Windows、Linux、各種商業(yè)版的Unix都會(huì)使用固定的TTL值,如30、32、60、64、128、255等[3],這些值可以覆蓋當(dāng)前主流操作系統(tǒng)的TTL值。由于攻擊源的操作系統(tǒng)在攻擊期間是不會(huì)變化的,因此從同一個(gè)攻擊源發(fā)出的攻擊包在經(jīng)過相同的路由路徑到達(dá)受害者端時(shí),每個(gè)攻擊包的TTL值依然會(huì)是相同的。在基于TTL帶寬限制的規(guī)則中使用兩個(gè)附加的表TTTL和TTTL2IP。當(dāng)多個(gè)可疑的連接被DARB探測(cè)發(fā)現(xiàn),DDOS警告將會(huì)發(fā)出,該可疑數(shù)據(jù)包的TTL值將會(huì)被提取至表TTTL中。一個(gè)ACK第三次握手檢測(cè)器將會(huì)部署在受害者端,用來檢測(cè)第三次握手的數(shù)據(jù)包ACK。對(duì)于數(shù)據(jù)包P,用IPP來標(biāo)識(shí)該包的源IP地址,TP來標(biāo)識(shí)其TTL值。當(dāng)一個(gè)ACK包P被捕獲,如果其TTL值在表TTTL中(TP∈TTTL),那么該包的TTL值和IP值(IPP和TP)將會(huì)插入表TTTL2IP。此后一個(gè)包既使具有一個(gè)可疑的TTL值,也就是說該TTL值在表 TTTL 中 (TP ∈ TTTL ),但如果其 IP 地址在表 TTTL2IP 中,那么該包也不會(huì)被限制帶寬,只有滿足{P|(IPP,TP) TTTL2IP ∧ TP ∈ TTTL}條件的包才會(huì)被采取帶寬限制。
2.2 DDoS響應(yīng)系統(tǒng)的體系結(jié)構(gòu)
DDoS響應(yīng)系統(tǒng)的體系結(jié)構(gòu)與策略響應(yīng)系統(tǒng)的體系結(jié)構(gòu),半開連接快照部件將在每個(gè)預(yù)先定義的時(shí)間間隔后,對(duì)服務(wù)器上的連狀況進(jìn)行一次快照。當(dāng)從服一務(wù)器連接中提取出那些存在時(shí)間比較長(zhǎng)的半開連接這些半開連接進(jìn)行探測(cè),以確定這些半開連接是否和網(wǎng)絡(luò)擁塞相關(guān)。如果有對(duì)應(yīng)的網(wǎng)絡(luò)擁塞特證,那么該半開連接被認(rèn)為是正常的,如果沒有對(duì)應(yīng)的網(wǎng)絡(luò)擁塞特征,則認(rèn)為是異常的。ACK 檢測(cè)器負(fù)責(zé)在進(jìn)入流量中監(jiān)視第三次握手ACK包,如果一個(gè)ACK包P的TTL值屬于TTTL (TP ∈ TTTL), P的源IP地址會(huì)被記入表TTTL2IP中,因?yàn)镻已經(jīng)完成了一次完整的握手過程。
整個(gè)響應(yīng)體系是一個(gè)協(xié)作的系統(tǒng)。帶寬限制控制器,可疑半開連接檢測(cè)器,ACK檢測(cè)器同時(shí)工作以完成帶寬限制的任務(wù)。當(dāng)可疑半開連接檢測(cè)器發(fā)現(xiàn)可疑的半開連接后,將會(huì)把該可疑半開連接中的TTL信息提取出來并存入表TTTL中。如果數(shù)據(jù)包滿足條件{P|(IPP,TP)TTTL2IP∧TP∈TTTL},帶寬限制器將會(huì)限制這些包的帶寬,這三個(gè)部件協(xié)同工作以共同對(duì)抗惡意數(shù)據(jù)。