EQ和ACK對該TCP連接數(shù)據(jù)包進行解析。
[0055]具體地,在客戶端和服務(wù)器的第一次握手時,路由器截獲第一 TCP連接數(shù)據(jù)包,獲取SEQ值,假設(shè)為X ;將第一 TCP連接數(shù)據(jù)包放行發(fā)送到服務(wù)器;在客戶端和服務(wù)器的第二次握手時,服務(wù)器向客戶端返回作為應(yīng)答的第二 TCP連接數(shù)據(jù)包,路由器截獲第二 TCP連接數(shù)據(jù)包,獲取ACK值并判斷ACK值是否為X+1 ;獲取應(yīng)答的TCP連接數(shù)據(jù)包中的SEQ值,假設(shè)為Y ;如果客戶端不是攻擊客戶端,則會向服務(wù)器發(fā)送第三TCP連接數(shù)據(jù)包進行第三次握手,第三TCP連接數(shù)據(jù)包中的SEQ值應(yīng)該為Y+1 ;如果在設(shè)定的時間內(nèi)沒有收到客戶端發(fā)送的TCP連接數(shù)據(jù)包,即客戶端不會發(fā)送第三次握手的數(shù)據(jù)包,讓服務(wù)器始終處于半連接狀態(tài)消耗資源,反而不斷發(fā)送第一次握手的數(shù)據(jù)包,則確定該TCP連接數(shù)據(jù)包是攻擊數(shù)據(jù)包,則將該TCP連接數(shù)據(jù)包對應(yīng)的IP地址添加到黑名單鏈表中,將IP地址對應(yīng)的黑名單標識位設(shè)置為1,此后該IP的數(shù)據(jù)包直接丟棄。
[0056]步驟105,經(jīng)過間隔重檢間隔時間后,再次統(tǒng)計該IP地址對應(yīng)的SYN數(shù)據(jù)包數(shù)量,如果SYN數(shù)據(jù)包數(shù)量達到SYN包閾值,則將該IP地址永久保存在黑名單鏈表中;如果SYN數(shù)據(jù)包數(shù)量沒有達到SYN包閾值,則將該IP地址從黑名單鏈表中刪除。
[0057]在本發(fā)明的具體實施例中,在第一次將IP地址加入黑名單鏈表后的間隔重檢間隔時間期限,客戶端的TCP連接數(shù)據(jù)包進入Η00Κ函數(shù)時,查詢黑名單鏈表,如果存在該客戶端的IP地址,則直接丟棄此TCP連接數(shù)據(jù)包。
[0058]經(jīng)過間隔重檢間隔時間后,客戶端的TCP連接數(shù)據(jù)包進入Η00Κ函數(shù)時,不再查詢黑名單鏈表,再次統(tǒng)計該IP地址對應(yīng)的SYN數(shù)據(jù)包數(shù)量,并從0開始重新計數(shù)此IP地址的TCP連接SYN包數(shù)目,如此,給用戶一次糾正的機會,可以防止客戶端的用戶誤操作(例如死機,斷電導致不發(fā)送第三次握手數(shù)據(jù)包)導致攻擊而被永久加入黑名單鏈表影響正常業(yè)務(wù)數(shù)據(jù)。如果網(wǎng)客戶端的SYN數(shù)據(jù)包再次達到閥值,則說明是真正的SYN數(shù)據(jù)包攻擊,將此IP地址的標記為改為0,表示永久丟棄來自該客戶端的任何數(shù)據(jù)包。
[0059]實施例二:
[0060]本發(fā)明還提供了一種防止同步包攻擊的裝置,如圖2所示,包括:設(shè)置模塊201、第一處理模塊202、第二處理模塊203和第三處理模塊204,其中,
[0061]設(shè)置模塊201,用于預先在內(nèi)核注冊鉤子函數(shù)、創(chuàng)建跟蹤監(jiān)測鏈表和黑名單鏈表,并設(shè)置同步包閥值和重檢間隔時間;
[0062]具體地,跟蹤監(jiān)測鏈表包括IP地址字段和TCP連接數(shù)據(jù)包字段;跟蹤監(jiān)測鏈表的長度為要跟蹤檢測的IP地址的數(shù)目。
[0063]黑名單鏈表包括IP地址字段和黑名單標識位字段;黑名單標識位為第一值時,表示所述IP地址永久加入黑名單鏈表,所述IP地址對應(yīng)的客戶端發(fā)出的TCP連接數(shù)據(jù)包直接丟棄;黑名單標識位為第二值時,表示所述IP地址重檢間隔時間內(nèi)在加入黑名單鏈表,所述IP地址對應(yīng)的客戶端發(fā)出的TCP連接數(shù)據(jù)包在重檢間隔時間內(nèi)無法發(fā)送到服務(wù)器。
[0064]同步包閥值表示每秒允許來自同一 IP地址的同步數(shù)據(jù)包的最大數(shù)量;重檢間隔時間表示第一次將IP地址加入黑名單鏈表后,第二次檢測到同步數(shù)據(jù)包達到同步包閥值的時間。
[0065]第一處理模塊202,用于利用鉤子函數(shù)解析客戶端向服務(wù)器發(fā)送的TCP連接數(shù)據(jù)包,其中客戶端和服務(wù)器第一次握手發(fā)的TCP連接數(shù)據(jù)包為同步數(shù)據(jù)包;
[0066]第二處理模塊203,用于當來自同一 IP地址的同步數(shù)據(jù)包的數(shù)量達到同步包閥值時,將所述IP地址添加到跟蹤監(jiān)測鏈表中,對所述IP地址對應(yīng)的客戶端后續(xù)發(fā)送的TCP連接數(shù)據(jù)包進行跟蹤;
[0067]具體地,TCP連接數(shù)據(jù)包包括序列字段和確認字段;第二處理模塊在客戶端和服務(wù)器的第一次握手時,截獲客戶端向服務(wù)器發(fā)送的第一 TCP連接數(shù)據(jù)包,獲取第一 TCP連接數(shù)據(jù)包的序列值,設(shè)為X,其中X為整數(shù);將第一 TCP連接數(shù)據(jù)包放行發(fā)送到服務(wù)器;在客戶端和服務(wù)器的第二次握手時,截獲服務(wù)器向客戶端返回作為應(yīng)答的第二 TCP連接數(shù)據(jù)包,獲取第二 TCP連接數(shù)據(jù)包的確認值,所述第二 TCP連接數(shù)據(jù)包的確認值為X+1 ;獲取第二 TCP連接數(shù)據(jù)包的序列值,設(shè)為Y,其中Y為整數(shù);判斷在預設(shè)時間內(nèi)客戶端和服務(wù)器是否進行第三次握手;如果截獲到客戶端向服務(wù)器發(fā)送的第三TCP連接數(shù)據(jù)包,獲取第三TCP連接數(shù)據(jù)包序列值,所述第三TCP連接數(shù)據(jù)包的序列值為Y+1,則確定客戶端不是攻擊客戶端;如果沒有截獲到客戶端向服務(wù)器發(fā)送的第三TCP連接數(shù)據(jù)包,而截獲到進行第一次握手的第一 TCP連接數(shù)據(jù)包,則確定客戶端是攻擊客戶端,所述攻擊客戶端發(fā)出的TCP連接數(shù)據(jù)包是攻擊數(shù)據(jù)包。
[0068]第三處理模塊204,用于對跟蹤的TCP連接數(shù)據(jù)包進行解析,如果確定所述TCP連接數(shù)據(jù)包是攻擊數(shù)據(jù)包,則將所述TCP連接數(shù)據(jù)包對應(yīng)的IP地址添加到黑名單鏈表中。
[0069]具體地,第三處理模塊將所述IP地址對應(yīng)的黑名單標識位設(shè)置為第二值;在所述間隔重檢間隔時間內(nèi),如果截獲到客戶端向服務(wù)器發(fā)送的TCP連接數(shù)據(jù)包,判斷所述客戶端的IP地址是否在黑名單鏈表中;如果所述IP地址在黑名單鏈表中,則將所述TCP連接數(shù)據(jù)包進行丟棄。
[0070]第三處理模塊經(jīng)過所述間隔重檢間隔時間后,再次統(tǒng)計所述IP地址對應(yīng)的每秒同步數(shù)據(jù)包的數(shù)量;如果同步數(shù)據(jù)包的數(shù)量達到同步包閾值,則將所述IP地址對應(yīng)的黑名單標識位設(shè)置為第一值;如果同步數(shù)據(jù)包的數(shù)量沒有達到同步包閾值,則將所述IP地址從黑名單鏈表中刪除。
[0071]所屬技術(shù)領(lǐng)域的技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于計算機可讀取存儲介質(zhì)中,并被通訊設(shè)備內(nèi)部的處理器執(zhí)行,前述的程序在被執(zhí)行時處理器可以執(zhí)行包括上述方法實施例的全部或者部分步驟。其中,所述處理器可以作為一個或多個處理器芯片實施,或者可以為一個或多個專用集成電路(Applicat1n Specific Integrated Circuit,ASIC)的一部分;而前述的存儲介質(zhì)可以包括但不限于以下類型的存儲介質(zhì):閃存(Flash Memory)、只讀存儲器(Read-Only Memory,ROM)、隨機存取存儲器(Random Access Memory,RAM)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0072]最后應(yīng)說明的是:以上實施例僅用以說明本申請的技術(shù)方案,而非對其限制;盡管參照前述實施例對本申請進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請各實施例技術(shù)方案的范圍。
【主權(quán)項】
1.一種防止同步包攻擊的方法,其特征在于,包括: 預先在內(nèi)核注冊鉤子函數(shù)、創(chuàng)建跟蹤監(jiān)測鏈表和黑名單鏈表,并設(shè)置同步包閥值和重檢間隔時間; 利用鉤子函數(shù)解析客戶端向服務(wù)器發(fā)送的TCP連接數(shù)據(jù)包,其中客戶端和服務(wù)器第一次握手發(fā)的TCP連接數(shù)據(jù)包為同步數(shù)據(jù)包; 當來自同一 IP地址的同步數(shù)據(jù)包的數(shù)量達到同步包閥值時,將所述IP地址添加到跟蹤監(jiān)測鏈表中,對所述IP地址對應(yīng)的客戶端后續(xù)發(fā)送的TCP連接數(shù)據(jù)包進行跟蹤; 對跟蹤的TCP連接數(shù)據(jù)包進行解析,如果確定所述TCP連接數(shù)據(jù)包是攻擊數(shù)據(jù)包,則將所述TCP連接數(shù)據(jù)包對應(yīng)的IP地址添加到黑名單鏈表中。2.如權(quán)利要求1所述的防止同步包攻擊的方法,其特征在于,所述跟蹤監(jiān)測鏈表包括IP地址字段和TCP連接數(shù)據(jù)包字段;所述跟蹤監(jiān)測鏈表的長度為要跟蹤檢測的IP地址的數(shù)目。3.如權(quán)利要求1所述的防止同步包攻擊的方法,