專利名稱:防御傳輸控制協(xié)議同步洪泛攻擊方法及傳輸控制協(xié)議代理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及同步洪泛攻擊技術(shù)領(lǐng)域,具體涉及防御傳輸控制協(xié)議(TCP, Transferring Control Protocol)同步洪泛攻擊方法、TCP代理。
背景技術(shù):
拒絕服務(wù)(DoS, Denial of Service )攻擊是目前網(wǎng)絡(luò)面臨的常見安全威 脅手段,這種攻擊通過使用大量的數(shù)據(jù)包攻擊目標(biāo)系統(tǒng),消耗目標(biāo)系統(tǒng)資源 來使合法用戶無法正常使用網(wǎng)絡(luò)服務(wù)。主要的DoS攻擊有同步洪泛(SYN Flood) 、 Fraggle等,而其中最典型且最常使用的DoS攻擊就是SYN Flood攻擊。
SYN Flood攻擊利用傳輸控制協(xié)議(TCP, Transferring Control Protocol) 連接中服務(wù)器和客戶端分配TCB資源的不對稱關(guān)系,針對不限制連接請求 的服務(wù)器系統(tǒng),用最小的代價使其不能提供正常服務(wù)。
TCP代理對目的主機或目的區(qū)域的所有主機提供保護(hù),用來防范SYN Flood攻擊。當(dāng)外部主機與啟用了 TCP代理保護(hù)的某個主機或某個安全域中 的主才幾建立TCP連接時,必須先與防火墻完成TCP三次握手后,才能與目 的主機建立TCP連接。如果不能與防火墻完成三次握手,則不允許與目的 主機建立TCP連接,從而有效地防止了內(nèi)部主機受到惡意攻擊??蛻舳送?過TCP代理請求與受保護(hù)的服務(wù)器建立連接時,TCP代理首先驗證客戶端 的請求是否為SYN Flood攻擊,驗證通過后客戶端和服務(wù)器之間才能建立 TCP連接,從而避免服務(wù)器受到攻擊。
TCP代理支持兩種代理方式單向代理和雙向代理。單向代理方式是指 僅對TCP連接的正向報文進(jìn)行處理;雙向代理是指對TCP連接的正向和反向報文都進(jìn)行處理。
圖1為現(xiàn)有的單向代理方式下TCP代理的處理流程,如圖1所示,其
具體步驟如下
步驟101:客戶端向TCP代理發(fā)送序列號seq- s的SYN報文。 步驟102: TCP代理接收SYN報文,向客戶端返回攜帶錯誤的確認(rèn)序 列號ack的SYN ACK報文,且該SYN ACK報文中攜帶序列號seq = c。 正確的確認(rèn)序列號ack = s+ 1。
步驟103:客戶端接收SYN ACK報文,向TCP代理返回ack = c + 1的 RST凈艮文。
步驟104: TCP代理接收RST報文,發(fā)現(xiàn)報文中的ack正確,認(rèn)為客戶
端合法。
步驟1 05~108:之后一定時間內(nèi),TCP代理收到客戶端重發(fā)的SYN報 文后,直接向服務(wù)器轉(zhuǎn)發(fā)該SYN報文,客戶端和服務(wù)器之間建立TCP連接。
TCP連接建立后,TCP代理直接轉(zhuǎn)發(fā)后續(xù)來自客戶端或服務(wù)器的報文, 不對纟艮文進(jìn)行處理。
圖2為現(xiàn)有的雙向代理方式下TCP代理的處理流程,如圖2所示,其 具體步驟如下
步驟201:客戶端向TCP代理發(fā)送序列號seq = s的SYN報文。
步驟202: TCP代理接收SYN報文,向客戶端返回序列號seq = c、確 認(rèn)序列號ack = s + 1 、窗口值=0的SYN ACK報文。
步驟203:若客戶端合法,則客戶端向TCP代理返回seq=s+l, ack =c + 1的ACK才艮文。
若客戶端不合法,則客戶端要么不返回ACK報文,要么返回的ACK 凈艮文的seq、 ack是一個隨意的值而非seq= s+1、 ack=c+l。
步驟204: TCP代理接收客戶端返回的ACK報文,根據(jù)報文中的seq、 ack確定客戶端合法,向服務(wù)器發(fā)送seq-s的SYN報文,開始建立會話表。
步驟205:服務(wù)器接收SYN報文,向TCP代理返回seq = c,、 ack = s +1 、窗口值=11的SYN ACK 4艮文。
步驟206 207: TCP代理接收SYN ACK報文,向服務(wù)器返回seq-s十 1 , ack = c, + 1的ACK報文,同時計算序列號差值seq_diff = c - c,,將seq_diff 記錄到會話表中,同時向客戶端返回窗口值n的ACK報文,客戶端與服務(wù) 器之間的TCP連接建立。
會話表中包含客戶端IP地址、端口號,服務(wù)器IP地址、端口號、協(xié) 議類型值、出接口標(biāo)識、網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT, Network Address Translation ) 信息等,隨著客戶端與服務(wù)器間的報文交互,TCP代理會不斷完善該會話表。
TCP連接建立后,TCP代理接收客戶端或服務(wù)器發(fā)來的數(shù)據(jù)報文后,要 先根據(jù)seq_diff對報文中的ack或seq進(jìn)行調(diào)整,再將報文轉(zhuǎn)發(fā)出去。
現(xiàn)有的TCP代理具有如下缺點
現(xiàn)有的TCP代理雖然具有現(xiàn)場可編程門陣列(FPGA , Field Programmable Gate Array )硬件接口 ,但FPGA只負(fù)責(zé)報文轉(zhuǎn)發(fā),不進(jìn)行TCP 代理的處理,圖1、 2所示的TCP代理的處理過程都是在軟件上實現(xiàn)的,TCP 代理程序和其它程序共享中央處理單元(CPU, Central Processing Unit)資 源。所有SYN報文都會上送CPU,由軟件TCP代理程序處理,驗證客戶端 的請求是否為SYN Flood攻擊也是由軟件實現(xiàn)的,SYN Flood攻擊報文會占 用CPU資源,當(dāng)SYN Flood攻擊才艮文足夠快時,CPU資源大部分被攻擊報 文占用,影響正常報文轉(zhuǎn)發(fā),影響正常連接的建立,防SYN Flood攻擊效果 不夠好。
此外,在雙向代理方式下,TCP代理多了 4個凈艮文的處理, 一條TCP 連接的建立需要花更長的時間,影響正常連接的建立速度。
發(fā)明內(nèi)容
本發(fā)明提供防御TCP SYN Flood攻擊方法、TCP代理及FPGA,以提高防 御TCP SYN Flood攻擊的效果。
本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種防御TCP同步洪泛攻擊方法,其特征在于,該方法包括 TCP代理端的FPGA與客戶端進(jìn)行TCP三次握手,對客戶端的合法性進(jìn)行 驗證;
客戶端通過合法性驗證后,TCP代理端的軟件模塊開始建立客戶端與服務(wù) 器間的TCP連接,并將會話表下發(fā)到FPGA;
FPGA根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。 所述TCP代理為單向代理方式,
所述TCP代理端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并 將會話表下發(fā)到FPGA包括
FPGA接收客戶端發(fā)來的同步報文,發(fā)現(xiàn)客戶端通過合法性驗證,將同 步報文發(fā)送給軟件模塊;客戶端與服務(wù)器通過軟件模塊建立TCP連接,TCP 連接建立成功,將會話表下發(fā)給FPGA。
所述TCP代理為雙向代理方式,
所述客戶端通過合法性驗證之后、TCP代理端的軟件模塊開始建立客戶端 與服務(wù)器間的TCP連接之前進(jìn)一步包括
FPGA將客戶端發(fā)來的確認(rèn)報文修改為同步報文,其中,同步報文中的序 列號由確認(rèn)報文中的序列號減1得到,同步報文中的MSS字段值由確認(rèn)4艮文中 的確認(rèn)序列號恢復(fù)得到,調(diào)整同步報文的校驗和,將該同步報文發(fā)送給軟件模 塊。
所述TCP代理端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并 將會話表下發(fā)到FPGA包括
軟件模塊接收FPGA發(fā)來的同步報文,開始建立客戶端與服務(wù)器間的TCP 連接,TCP連接建立成功,將會話表下發(fā)給FPGA。
所述TCP代理端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并 將會話表下發(fā)到FPGA包括
軟件模塊接收FPGA發(fā)來的同步報文,建立會話表,將會話表下發(fā)給FPGA, 并向服務(wù)器轉(zhuǎn)發(fā)該同步報文;FPGA根據(jù)所述會話表,在客戶端與服務(wù)器之間建立TCP連接。
一種防御TCP同步洪泛攻擊的TCP代理,該TCP代理包括 FPGA,與客戶端進(jìn)行TCP三次握手,對客戶端進(jìn)行合法性驗證;接收軟 件模塊發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報
文;
軟件模塊,當(dāng)客戶端通過合法性驗證時,開始建立客戶端與服務(wù)器間的TCP 連接,并將會話表下發(fā)到FPGA。 所述FPGA包括
客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,對客戶端進(jìn)行合法性驗證; 接收客戶端發(fā)來的同步報文,發(fā)現(xiàn)客戶端通過合法性驗證,將同步報文發(fā)送給 軟件模塊;
數(shù)據(jù)轉(zhuǎn)發(fā)模塊,接收軟件模塊發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶 端與服務(wù)器間交互的數(shù)據(jù)報文; 所述軟件模塊包括
會話建立模塊,接收FPGA發(fā)來的同步報文,在客戶端與服務(wù)器之間建 立TCP連接,TCP連接建立成功,向會話表下發(fā)模塊發(fā)送會話建立指示;
會話表下發(fā)模塊,當(dāng)接收到會話建立指示時,將建立的會話表下發(fā)給 FPGA。
所述FPGA包括
客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,當(dāng)確定客戶端通過合法性 驗證時,將客戶端發(fā)來的確認(rèn)報文發(fā)送給報文修改模塊;
報文修改模塊,將確認(rèn)報文修改為同步報文,其中,同步報文中的序列號 由確認(rèn)報文中的序列號減1得到,同步報文中的MSS字段值由確認(rèn)報文中的確 認(rèn)序列號恢復(fù)得到,調(diào)整同步報文的校驗和,將該同步報文發(fā)送給軟件模塊;
數(shù)據(jù)轉(zhuǎn)發(fā)模塊,根據(jù)軟件模塊下發(fā)的會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互 的數(shù)據(jù)報文。
所述軟件模塊包括會話建立模塊,接收FPGA發(fā)來的同步報文,在客戶端與服務(wù)器之間建立 TCP連接,TCP連接建立成功,向會話表下發(fā)模塊發(fā)送會話建立指示;
會話表下發(fā)模塊,當(dāng)接收到會話建立指示時,將建立的會話表下發(fā)給 FPGA。
所述軟件模塊包括
會話建立模塊,接收FPGA發(fā)來的同步報文,開始建立會話表,向會話表 下發(fā)模塊發(fā)送會話建立指示,并向服務(wù)器轉(zhuǎn)發(fā)該同步報文;
會話表下發(fā)模塊,當(dāng)接收到會話建立指示時,將建立的會話表下發(fā)給 FPGA;
且,所述FPGA進(jìn)一步包括 ' TCP連接建立模塊,根據(jù)軟件模塊下發(fā)的會話表,與服務(wù)器建立TCP連接。 一種防舉卩TCP同步洪泛攻擊的FPGA,該FPGA位于TCP代理端,該FPGA 包括
客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,對客戶端進(jìn)行合法性驗證; 接收客戶端發(fā)來的同步報文,發(fā)現(xiàn)客戶端通過合法性驗證,將同步報文發(fā)送給 軟件模塊;
數(shù)據(jù)轉(zhuǎn)發(fā)模塊,接收軟件模塊發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶 端與服務(wù)器間交互的數(shù)據(jù)報文。
一種防御TCP同步洪泛攻擊的FPGA,該FPGA位于TCP代理端,該FPGA 包括
客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,當(dāng)確定客戶端通過合法性 驗證時,將客戶端發(fā)來的確認(rèn)報文發(fā)送給報文修改模塊;
報文修改模塊,將確認(rèn)報文修改為同步報文,其中,同步報文中的序列號 由確認(rèn)報文中的序列號減1得到,同步報文中的MSS字段值由確認(rèn)報文中的確 認(rèn)序列號恢復(fù)得到,調(diào)整同步報文的校驗和,將該同步報文發(fā)送給軟件模塊;
TCP連接建立模塊,根據(jù)軟件模塊下發(fā)的會話表,與服務(wù)器建立TCP連接;
數(shù)據(jù)轉(zhuǎn)發(fā)模塊,根據(jù)軟件模塊下發(fā)的會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。
與現(xiàn)有技術(shù)相比,本發(fā)明中,TCP代理端的FPGA與客戶端進(jìn)行TCP 三次握手,對客戶端進(jìn)行合法性-瞼i正;客戶端通過合法性-瞼證后,TCP代理 端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并將會話表下發(fā)到 FPGA; FPGA根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。 本發(fā)明中,由FPGA完成對客戶端的合法性驗證,這樣,SYN Flood攻擊報 文會被FPGA處理或者丟棄,不占用任何CPU資源,從而提高了防御SYN Flood攻擊效果,并加快了 TCP連接建立的速度。
圖1為現(xiàn)有的單向代理方式下TCP代理的處理流程圖; 圖2為現(xiàn)有的雙向代理方式下TCP代理的處理流程圖; 圖3為本發(fā)明實施例一提供的單向代理方式下,防御TCP SYN Flood
攻擊的消息流程圖4為本發(fā)明實施例二提供的雙向代理方式下,防御TCP SYN Flood
攻擊的消息流程圖5為本發(fā)明實施例三提供的雙向代理方式下,防御TCP SYN Flood
攻擊的消息流程圖6為本發(fā)明實施例 一提供的單向代理方式下的TCP代理的組成圖; 圖7為本發(fā)明實施例二提供的雙向代理方式下的TCP代理的組成圖; 圖8為本發(fā)明實施例三提供的雙向代理方式下的TCP代理的組成圖。
具體實施例方式
本發(fā)明的核心思想是由于TCP代理的4妻口通常由FPGA實現(xiàn),因此, 本發(fā)明中,對客戶端的合法性驗證由FPGA完成,對客戶端的合法性馬全證通 過后,TCP代理端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并 將會話表下發(fā)到FPGA,之后FPGA根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。
下面結(jié)合附圖及具體實施例對本發(fā)明再作進(jìn)一 步詳細(xì)的說明。
圖3為本發(fā)明實施例一提供的單向代理方式下,防舉卩TCP SYN Flood
攻擊的消息流程圖,如圖3所示,其具體步驟如下
步驟301:客戶端向TCP代理端發(fā)送序列號s^= s的SYN報文。 步驟302: TCP代理端的FPGA接收SYN報文,向客戶端返回攜帶錯
誤的確認(rèn)序列號的SYN ACK報文,且該SYN ACK報文中攜帶序列號seq=c。
由于FPGA為TCP代理端的接口 ,因此,發(fā)往TCP代理端的才艮文都會 先經(jīng)過FPGA。
步驟303:若客戶端合法,則客戶端向FPGA返回ack= c+1的RST報 文,F(xiàn)PGA接收客戶端返回的RST報文,發(fā)現(xiàn)報文中的ack正確,確定客戶 端合法。
若客戶端不合法,則客戶端不返回RST報文,或者返回ack錯誤的RST 報文。
步驟304: FPGA接收客戶端后續(xù)發(fā)來的SYN報文,發(fā)現(xiàn)客戶端已通過 合法性驗證,則將SYN報文上送TCP代理端的軟件模塊。
步驟305:軟件模塊接收SYN報文,開始建立會話表,將SYN報文轉(zhuǎn) 發(fā)給服務(wù)器。
步驟306:服務(wù)器接收SYN報文,向TCP代理端返回SYN ACK報文, TCP代理端的軟件模塊接收SYN ACK報文,并將該報文轉(zhuǎn)發(fā)給客戶端。
服務(wù)器返回的SYN ACK報文也會先經(jīng)過TCP代理端的FPGA, FPGA 接收該報文后,發(fā)現(xiàn)自身未保存該報文對應(yīng)的會話表,則會將該報文上送軟 件模塊處理。步驟308: FPGA接收客戶端發(fā)來的數(shù)據(jù)報文,根據(jù)軟件模塊下發(fā)的會 話表,將該報文轉(zhuǎn)發(fā)給服務(wù)器。
步驟309: FPGA接收服務(wù)器發(fā)來的數(shù)據(jù)報文,根據(jù)軟件模塊下發(fā)的會 話表,將該報文轉(zhuǎn)發(fā)給客戶端。
圖4為本發(fā)明實施例二提供的雙向代理方式下,防御TCP SYN Flood 攻擊的消息流程圖,如圖4所示,其具體步驟如下
步驟401:客戶端向TCP代理端發(fā)送序列號seq = s的SYN報文。
步驟402: TCP代理端的FPGA接收SYN報文,向客戶端返回序列號 seq = c、確認(rèn)序列號ack= s+1、窗口值=0的SYN ACK報文。
步驟403:若客戶端合法,則客戶端向FPGA返回seq-s+l, ack = c + 1的ACK凈艮文。
若客戶端不合法,則客戶端要么不返回ACK報文,要么返回的ACK 凈艮文的seq、 ack是一個隨意的值而非seq = s + 1 、 ack=c+l。
步驟404: FPGA接收客戶端返回的ACK報文,根據(jù)報文中的seq 、 ack 確定客戶端合法,將ACK報文修改為SYN報文,其中,SYN報文中的seq =s, SYN報文中的MSS字段值由ACK報文中的ack恢復(fù)得到,調(diào)整SYN 報文的校驗和,將SYN報文上送TCP代理端的軟件模塊。
步驟405:軟件模塊接收SYN報文,開始建立會話表,將SYN報文發(fā) 送給服務(wù)器。
步驟406:服務(wù)器接收SYN報文,向軟件模塊返回seq = c,, ack=s+ 1, 窗口值- n的SYN ACK報文。
步驟407:軟件模塊接收SYN ACK報文,向服務(wù)器返回seq = s + 1 , ack =c, + 1的ACK報文,同時計算序列號差值seq_diff = c - c,,將seq一diff記 錄到會話表中,將會話表下發(fā)給FPGA,并向客戶端發(fā)送窗口值-n的ACK 報文,客戶端與服務(wù)器之間的TCP連接建立。
步驟408: FPGA接收客戶端發(fā)來的seq = m, ack = c + n的數(shù)據(jù)報文, 計算ack, = ack — seq—diff = c + n — ( c 一 c,) =c, + n, 以ack,替4戈ack,沖艮才居ack,調(diào)整校驗和,根據(jù)會話表將數(shù)據(jù)報文轉(zhuǎn)發(fā)給服務(wù)器。
步驟409: FPGA接收服務(wù)器發(fā)來的seq = c, + m, ack = n的數(shù)據(jù)報文, 計算seq, = seq + seq_diff = c, + m + ( c — c,) = c + m, 以seq,替^R seq,才艮才居 seq,調(diào)整校驗和,根據(jù)會話表將數(shù)據(jù)報文轉(zhuǎn)發(fā)給服務(wù)器。
圖5為本發(fā)明實施例三提供的雙向代理方式下,防御TCP SYN Flood 攻擊的消息流程圖,如圖5所示,其具體步驟如下
步驟501 504與步驟401~404相同。
步驟505: TCP代理端的軟件模塊接收SYN報文,開始建立會話表, 將會話表下發(fā)給FPGA,同時將SYN報文轉(zhuǎn)發(fā)給服務(wù)器;FPGA接收并保存 會話表。
步驟506:服務(wù)器接收SYN報文,向FPGA返回seq = c,, ack=s+l, 窗口值=n的SYN ACK報文。
步驟507: FPGA接收SYN ACK報文,根據(jù)會話表向服務(wù)器返回seq =s+l, ack = c, + 1的ACK報文,同時計算序列號差值seq—diff= c-c',將 seq—diff記錄到會話表中,同時向客戶端返回窗口值=n的ACK報文。
步驟508~509與步驟408 409相同。
由圖3 ~ 5所示實施例可以看出由FPGA完成對客戶端的合法性驗證, 這樣,SYNFlood攻擊流會在硬件部分被阻止,軟件模塊接收到的都是合法 報文,這樣,既有效地防御了 SYN Flood攻擊,又將復(fù)雜的業(yè)務(wù)放到了軟件 模塊處理。且FPGA和軟件模塊間未增加新的通信方式,仍然只是報文通信, 同時軟件模塊不需要作大的改動,就能與FPGA配合完成TCP代理功能。
以下給出本發(fā)明實施例提供的防御TCP SYN Flood攻擊的TCP代理 的組成,該TCP代理包括
FPGA:與客戶端進(jìn)行TCP三次握手,完成對客戶端的合法性驗證;接收 軟件模塊發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù) 報文;
軟件模塊建立客戶端與服務(wù)器間的會話,并將建立的會話表下發(fā)到FPGA。
圖6為本發(fā)明實施例一提供的單向代理方式下的TCP代理的組成圖,如圖 6所示,其中,
FPGA61包括客戶端驗證模塊611和數(shù)據(jù)轉(zhuǎn)發(fā)模塊612,其中
客戶端驗證模塊611:接收客戶端發(fā)來的SYN報文,向客戶端返回攜帶錯 誤的確認(rèn)序列號的SYNACK報文,若收到客戶端返回的RST報文,則確定客 戶端合法;接收客戶端后續(xù)發(fā)來的SYN報文,發(fā)現(xiàn)客戶端通過合法性驗證,將 該SYN報文發(fā)送給軟件模塊62。
數(shù)據(jù)轉(zhuǎn)發(fā)模塊612:接收軟件模塊62發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn) 發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。
軟件模塊62包括會話建立模塊621和會話表下發(fā)模塊622,其中
會話建立模塊621:接收FPGA61發(fā)來的SYN報文,將該SYN報文轉(zhuǎn) 發(fā)給服務(wù)器,并開始建立會話表,接收服務(wù)器發(fā)來的SYN ACK報文,將該 SYN ACK報文轉(zhuǎn)發(fā)給客戶端,之后接收客戶端發(fā)來的ACK報文,向會話表 下發(fā)模塊622發(fā)送會話建立指示。
會話表下發(fā)模塊622:當(dāng)接收到會話建立模塊621發(fā)來的會話建立指示 時,將建立的會話表下發(fā)給FPGA61。
圖7為本發(fā)明實施例二提供的雙向代理方式下的TCP代理的組成圖, 如圖7所示,其中,
FPGA61包括客戶端驗證模塊711、報文修改模塊712和數(shù)據(jù)轉(zhuǎn)發(fā)模塊 713,其中
客戶端驗證模塊711:接收客戶端發(fā)來的SYN報文,向客戶端返回攜帶正 確的確認(rèn)序列號的SYN ACK報文,之后接收客戶端發(fā)來的ACK報文,發(fā)現(xiàn) ACK報文的序列號正確,則確定客戶端合法,將ACK報文發(fā)送給報文修改模 塊712。
報文修 文模塊712:接收客戶端驗證模塊711發(fā)來的ACK報文,將該ACK 報文修改為SYN報文,其中,SYN報文中的序列號由ACK報文中的序列號減l得到,SYN報文中的MSS字段值由ACK報文中的確認(rèn)序列號恢復(fù)得到,調(diào)
整SYN報文的校驗和,將該SYN報文發(fā)送給軟件模塊62。
數(shù)據(jù)轉(zhuǎn)發(fā)模塊713:根據(jù)軟件模塊62下發(fā)的會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器
間交互的數(shù)據(jù)4艮文。
軟件模塊62包括會話建立模塊721和會話表下發(fā)模塊722,其中 會話建立模塊721:接收FPGA61發(fā)來的SYN報文,開始建立會話表,并
向服務(wù)器轉(zhuǎn)發(fā)該SYN報文,當(dāng)接收到服務(wù)器返回的SYNACK報文時,向服務(wù)
器返回ACK報文,并向客戶端發(fā)送ACK報文,同時向會話表下發(fā)模塊722發(fā)
送會話建立指示。
會話表下發(fā)模塊722:當(dāng)接收到會話建立模塊721發(fā)來的會話建立指示時, 將建立的會話表下發(fā)給FPGA61。
圖8為本發(fā)明實施例三提供的雙向代理方式下的TCP代理的組成圖, 如圖8所示,其中,
FPGA61包括客戶端驗證模塊811、報文修改模塊812、 TCP連接建立模 塊813和數(shù)據(jù)轉(zhuǎn)發(fā)模塊814,其中
客戶端驗證模塊811:接收客戶端發(fā)來的SYN報文,向客戶端返回攜帶正 確的確認(rèn)序列號的SYN ACK報文,之后接收客戶端發(fā)來的ACK報文,發(fā)現(xiàn) ACK報文的序列號正確,則確定客戶端合法,將ACK報文發(fā)送給報文修改模 塊812。
報文修改模塊812:接收客戶端驗證模塊811發(fā)來的ACK報文,將該ACK
整SYN報文的校驗和,將該SYN報文發(fā)送給軟件模塊62。
TCP連接建立模塊813:接收軟件模塊62下發(fā)的會話表,當(dāng)接收到服務(wù)器 返回的SYNACK報文時,根據(jù)會話表向服務(wù)器返回ACK報文,同時向客戶端 發(fā)送ACK報文。
數(shù)據(jù)轉(zhuǎn)發(fā)模塊814:接收軟件模塊62下發(fā)的會話表,根據(jù)會話表轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。
軟件模塊62包括會話建立模塊821和會話表下發(fā)模塊822,其中
會話建立模塊821:接收FPGA61發(fā)來的SYN報文,開始建立會話表,向 會話表下發(fā)模塊822發(fā)送會話建立指示,并向服務(wù)器轉(zhuǎn)發(fā)該SYN報文。
會話表下發(fā)模塊822:當(dāng)接收到會話建立模塊821發(fā)來的會話建立指示時, 將建立的會話表下發(fā)給FPGA61 。
以上所述^f義為本發(fā)明的過程及方法實施例,并不用以限制本發(fā)明,凡在 本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在 本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種防御傳輸控制協(xié)議TCP同步洪泛攻擊方法,其特征在于,該方法包括TCP代理端的現(xiàn)場可編程門陣列FPGA與客戶端進(jìn)行TCP三次握手,對客戶端的合法性進(jìn)行驗證;客戶端通過合法性驗證后,TCP代理端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并將會話表下發(fā)到FPGA;FPGA根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。
2、 如權(quán)利要求1所述的方法,其特征在于,所述TCP代理為單向代理方式,所述TCP代理端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并 將會話表下發(fā)到FPGA包括FPGA接收客戶端發(fā)來的同步報文,發(fā)現(xiàn)客戶端通過合法性驗證,將同 步報文發(fā)送給軟件模塊;客戶端與服務(wù)器通過軟件模塊建立TCP連接,TCP 連接建立成功,將會話表下發(fā)給FPGA。
3、 如權(quán)利要求1所述的方法,其特征在于,所述TCP代理為雙向代理方式,所述客戶端通過合法性驗證之后、TCP代理端的軟件模塊開始建立客戶端 與服務(wù)器間的TCP連接之前進(jìn)一步包括FPGA將客戶端發(fā)來的確認(rèn)報文修改為同步報文,其中,同步報文中的序 列號由確認(rèn)報文中的序列號減1得到,同步報文中的MSS字段值由確認(rèn)報文中 的確認(rèn)序列號恢復(fù)得到,調(diào)整同步報文的校驗和,將該同步報文發(fā)送給軟件模 塊。
4、 如權(quán)利要求3所述的方法,其特征在于,所述TCP代理端的軟件模塊 開始建立客戶端與服務(wù)器間的TCP連接,并將會話表下發(fā)到FPGA包括軟件模塊接收FPGA發(fā)來的同步報文,開始建立客戶端與服務(wù)器間的TCP連接,TCP連接建立成功,將會話表下發(fā)給FPGA。
5、 如權(quán)利要求3所述的方法,其特征在于,所述TCP代理端的軟件模塊 開始建立客戶端與服務(wù)器間的TCP連接,并將會話表下發(fā)到FPGA包括軟件模塊接收FPGA發(fā)來的同步報文,建立會話表,將會話表下發(fā)給FPGA, 并向服務(wù)器轉(zhuǎn)發(fā)該同步報文;FPGA根據(jù)所述會話表,在客戶端與服務(wù)器之間 建立TCP連接。
6、 一種防御TCP同步洪泛攻擊的TCP代理,其特征在于,該TCP代理包括FPGA,與客戶端進(jìn)行TCP三次握手,對客戶端進(jìn)行合法性驗證;接收軟 件模塊發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文; 軟件模塊,當(dāng)客戶端通過合法性驗證時,開始建立客戶端與服務(wù)器間的TCP 連接,并將會話表下發(fā)到FPGA。
7、 如權(quán)利要求6所述的TCP代理,其特征在于,所述FPGA包括客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,對客戶端進(jìn)行合法性驗證; 接收客戶端發(fā)來的同步報文,發(fā)現(xiàn)客戶端通過合法性驗證,將同步報文發(fā)送給 軟件模塊;數(shù)據(jù)轉(zhuǎn)發(fā)模塊,接收軟件模塊發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶 端與服務(wù)器間交互的數(shù)據(jù)報文; 所述軟件模塊包括會話建立模塊,接收FPGA發(fā)來的同步報文,在客戶端與服務(wù)器之間建 立TCP連接,TCP連接建立成功,向會話表下發(fā)模塊發(fā)送會話建立指示;會話表下發(fā)模塊,當(dāng)接收到會話建立指示時,將建立的會話表下發(fā)給 FPGA。
8、 如權(quán)利要求6所述的TCP代理,其特征在于,所述FPGA包括客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,當(dāng)確定客戶端通過合法性 驗證時,將客戶端發(fā)來的確認(rèn)報文發(fā)送給報文修改模塊;報文修改模塊,將確認(rèn)報文修改為同步報文,其中,.同步報文中的序列號由確認(rèn)報文中的序列號減1得到,同步報文中的MSS字段值由確認(rèn)報文中的確 認(rèn)序列號恢復(fù)得到,調(diào)整同步報文的校驗和,將該同步報文發(fā)送給軟件模塊;數(shù)據(jù)轉(zhuǎn)發(fā)模塊,根據(jù)軟件模塊下發(fā)的會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互 的數(shù)據(jù)報文。
9、 如權(quán)利要求8所述的TCP代理,其特征在于,所述軟件模塊包括 會話建立模塊,接收FPGA發(fā)來的同步報文,在客戶端與服務(wù)器之間建立TCP連接,TCP連接建立成功,向會話表下發(fā)模塊發(fā)送會話建立指示;會話表下發(fā)模塊,當(dāng)接收到會話建立指示時,將建立的會話表下發(fā)給 FPGA。
10、 如權(quán)利要求8所述的TCP代理,其特征在于,所述軟件模塊包括 會話建立模塊,接收FPGA發(fā)來的同步報文,開始建立會話表,向會話表下發(fā)模塊發(fā)送會話建立指示,并向服務(wù)器轉(zhuǎn)發(fā)該同步報文;會話表下發(fā)模塊,當(dāng)接收到會話建立指示時,將建立的會話表下發(fā)給 FPGA;且,所述FPGA進(jìn)一步包括TCP連接建立模塊,根據(jù)軟件模塊下發(fā)的會話表,與服務(wù)器建立TCP連接。
11、 一種防御TCP同步洪泛攻擊的FPGA,該FPGA位于TCP代理端,其 特征在于,該FPGA包括客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,對客戶端進(jìn)行合法性驗證; 接收客戶端發(fā)來的同步報文,發(fā)現(xiàn)客戶端通過合法性驗證,將同步報文發(fā)送給 軟件模塊;數(shù)據(jù)轉(zhuǎn)發(fā)模塊,接收軟件模塊發(fā)來的會話表,根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶 端與服務(wù)器間交互的數(shù)據(jù)報文。
12、 一種防御TCP同步洪泛攻擊的FPGA,該FPGA位于TCP代理端,其 特征在于,該FPGA包括客戶端驗證模塊,與客戶端進(jìn)行TCP三次握手,當(dāng)確定客戶端通過合法性驗證時,將客戶端發(fā)來的確認(rèn)報文發(fā)送給報文修改模塊;報文修改模塊,將確認(rèn)報文修改為同步報文,其中,同步報文中的序列號 由確認(rèn)報文中的序列號減1得到,同步報文中的MSS字段值由確認(rèn)報文中的確 認(rèn)序列號恢復(fù)得到,調(diào)整同步報文的校驗和,將該同步報文發(fā)送給軟件模塊;TCP連接建立模塊,根據(jù)軟件模塊下發(fā)的會話表,與服務(wù)器建立TCP連接;數(shù)據(jù)轉(zhuǎn)發(fā)模塊,根據(jù)軟件模塊下發(fā)的會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互 的數(shù)據(jù)報文。
全文摘要
本發(fā)明公開了防御傳輸控制協(xié)議同步洪泛攻擊方法及傳輸控制協(xié)議代理。方法包括TCP代理端的FPGA與客戶端進(jìn)行TCP三次握手,對客戶端的合法性進(jìn)行驗證;客戶端通過合法性驗證后,TCP代理端的軟件模塊開始建立客戶端與服務(wù)器間的TCP連接,并將會話表下發(fā)到FPGA;FPGA根據(jù)所述會話表,轉(zhuǎn)發(fā)客戶端與服務(wù)器間交互的數(shù)據(jù)報文。本發(fā)明提高了防御TCP同步洪泛攻擊的效果。
文檔編號H04L12/56GK101594359SQ200910088060
公開日2009年12月2日 申請日期2009年7月1日 優(yōu)先權(quán)日2009年7月1日
發(fā)明者颶 王, 蔡自彬 申請人:杭州華三通信技術(shù)有限公司