專利名稱:一種阻斷tcp連接的方法和裝置的制作方法
技術領域:
本發(fā)明涉及網絡安全保護,具體涉及一種阻斷TCP連接的方法和裝置。
背景技術:
網絡上存在著大量非法的TCP (Transmission Control Protocol,傳輸控制協(xié)議) 連接,例如一些存在攻擊包的連接,或者一些非授權的訪問。對于旁路設備而言,阻斷這些 非法TCP連接是一個非常重要的功能。發(fā)送RST包(TCP的reset包)是公認的最有效的 阻斷TCP連接的方法。RST包發(fā)揮作用必須要保證該RST包的序列號必須跟目標主機協(xié)議 棧等待的序列號相等,否則目標主機的協(xié)議棧會忽略掉該RST包?,F(xiàn)在主要旁路網絡安全設備很多都存在RST包隨意賦值的情況;少數計算精確 的,也存在著大流量情況下生成的新序列號過期導致無法阻斷的問題。
發(fā)明內容
本發(fā)明要解決的技術問題是提供一種阻斷TCP連接的方法和裝置,可以進行準確 而持續(xù)的阻斷,從而能在大流量環(huán)境下的高效阻斷非法TCP連接。為了解決上述問題,本發(fā)明提供了一種阻斷TCP連接的方法,包括保存各TCP連接的連接信息;所述TCP連接的連接信息包括該TCP連接的客戶端 信息、服務端信息、請求方向TCP等待序列號和應答方向TCP等待序列號;抓取TCP包,找到該TCP包所屬TCP連接的連接信息,根據所抓取的TCP包更新該 連接信息中的請求方向TCP等待序列號和應答方向TCP等待序列號;如果所抓取的TCP包為需要阻斷的TCP包,則根據更新后的、該TCP包所屬TCP連 接的連接信息生成RST包,并發(fā)送給該TCP連接的客戶端和服務端。進一步地,所述客戶端信息包括客戶端IP地址、客戶端的端口號、客戶端MAC地 址;服務端信息包括服務端IP地址、服務端的端口號,服務端MAC地址;所述抓取TCP包,找到該TCP包所屬TCP連接的連接信息的步驟具體包括捕獲以太網幀;解析以太網幀得到IP包,從以太頭中獲得目的MAC地址和源MAC 地址;解析IP包得到TCP包,從IP頭中獲得源IP地址和目的IP地址;解析TCP包,從TCP頭中獲得源端口號和目的端口號;根據解析出的源IP地址、目的IP地址、源端口號、目的端口號,源MAC地址和目的 MAC地址找到該請求包所屬TCP連接的連接信息。進一步地,根據所抓取的TCP包更新請求方向TCP等待序列號和應答方向TCP等 待序列號是指如果解析得到的源IP地址為客戶端IP地址,而所述目的IP地址為服務端IP地 址,則所抓取的TCP包為請求包;反之則所抓取的TCP包為應答包;如果TCP包為請求包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的請求方向TCP等待序列號;將該TCP包的確認號作為應答方向等待序列號,或不改變應答 方向等待序列號;如果TCP包為應答包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新 的應答方向TCP等待序列號;將該TCP包的確認號作為請求方向等待序列號,或不改變請求 方向等待序列號。進一步地,生成RST包,并發(fā)送給TCP連接的客戶端和服務端具體是指生成第一和第二兩個RST包;將第一 RST包的源MAC地址填寫為客戶端MAC地址,目的MAC地址填寫為服務端 MAC地址,源IP地址填寫為客戶端IP地址,目的IP地址填寫為服務端IP地址,源端口號填 寫為客戶端端口號,目的端口號填寫為服務端端口號,序列號填寫為請求方向的等待序列 號,確認號填寫為應答方向的等待序列號,將第一 RST包發(fā)送給TCP連接的服務端;將第二 RST包的源MAC地址填寫為服務端MAC地址,目的MAC地址填寫為客戶端 MAC地址,源IP地址填寫為服務端IP地址,目的IP地址填寫為客戶端IP地址,源端口號填 寫為服務端端口號,目的端口號填寫為客戶端端口號,序列號填寫為應答方向的等待序列 號,確認號填寫為請求方向的等待序列號,將第二 RST包發(fā)送給TCP連接的客戶端。進一步地,所述的方法還包括為每個TCP連接設置一對應的計時器,每次抓取到該TCP連接的TCP包時復位并 啟動該計時器;當一計時器所計時間超過一預設的時間閾值時,刪除該計時器對應的TCP 連接的連接信息。本發(fā)明還提供了一種阻斷TCP連接的裝置,包括存儲單元,用于保存各TCP連接的連接信息;所述TCP連接的連接信息包括該TCP 連接的客戶端信息、服務端信息、請求方向TCP等待序列號和應答方向TCP等待序列號;抓取單元,用于抓取TCP包,并在所述存儲單元中找到該TCP包所屬TCP連接的連 接信息;更新單元,用于根據所抓取的TCP包更新所找到的連接信息中的請求方向TCP等 待序列號和應答方向TCP等待序列號;判斷單元,用于判斷所抓取的TCP包是否為需要阻斷的TCP包,如果是則發(fā)送阻斷 指令;阻斷單元,用于當收到所述阻斷指令時,根據更新單元更新后的所述連接信息生 成RST包,并發(fā)送給該TCP連接的客戶端和服務端。進一步地,所述存儲單元所保存的連接信息中,所述客戶端信息包括客戶端IP地 址、客戶端的端口號、客戶端MAC地址;所述服務端信息包括服務端IP地址、服務端的端口 號,服務端MAC地址;所述抓取單元具體包括幀解析模塊,用于捕獲以太網幀,以及解析以太網幀得到IP包,從以太頭中獲得 目的MAC地址和源MAC地址;IP包解析模塊,用于解析所述IP包得到TCP包,從IP頭中獲得源IP地址和目的 IP地址;TCP包解析模塊,用于解析所述TCP包,從TCP頭中獲得源端口號和目的端口號;
查找模塊,用于根據解析出的源IP地址、目的IP地址、源端口號、目的端口號,源 MAC地址和目的MAC地址在所述存儲單元中找到該請求包所屬TCP連接的連接信息。進一步地,所述更新單元根據所抓取的TCP包更新請求方向TCP等待序列號和應 答方向TCP等待序列號是指所述更新單元判斷是否解析得到的源IP地址為客戶端IP地址,而所述目的IP地 址為服務端IP地址,如果是則所抓取的TCP包為請求包;否則所抓取的TCP包為應答包;如 果TCP包為請求包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的請求方向 TCP等待序列號;將該TCP包的確認號作為應答方向等待序列號,或不改變應答方向等待序 列號;如果TCP包為應答包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的應 答方向TCP等待序列號;將該TCP包的確認號作為請求方向等待序列號,或不改變請求方向 等待序列號。進一步地,所述阻斷單元生成RST包,并發(fā)送給TCP連接的客戶端和服務端具體是 指所述阻斷單元生成第一、第二兩個RST包;將第一 RST包的源MAC地址填寫為客戶 端MAC地址,目的MAC地址填寫為服務端MAC地址,源IP地址填寫為客戶端IP地址,目的 IP地址填寫為服務端IP地址,源端口號填寫為客戶端端口號,目的端口號填寫為服務端端 口號,序列號填寫為請求方向的等待序列號,確認號填寫為應答方向的等待序列號,發(fā)送給 TCP連接的服務端;將第二 RST包的源MAC地址填寫為服務端MAC地址,目的MAC地址填寫 為客戶端MAC地址,源IP地址填寫為服務端IP地址,目的IP地址填寫為客戶端IP地址, 源端口號填寫為服務端端口號,目的端口號填寫為客戶端端口號,序列號填寫為應答方向 的等待序列號,確認號填寫為請求方向的等待序列號,發(fā)送給TCP連接的客戶端。進一步地,所述的裝置還包括對應于每個TCP連接的計時器;控制單元,用于每當所述抓取單元抓取到TCP包時,復位并啟動該TCP包所屬TCP 連接對應的計時器;當一計時器所計時間超過一預設的時間閾值時,刪除所述存儲單元中 該計時器所對應的TCP連接的連接信息。本發(fā)明的技術方案可以持續(xù)根據新TCP包觸發(fā)發(fā)送阻斷包,在大流量情況下不會 由于RST包無效而導致阻斷失敗,既保證了在連接仍未阻斷時繼續(xù)進行阻斷,又避免了在 連接終止后仍然發(fā)送垃圾阻斷包。
圖1為標準TCP/IP協(xié)議中的以太報頭結構;圖2為標準TCP/IP協(xié)議中的IP報頭結構;圖3為標準TCP/IP協(xié)議中的TCP報頭結構;圖4為實施例一中阻斷TCP連接的方法的例子的流程示意圖;圖5為實施例二中阻斷TCP連接的裝置的示意框圖。
具體實施例方式下面將結合附圖及實施例對本發(fā)明的技術方案進行更詳細的說明。
實施例一,一種阻斷TCP連接的方法,包括保存各TCP連接的連接信息;所述TCP連接的連接信息包括該TCP連接的客戶端 信息、服務端信息、請求方向TCP等待序列號和應答方向TCP等待序列號;抓取TCP包,找到該TCP包所屬TCP連接的連接信息,根據所抓取的TCP包更新該 連接信息中的請求方向TCP等待序列號和應答方向TCP等待序列號;如果所抓取的TCP包為需要阻斷的TCP包,則根據更新后的、該TCP包所屬TCP連 接的連接信息生成RST包,并發(fā)送給該TCP連接的客戶端和服務端??梢姡l(fā)送RST包后,如果需要阻斷的TCP連接中還出現(xiàn)新的交互的TCP包時,按 照上述方法將會再次按照該TCP最新的連接信息生成RST包,并發(fā)送給該TCP連接的客戶 端和服務端。這在大流量情況下非常有用,因為此時當計算RST包的序列號的時候,服務端 和客戶端可能已經交互了更多數據,使得計算好的序列號落后于所需的序列號,從而使RST 包無效。而由于上述方法可以繼續(xù)根據新TCP包觸發(fā)發(fā)送阻斷包,既保證了在連接仍未阻 斷時繼續(xù)進行阻斷,又避免了在連接終止后仍然發(fā)送垃圾阻斷包。本實施例中,所述阻斷TCP連接的方法可應用在旁路網絡設備上。本實施例中,所述客戶端信息包括客戶端IP地址、客戶端的端口號、客戶端MAC地 址;服務端信息包括服務端IP地址、服務端的端口號,服務端MAC地址。實際應用時,可以 還包括其它能用于指示TCP連接中客戶端/服務端的信息。本實施例中,所述TCP連接的所述連接信息可以但不限于為一(客戶端IP、服務端 IP、客戶端端口、服務的端口,客戶端MAC、服務端MAC、請求方向TCP等待序列號、應答方向 TCP等待序列號)的八元組的形式。其中最后兩項的TCP等待序列號根據所抓取的該TCP 連接的TCP包不斷更新。本實施例中,可以根據現(xiàn)有的方式判斷是否需要阻斷某個TCP包,也就是阻斷該 TCP包所屬TCP連接;比如按照預定的阻斷策略進行判斷等;當有多個TCP連接需要阻斷 時,可以并行阻斷當抓取到屬于要阻斷的TCP連接的TCP包時,就按照該TCP包所屬TCP 連接的連接信息生成RST包,并發(fā)送給相應的客戶端和服務端。本實施例中,所述抓取TCP包,找到該TCP包所屬TCP連接的連接信息的步驟具體 包括捕獲以太網幀;如圖1所示,解析以太網幀得到IP包,從以太頭中獲得目的MAC地 址和源MAC地址;解析IP包得到TCP包,如圖2所示,從IP頭中獲得源(IP)地址和目的(IP)地 址;解析TCP包,如圖3所示,從TCP頭中獲得源端口號和目的端口號。根據解析出的源IP地址、目的IP地址、源端口號、目的端口號,源MAC地址和目的 MAC地址找到該請求包所屬TCP連接的連接信息??梢酝ㄟ^監(jiān)聽各TCP連接建立時的握手協(xié)議來獲知各TCP連接中客戶端和服務端 的IP地址,并在一 TCP連接建立時創(chuàng)建該TCP連接的連接信息;當抓取到TCP包后,根據解 析出的IP地址來判斷TCP包的方向;如果所述源IP地址為客戶端IP地址,而所述目的IP 地址為服務端IP地址,則TCP包的方向是從客戶端發(fā)往服務端的,為請求包;反之則是從服 務端發(fā)往客戶端的,為應答包。本實施例中,所述RST包是TCP標志位只設置RST的包。
8
采用了本實施例的方法后,抓取網絡包后的流程如圖4所示,包括抓取網絡包;解析網絡包;如果得到的不是TCP包,則繼續(xù)抓取網絡包;否則根據 該TCP包更新其所屬TCP連接的八元組;判斷該TCP包是否需要被阻斷,如果是則根據八元組構造RST包發(fā)送,否則繼續(xù)抓 取網絡包。本實施例中,根據TCP包更新請求方向TCP等待序列號和應答方向TCP等待序列 號是指對于本方向的等待序列號,可以通過當前包序列號(TCP頭的SEQ字段,表示當前 包的序號)加當前包長度(TCP包的負載的長度,即應用層數據長度,單位是字節(jié))的方法 計算;對于反方向的等待序列號,可以通過使用ACK號(TCP頭中的確認號)來賦值。當然, 也可以不計算反方向的等待序列號,而是通過反方向的TCP包來計算。具體來說就是如果TCP包為請求包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新 的請求方向TCP等待序列號;將該TCP包的ACK號作為應答方向等待序列號,或不改變應答 方向等待序列號;如果TCP包為應答包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新 的應答方向TCP等待序列號;將該TCP包的ACK號作為請求方向等待序列號,或不改變請求 方向等待序列號。本實施例中,生成RST包,并發(fā)送給TCP連接的客戶端和服務端具體可以是指對服務端,生成一個模擬客戶端發(fā)送的RST包,即該包的源MAC地址等于客戶端 MAC地址,目的MAC地址等于服務端MAC地址,源IP地址等于客戶端IP地址,目的IP地址 等于服務端IP地址,源端口號等于客戶端端口號,目的端口號等于服務端端口號,序列號 等于請求方向的等待序列號,ACK號等于應答方向的等待序列號,將該RST包發(fā)送給TCP連 接的服務端。對客戶端,則正好相反,生成一個模擬服務端發(fā)送的RST包,即該包的源MAC地址 等于服務端MAC地址,目的MAC地址等于客戶端MAC地址,源IP地址等于服務端IP地址, 目的IP地址等于客戶端IP地址,源端口號等于服務端端口號,目的端口號等于客戶端端口 號,序列號等于應答方向的等待序列號,ACK號等于請求方向的等待序列號,將該RST包發(fā) 送給TCP連接的客戶端。如果生成的RST包的序列號是基于客戶端和服務器交互的最后一個包,則對常用 的操作系統(tǒng)(包括LINUX,WINDOWS等),必然會阻斷成功。本實施例中,所述方法還可以包括當滿足停止條件時,刪除相應TCP連接的連接信息。在一種實施方式中,可以是為每個TCP連接設置一對應的計時器,每次抓取到該 TCP連接的TCP包時復位并啟動該計時器;當一計時器所計時間超過一時間閾值時,刪除該 計時器對應的TCP連接的連接信息;在另一種實施方式中,可以是設置一個最大維護的TCP連接的個數,對TCP連接的 連接信息計數,如果個數大于所設置的最大個數,則進行刪除;可以是刪除計時器所計時間 最長的TCP連接的連接信息,也可以是為各TCP連接設置優(yōu)先級,按照優(yōu)先級刪除最低級別
9的TCP連接的連接信息,還可以是刪除最早建立的TCP連接的連接信息。下面用一個具體的例子進一步加以說明。采用旁路部署方式,監(jiān)測目標是對一臺telnet服務器的訪問。當telnet中輸入 su時,需要阻斷該連接。假設telnet主機的IP地址是192. 168. 0. 1,服務端口號是23 ;客戶端主機的IP 地址是192. 168. 0.2,端口號是2000 ;當前請求方向等待序列號為10000,應答方向序列號 為 20000。抓取到TCP連接上的請求包的源MAC地址是00 Oc 29 00 00 01,目的MAC地址是 00 Oc 29 00 00 00。這里的源MAC地址不一定是服務器和客戶端本身的MAC地址,而是最 后一跳的網絡設備的MAC的地址,在本文中相應視為服務端/客戶端的MAC地址。按如下步驟阻斷(1)將(客戶端IP、服務端IP、客戶端端口、服務的端口,客戶端MAC、服務端 MAC、請求方向TCP等待序列號、應答方向TCP等待序列號)八元組賦值為(192. 168. 0. 2, 192.168.0.1,2000,23,00:0c:29:00:00:01,00:0c:29:00:00:00,10000,20000)。當用戶通過發(fā)送telnet請求執(zhí)行su操作時,根據請求包中解析出的客戶端IP、服 務端IP、客戶端端口、服務的端口,客戶端MAC和服務端MAC找到該請求包所屬TCP連接的 八元組。假設該請求包的TCP負載的長度為4,則將所找到的八元組中請求方向等待序 列號更新為10004,不更新應答方向等待序列號,此時的八元組更新為(192. 168.0.2, 192.168.0.1,2000,23,00:0c:29:00:00:01,00:0c:29:00:00:00,10004,20000)。(2)生成并發(fā)送RST包。生成兩個RST包。從以太層開始構造。第一個RST包是發(fā)向服務器的,該包的源MAC地址是00:0c:29:00:00:01,目 的MAC地址是00:0c:29:00:00:00,源端口號是2000,目的端口號是23,源IP地址是 192. 168. 0. 2,目的 IP 地址是 192. 168. 0. 1,TCP 序列號是 10004,TCP ACK 號是 20000,TCP 標志是4,即只設置RST位。第二個RST包是發(fā)向客戶端的,該包的源MAC地址是00:0c:29:00:00:00,目 的MAC地址是00:0c:29:00:00:01,源端口號是23,目的端口號是2000,源IP地址是 192. 168. 0. 1,目的 IP 地址是 192. 168. 0. 2,TCP 序列號是 20000,TCP ACK 號是 10004,TCP
標志是4,即只設置RST位。(3)如果服務器和客戶端在su操作之后沒有進行新的數據通信,則說明阻斷成 功。如果客戶端執(zhí)行了新的操作,或者服務器有數據響應,則可能導致計算的序列 號過期,例如在此期間,服務器響應了總共300字節(jié)TCP負載的包,客戶端也發(fā)送了總 共30字節(jié)的TCP負載的包,則需要更新八元組為(192. 168.0.2,192. 168.0. 1,2000,23, 00Oc29000001,00Oc29000000,10034,20300)。在發(fā)現(xiàn)有該連接仍然有包存在的情況下,根據最新的TCP包更新八元組,然后計 算發(fā)送RST包。第一個RST包是發(fā)向服務器的,該包的源MAC地址是00:0c:29:00:00:01,目 的MAC地址是00:0c:29:00:00:00,源端口號是2000,目的端口號是23,源IP地址是192. 168. 0. 2,目的 IP 地址是 192. 168. 0. 1,TCP 序列號是 10034,TCP ACK 號是 20300,TCP
標志是4,即只設置RST位。第二個RST包是發(fā)向客戶端的,該包的源MAC地址是00:0c:29:00:00:00,目 的MAC地址是00:0c:29:00:00:01,源端口號是23,目的端口號是2000,源IP地址是 192. 168. 0. 1,目的 IP 地址是 192. 168. 0. 2,TCP 序列號是 20300,TCP ACK 號是 10034,TCP
標志是4,即只設置RST位。之后繼續(xù)監(jiān)測該會話,如果有新包來臨,則繼續(xù)根據最新的TCP包更新八元組后, 生成RST包并發(fā)送;如果半小時內沒有新包來臨,則結束對該包的監(jiān)測。實施例二,一種阻斷TCP連接的裝置,如圖5所示,包括存儲單元,用于保存各TCP連接的連接信息;所述TCP連接的連接信息包括該TCP 連接的客戶端信息、服務端信息、請求方向TCP等待序列號和應答方向TCP等待序列號;抓取單元,用于抓取TCP包,并在所述存儲單元中找到該TCP包所屬TCP連接的連 接信息;更新單元,用于根據所抓取的TCP包更新所找到的連接信息中的請求方向TCP等 待序列號和應答方向TCP等待序列號;判斷單元,用于判斷所抓取的TCP包是否為需要阻斷的TCP包,如果是則發(fā)送阻斷 指令;阻斷單元,用于當收到所述阻斷指令時,根據更新單元更新后的所述連接信息生 成RST包,并發(fā)送給該TCP連接的客戶端和服務端。本實施例中,所述存儲單元所保存的連接信息中,所述客戶端信息包括客戶端IP 地址、客戶端的端口號、客戶端MAC地址;所述服務端信息包括服務端IP地址、服務端的端 口號,服務端MAC地址;本實施例中,所述抓取單元具體包括幀解析模塊,用于捕獲以太網幀,以及解析以太網幀得到IP包,從以太頭中獲得 目的MAC地址和源MAC地址;IP包解析模塊,用于解析所述IP包得到TCP包,從IP頭中獲得源IP地址和目的 IP地址;TCP包解析模塊,用于解析所述TCP包,從TCP頭中獲得源端口號和目的端口號;查找模塊,用于根據解析出的源IP地址、目的IP地址、源端口號、目的端口號,源 MAC地址和目的MAC地址在所述存儲單元中找到該請求包所屬TCP連接的連接信息。本實施例中,所述更新單元根據所抓取的TCP包更新請求方向TCP等待序列號和 應答方向TCP等待序列號是指所述更新單元判斷是否解析得到的源IP地址為客戶端IP地址,而所述目的IP地 址為服務端IP地址,如果是則所抓取的TCP包為請求包;否則所抓取的TCP包為應答包;如 果TCP包為請求包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的請求方向 TCP等待序列號;將該TCP包的確認號作為應答方向等待序列號,或不改變應答方向等待序 列號;如果TCP包為應答包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的應 答方向TCP等待序列號;將該TCP包的確認號作為請求方向等待序列號,或不改變請求方向 等待序列號。
11
本實施例中,所述阻斷單元生成RST包,并發(fā)送給TCP連接的客戶端和服務端具體 是指所述阻斷單元生成第一、第二兩個RST包;將第一 RST包的源MAC地址填寫為客戶 端MAC地址,目的MAC地址填寫為服務端MAC地址,源IP地址填寫為客戶端IP地址,目的 IP地址填寫為服務端IP地址,源端口號填寫為客戶端端口號,目的端口號填寫為服務端端 口號,序列號填寫為請求方向的等待序列號,確認號填寫為應答方向的等待序列號,發(fā)送給 TCP連接的服務端;將第二 RST包的源MAC地址填寫為服務端MAC地址,目的MAC地址填寫 為客戶端MAC地址,源IP地址填寫為服務端IP地址,目的IP地址填寫為客戶端IP地址, 源端口號填寫為服務端端口號,目的端口號填寫為客戶端端口號,序列號填寫為應答方向 的等待序列號,確認號填寫為請求方向的等待序列號,發(fā)送給TCP連接的客戶端。本實施例的一種實施方式中,所述阻斷TCP連接的裝置還包括對應于每個TCP連接的計時器;控制單元,用于每當所述抓取單元抓取到TCP包時,復位并啟動該TCP包所屬TCP 連接對應的計時器;當一計時器所計時間超過一預設的時間閾值時,刪除所述存儲單元中 該計時器所對應的TCP連接的連接信息。本實施例的另一種實施方式可以和實施例一中相對應,所述阻斷TCP連接的裝置 還包括一計數器,用于對所維護的TCP連接的個數進行計數,控制單元當計數器的值大于 所設置的最大個數時刪除TCP連接的連接信息。其它實施細節(jié)可以與實施例一中相同。當然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟 悉本領域的技術人員當可根據本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變 形都應屬于本發(fā)明的權利要求的保護范圍。
權利要求
一種阻斷TCP連接的方法,包括保存各TCP連接的連接信息;所述TCP連接的連接信息包括該TCP連接的客戶端信息、服務端信息、請求方向TCP等待序列號和應答方向TCP等待序列號;抓取TCP包,找到該TCP包所屬TCP連接的連接信息,根據所抓取的TCP包更新該連接信息中的請求方向TCP等待序列號和應答方向TCP等待序列號;如果所抓取的TCP包為需要阻斷的TCP包,則根據更新后的、該TCP包所屬TCP連接的連接信息生成RST包,并發(fā)送給該TCP連接的客戶端和服務端。
2.如權利要求1所述的方法,其特征在于所述客戶端信息包括客戶端IP地址、客戶端的端口號、客戶端MAC地址;服務端信息包 括服務端IP地址、服務端的端口號,服務端MAC地址;所述抓取TCP包,找到該TCP包所屬TCP連接的連接信息的步驟具體包括 捕獲以太網幀;解析以太網幀得到IP包,從以太頭中獲得目的MAC地址和源MAC地址; 解析IP包得到TCP包,從IP頭中獲得源IP地址和目的IP地址; 解析TCP包,從TCP頭中獲得源端口號和目的端口號;根據解析出的源IP地址、目的IP地址、源端口號、目的端口號,源MAC地址和目的MAC 地址找到該請求包所屬TCP連接的連接信息。
3.如權利要求2所述的方法,其特征在于,根據所抓取的TCP包更新請求方向TCP等待 序列號和應答方向TCP等待序列號是指如果解析得到的源IP地址為客戶端IP地址,而所述目的IP地址為服務端IP地址,則 所抓取的TCP包為請求包;反之則所抓取的TCP包為應答包;如果TCP包為請求包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的請 求方向TCP等待序列號;將該TCP包的確認號作為應答方向等待序列號,或不改變應答方向 等待序列號;如果TCP包為應答包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的應 答方向TCP等待序列號;將該TCP包的確認號作為請求方向等待序列號,或不改變請求方向 等待序列號。
4.如權利要求2或3所述的方法,其特征在于,生成RST包,并發(fā)送給TCP連接的客戶 端和服務端具體是指生成第一和第二兩個RST包;將第一 RST包的源MAC地址填寫為客戶端MAC地址,目的MAC地址填寫為服務端MAC 地址,源IP地址填寫為客戶端IP地址,目的IP地址填寫為服務端IP地址,源端口號填寫 為客戶端端口號,目的端口號填寫為服務端端口號,序列號填寫為請求方向的等待序列號, 確認號填寫為應答方向的等待序列號,將第一 RST包發(fā)送給TCP連接的服務端;將第二 RST包的源MAC地址填寫為服務端MAC地址,目的MAC地址填寫為客戶端MAC 地址,源IP地址填寫為服務端IP地址,目的IP地址填寫為客戶端IP地址,源端口號填寫 為服務端端口號,目的端口號填寫為客戶端端口號,序列號填寫為應答方向的等待序列號, 確認號填寫為請求方向的等待序列號,將第二 RST包發(fā)送給TCP連接的客戶端。
5.如權利要求1到3中任一項所述的方法,其特征在于,還包括為每個TCP連接設置一對應的計時器,每次抓取到該TCP連接的TCP包時復位并啟動2該計時器;當一計時器所計時間超過一預設的時間閾值時,刪除該計時器對應的TCP連接 的連接信息。
6.一種阻斷TCP連接的裝置,其特征在于,包括存儲單元,用于保存各TCP連接的連接信息;所述TCP連接的連接信息包括該TCP連接 的客戶端信息、服務端信息、請求方向TCP等待序列號和應答方向TCP等待序列號;抓取單元,用于抓取TCP包,并在所述存儲單元中找到該TCP包所屬TCP連接的連接信息;更新單元,用于根據所抓取的TCP包更新所找到的連接信息中的請求方向TCP等待序 列號和應答方向TCP等待序列號;判斷單元,用于判斷所抓取的TCP包是否為需要阻斷的TCP包,如果是則發(fā)送阻斷指令;阻斷單元,用于當收到所述阻斷指令時,根據更新單元更新后的所述連接信息生成RST 包,并發(fā)送給該TCP連接的客戶端和服務端。
7.如權利要求6所述的裝置,其特征在于所述存儲單元所保存的連接信息中,所述客戶端信息包括客戶端IP地址、客戶端的端 口號、客戶端MAC地址;所述服務端信息包括服務端IP地址、服務端的端口號,服務端MAC 地址;所述抓取單元具體包括幀解析模塊,用于捕獲以太網幀,以及解析以太網幀得到IP包,從以太頭中獲得目的 MAC地址和源MAC地址;IP包解析模塊,用于解析所述IP包得到TCP包,從IP頭中獲得源IP地址和目的IP地址;TCP包解析模塊,用于解析所述TCP包,從TCP頭中獲得源端口號和目的端口號; 查找模塊,用于根據解析出的源IP地址、目的IP地址、源端口號、目的端口號,源MAC 地址和目的MAC地址在所述存儲單元中找到該請求包所屬TCP連接的連接信息。
8.如權利要求7所述的裝置,其特征在于,所述更新單元根據所抓取的TCP包更新請求 方向TCP等待序列號和應答方向TCP等待序列號是指所述更新單元判斷是否解析得到的源IP地址為客戶端IP地址,而所述目的IP地址為 服務端IP地址,如果是則所抓取的TCP包為請求包;否則所抓取的TCP包為應答包;如果 TCP包為請求包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的請求方向TCP 等待序列號;將該TCP包的確認號作為應答方向等待序列號,或不改變應答方向等待序列 號;如果TCP包為應答包,則用TCP頭中的SEQ字段加上TCP包的負載的長度得到新的應答 方向TCP等待序列號;將該TCP包的確認號作為請求方向等待序列號,或不改變請求方向等 待序列號。
9.如權利要求7或8所述的裝置,其特征在于,所述阻斷單元生成RST包,并發(fā)送給TCP 連接的客戶端和服務端具體是指所述阻斷單元生成第一、第二兩個RST包;將第一 RST包的源MAC地址填寫為客戶端 MAC地址,目的MAC地址填寫為服務端MAC地址,源IP地址填寫為客戶端IP地址,目的IP 地址填寫為服務端IP地址,源端口號填寫為客戶端端口號,目的端口號填寫為服務端端口號,序列號填寫為請求方向的等待序列號,確認號填寫為應答方向的等待序列號,發(fā)送給 TCP連接的服務端;將第二 RST包的源MAC地址填寫為服務端MAC地址,目的MAC地址填寫 為客戶端MAC地址,源IP地址填寫為服務端IP地址,目的IP地址填寫為客戶端IP地址, 源端口號填寫為服務端端口號,目的端口號填寫為客戶端端口號,序列號填寫為應答方向 的等待序列號,確認號填寫為請求方向的等待序列號,發(fā)送給TCP連接的客戶端。
10.如權利要求6到8中任一項所述的裝置,其特征在于,還包括 對應于每個TCP連接的計時器;控制單元,用于每當所述抓取單元抓取到TCP包時,復位并啟動該TCP包所屬TCP連接 對應的計時器;當一計時器所計時間超過一預設的時間閾值時,刪除所述存儲單元中該計 時器所對應的TCP連接的連接信息。
全文摘要
本發(fā)明提供了一種阻斷TCP連接的方法和裝置;方法包括保存各TCP連接的連接信息;所述TCP連接的連接信息包括該TCP連接的客戶端信息、服務端信息、請求方向TCP等待序列號和應答方向TCP等待序列號;抓取TCP包,找到該TCP包所屬TCP連接的連接信息,根據所抓取的TCP包更新該連接信息中的請求方向TCP等待序列號和應答方向TCP等待序列號;如果所抓取的TCP包為需要阻斷的TCP包,則根據更新后的、該TCP包所屬TCP連接的連接信息生成RST包,并發(fā)送給該TCP連接的客戶端和服務端。本發(fā)明可以進行準確而持續(xù)的阻斷,從而能在大流量環(huán)境下的高效阻斷非法TCP連接。
文檔編號H04L1/16GK101902440SQ20091008503
公開日2010年12月1日 申請日期2009年5月27日 優(yōu)先權日2009年5月27日
發(fā)明者劉輝, 姚熙, 李新鵬 申請人:北京啟明星辰信息技術股份有限公司;北京啟明星辰信息安全技術有限公司