專利名稱:一種同步泛洪攻擊的過濾方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)安全監(jiān)控領(lǐng)域,具體涉及一種同步泛洪攻擊的過濾方法及 系統(tǒng)。
背景技術(shù):
近年來,DDoS (分布式拒絕服務(wù))攻擊的頻繁發(fā)生給重要信息系統(tǒng)以及運(yùn) 營網(wǎng)絡(luò)的安全帶來的嚴(yán)重影響,因此得到了社會各界的廣泛關(guān)注。在DDoS攻 擊中,Syn Flood (同歩泛洪)攻擊是最為常見的一種攻擊方式,它主要利用 TCP (傳輸控制協(xié)議)協(xié)議棧為保存半連接狀態(tài)而消耗內(nèi)存這一設(shè)計上的漏洞 來達(dá)到攻擊的目的,攻擊者往往通過向攻擊目標(biāo)發(fā)送大量TCP連接請求的方 法,消耗系統(tǒng)內(nèi)存以實現(xiàn)對目標(biāo)系統(tǒng)的拒絕服務(wù)攻擊。目前,針對Syn Flood 攻擊的過濾、防御方法研究主要包括基于Syn Proxy (同步代理)、基于 History-IP (歷史網(wǎng)絡(luò)協(xié)議)、基于Hop-Count (跳數(shù))、以及基于標(biāo)簽等4 類方法。
一種為基于Syn Proxy (包括Syn Cookie)的方法。主要利用代替服務(wù)器 進(jìn)行TCP連接三次握手的方法來過濾攻擊報文。該類方法的缺點(diǎn)是代替服務(wù)器 進(jìn)行三次握手需要消耗一定的系統(tǒng)資源,當(dāng)攻擊流量過大時,過濾系統(tǒng)自身容 易崩潰。
另一種為基于History-IP (包括黑、白名單)的方法。該類方法維護(hù)一 個常見用戶數(shù)據(jù)庫或者列表,在攻擊發(fā)生時,允許源地址在表中的數(shù)據(jù)包通過。 該類方法的缺點(diǎn)是如果攻擊地址采取了合法的IP地址,則過濾系統(tǒng)完全喪失 了對目標(biāo)系統(tǒng)的保護(hù)能力,而且合法用戶的源地址如果不在常見用戶表中,也 會被阻止訪問服務(wù)器,并且此方法需要一段時間的學(xué)習(xí)才能建立用戶數(shù)據(jù)庫或 列表。
另一種為基于Hop-Count的方法。該類方法維護(hù)一個常見用戶的跳數(shù)數(shù)據(jù) 庫,在攻擊發(fā)生時,檢査數(shù)據(jù)包的跳數(shù)是否與數(shù)據(jù)庫中相應(yīng)記錄的跳數(shù)相同,如果相同,則允許通過。該類方法的缺點(diǎn)是當(dāng)合法用戶的路由改變時,合法用戶也會被禁止進(jìn)入系統(tǒng),并且該類方法需要一段時間的學(xué)習(xí)來建立跳數(shù)數(shù)據(jù)庫。
另 一種基于標(biāo)簽的方法。該類方法主要通過在邊界路由器上對流出子網(wǎng)的
Syn數(shù)據(jù)包加注基于源子網(wǎng)編號的標(biāo)簽的方法來辨別Syn包的真?zhèn)?,從而過濾偽造源地址的Syn Flood攻擊。該類方法的缺點(diǎn)是不能過濾真實源地址的SynFlood攻擊,同時如果采取偽造子網(wǎng)源地址的攻擊方式,該類方法也會喪失防御能力。
發(fā)明內(nèi)容
為了解決上述的技術(shù)問題,提供了一種同步泛洪攻擊的過濾方法及系統(tǒng),能夠有效緩解、過濾和防御針對網(wǎng)絡(luò)信息系統(tǒng)的大規(guī)模Syn Flood攻擊。本發(fā)明公開了一種同步泛洪攻擊的過濾方法,包括歩驟l,配置高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比例;
步驟2,接收數(shù)據(jù)包,確定當(dāng)前狀態(tài),判斷所述當(dāng)前狀態(tài)是否為正常狀態(tài),如果是,則所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列,否則,執(zhí)行步驟3;
步驟3,根據(jù)所述數(shù)據(jù)包的類型,用于記錄連接的連接狀態(tài)表和用于記錄合法IP地址的合法地址表,判斷所述數(shù)據(jù)包是否合法,如果是,則所述數(shù)據(jù)包進(jìn)入所述高權(quán)重隊列,否則,所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列;并更新所述連接狀態(tài)表和所述合法地址表;
步驟4,在當(dāng)前狀態(tài)為正常狀態(tài)時,轉(zhuǎn)發(fā)所述高權(quán)重隊列中數(shù)據(jù)包,在當(dāng)前狀態(tài)為攻擊狀態(tài)時,按所述高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比列轉(zhuǎn)發(fā)所述低權(quán)重隊列和所述高權(quán)重隊列中的數(shù)據(jù)包。
所述步驟l還包括,配置檢測時隙,初始化計時器為0,初始化用于記錄當(dāng)前狀態(tài)的當(dāng)前狀態(tài)變量為正常;
所述步驟2中確定當(dāng)前狀態(tài)進(jìn)一步為
步驟21,接收數(shù)據(jù)包后,判斷所述計時器的值是否小于所述檢測時隙,如果是,則確定當(dāng)前狀態(tài)為所述當(dāng)前狀態(tài)變量中記錄的狀態(tài),否則,將所述計時器置為0,執(zhí)行步驟22;
所述步驟22,判斷是否發(fā)生攻擊,如果是,則更新所述當(dāng)前狀態(tài)變量為攻擊狀態(tài),確定所述當(dāng)前狀態(tài)為攻擊狀態(tài),否則,更新所述當(dāng)前狀態(tài)變量為正常狀態(tài),確定所述當(dāng)前狀態(tài)為正常狀態(tài)。
所述步驟2還包括,在執(zhí)行完步驟22,確定所述當(dāng)前狀態(tài)為正常狀態(tài)時,將所述連接狀態(tài)表和所述合法地址表清空。所述步驟1還包括配置同步數(shù)據(jù)包閾值;所述步驟22中判斷是否發(fā)生攻擊進(jìn)一步為
步驟41,判斷在所述計時器的計時時間內(nèi)統(tǒng)計的同步包數(shù)量除以所述計時器的值所得值是否大于等于所述同步數(shù)據(jù)包閾值,如果是,則判定發(fā)生攻擊,所述,判定為正常。
所述步驟3進(jìn)一步為,
步驟51,在所述數(shù)據(jù)包為同步包時,確定所述數(shù)據(jù)包不合法,所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列,并更新所述連接狀態(tài)表;
步驟52,在所述數(shù)據(jù)包為同步/確認(rèn)包時,如果所述數(shù)據(jù)包在所述連接狀態(tài)表中存在對應(yīng)記錄,則所述數(shù)據(jù)包合法,所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列,更新所述連接狀態(tài)表和所述合法地址表,否則,所述數(shù)據(jù)包不合法,所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列;
步驟53,在所述數(shù)據(jù)包為其他類型時,如果所述數(shù)據(jù)包在所述合法地址表中存在對應(yīng)記錄,則確定所述數(shù)據(jù)包合法,所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列,否則,所述數(shù)據(jù)包不合法,所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列。
所述步驟51中更新所述連接狀態(tài)表進(jìn)一步為,
步驟61,在所述連接狀態(tài)表中査找所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未査找到,則將所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識添加到所述連接狀態(tài)表中。所述步驟52進(jìn)一步為,
步驟71,在所述數(shù)據(jù)包為同步/確認(rèn)包時,在所述連接狀態(tài)表中査找所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未查找到,則所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列,如果查找到,則執(zhí)行歩驟72;
所述步驟72,將所述數(shù)據(jù)包對應(yīng)的連接的標(biāo)識從所述連接狀態(tài)表中刪除,將所述數(shù)據(jù)包的源IP地址添加到所述和合法地址表中,確定所述數(shù)據(jù)包合法,所述數(shù)據(jù)包進(jìn)入所述高權(quán)重隊列。
所述步驟53進(jìn)一步為在所述數(shù)據(jù)包為其他類型時,在所述合法地址表中
9査找所述數(shù)據(jù)包的源IP地址,如果査找到,則確定所述數(shù)據(jù)包合法,所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列,否則,所述數(shù)據(jù)包進(jìn)入所述低權(quán)重隊列。
所述標(biāo)識為所述連接的同步數(shù)據(jù)包的五源組,所述五源組由源IP地址、源端口號、目的IP地址、目的端口號和序列號組成。
所述歩驟2和所述步驟3中所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列進(jìn)一步為,
判斷所述高權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述
數(shù)據(jù)包加入所述高權(quán)重隊列;
所述步驟3中所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列進(jìn)一步為,
判斷所述低權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述數(shù)據(jù)包加入所述低權(quán)重隊列。
本發(fā)明還公開了一種同步泛洪攻擊的過濾系統(tǒng),包括檢測模塊、過濾模塊、緩沖區(qū)模塊和轉(zhuǎn)發(fā)模塊,
所述緩沖區(qū)模塊包含低權(quán)重隊列和高權(quán)重隊列;
所述初始化模塊,用于配置高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比例;
所述檢測模塊,用于接收數(shù)據(jù)包,確定當(dāng)前狀態(tài),判斷所述當(dāng)前狀態(tài)是否為正常狀態(tài),如果是,則將所述數(shù)據(jù)包加入到所述高權(quán)重隊列,否則,將所述
數(shù)據(jù)包傳給所述過濾模塊;
所述過濾模塊,用于根據(jù)所述數(shù)據(jù)包的類型,用于記錄連接的連接狀態(tài)表和用于記錄合法IP地址的合法地址表,判斷所述數(shù)據(jù)包是否合法,如果是,則將所述數(shù)據(jù)包加入所述高權(quán)重隊列,否則,將所述數(shù)據(jù)包加入所述低權(quán)重隊列;并更新所述連接狀態(tài)表和所述合法地址表;
所述轉(zhuǎn)發(fā)模塊,用于在當(dāng)前狀態(tài)為正常狀態(tài)時,轉(zhuǎn)發(fā)所述高權(quán)重隊列中數(shù)據(jù)包,在當(dāng)前狀態(tài)為攻擊狀態(tài)時,按所述高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比列轉(zhuǎn)發(fā)所述低權(quán)重隊列和所述高權(quán)重隊列中的數(shù)據(jù)包。
所述初始化模塊還用于配置檢測時隙,初始化計時器為0,初始化用于記錄當(dāng)前狀態(tài)的當(dāng)前狀態(tài)變量為正常;
所述檢測模塊在確定當(dāng)前狀態(tài)時進(jìn)一步用于接收到數(shù)據(jù)包后,判斷所述計時器的值是否小于所述檢測時隙,如果是,則確定當(dāng)前狀態(tài)為所述當(dāng)前狀態(tài)變量中記錄的狀態(tài);否則,將所述計時器置為O,判斷是否發(fā)生攻擊,如果是,則更新所述當(dāng)前狀態(tài)變量為攻擊狀態(tài),確定所述當(dāng)前狀態(tài)為攻擊狀態(tài),否則,
10更新所述當(dāng)前狀態(tài)變量為正常狀態(tài),確定所述當(dāng)前狀態(tài)為正常狀態(tài)。
所述檢測模塊還用在通過判斷未發(fā)生攻擊確定所述當(dāng)前狀態(tài)為正常狀態(tài)
后,將所述連接狀態(tài)表和所述合法地址表清空。所述初始化模塊還用于配置同步數(shù)據(jù)包閾值;
所述檢測模塊在判斷是否發(fā)生攻擊時進(jìn)一步用于判斷在所述計時器的計時時間內(nèi)統(tǒng)計的同步包數(shù)量除以所述計時器的值所得值是否大于等于所述同步數(shù)據(jù)包閾值,如果是,則判定發(fā)生攻擊,所述,判定為正常。
所述過濾模塊進(jìn)一步用于在所述數(shù)據(jù)包為同步包時,確定所述數(shù)據(jù)包不合
法,將所述數(shù)據(jù)包加入所述低權(quán)重隊列,并更新所述連接狀態(tài)表;在所述數(shù)據(jù)包為同步/確認(rèn)包時,如果所述數(shù)據(jù)包在所述連接狀態(tài)表中存在對應(yīng)記錄,則所述數(shù)據(jù)包合法,將所述數(shù)據(jù)包加入所述高權(quán)重隊列,更新所述連接狀態(tài)表和所述合法地址表,否則,所述數(shù)據(jù)包不合法,將所述數(shù)據(jù)包加入所述低權(quán)重隊列;在所述數(shù)據(jù)包為其他類型時,如果所述數(shù)據(jù)包在所述合法地址表中存在對應(yīng)記錄,則確定所述數(shù)據(jù)包合法,將所述數(shù)據(jù)包加入所述高權(quán)重隊列,否則,所述數(shù)據(jù)包不合法,將所述數(shù)據(jù)包加入所述低權(quán)重隊列。
所述過濾模塊在所述數(shù)據(jù)包為同步包的情況下更新所述連接狀態(tài)表時進(jìn)一步用于在所述連接狀態(tài)表中查找所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未査找到,則將所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識添加到所述連接狀態(tài)表中。
所述過濾模塊在所述數(shù)據(jù)包為同步/確認(rèn)包的情況下進(jìn)一步用于在所述連接狀態(tài)表中査找所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未查找到,則將所述數(shù)據(jù)包加入所述低權(quán)重隊列,如果查找到,則將所述數(shù)據(jù)包對應(yīng)的連接的標(biāo)識從所述連接狀態(tài)表中刪除,將所述數(shù)據(jù)包的源IP地址添加到所述和合法地址表中,確定所述數(shù)據(jù)包合法,將所述數(shù)據(jù)包加入所述高權(quán)重隊列。
所述過濾模塊在所述數(shù)據(jù)包為其他類型的情況下進(jìn)一步用于在所述合法地址表中査找所述數(shù)據(jù)包的源IP地址,如果查找到,則確定所述數(shù)據(jù)包合法,將所述數(shù)據(jù)包加入所述高權(quán)重隊列,否則,將所述數(shù)據(jù)包加入所述低權(quán)重隊列。
所述標(biāo)識為所述連接的同步數(shù)據(jù)包的五源組,所述五源組由源IP地址、源端口號、目的IP地址、目的端口號和序列號組成。
所述檢測模塊在將所述數(shù)據(jù)包加入所述高權(quán)重隊列時進(jìn)一步用于判斷所述高權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述數(shù)據(jù)包加入所述高權(quán)重隊列;
所述過濾模塊在將所述數(shù)據(jù)包加入所述高權(quán)重隊列時進(jìn)一步用于判斷所 述高權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述數(shù)據(jù)包加入
所述高權(quán)重隊列;
所述過濾模塊在將所述數(shù)據(jù)包加入所述低權(quán)重隊列時進(jìn)一步用于判斷所 述低權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述數(shù)據(jù)包加入 所述低權(quán)重隊列。
本發(fā)明的有益效果在于可有效緩解、過濾和防御針對網(wǎng)絡(luò)信息系統(tǒng)的大規(guī) 模Syn Flood攻擊;不需要預(yù)先對流量特性或用戶行為進(jìn)行學(xué)習(xí),即插即用; 不需要對已有設(shè)備進(jìn)行任何修改,不需要增加其他額外設(shè)備;不需要代替服務(wù) 器進(jìn)行TCP三次握手,不需要發(fā)送驗證包,提高了過濾系統(tǒng)的處理效率,降低 了過濾系統(tǒng)以及網(wǎng)絡(luò)資源的消耗,有效解決了在大流量攻擊下過濾系統(tǒng)自身的 崩潰問題;對偽造源IP和真實源IP的Syn Flood攻擊都具備有效的防御能力。
圖1是本發(fā)明同步泛洪攻擊的過濾方法的流程圖; 圖2是Bloom Filter的組織結(jié)構(gòu)圖; 圖3是本發(fā)明同歩泛洪攻擊的過濾系統(tǒng)的部署連接圖; 圖4是本發(fā)明同步泛洪攻擊的過濾系統(tǒng)的結(jié)構(gòu)圖。
具體實施例方式
下面結(jié)合附圖,對本發(fā)明做進(jìn)一步的詳細(xì)描述。 過濾方法的流程如圖l所示,過濾方法的具體實施步驟如下 步驟S101,初始化參數(shù)。
配置高低權(quán)重隊列轉(zhuǎn)發(fā)包數(shù)的比例為r;配置檢測時隙為S,單位為秒;
配置Syn包(同步包)數(shù)閾值為n,單位為每秒包數(shù);初始化當(dāng)前狀態(tài)變量為 正常狀態(tài),當(dāng)前狀態(tài)變量包括攻擊狀態(tài)和正常狀態(tài);初始化計時器為O。
系統(tǒng)中高權(quán)重隊列的長度和低權(quán)重隊列的長度,分別表示低權(quán)重隊列和高 權(quán)重隊列的緩存空間,由過濾系統(tǒng)的處理能力決定,在一具體實施方式
中,高 權(quán)重隊列的長度大于低權(quán)重隊列的長度;轉(zhuǎn)發(fā)總速率為v,單位為每秒包數(shù),由被保護(hù)的網(wǎng)絡(luò)信息系統(tǒng)的處理能力決定。 步驟S102,接收一個數(shù)據(jù)包。
步驟S103,判斷計時器是否小于s,如果是,則執(zhí)行步驟S108;否則, 執(zhí)行步驟S104。
歩驟S104,將計時器置為O,判斷當(dāng)前狀態(tài)是否發(fā)生攻擊,如果是,則執(zhí) 行步驟S107,否則,執(zhí)行步驟S105。
計時器從0開始計時到當(dāng)前的時間內(nèi)統(tǒng)計到的Syn包數(shù)為N,當(dāng)前計時器 時間為t,如果N/t大于或等于閾值n,則判定為是發(fā)生了攻擊,否則N/t小 于n時,判定為沒有發(fā)生攻擊。
步驟S105,將用于記錄連接的連接狀態(tài)表和用于記錄合法IP地址的合法 地址表清空,確定當(dāng)前狀態(tài)為正常狀態(tài),更新當(dāng)前狀態(tài)變量為正常狀態(tài)。
步驟S106,判斷緩沖區(qū)中的高權(quán)重隊列是否已滿,如果已滿則丟棄該數(shù) 據(jù)包,否則將數(shù)據(jù)包加入到高權(quán)重隊列。
其中高權(quán)重隊列采用先進(jìn)先出方式(FIFO方式)。
步驟S107,確定當(dāng)前狀態(tài)為攻擊狀態(tài),更新當(dāng)前狀態(tài)變量為攻擊狀態(tài), 執(zhí)行步驟S109。
步驟S108,確定當(dāng)前狀態(tài)變量記錄的當(dāng)前狀態(tài),如果當(dāng)前狀態(tài)為正常, 則執(zhí)行步驟S106,否則,執(zhí)行步驟S109。
步驟S109,確定數(shù)據(jù)包的類型,如果數(shù)據(jù)包為Syn包,則執(zhí)行步驟SllO, 如果數(shù)據(jù)包為Syn/Ack包(同步/確認(rèn)包),則執(zhí)行步驟Slll,如果數(shù)據(jù)包為 其他類型,則執(zhí)行步驟S112。
步驟SllO,在連接狀態(tài)表中查找該數(shù)據(jù)包的五元組,如果沒找到,則將 該五元組加入到連接狀態(tài)表中;執(zhí)行步驟S113。
數(shù)據(jù)包的五元組由源IP,源端口,目的IP,目的端口,序列號組成,連接的 Syn包的五元組為該連接的標(biāo)識,記錄在連接狀態(tài)表中。
歩驟Slll,在連接狀態(tài)表中査找該數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果沒找到, 則執(zhí)行步驟S113,否則,則執(zhí)行步驟S114。
Syn/Ack數(shù)據(jù)包對應(yīng)連接的標(biāo)識為該連接的Syn數(shù)據(jù)的五元組,該五元組 等于Syn/Ack數(shù)據(jù)包的源IP,源端口,目的IP,目的端口,和序列號減去1的值。
步驟S112,在合法地址表中査找該數(shù)據(jù)包的源IP,如果找到了,則執(zhí)行步驟S106,否則,執(zhí)行步驟S113。
步驟S113,判斷緩沖區(qū)中的低權(quán)重隊列是否已滿,如果己滿則丟棄該數(shù) 據(jù)包,否則將數(shù)據(jù)包加入到低權(quán)重隊列。
其中低權(quán)重隊列采用先進(jìn)先出方式(FIFO方式)。
步驟S114,在連接狀態(tài)表中刪去該連接的標(biāo)識,五元組,并將該源IP加 入到合法地址表中,執(zhí)行步驟S106。
步驟S115,在執(zhí)行上述步驟的同時,進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā)。
判斷當(dāng)前狀態(tài),如果是攻擊狀態(tài),緩沖區(qū)中有數(shù)據(jù)包,則分別按r*v/(r+l) 和v/ (r+l)的速率將高權(quán)重隊列、低權(quán)重隊列中的數(shù)據(jù)包不停地轉(zhuǎn)發(fā)出去; 如果不是攻擊狀態(tài),那么如果高權(quán)重隊列中有數(shù)據(jù)包,則按v速率將這些數(shù)據(jù) 包不停地轉(zhuǎn)發(fā)出去。
其中連接狀態(tài)表和合法地址表均采用一種已公開的Bloom Filter技術(shù)來 實現(xiàn),Bloom Filter的組織結(jié)構(gòu)如圖2所示,由k個相互獨(dú)立的哈希函數(shù)和 一個長度為m的哈希表組成,其中k和m由配置確定,其主要操作的基本過程 如下
査找操作用每個哈希函數(shù)分別對輸入的數(shù)據(jù)項進(jìn)行哈希,生成一組哈希 值,查看哈希表中該組哈希值對應(yīng)的一組桶的數(shù)值是否全為1,如果是,則返 回查找成功,否則,返回查找失??;
加入操作用每個哈希函數(shù)分別對輸入的數(shù)據(jù)項進(jìn)行哈希,生成一組哈希 值,將哈希表中該組哈希值對應(yīng)的一組桶的數(shù)值均置為1,返回。
刪除操作用每個哈希函數(shù)分別對輸入的數(shù)據(jù)項進(jìn)行哈希,生成一組哈希 值,查看哈希表中該組哈希值對應(yīng)的一組桶的數(shù)值是否全為1,如果是,則全 部置為0,返回,否則返回。
本發(fā)明公開的過濾系統(tǒng)具有網(wǎng)絡(luò)信息系統(tǒng)的Syn Flood攻擊過濾和防御能 力,主要部署于接入路由器與被保護(hù)網(wǎng)絡(luò)信息系統(tǒng)之間,具體的部署連接方式 可參見圖3所示。過濾系統(tǒng)可以連接在接入路由器和交換機(jī)之間,接入路由器 和出口路由器之間,或者接入路由器和受保護(hù)的服務(wù)器之間。
過濾系統(tǒng)結(jié)構(gòu)與處理流程如圖4所示,過濾系統(tǒng)400包括初始化模塊401、 檢測模塊402、過濾模塊403、緩沖區(qū)模塊404和轉(zhuǎn)發(fā)模塊405。
具體實施步驟如下緩沖區(qū)模塊404包括低權(quán)重隊列441和高權(quán)重隊列442。
其中,低權(quán)重隊列441采用先進(jìn)先出方式(FIFO方式)。
其中,高權(quán)重隊列442采用先進(jìn)先出方式(FIFO方式)。
高權(quán)重隊列442的長度和低權(quán)重隊列441的長度,由過濾系統(tǒng)的處理能力決定。
初始化模塊401,用于配置檢測時隙為s;配置Syn包數(shù)閾值為n;配置 高低權(quán)重隊列轉(zhuǎn)發(fā)包數(shù)的比例為r;初始化當(dāng)前狀態(tài)變量為正常狀態(tài);初始化 計時器為0。
檢測模塊402用于從系統(tǒng)入口獲取一個數(shù)據(jù)包,判斷計時器是否小于s, 如果小于s,那么如果當(dāng)前狀態(tài)為正常狀態(tài),則判斷緩沖區(qū)模塊404中的高權(quán) 重隊列442是否已滿,如果已滿則丟棄該數(shù)據(jù)包,否則將該數(shù)據(jù)包加入到高權(quán) 重隊列442;如果當(dāng)前狀態(tài)為攻擊狀態(tài),將該數(shù)據(jù)包傳給過濾模塊403;如果 計時器大于或等于s,則將計時器置O,判斷是否發(fā)生了攻擊,如果發(fā)生了攻 擊,則將當(dāng)前狀態(tài)修改為攻擊狀態(tài),并將數(shù)據(jù)包傳給過濾模塊403;如果沒有 發(fā)生攻擊,則將連接狀態(tài)表和合法地址表清空,將當(dāng)前狀態(tài)更新為正常狀態(tài), 判斷緩沖區(qū)模塊404中的高權(quán)重隊列442是否己滿,如果己滿則丟棄該數(shù)據(jù)包, 否則將該數(shù)據(jù)包加入到高權(quán)重隊列442。
其中判斷是否發(fā)生攻擊的具體方法如下
計時器從0開始計時到當(dāng)前的時間內(nèi)統(tǒng)計到的Syn包數(shù)為N,當(dāng)前計時器 時間為t,如果N/t大于或等于閾值n,則判定為是發(fā)生了攻擊,否則N/t小 于n時,判定為沒有發(fā)生攻擊。
過濾模塊403收到檢測模塊402轉(zhuǎn)給的一個數(shù)據(jù)包,考察數(shù)據(jù)包的類型, 如果是Syn包,則在連接狀態(tài)表中查找該數(shù)據(jù)包對應(yīng)連接的標(biāo)識,該標(biāo)識為該 Syn包的五元組〈源IP,源端口,目的IP,目的端口,序列號〉,如果沒找到,則 將該五元組加入到連接狀態(tài)表中,判斷緩沖區(qū)模塊404中的低權(quán)重隊列441 是否已滿,如果已滿則丟棄該數(shù)據(jù)包,否則將該數(shù)據(jù)包加入到低權(quán)重隊列441; 如果是Syn/Ack包,則在連接狀態(tài)表中查找該數(shù)據(jù)包對應(yīng)的連接的標(biāo)識,該標(biāo) 識等于該Syn/Ack包的源IP ,源端口,目的IP,目的端口,序列號減1的值,如 果沒找到,則判斷緩沖區(qū)模塊404中的低權(quán)重隊列441是否已滿,如果已滿則 丟棄該數(shù)據(jù)包,否則將該數(shù)據(jù)包加入到低權(quán)重隊列441;如果找到,則在連接
15狀態(tài)表中刪去該五元組,并將該源IP加入到合法地址表中,判斷緩沖區(qū)模塊
404中的高權(quán)重隊列442是否已滿,如果已滿則丟棄該數(shù)據(jù)包,否則將該數(shù)據(jù) 包加入到高權(quán)重隊列442;如果不是上述兩種數(shù)據(jù)包,則在合法地址表中查找 該數(shù)據(jù)包的源IP,如果找到了,則判斷緩沖區(qū)模塊404中的高權(quán)重隊列442 是否已滿,如果已滿則丟棄該數(shù)據(jù)包,否則將該數(shù)據(jù)包加入到高權(quán)重隊列442, 如果沒有找到,貝ij判斷緩沖區(qū)模塊404中的低權(quán)重隊列441是否已滿,如果已 滿則丟棄該數(shù)據(jù)包,否則將該數(shù)據(jù)包加入到低權(quán)重隊列441。
其中連接狀態(tài)表和合法地址表均采用一種已公開的Bloom Filter技術(shù)來 實現(xiàn),Bloom Filter的組織結(jié)構(gòu)如圖2所示,由k個相互獨(dú)立的哈希函數(shù)和 一個長度為m的哈希表組成,(其中k和m由用戶來確定),其主要操作的基 本過程如下
査找操作用每個哈希函數(shù)分別對輸入的數(shù)據(jù)項進(jìn)行哈希,生成一組哈希 值,查看哈希表中該組哈希值對應(yīng)的一組桶的數(shù)值是否全為1,如果是,則返 回查找成功,否則,返回査找失??;
加入操作用每個哈希函數(shù)分別對輸入的數(shù)據(jù)項進(jìn)行哈希,生成一組哈希 值,將哈希表中該組哈希值對應(yīng)的一組桶的數(shù)值均置為1,返回。
刪除操作用每個哈希函數(shù)分別對輸入的數(shù)據(jù)項進(jìn)行哈希,生成一組哈希 值,查看哈希表中該組哈希值對應(yīng)的一組桶的數(shù)值是否全為1,如果是,則全 部置為0,返回,否則返回。
轉(zhuǎn)發(fā)模塊405,用于與上述處理過程同時進(jìn)行,判斷當(dāng)前狀態(tài),如果是攻 擊狀態(tài),那么如果緩沖區(qū)中有數(shù)據(jù)包,則分別按i^v/ (r+l)和v/ (r+l)的 速率將高權(quán)重隊列442、低權(quán)重隊列441中的數(shù)據(jù)包不停地從系統(tǒng)出口轉(zhuǎn)發(fā)出 去;如果不是攻擊狀態(tài),那么如果高權(quán)重隊列442中有數(shù)據(jù)包,則按v速率將 這些數(shù)據(jù)包不停地從系統(tǒng)出口轉(zhuǎn)發(fā)出去。
轉(zhuǎn)發(fā)總速率為v,單位為每秒包數(shù),由被保護(hù)的網(wǎng)絡(luò)信息系統(tǒng)的處理能力 決定。
本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條 件下,還可以對以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限于 以上的說明,而是由權(quán)利要求書的范圍來確定的。
權(quán)利要求
1. 一種同步泛洪攻擊的過濾方法,其特征在于,包括步驟1,配置高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比例;步驟2,接收數(shù)據(jù)包,確定當(dāng)前狀態(tài),判斷所述當(dāng)前狀態(tài)是否為正常狀態(tài),如果是,則所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列,否則,執(zhí)行步驟3;步驟3,根據(jù)所述數(shù)據(jù)包的類型,用于記錄連接的連接狀態(tài)表和用于記錄合法IP地址的合法地址表,判斷所述數(shù)據(jù)包是否合法,如果是,則所述數(shù)據(jù)包進(jìn)入所述高權(quán)重隊列,否則,所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列;并更新所述連接狀態(tài)表和所述合法地址表;步驟4,在當(dāng)前狀態(tài)為正常狀態(tài)時,轉(zhuǎn)發(fā)所述高權(quán)重隊列中數(shù)據(jù)包,在當(dāng)前狀態(tài)為攻擊狀態(tài)時,按所述高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比列轉(zhuǎn)發(fā)所述低權(quán)重隊列和所述高權(quán)重隊列中的數(shù)據(jù)包。
2. 如權(quán)利要求l所述的同步泛洪攻擊的過濾方法,其特征在于, 所述步驟l還包括,配置檢測時隙,初始化計時器為0,初始化用于記錄當(dāng)前狀態(tài)的當(dāng)前狀態(tài)變量為正常;所述步驟2中確定當(dāng)前狀態(tài)進(jìn)一步為步驟21,接收數(shù)據(jù)包后,判斷所述計時器的值是否小于所述檢測時隙, 如果是,則確定當(dāng)前狀態(tài)為所述當(dāng)前狀態(tài)變量中記錄的狀態(tài),否則,將所述計 時器置為0,執(zhí)行步驟22;所述步驟22,判斷是否發(fā)生攻擊,如果是,則更新所述當(dāng)前狀態(tài)變量為 攻擊狀態(tài),確定所述當(dāng)前狀態(tài)為攻擊狀態(tài),否則,更新所述當(dāng)前狀態(tài)變量為正 常狀態(tài),確定所述當(dāng)前狀態(tài)為正常狀態(tài)。
3. 如權(quán)利要求2所述的同歩泛洪攻擊的過濾方法,其特征在于, 所述步驟2還包括,在執(zhí)行完步驟22,確定所述當(dāng)前狀態(tài)為正常狀態(tài)時,將所述連接狀態(tài)表和所述合法地址表清空。
4. 如權(quán)利要求2所述的同步泛洪攻擊的過濾方法,其特征在于, 所述步驟1還包括配置同步數(shù)據(jù)包閾值;所述步驟22中判斷是否發(fā)生攻擊進(jìn)一步為步驟41,判斷在所述計時器的計時時間內(nèi)統(tǒng)計的同步包數(shù)量除以所述計時器的值所得值是否大于等于所述同步數(shù)據(jù)包閾值,如果是,則判定發(fā)生攻擊, 所述,判定為正常。
5. 如權(quán)利要求l所述的同步泛洪攻擊的過濾方法,其特征在于,所述步驟3進(jìn)一步為,步驟51,在所述數(shù)據(jù)包為同步包時,確定所述數(shù)據(jù)包不合法,所述數(shù)據(jù) 包進(jìn)入低權(quán)重隊列,并更新所述連接狀態(tài)表;步驟52,在所述數(shù)據(jù)包為同步/確認(rèn)包時,如果所述數(shù)據(jù)包在所述連接狀 態(tài)表中存在對應(yīng)記錄,則所述數(shù)據(jù)包合法,所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列,更新 所述連接狀態(tài)表和所述合法地址表,否則,所述數(shù)據(jù)包不合法,所述數(shù)據(jù)包進(jìn) 入低權(quán)重隊列;步驟53,在所述數(shù)據(jù)包為其他類型時,如果所述數(shù)據(jù)包在所述合法地址 表中存在對應(yīng)記錄,則確定所述數(shù)據(jù)包合法,所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列,否 則,所述數(shù)據(jù)包不合法,所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列。
6. 如權(quán)利要求5所述的同歩泛洪攻擊的過濾方法,其特征在于, 所述步驟51中更新所述連接狀態(tài)表進(jìn)一步為,步驟61,在所述連接狀態(tài)表中查找所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未 查找到,則將所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識添加到所述連接狀態(tài)表中。
7. 如權(quán)利要求6所述的同步泛洪攻擊的過濾方法,其特征在于, 所述步驟52進(jìn)一歩為,步驟71,在所述數(shù)據(jù)包為同步/確認(rèn)包時,在所述連接狀態(tài)表中査找所述 數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未查找到,則所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列,如果 査找到,則執(zhí)行步驟72;所述步驟72,將所述數(shù)據(jù)包對應(yīng)的連接的標(biāo)識從所述連接狀態(tài)表中刪除, 將所述數(shù)據(jù)包的源IP地址添加到所述和合法地址表中,確定所述數(shù)據(jù)包合法, 所述數(shù)據(jù)包進(jìn)入所述高權(quán)重隊列。
8. 如權(quán)利要求7所述的同步泛洪攻擊的過濾方法,其特征在于, 所述步驟53進(jìn)一步為在所述數(shù)據(jù)包為其他類型時,在所述合法地址表中查找所述數(shù)據(jù)包的源IP地址,如果查找到,則確定所述數(shù)據(jù)包合法,所述數(shù) 據(jù)包進(jìn)入高權(quán)重隊列,否則,所述數(shù)據(jù)包進(jìn)入所述低權(quán)重隊列。
9. 如權(quán)利要求6、 7或8所述的同步泛洪攻擊的過濾方法,其特征在于,所述標(biāo)識為所述連接的同步數(shù)據(jù)包的五源組,所述五源組由源IP地址、 源端口號、目的IP地址、目的端口號和序列號組成。
10. 如權(quán)利要求l所述的同步泛洪攻擊的過濾方法,其特征在于,所述步驟2和所述步驟3中所述數(shù)據(jù)包進(jìn)入高權(quán)重隊列進(jìn)一步為, 判斷所述高權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述 數(shù)據(jù)包加入所述高權(quán)重隊列;所述步驟3中所述數(shù)據(jù)包進(jìn)入低權(quán)重隊列進(jìn)一步為,判斷所述低權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述 數(shù)據(jù)包加入所述低權(quán)重隊列。
11. 一種同步泛洪攻擊的過濾系統(tǒng),其特征在于,包括檢測模塊、過濾 模塊、緩沖區(qū)模塊和轉(zhuǎn)發(fā)模塊,所述緩沖區(qū)模塊包含低權(quán)重隊列和高權(quán)重隊列; 所述初始化模塊,用于配置高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比例; 所述檢測模塊,用于接收數(shù)據(jù)包,確定當(dāng)前狀態(tài),判斷所述當(dāng)前狀態(tài)是否為正常狀態(tài),如果是,則將所述數(shù)據(jù)包加入到所述高權(quán)重隊列,否則,將所述數(shù)據(jù)包傳給所述過濾模塊;所述過濾模塊,用于根據(jù)所述數(shù)據(jù)包的類型,用于記錄連接的連接狀態(tài)表和用于記錄合法IP地址的合法地址表,判斷所述數(shù)據(jù)包是否合法,如果是,則將所述數(shù)據(jù)包加入所述高權(quán)重隊列,否則,將所述數(shù)據(jù)包加入所述低權(quán)重隊列;并更新所述連接狀態(tài)表和所述合法地址表;所述轉(zhuǎn)發(fā)模塊,用于在當(dāng)前狀態(tài)為正常狀態(tài)時,轉(zhuǎn)發(fā)所述高權(quán)重隊列中數(shù)據(jù)包,在當(dāng)前狀態(tài)為攻擊狀態(tài)時,按所述高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比列轉(zhuǎn)發(fā)所述低權(quán)重隊列和所述高權(quán)重隊列中的數(shù)據(jù)包。
12. 如權(quán)利要求ll所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于, 所述初始化模塊還用于配置檢測時隙,初始化計時器為0,初始化用于記錄當(dāng)前狀態(tài)的當(dāng)前狀態(tài)變量為正常;所述檢測模塊在確定當(dāng)前狀態(tài)時進(jìn)一步用于接收到數(shù)據(jù)包后,判斷所述計 時器的值是否小于所述檢測時隙,如果是,則確定當(dāng)前狀態(tài)為所述當(dāng)前狀態(tài)變 量中記錄的狀態(tài);否則,將所述計時器置為0,判斷是否發(fā)生攻擊,如果是, 則更新所述當(dāng)前狀態(tài)變量為攻擊狀態(tài),確定所述當(dāng)前狀態(tài)為攻擊狀態(tài),否則,更新所述當(dāng)前狀態(tài)變量為正常狀態(tài),確定所述當(dāng)前狀態(tài)為正常狀態(tài)。
13. 如權(quán)利要求12所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于, 所述檢測模塊還用在通過判斷未發(fā)生攻擊確定所述當(dāng)前狀態(tài)為正常狀態(tài)后,將所述連接狀態(tài)表和所述合法地址表清空。
14. 如權(quán)利要求12所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于,所述初始化模塊還用于配置同步數(shù)據(jù)包閾值;所述檢測模塊在判斷是否發(fā)生攻擊時進(jìn)一步用于判斷在所述計時器的計 時時間內(nèi)統(tǒng)計的同步包數(shù)量除以所述計時器的值所得值是否大于等于所述同 步數(shù)據(jù)包閾值,如果是,則判定發(fā)生攻擊,所述,判定為正常。
15. 如權(quán)利要求ll所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于, 所述過濾模塊進(jìn)一步用于在所述數(shù)據(jù)包為同步包時,確定所述數(shù)據(jù)包不合法,將所述數(shù)據(jù)包加入所述低權(quán)重隊列,并更新所述連接狀態(tài)表;在所述數(shù)據(jù) 包為同步/確認(rèn)包時,如果所述數(shù)據(jù)包在所述連接狀態(tài)表中存在對應(yīng)記錄,則 所述數(shù)據(jù)包合法,將所述數(shù)據(jù)包加入所述高權(quán)重隊列,更新所述連接狀態(tài)表和 所述合法地址表,否則,所述數(shù)據(jù)包不合法,將所述數(shù)據(jù)包加入所述低權(quán)重隊 列;在所述數(shù)據(jù)包為其他類型時,如果所述數(shù)據(jù)包在所述合法地址表中存在對 應(yīng)記錄,則確定所述數(shù)據(jù)包合法,將所述數(shù)據(jù)包加入所述高權(quán)重隊列,否則, 所述數(shù)據(jù)包不合法,將所述數(shù)據(jù)包加入所述低權(quán)重隊列。
16. 如權(quán)利要求15所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于, 所述過濾模塊在所述數(shù)據(jù)包為同步包的情況下更新所述連接狀態(tài)表時進(jìn)一步用于在所述連接狀態(tài)表中査找所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未查找 到,則將所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識添加到所述連接狀態(tài)表中。
17. 如權(quán)利要求16所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于, 所述過濾模塊在所述數(shù)據(jù)包為同步/確認(rèn)包的情況下進(jìn)一步用于在所述連接狀態(tài)表中查找所述數(shù)據(jù)包對應(yīng)連接的標(biāo)識,如果未查找到,則將所述數(shù)據(jù)包 加入所述低權(quán)重隊列,如果查找到,則將所述數(shù)據(jù)包對應(yīng)的連接的標(biāo)識從所述 連接狀態(tài)表中刪除,將所述數(shù)據(jù)包的源IP地址添加到所述和合法地址表中, 確定所述數(shù)據(jù)包合法,將所述數(shù)據(jù)包加入所述高權(quán)重隊列。
18. 如權(quán)利要求17所述的同歩泛洪攻擊的過濾系統(tǒng),其特征在于, 所述過濾模塊在所述數(shù)據(jù)包為其他類型的情況下進(jìn)一步用于在所述合法地址表中查找所述數(shù)據(jù)包的源IP地址,如果查找到,則確定所述數(shù)據(jù)包合法, 將所述數(shù)據(jù)包加入所述高權(quán)重隊列,否則,將所述數(shù)據(jù)包加入所述低權(quán)重隊列。
19. 如權(quán)利要求16、 17或18所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于,所述標(biāo)識為所述連接的同步數(shù)據(jù)包的五源組,所述五源組由源IP地址、 源端口號、目的IP地址、目的端口號和序列號組成。
20. 如權(quán)利要求ll所述的同步泛洪攻擊的過濾系統(tǒng),其特征在于, 所述檢測模塊在將所述數(shù)據(jù)包加入所述高權(quán)重隊列時進(jìn)一歩用于判斷所述高權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述數(shù)據(jù)包加入 所述高權(quán)重隊列;所述過濾模塊在將所述數(shù)據(jù)包加入所述高權(quán)重隊列時進(jìn)一步用于判斷所 述高權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述數(shù)據(jù)包加入 所述高權(quán)重隊列;所述過濾模塊在將所述數(shù)據(jù)包加入所述低權(quán)重隊列時進(jìn)一步用于判斷所 述低權(quán)重隊列是否已滿,如果是,則丟棄所述數(shù)據(jù)包,否則將所述數(shù)據(jù)包加入 所述低權(quán)重隊列。
全文摘要
本發(fā)明涉及一種同步泛洪攻擊的過濾方法及系統(tǒng),方法包括步驟1,配置高低權(quán)重隊列轉(zhuǎn)發(fā)數(shù)據(jù)包的比例;步驟2,接收數(shù)據(jù)包,確定當(dāng)前狀態(tài),判斷當(dāng)前狀態(tài)是否為正常狀態(tài),如果是,則數(shù)據(jù)包進(jìn)入高權(quán)重隊列,否則,執(zhí)行步驟3;步驟3,根據(jù)數(shù)據(jù)包的類型,用于記錄連接的連接狀態(tài)表和用于記錄合法IP地址的合法地址表,判斷數(shù)據(jù)包是否合法,如果是,則數(shù)據(jù)包進(jìn)入高權(quán)重隊列,否則,數(shù)據(jù)包進(jìn)入低權(quán)重隊列;并更新連接狀態(tài)表和合法地址表;步驟4,在當(dāng)前狀態(tài)為正常狀態(tài)時,轉(zhuǎn)發(fā)高權(quán)重隊列中數(shù)據(jù)包,在當(dāng)前狀態(tài)為攻擊狀態(tài)時,按比列轉(zhuǎn)發(fā)低權(quán)重隊列和高權(quán)重隊列中的數(shù)據(jù)包。本發(fā)明能夠有效緩解、過濾和防御針對網(wǎng)絡(luò)信息系統(tǒng)的大規(guī)模同步泛洪攻擊。
文檔編號H04L29/06GK101465855SQ200810247440
公開日2009年6月24日 申請日期2008年12月31日 優(yōu)先權(quán)日2008年12月31日
發(fā)明者云曉春, 張永錚, 磊 戴, 軍 肖 申請人:中國科學(xué)院計算技術(shù)研究所