亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于BloomFilter和開源內(nèi)核防御SYNFlood攻擊的方法

文檔序號(hào):7744510閱讀:164來源:國(guó)知局
專利名稱:一種基于Bloom Filter和開源內(nèi)核防御SYN Flood攻擊的方法
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,具體涉及一種基于Bloom FilteH即布隆過濾 器)和開源內(nèi)核防御SYN Flood攻擊(DDoS攻擊的一種,即TCP連接請(qǐng)求泛洪攻擊)的方法。
背景技術(shù)
拒絕服務(wù)攻擊(DoS)和分布式拒絕服務(wù)攻擊(DDoS)是目前常用的網(wǎng)絡(luò)攻擊方式, 這種攻擊通過發(fā)送大量偽造的服務(wù)請(qǐng)求,消耗被攻擊網(wǎng)絡(luò)的帶寬和受攻擊主機(jī)的服務(wù)資 源,從而使得正常的服務(wù)請(qǐng)求得不到響應(yīng)。特別是SYN Flood攻擊,由于它利用了 TCP/IP 協(xié)議(Transmission ControlProtocol/Internet Protocol 的簡(jiǎn)寫,傳輸控制協(xié)議 / 因特 網(wǎng)互聯(lián)協(xié)議)存在的固有的漏洞,所以現(xiàn)有的協(xié)議體系對(duì)此攻擊毫無免疫力。當(dāng)前對(duì)這種 攻擊采取的防御手段主要有入侵檢測(cè)、包過濾、限制半連接數(shù)量、縮短操作系統(tǒng)維護(hù)半連接 的時(shí)間長(zhǎng)度、利用防火墻作TCP連接的中間代理以及增加資源的方法,如增加網(wǎng)絡(luò)帶寬、增 加服務(wù)器并同時(shí)應(yīng)用負(fù)載均衡技術(shù)等,但是這些方法的數(shù)據(jù)包的存儲(chǔ)結(jié)構(gòu)有待改進(jìn),而且 沒有考慮操作系統(tǒng)內(nèi)核層與用戶層的交互,以致對(duì)大規(guī)模DDoS攻擊,基本束手無策。Bloom Filter是一個(gè)廣泛應(yīng)用于網(wǎng)絡(luò)環(huán)境下的高效存儲(chǔ)匹配結(jié)構(gòu),具有占有內(nèi)存 小,匹配速度快等優(yōu)點(diǎn),其原理就是利用多次哈希運(yùn)算在達(dá)到快速存儲(chǔ)匹配的同時(shí)提高匹 配的準(zhǔn)確率。如附圖1所示,初始狀態(tài)時(shí),Bloom Filter是一個(gè)包含m位的位數(shù)組,每一位 都置為O。為了表達(dá)S = {xl,x2,…,xn}這樣一個(gè)η個(gè)元素的集合,如附圖2所示,Bloom Filter使用k個(gè)相互獨(dú)立的哈希函數(shù)(Hash Function),它們分別將集合中的每個(gè)元素映 射到{1,m}的范圍中。對(duì)任意一個(gè)元素X,第i個(gè)哈希函數(shù)映射的位置hi (χ)就會(huì)被 置為1 (1 < i < k)。在判斷y是否屬于這個(gè)集合時(shí),如附圖3所示,我們對(duì)y應(yīng)用k次哈希 函數(shù),如果所有hi (y)的位置都是1(1 Si <k),那么我們就認(rèn)為y是集合中的元素,否 則就認(rèn)為y不是集合中的元素。原始的Bloom Filter結(jié)構(gòu)由于采用單一位數(shù)組,因此存在 誤報(bào)率大的問題,而且無法存儲(chǔ)成對(duì)的元素,本發(fā)明改進(jìn)了 Bloom Filter結(jié)構(gòu),降低了誤報(bào) 率,使之適合存儲(chǔ)成對(duì)的元素,達(dá)到了防御SYNFlood攻擊的目的。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種防御SYN Flood攻擊的方法。本發(fā)明是通過如下方式實(shí)現(xiàn)的一種基于Bloom Filter和開源內(nèi)核防御SYN Flood攻擊的方法,其特征在于包 括以下步驟第一步,遭受SYN-Flood攻擊判斷;設(shè)置記錄時(shí)間段,在設(shè)置記錄時(shí)間段內(nèi)在用戶空間檢測(cè)TCP連接請(qǐng)求包速率,取 最小值作為閥值t的初始值;
設(shè)置一個(gè)單位長(zhǎng)度為10的循環(huán)數(shù)組,數(shù)組第η項(xiàng)記錄前η秒內(nèi)TCP連接請(qǐng)求包的 個(gè)數(shù),記錄最近10秒內(nèi)連接請(qǐng)求包的個(gè)數(shù),對(duì)此數(shù)組求平均值得到最近10秒內(nèi)SYN包的平 均速率,當(dāng)這個(gè)速率超過閥值t時(shí)判斷系統(tǒng)當(dāng)前遭受SYN-Flood攻擊,再轉(zhuǎn)第2步;否則轉(zhuǎn) 第5步;第二步,構(gòu)建用戶層Bloom Filter結(jié)構(gòu);
對(duì)處于連接狀態(tài)下的TCP數(shù)據(jù)包,取其I P地址字段和TTL字段作為可信IP和 TTL記錄,利用改進(jìn)的Bloom Filter組織成高效匹配結(jié)構(gòu);對(duì)所有的TCP數(shù)據(jù)包,取數(shù)據(jù)包中的源IP地址字段和源端口字段,并使用查看當(dāng) 前網(wǎng)絡(luò)聯(lián)機(jī)狀態(tài)的命令查看包含此源IP地址和源端口的TCP連接是否處于ESTABLISHED 狀態(tài),對(duì)于處于ESTABLISHED狀態(tài)的TCP數(shù)據(jù)包取其源IP地址字段和TTL字段,并使用下 面的方法構(gòu)建Bloom Filter結(jié)構(gòu);構(gòu)造2個(gè)2048位的一維數(shù)組和1個(gè)2048*8位的二維數(shù)組,其中數(shù)組每項(xiàng)為1位。 初始狀態(tài)時(shí)把整個(gè)數(shù)組的每項(xiàng)置為0,為了存儲(chǔ)源IP地址A. B. C. D和TTL值總共5個(gè)字節(jié) 的元素,使用ELFHash、RSHash、JSHash、PJWHash這樣4個(gè)相互獨(dú)立的哈希函數(shù),用ELFHash 哈希函數(shù)對(duì)IP地址的前兩個(gè)字節(jié)A和B進(jìn)行運(yùn)算,即將A和B轉(zhuǎn)換成兩個(gè)字符,用ELFHash 對(duì)其進(jìn)行哈希運(yùn)算,并將哈希值對(duì)m取模,映射到第1個(gè)一維數(shù)組;用RSHash哈希函數(shù)對(duì) IP地址的C和D字節(jié)進(jìn)行運(yùn)算,并將哈希值對(duì)m取模,映射到第二個(gè)一維數(shù)組;用JSHash哈 希函數(shù)對(duì)IP地址四個(gè)字節(jié)進(jìn)行運(yùn)算,并將運(yùn)算后的哈希值對(duì)m取模,映射到二維數(shù)組的第 一列的第k個(gè)位置,并記錄下位置k,同時(shí)用PJWHash哈希函數(shù)對(duì)TTL值進(jìn)行哈希,將哈希值 對(duì)η取模,映射到二維數(shù)組的第k行。映射時(shí),把映射的位置置為1,構(gòu)建好Bloom Filter 結(jié)構(gòu)后轉(zhuǎn)第3步;第三步,更新內(nèi)核層可信IP地址和TTL數(shù)據(jù),啟用內(nèi)核層數(shù)據(jù)包過濾;當(dāng)檢測(cè)到SYN包速率超過閥值t時(shí),用戶層通過內(nèi)核通信方式通知內(nèi)核開啟數(shù)據(jù) 包過濾器,同時(shí)把記錄的可信IP地址和TTL記錄通過內(nèi)核通信方式發(fā)送至內(nèi)核層組織成 Bloom Filter結(jié)構(gòu),再轉(zhuǎn)第4步;具體的用戶層和內(nèi)核層通信方式如下通信數(shù)據(jù)包結(jié)構(gòu)包含包頭和包數(shù)據(jù)兩部分,包頭部分的nlmSg_type字段標(biāo)志著 數(shù)據(jù)包的類型,用戶層發(fā)往內(nèi)核層數(shù)據(jù)包定義nlmSg_type為4時(shí)代表關(guān)閉內(nèi)核層數(shù)據(jù)包過 濾,nlmSg_type為5時(shí)開啟內(nèi)核層數(shù)據(jù)包過濾,此兩種類型的數(shù)據(jù)包無需攜帶數(shù)據(jù),nlmsg_ type為1時(shí)用戶層傳送可信IP地址和TTL記錄,同時(shí)攜帶數(shù)據(jù)部分,數(shù)據(jù)部分為u_paCket_ info結(jié)構(gòu)體,此結(jié)構(gòu)體包含改進(jìn)的Bloom Filter結(jié)構(gòu)體三個(gè)位向量的一個(gè)字節(jié)以及字節(jié) 序號(hào);內(nèi)核層發(fā)往用戶層的數(shù)據(jù)包定義nlmSg_type為2,攜帶數(shù)據(jù)為k_packet_inf0結(jié)構(gòu) 體,該結(jié)構(gòu)體包含通過或丟棄信息、源IP、目的IP、TTL、源端口、目的端口;第四步,內(nèi)核層根據(jù)可信IP地址和TTL記錄過濾TCP SYN數(shù)據(jù)包;取TCP連接請(qǐng)求包中的IP地址字段和TTL字段,用第二步中構(gòu)造BloomFilter結(jié) 構(gòu)的方法對(duì)IP地址和TTL進(jìn)行哈希操作,在對(duì)IP地址進(jìn)行哈希操作時(shí),如果每個(gè)哈希值映 射到m位數(shù)組的對(duì)應(yīng)位置是1則進(jìn)行TTL檢測(cè),否則丟棄該數(shù)據(jù)包;TTL檢測(cè)如果對(duì)TTL進(jìn)行哈希操作后映射到二維數(shù)組對(duì)應(yīng)位置為1則放行該數(shù) 據(jù)包,否則丟棄;
第五步,停止內(nèi)核層數(shù)據(jù)包過濾;當(dāng)檢測(cè)到SYN包速率未超過閥值t并由記錄可信IP地址和TTL記錄后,停止數(shù)據(jù) 包的過濾,用戶層發(fā)送關(guān)閉命令到內(nèi)核層數(shù)據(jù)包過濾模塊。所述Bloom Filter結(jié)構(gòu)為每一個(gè)哈希函數(shù)對(duì)應(yīng)一個(gè)數(shù)組并且利用二維數(shù)組的方
式存儲(chǔ)雙變量。利用內(nèi)核層和用戶層協(xié)同處理。采用本發(fā)明可以達(dá)到如下的有益效果1.通過改進(jìn)Bloom Filter原始的單一數(shù)組對(duì)應(yīng)多個(gè)哈希函數(shù)的結(jié)構(gòu),采用一個(gè) 哈希函數(shù)對(duì)應(yīng)一個(gè)一維數(shù)組或二維數(shù)組的結(jié)構(gòu),有效降低了誤報(bào)率,在保證準(zhǔn)確率的前提 下提高了存儲(chǔ)和查找數(shù)據(jù)包的效率,使得本方法可以有效防御SYN Flood攻擊。2.通過結(jié)合開源操作系統(tǒng)內(nèi)核層和用戶層協(xié)同處理來解決內(nèi)核層效率高但不適 宜處理復(fù)雜程序和用戶層跟內(nèi)核協(xié)議棧不緊密的問題,從而提高了對(duì)數(shù)據(jù)包的處理效率。


圖1是初始化的Bloom Filter結(jié)構(gòu)。圖2是Bloom Filter存儲(chǔ)操作示意圖。圖3是Bloom Filter查找操作示意圖。圖4是改進(jìn)的Bloom Filter結(jié)構(gòu)。圖5是用Netlink機(jī)制定義的數(shù)據(jù)包結(jié)構(gòu)。圖6是實(shí)施例網(wǎng)絡(luò)拓?fù)鋱D。
具體實(shí)施例方式下面結(jié)合實(shí)施例對(duì)本發(fā)明做進(jìn)一步說明實(shí)施例以H3C MSR 30-40路由器(帶OAP單板)平臺(tái)為例,此例為路由器部署方式。如圖6所示是本例網(wǎng)絡(luò)拓?fù)鋱D,H3C MSR 30_40Router是華為3Com面向企業(yè) 網(wǎng)絡(luò)的產(chǎn)品。0AP(0pen Application Platform)中文名為開放應(yīng)用平臺(tái),是Hangzhou Huawei-3Com公司為新興業(yè)務(wù)提供的開放式應(yīng)用平臺(tái)。每一個(gè)OAP單板擁有自己的處理 器、存儲(chǔ)器、內(nèi)外網(wǎng)絡(luò)接口以及與路由器的接口。單板上運(yùn)行獨(dú)立的Linux系統(tǒng)。在本例中,保護(hù)的是DMZ區(qū)域,Internet上的流量流經(jīng)OAP單板時(shí)進(jìn)行過濾。先 在OAP單板運(yùn)行的Linux系統(tǒng)上作如下準(zhǔn)備在用戶層安裝Iibpcap包(libpcap是unix/linux平臺(tái)下的網(wǎng)絡(luò)數(shù)據(jù)包捕獲函數(shù) 包);在內(nèi)核層注冊(cè)協(xié)議棧Η00Κ(鉤子函數(shù),通過該函數(shù)可以獲得協(xié)議棧中的所有數(shù)據(jù)包) 函數(shù)。OAP單板上部署動(dòng)作如下1、遭受SYN-Flood攻擊判斷;在30分鐘內(nèi)對(duì)用戶空間TCP連接請(qǐng)求包進(jìn)行統(tǒng)計(jì),計(jì)算出每10秒內(nèi)TCP連接請(qǐng) 求包的個(gè)數(shù),取最小值作為閥值t的初始值,如105 ;設(shè)置一個(gè)單位長(zhǎng)度為10的循環(huán)數(shù)組,數(shù)組第i項(xiàng)的值設(shè)為前i秒內(nèi)TCP連接請(qǐng)求包的個(gè)數(shù),記錄最近10秒內(nèi)連接請(qǐng)求包的個(gè)數(shù),對(duì)此數(shù)組求平均值得到最近10秒內(nèi)SYN 包的平均速率,當(dāng)這個(gè)速率超過閥值105時(shí)判斷系統(tǒng)有可能遭受SYN-Flood攻擊,再轉(zhuǎn)第2 步;否則轉(zhuǎn)第5步;2、構(gòu)建用戶層Bloom Filter結(jié)構(gòu);對(duì)處于連接狀態(tài)下的TCP數(shù)據(jù)包,取其IP地址字段和TTL字段作為可信IP和TTL 記錄,利用改進(jìn)的Bloom Filter組織成高效匹配結(jié)構(gòu);對(duì)最近10秒內(nèi)的TCP數(shù)據(jù)包,取數(shù)據(jù)包中的源IP地址字段和源端口字段,并 使用查看當(dāng)前網(wǎng)絡(luò)聯(lián)機(jī)狀態(tài)的命令查看包含此源IP地址和源端口的TCP連接是否處于 ESTABLISHED狀態(tài),對(duì)于處于ESTABLISHED狀態(tài)的TCP數(shù)據(jù)包取其源IP地址字段和TTL字 段,并使用下面的方法構(gòu)建Bloom Filter結(jié)構(gòu);因?yàn)閳D1所示的Bloom Filter結(jié)構(gòu)只用了一個(gè)一維數(shù)組存儲(chǔ)一個(gè)變量,而本方法 要求存儲(chǔ)IP地址和TTL兩個(gè)變量,所以如圖4所示,構(gòu)造2個(gè)2048位的一維數(shù)組和1個(gè) 2048*8位的二維數(shù)組,其中數(shù)組每項(xiàng)為1位。初始狀態(tài)時(shí)把整個(gè)數(shù)組的每項(xiàng)置為0,因?yàn)閳D 2中所有哈希函數(shù)哈希后映射到同一個(gè)一維向量,這樣有很大的誤判率,因此為了存儲(chǔ)源 IP地址A. B. C. D和TTL值總共5個(gè)字節(jié)的元素,使用ELFHash、RSHash、JSHash、PJWHash這 樣4個(gè)相互獨(dú)立的哈希函數(shù),用ELFHash哈希函數(shù)對(duì)IP地址的前兩個(gè)字節(jié)A和B進(jìn)行運(yùn) 算,即將A和B轉(zhuǎn)換成兩個(gè)字符,用ELFHash對(duì)其進(jìn)行哈希運(yùn)算,并將哈希值對(duì)m取模,映射 到第1個(gè)一維數(shù)組;用RSHash哈希函數(shù)對(duì)IP地址的C和D字節(jié)進(jìn)行運(yùn)算,并將哈希值對(duì)m 取模,映射到第二個(gè)一維數(shù)組;用JSHash哈希函數(shù)對(duì)IP地址四個(gè)字節(jié)進(jìn)行運(yùn)算,并將運(yùn)算 后的哈希值對(duì)m取模,映射到二維數(shù)組的第一列的第k個(gè)位置,同時(shí)用PJWHash哈希函數(shù)對(duì) TTL值進(jìn)行哈希,將哈希值對(duì)η取模,映射到二維數(shù)組的第k行。映射時(shí),把映射的位置置為 1 ;構(gòu)建好BloomFilter結(jié)構(gòu)后轉(zhuǎn)第3步;3、更新內(nèi)核層可信IP地址和TTL數(shù)據(jù),啟用內(nèi)核層數(shù)據(jù)包過濾;用戶層通過內(nèi)核通信方式通知內(nèi)核開啟數(shù)據(jù)包過濾器,同時(shí)把記錄的可信IP地 址和TTL記錄通過內(nèi)核通信方式發(fā)送至內(nèi)核層組織成內(nèi)核層的BloomFilter結(jié)構(gòu),再轉(zhuǎn)第 4步;具體的用戶層和內(nèi)核層通信方式如下如圖5所示,通信數(shù)據(jù)包結(jié)構(gòu)包含包頭和包數(shù)據(jù)兩部分,包頭部分的nlmSg_type 字段標(biāo)志著數(shù)據(jù)包的類型,用戶層發(fā)往內(nèi)核層數(shù)據(jù)包定義nlmSg_type為4時(shí)代表關(guān)閉內(nèi)核 層數(shù)據(jù)包過濾,nlmsg_type為5時(shí)開啟內(nèi)核層數(shù)據(jù)包過濾,此兩種類型的數(shù)據(jù)包無需攜帶 數(shù)據(jù),nlmSg_type為1時(shí)用戶層傳送可信IP地址和TTL記錄,同時(shí)攜帶數(shù)據(jù)部分,數(shù)據(jù)部分 為u_packet_info結(jié)構(gòu)體,此結(jié)構(gòu)體包含改進(jìn)的Bloom Filter結(jié)構(gòu)體三個(gè)位向量的一個(gè)字 節(jié)以及字節(jié)序號(hào);內(nèi)核層發(fā)往用戶層的數(shù)據(jù)包定義nlmSg_type為2,攜帶數(shù)據(jù)為k_paCket_ info結(jié)構(gòu)體,該結(jié)構(gòu)體包含通過或丟棄信息、源IP、目的IP、TTL、源端口、目的端口 ;4、內(nèi)核層根據(jù)可信IP地址和TTL記錄過濾TCP SYN數(shù)據(jù)包;與如圖3所示的方法不同,因?yàn)楸痉椒ㄊ褂玫氖歉倪M(jìn)型Bloom Filter,存儲(chǔ)了兩 個(gè)變量,采用了二維數(shù)組和一維數(shù)組,因此查找方法也不一樣,取TCP連接請(qǐng)求包中的IP地 址字段和TTL字段,用第2步中構(gòu)造用戶層BloomFilter結(jié)構(gòu)的方法對(duì)IP地址和TTL進(jìn)行 哈希操作,在對(duì)IP地址進(jìn)行哈希操作時(shí),如果每個(gè)哈希值映射到m位數(shù)組的對(duì)應(yīng)位置是1則進(jìn)行TTL檢測(cè),否則丟棄該數(shù)據(jù)包;TTL檢測(cè)如果對(duì)TTL進(jìn)行哈希操作后映射到二維數(shù)組對(duì)應(yīng)位置為1則放行該數(shù) 據(jù)包,否則丟棄;5、停止內(nèi)核層數(shù)據(jù)包過濾;記錄可信IP地址和TTL記錄后,停止數(shù)據(jù)包的過濾,用戶層發(fā)送關(guān)閉命令到內(nèi)核 層數(shù)據(jù)包過濾模塊停止內(nèi)核層數(shù)據(jù)包過濾。具體的記錄可信IP地址和TTL記錄的方法如下對(duì)最近10秒內(nèi)的數(shù)據(jù)包,取數(shù) 據(jù)包中的源IP地址字段和源端口字段,并使用查看當(dāng)前網(wǎng)絡(luò)聯(lián)機(jī)狀態(tài)的命令查看包含此 源IP地址和源端口的TCP連接是否處于ESTABLISHED狀態(tài),對(duì)于處于ESTABLISHED狀態(tài)的 TCP數(shù)據(jù)包取其源IP地址字段和TTL字段作為可信IP地址和TTL記錄。
權(quán)利要求
一種基于Bloom Filter和開源內(nèi)核防御SYN Flood攻擊的方法,其特征在于包括以下步驟第一步,遭受SYN Flood攻擊判斷;設(shè)置記錄時(shí)間段,在設(shè)置記錄時(shí)間段內(nèi)在用戶空間檢測(cè)TCP連接請(qǐng)求包速率,取最小值作為閥值t的初始值;設(shè)置一個(gè)單位長(zhǎng)度為10的循環(huán)數(shù)組,數(shù)組第n項(xiàng)記錄前n秒內(nèi)TCP連接請(qǐng)求包的個(gè)數(shù),記錄最近10秒內(nèi)連接請(qǐng)求包的個(gè)數(shù),對(duì)此數(shù)組求平均值得到最近10秒內(nèi)SYN包的平均速率,當(dāng)這個(gè)速率超過閥值t時(shí)判斷系統(tǒng)當(dāng)前可能遭受SYN Flood攻擊,再轉(zhuǎn)第2步;否則轉(zhuǎn)第5步;第二步,構(gòu)建用戶層Bloom Filter結(jié)構(gòu);對(duì)處于連接狀態(tài)下的TCP數(shù)據(jù)包,取其IP地址字段和TTL字段作為可信IP和TTL記錄,利用改進(jìn)的Bloom Filter組織成高效匹配結(jié)構(gòu);取TCP數(shù)據(jù)包中的源IP地址字段和源端口字段,并使用查看當(dāng)前網(wǎng)絡(luò)聯(lián)機(jī)狀態(tài)的命令查看包含此源IP地址和源端口的TCP連接是否處于ESTABLISHED狀態(tài),對(duì)于處于ESTABLISHED狀態(tài)的TCP數(shù)據(jù)包取其源IP地址字段和TTL字段,并使用下面的方法構(gòu)建Bloom Filter結(jié)構(gòu);構(gòu)造2個(gè)2048位的一維數(shù)組和1個(gè)2048*8位的二維數(shù)組,其中數(shù)組每項(xiàng)為1位,初始狀態(tài)時(shí)把整個(gè)數(shù)組的每項(xiàng)置為0,為了存儲(chǔ)源IP地址A.B.C.D和TTL值總共5個(gè)字節(jié)的元素,使用ELFHash、RSHash、JSHash、PJWHash這樣4個(gè)相互獨(dú)立的哈希函數(shù),用ELFHash哈希函數(shù)對(duì)IP地址的前兩個(gè)字節(jié)A和B進(jìn)行運(yùn)算,即將A和B轉(zhuǎn)換成兩個(gè)字符,用ELFHash對(duì)其進(jìn)行哈希運(yùn)算,并將哈希值對(duì)m取模,映射到第1個(gè)一維數(shù)組;用RSHash哈希函數(shù)對(duì)IP地址的C和D字節(jié)進(jìn)行運(yùn)算,并將哈希值對(duì)m取模,映射到第二個(gè)一維數(shù)組;用JSHash哈希函數(shù)對(duì)IP地址四個(gè)字節(jié)進(jìn)行運(yùn)算,并將運(yùn)算后的哈希值對(duì)m取模,映射到二維數(shù)組的第一列的第k個(gè)位置,并記錄下位置k,同時(shí)用PJWHash哈希函數(shù)對(duì)TTL值進(jìn)行哈希,將哈希值對(duì)n取模,映射到二維數(shù)組的第k行;映射時(shí),把映射的位置置為1,構(gòu)建好Bloom Filter結(jié)構(gòu)后轉(zhuǎn)第3步;第三步,更新內(nèi)核層可信IP地址和TTL數(shù)據(jù),啟用內(nèi)核層數(shù)據(jù)包過濾;當(dāng)檢測(cè)到SYN包速率超過閥值t時(shí),用戶層通過內(nèi)核通信方式通知內(nèi)核開啟數(shù)據(jù)包過濾器,同時(shí)把記錄的可信IP地址和TTL記錄通過內(nèi)核通信方式發(fā)送至內(nèi)核層組織成內(nèi)核層Bloom Filter結(jié)構(gòu),再轉(zhuǎn)第4步;用戶層和內(nèi)核層通信方式如下通信數(shù)據(jù)包結(jié)構(gòu)包含包頭和包數(shù)據(jù)兩部分,包頭部分的nlmsg_type字段標(biāo)志著數(shù)據(jù)包的類型,用戶層發(fā)往內(nèi)核層數(shù)據(jù)包定義nlmsg_type為4時(shí)代表關(guān)閉內(nèi)核層數(shù)據(jù)包過濾,nlmsg_type為5時(shí)開啟內(nèi)核層數(shù)據(jù)包過濾,此兩種類型的數(shù)據(jù)包無需攜帶數(shù)據(jù),nlmsg_type為1時(shí)用戶層傳送可信IP地址和TTL記錄,同時(shí)攜帶數(shù)據(jù)部分,數(shù)據(jù)部分為u_packet_info結(jié)構(gòu)體,此結(jié)構(gòu)體包含改進(jìn)的Bloom Filter結(jié)構(gòu)體三個(gè)位向量的一個(gè)字節(jié)以及字節(jié)序號(hào);內(nèi)核層發(fā)往用戶層的數(shù)據(jù)包定義nlmsg_type為2,攜帶數(shù)據(jù)為k_packet_info結(jié)構(gòu)體,該結(jié)構(gòu)體包含通過或丟棄信息、源IP、目的IP、TTL、源端口、目的端口;第四步,內(nèi)核層根據(jù)可信IP地址和TTL記錄過濾TCP SYN數(shù)據(jù)包;取TCP連接請(qǐng)求包中的IP地址字段和TTL字段,用第二步中構(gòu)造BloomFilter結(jié)構(gòu)的方法對(duì)IP地址和TTL進(jìn)行哈希操作,在對(duì)IP地址進(jìn)行哈希操作時(shí),如果每個(gè)哈希值映射到m位數(shù)組的對(duì)應(yīng)位置是1則進(jìn)行TTL檢測(cè),否則丟棄該數(shù)據(jù)包;TTL檢測(cè)如果對(duì)TTL進(jìn)行哈希操作后映射到二維數(shù)組對(duì)應(yīng)位置為1則放行該數(shù)據(jù)包,否則丟棄;第五步,停止內(nèi)核層數(shù)據(jù)包過濾;當(dāng)檢測(cè)到SYN包速率未超過閥值t并由記錄可信IP地址和TTL記錄后,停止數(shù)據(jù)包的過濾,用戶層發(fā)送關(guān)閉命令到內(nèi)核層數(shù)據(jù)包過濾模塊。
2.如權(quán)利要求1所述的一種基于BloomFilter和開源內(nèi)核防御SYN Flood攻擊的方 法,其特征在于所述Bloom Filter結(jié)構(gòu)為每一個(gè)哈希函數(shù)對(duì)應(yīng)一個(gè)數(shù)組并且利用二維數(shù)組 的方式存儲(chǔ)雙變量。
3.如權(quán)利要求1所述的一種基于BloomFilter和開源內(nèi)核防御SYNFlood攻擊的方 法,其特征在于利用內(nèi)核層和用戶層協(xié)同處理。
全文摘要
本發(fā)明公開了一種基于Bloom Filter和開源內(nèi)核防御SYN Flood攻擊的方法,包括以下步驟1、遭受SYN-Flood攻擊判斷;2、構(gòu)建Bloom Filter結(jié)構(gòu);3、更新內(nèi)核層可信IP地址和TTL數(shù)據(jù),啟用內(nèi)核層數(shù)據(jù)包過濾;4、內(nèi)核層根據(jù)可信IP地址和TTL記錄過濾TCP SYN數(shù)據(jù)包;5、停止內(nèi)核層數(shù)據(jù)包過濾。本發(fā)明可以達(dá)到如下的有益效果1.通過改進(jìn)Bloom Filter原始的單一位數(shù)組對(duì)應(yīng)多個(gè)哈希函數(shù)的結(jié)構(gòu),采用一個(gè)哈希函數(shù)對(duì)應(yīng)一個(gè)位數(shù)組的結(jié)構(gòu),有效降低了誤報(bào)率,在保證準(zhǔn)確率的前提下提高了存儲(chǔ)和查找數(shù)據(jù)包的效率,使得本方法可以有效防御SYN Flood攻擊。2.通過結(jié)合開源操作系統(tǒng)內(nèi)核層和用戶層協(xié)同處理來解決內(nèi)核層效率高但不適宜處理復(fù)雜程序和用戶層跟內(nèi)核協(xié)議棧不緊密的問題,從而提高了對(duì)數(shù)據(jù)包的處理效率。
文檔編號(hào)H04L29/06GK101958883SQ20101013325
公開日2011年1月26日 申請(qǐng)日期2010年3月26日 優(yōu)先權(quán)日2010年3月26日
發(fā)明者唐歡容, 李宇, 歐陽(yáng)建權(quán), 羅新高 申請(qǐng)人:湘潭大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1