專(zhuān)利名稱(chēng):防ip數(shù)據(jù)報(bào)分片攻擊的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,特別涉及一種防IP數(shù)據(jù)報(bào)分片攻擊的方法。
背景技術(shù):
最大傳輸單元(Maximum Transmission Unit,MTU)是數(shù)據(jù)鏈路層的協(xié)議數(shù)據(jù)單元 (Protocol Data Unit,PDU),也就是幀的大小。對(duì)最常見(jiàn)的以太網(wǎng)而言,采用的是數(shù)據(jù)鏈路層協(xié)議是基于IEEE802. 2/802. 3,以太網(wǎng)幀中的數(shù)據(jù)(有效)字段的長(zhǎng)度范圍是46 1500 個(gè)字節(jié)。這個(gè)1500就是以太網(wǎng)的MTU。當(dāng)鏈路層的上層協(xié)議,比如IP協(xié)議所要傳輸?shù)腎P 數(shù)據(jù)報(bào)(包括IP Header)大小超過(guò)這個(gè)長(zhǎng)度范圍時(shí),IP數(shù)據(jù)報(bào)就必須分成多片傳輸,并在目標(biāo)系統(tǒng)中進(jìn)行重組。這個(gè)過(guò)程就是分片(Fragmentation),其中分割出來(lái)的每一個(gè)片斷就是一個(gè)分片或分片報(bào)文Fragment。由此可以看出,IP數(shù)據(jù)報(bào)分片在網(wǎng)絡(luò)環(huán)境中是經(jīng)常發(fā)生的事件。但是,如果經(jīng)過(guò)人為的惡意操作的分片,將會(huì)導(dǎo)致拒絕服務(wù)、攻擊或者迂回路由器及防火墻的一種攻擊手段。目前針對(duì)DOS類(lèi)型的IP數(shù)據(jù)報(bào)分片攻擊,大部分網(wǎng)絡(luò)設(shè)備制造商的處理方法大致分為以下兩種類(lèi)型現(xiàn)有技術(shù)一設(shè)置閾值來(lái)限制IP數(shù)據(jù)報(bào)的分片報(bào)文每秒的流速?,F(xiàn)有技術(shù)二 利用訪問(wèn)控制列表在網(wǎng)絡(luò)上禁止IP數(shù)據(jù)報(bào)后續(xù)分片包通過(guò)。由于IP數(shù)據(jù)報(bào)分片是在網(wǎng)絡(luò)上傳輸IP報(bào)文時(shí)常采用的一種技術(shù)手段,IP數(shù)據(jù)報(bào)分片攻擊就是利用這點(diǎn),在你發(fā)起大量的IP數(shù)據(jù)報(bào)的分片時(shí),而這些分片之間是毫無(wú)關(guān)系,或者分片的偏移量是經(jīng)過(guò)調(diào)整的。這樣主機(jī)會(huì)消耗大量的CPU來(lái)重組這些分片,重組完成之后發(fā)現(xiàn)是錯(cuò)誤的數(shù)據(jù)報(bào)而又丟棄!如果這種數(shù)據(jù)報(bào)較多,系統(tǒng)就無(wú)法處理,導(dǎo)致死機(jī)!若采用上述現(xiàn)有技術(shù)一的手段,設(shè)置閾值來(lái)限制IP數(shù)據(jù)報(bào)的分片報(bào)文每秒的流速,可以將閾值外的流量丟棄,但無(wú)法識(shí)別通過(guò)、丟棄的分片報(bào)文的合法性和完整性;若采用上述現(xiàn)有技術(shù)二的手段,利用訪問(wèn)控制列表可以在網(wǎng)絡(luò)上放行初始分片包而拒絕后續(xù)分片包,但是這種方式無(wú)法對(duì)正常的分片報(bào)文進(jìn)行正確識(shí)別.通過(guò)上面說(shuō)明可以看出現(xiàn)有技術(shù)只是對(duì)IP數(shù)據(jù)報(bào)的分片報(bào)文在通過(guò)網(wǎng)絡(luò)設(shè)備的過(guò)程中定義了開(kāi)關(guān)或者是限流進(jìn)行IP數(shù)據(jù)報(bào)的分片報(bào)文的控制,但是并沒(méi)有對(duì)IP數(shù)據(jù)報(bào)的分片報(bào)文的合法性、完整性進(jìn)行檢測(cè),這樣無(wú)法做到從根本上阻止IP數(shù)據(jù)報(bào)的分片報(bào)文的攻擊。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問(wèn)題本發(fā)明要解決的技術(shù)問(wèn)題是如何防止IP數(shù)據(jù)報(bào)的分片報(bào)文對(duì)網(wǎng)絡(luò)設(shè)備的攻擊。(二)技術(shù)方案
為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種防IP數(shù)據(jù)報(bào)分片攻擊的方法,對(duì)接收到的IP數(shù)據(jù)報(bào)的分片報(bào)文在達(dá)對(duì)應(yīng)的處理模塊之前進(jìn)行臨時(shí)重組,在臨時(shí)重組過(guò)程中,若屬于同一 IP數(shù)據(jù)報(bào)的分片報(bào)文數(shù)超出分片閾值,則丟棄該IP數(shù)據(jù)報(bào)。其中,對(duì)所述IP數(shù)據(jù)報(bào)的分片報(bào)文進(jìn)行臨時(shí)重組的步驟包括將所述IP數(shù)據(jù)報(bào)的分片報(bào)文暫存在緩存中,根據(jù)所述分片報(bào)文的五元組對(duì)分片報(bào)文進(jìn)行分流,并對(duì)每個(gè)分片報(bào)文添加標(biāo)簽以識(shí)別不同的流,對(duì)分流和添加標(biāo)簽后的分片報(bào)文進(jìn)行重組。其中,所述分流的方式如下利用分片報(bào)文五元組中的上層協(xié)議進(jìn)行分離,分離后對(duì)分片報(bào)文的五元組中的源地址、目的地址、源端口、目的端口進(jìn)行hash運(yùn)算,利用每個(gè)分片報(bào)文的hash值為標(biāo)簽標(biāo)示該分片報(bào)文,標(biāo)簽相同的分片報(bào)文分為同一個(gè)流。其中,在臨時(shí)重組前還包括將所述IP數(shù)據(jù)報(bào)的分片報(bào)文與攻擊檢測(cè)中的特征碼進(jìn)行匹配,若有分片報(bào)文與所述特征碼匹配,則將所述IP數(shù)據(jù)報(bào)丟棄。其中,若所述緩存中的等待重組的IP數(shù)據(jù)報(bào)大于包閾值,則將后續(xù)IP數(shù)據(jù)報(bào)的分片報(bào)文存儲(chǔ)在隊(duì)列中。其中,當(dāng)在預(yù)定時(shí)間內(nèi)未接收到IP數(shù)據(jù)報(bào)的最后一個(gè)分片報(bào)文,則丟棄已接收的該IP數(shù)據(jù)報(bào)的所有分片報(bào)文。(三)有益效果本發(fā)明的防IP數(shù)據(jù)報(bào)分片攻擊的方法通過(guò)將各個(gè)IP數(shù)據(jù)報(bào)的分片報(bào)文存儲(chǔ)在一個(gè)高速緩存中并臨時(shí)重組這些分片報(bào)文,從而檢測(cè)IP數(shù)據(jù)報(bào)的完整性,同時(shí)還將分片報(bào)文與攻擊檢測(cè)中的特征碼對(duì)比,以檢查分片報(bào)文的合法性,因此更有效地防止了 IP數(shù)據(jù)報(bào)分片攻擊。
圖1是本發(fā)明實(shí)施例的一種防IP數(shù)據(jù)報(bào)分片攻擊的方法流程圖;圖2是圖1中臨時(shí)重組檢測(cè)時(shí)的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。本實(shí)施例中以防火墻執(zhí)行本發(fā)明方法為例進(jìn)行說(shuō)明,為了避免防火墻(其它網(wǎng)絡(luò)設(shè)備類(lèi)似)每個(gè)業(yè)務(wù)模塊(地址轉(zhuǎn)換、訪問(wèn)控制、數(shù)據(jù)加解密)單獨(dú)處理IP數(shù)據(jù)報(bào)的分片報(bào)文亂序這種情況而導(dǎo)致復(fù)雜度過(guò)高,防火墻對(duì)收到的分片報(bào)文進(jìn)行臨時(shí)重組(即在防火墻接口收到分片包后交予后續(xù)上層業(yè)務(wù)模塊進(jìn)行重組處理之前,每個(gè)接口下定義的緩存空間中進(jìn)行分片報(bào)文的重組)。臨時(shí)重組過(guò)程中對(duì)分片報(bào)文進(jìn)行檢驗(yàn)、緩存和排序,保證后續(xù)業(yè)務(wù)模塊處理的都是完整、正確的分片報(bào)文。如圖1所示,當(dāng)防火墻的某個(gè)接口接收到數(shù)據(jù)后,首先判斷是否為IP數(shù)據(jù)報(bào)的分片報(bào)文,若不為分片報(bào)文則按常規(guī)方式交給后續(xù)模塊處理。若為分片報(bào)文,則將分片報(bào)文存儲(chǔ)在高速緩存中。防火墻在內(nèi)存中為每個(gè)接口保留可變的數(shù)據(jù)報(bào)存儲(chǔ)空間,臨時(shí)存儲(chǔ)那些等待重組的分片報(bào)文。對(duì)緩存中的分片報(bào)文進(jìn)行臨時(shí)重組,通過(guò)重組檢測(cè)數(shù)據(jù)報(bào)的完整性及合法性來(lái)確定哪些IP數(shù)據(jù)報(bào)是具有攻擊性的IP數(shù)據(jù)報(bào)。臨時(shí)重組檢測(cè)方式如圖2所示,高速緩存中按分片報(bào)文的五元組(源IP、目的IP、 源端口、目的端口、協(xié)議)進(jìn)行hash運(yùn)算將高速緩存中的分片報(bào)文進(jìn)行分流,根據(jù)分片報(bào)文加載的上層協(xié)議(TCP\UDP)進(jìn)行分離,分離后的分片報(bào)文按照〈源地址、目的地址、源端口、 目的端口 >進(jìn)行hash運(yùn)算,由于同一個(gè)IP數(shù)據(jù)報(bào)的五元組相同,采用相同的hash運(yùn)算后得到的hash值也相同,以hash值作為分片報(bào)文的標(biāo)簽同時(shí)標(biāo)識(shí)唯一的一條流,即一條流中包含的分片報(bào)文來(lái)自同一個(gè)IP數(shù)據(jù)報(bào)。若分流后發(fā)現(xiàn)某個(gè)IP數(shù)據(jù)報(bào)分片數(shù)超過(guò)分片閾值 max-fragment,則丟棄該IP數(shù)據(jù)報(bào),若未超過(guò)分片閾值,則對(duì)添加標(biāo)簽后的分片報(bào)文進(jìn)行重組,相同標(biāo)簽的分片報(bào)文根據(jù)標(biāo)志字段第二位置1和偏移量為0確定報(bào)文的第一分片,然后根據(jù)標(biāo)志字段第二位置0確定報(bào)文的最后分片,中間的分片根據(jù)分片偏移量從小到大一次填充直至分片報(bào)文按順序重組完成,重組完成后交給后續(xù)模塊處理。優(yōu)選地,在重組前還包括步驟按接收順序?qū)P數(shù)據(jù)報(bào)的分片報(bào)文與攻擊檢測(cè)中的特征碼(Ping of death、Teardrop、Jolt2、Tiny fragment)進(jìn)行匹配,若匹配(說(shuō)明該片段具有攻擊性),則將該IP分片報(bào)文丟棄。這樣提前排除了本身具有攻擊性的數(shù)據(jù)報(bào),能夠減少待重組的IP數(shù)據(jù)報(bào),提高重組效率。為了更好的控制臨時(shí)重組的過(guò)程,本實(shí)施例中在虛擬重組功能中還加入另外兩個(gè)參數(shù)。一個(gè)參數(shù)是等待重組的分片包個(gè)數(shù)的閾值database-limit。一個(gè)參數(shù)是同一數(shù)據(jù)報(bào)所有分片超時(shí)時(shí)間holdtime。這兩個(gè)參數(shù)連同分片閾值max-fragment的具體定義如下1 限定等待重組的分段數(shù)PowerAegis(config)#fragment size database-limit默認(rèn)情況下,防火墻在內(nèi)存中為每個(gè)接口保留200個(gè)已分片數(shù)據(jù)報(bào)空間用來(lái)臨時(shí)存儲(chǔ)IP分片報(bào)文,database-limit的取值范圍為1個(gè)-30000個(gè)數(shù)據(jù)報(bào)。若緩存中的等待重組的數(shù)據(jù)報(bào)大于200,則將后續(xù)包的IP分片報(bào)文存儲(chǔ)在隊(duì)列中。2 限定每個(gè)數(shù)據(jù)報(bào)的分片數(shù)PowerAegis(config)#fragment chain max-fragment默認(rèn)情況下,防火墻在丟棄一個(gè)數(shù)據(jù)報(bào)的所有分片前,最多可接收該數(shù)據(jù)報(bào)的M 個(gè)分片,max-fragment的取值范圍[1-8200]。若每個(gè)數(shù)據(jù)報(bào)的IP分片報(bào)文數(shù)大于對(duì),則丟棄該數(shù)據(jù)報(bào)。3 為數(shù)據(jù)報(bào)的所有部分限制到達(dá)時(shí)間PowerAegis(config)#fragment timeout holdtime默認(rèn)情況下,防火墻在分片到達(dá)5秒后開(kāi)始收集片段,如果最后的分片在此時(shí)間內(nèi)還沒(méi)有到達(dá),所有的分片都將被丟棄,holdtime的取值范圍為ls-30s。該參數(shù)可以防止某個(gè)IP數(shù)據(jù)報(bào)長(zhǎng)時(shí)間的等待。另外,還可以動(dòng)態(tài)調(diào)整虛擬重組參數(shù),如下表所示。可以使用下面的命令監(jiān)視防火墻的所有虛擬重組的行為。例如,以下輸出中顯示的防火墻的mgmt接口默認(rèn)分片設(shè)置(數(shù)據(jù)庫(kù)大小為200個(gè)數(shù)據(jù)報(bào),流限制為M個(gè)分片,超時(shí)限制為5秒)。
PowerAegis#show fragment mgmt*--------------------------------------------------------------------
-------*I Interface | mgmtSize :200, Chain :24, Timeout :5,IDS Threshold :152Queue :3, Assemble :331, Fail :895, Overflow :231還可以看到防火墻已處理152個(gè)攻擊報(bào)文,已經(jīng)重組331個(gè)數(shù)據(jù)報(bào),還有3個(gè)在隊(duì)列中等待重組。另外,重組過(guò)程中失敗了 895次,這是因?yàn)樵诘却蟹制竭_(dá)期間超時(shí)值過(guò)期;上述過(guò)程還發(fā)生了溢出情況,可以看到231個(gè)不同的數(shù)據(jù)報(bào)均出現(xiàn)了多于M個(gè)分片的情況??梢愿鶕?jù)監(jiān)視得到的實(shí)時(shí)數(shù)據(jù)動(dòng)態(tài)調(diào)整上面定義的3個(gè)參數(shù)的大小,例=Queue排隊(duì)太多可以調(diào)大Size的值;不同鏈路會(huì)有不同大小的報(bào)文,以太網(wǎng)(最大MTU為1500字節(jié))最大不超過(guò)M個(gè)分片;可以自主定義所有分片報(bào)文全部到達(dá)的容忍時(shí)間。以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專(zhuān)利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種防IP數(shù)據(jù)報(bào)分片攻擊的方法,其特征在于,對(duì)接收到的IP數(shù)據(jù)報(bào)的分片報(bào)文在達(dá)對(duì)應(yīng)的處理模塊之前進(jìn)行臨時(shí)重組,在臨時(shí)重組過(guò)程中,若屬于同一 IP數(shù)據(jù)報(bào)的分片報(bào)文數(shù)超出分片閾值,則丟棄該IP數(shù)據(jù)報(bào)。
2.如權(quán)利要求1所述的防IP數(shù)據(jù)報(bào)分片攻擊的方法,其特征在于,對(duì)所述IP數(shù)據(jù)報(bào)的分片報(bào)文進(jìn)行臨時(shí)重組的步驟包括將所述IP數(shù)據(jù)報(bào)的分片報(bào)文暫存在緩存中,根據(jù)所述分片報(bào)文的五元組對(duì)分片報(bào)文進(jìn)行分流,并對(duì)每個(gè)分片報(bào)文添加標(biāo)簽以識(shí)別不同的流,對(duì)分流和添加標(biāo)簽后的分片報(bào)文進(jìn)行重組。
3.如權(quán)利要求2所述的防IP數(shù)據(jù)報(bào)分片攻擊的方法,其特征在于,所述分流的方式如下利用分片報(bào)文五元組中的上層協(xié)議進(jìn)行分離,分離后對(duì)分片報(bào)文的五元組中的源地址、目的地址、源端口、目的端口進(jìn)行hash運(yùn)算,利用每個(gè)分片報(bào)文的hash值為標(biāo)簽標(biāo)示該分片報(bào)文,標(biāo)簽相同的分片報(bào)文分為同一個(gè)流。
4.如權(quán)利要求1 3中任一項(xiàng)所述的防IP數(shù)據(jù)報(bào)分片攻擊的方法,其特征在于,在臨時(shí)重組前還包括將所述IP數(shù)據(jù)報(bào)的分片報(bào)文與攻擊檢測(cè)中的特征碼進(jìn)行匹配,若有分片報(bào)文與所述特征碼匹配,則將所述IP數(shù)據(jù)報(bào)丟棄。
5.如權(quán)利要求1所述的防IP數(shù)據(jù)報(bào)分片攻擊的方法,其特征在于,若所述緩存中的等待重組的IP數(shù)據(jù)報(bào)大于包閾值,則將后續(xù)IP數(shù)據(jù)報(bào)的分片報(bào)文存儲(chǔ)在隊(duì)列中。
6.如權(quán)利要求1所述的防IP數(shù)據(jù)報(bào)分片攻擊的方法,其特征在于,當(dāng)在預(yù)定時(shí)間內(nèi)未接收到IP數(shù)據(jù)報(bào)的最后一個(gè)分片報(bào)文,則丟棄已接收的該IP數(shù)據(jù)報(bào)的所有分片報(bào)文。
全文摘要
本發(fā)明公開(kāi)了一種防IP數(shù)據(jù)報(bào)分片攻擊的方法,涉及網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,該方法對(duì)接收到的IP數(shù)據(jù)報(bào)的分片報(bào)文在達(dá)對(duì)應(yīng)的處理模塊之前進(jìn)行臨時(shí)重組,在臨時(shí)重組過(guò)程中,若屬于同一IP數(shù)據(jù)報(bào)的分片報(bào)文數(shù)超出分片閾值,則丟棄該IP數(shù)據(jù)報(bào)。本發(fā)明通過(guò)將各個(gè)IP分片報(bào)文存儲(chǔ)在一個(gè)高速緩存中并虛擬重組這些分段,從而可以檢測(cè)原始的數(shù)據(jù)報(bào)。這使得網(wǎng)絡(luò)設(shè)備可核實(shí)每個(gè)片段的順序和完整性,并發(fā)現(xiàn)利用片段進(jìn)行的惡意攻擊,更有效地防止了IP分片報(bào)文攻擊。
文檔編號(hào)H04L29/06GK102510385SQ20111041331
公開(kāi)日2012年6月20日 申請(qǐng)日期2011年12月12日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者王瑞 申請(qǐng)人:漢柏科技有限公司