第二十一章 TCPSYNFlood防禦方法
一、TCP連接監控(TCPInterception)
為了有效的防範TCPSYNFlood攻擊,在保證通過慢速網絡的用戶可以正常建立到服務端的合法連接的同時,需要盡可能的減少服務端TCPBacklog的清空時間,大多數防火牆采用了TCP連接監控的工作模式。其工作流程如下圖所示:
1.防火牆接到來自用戶端Z的SYN連接請求,在本地建立麵向該連接的監控表項;
2.防火牆將該連接請求之轉發至服務端A;
3.服務端A相應該連接請求返回SYN/ACK,同時更新與該連接相關聯的監控表項;
4.防火牆將該SYN/ACK轉發至用戶端Z;
5.防火牆發送ACK至服務端A,同時服務端A中TCPBacklog該連接的表項被移出;
6.這時,根據連接請求是否合法,可能有以下兩種情況發生:
a.如果來自用戶端Z的連接請求合法,防火牆將該ACK轉發至服務端A,服務端A會忽略該ACK,因為一個完整的TCP連接已經建立;
b.如果來自用戶端Z的連接請求非法(來源IP地址非法),沒有在規定的時間內收到返回的ACK,防火牆會發送RST至服務端A以拆除該連接。
7.開始TCP傳輸過程。
由此可以看出,該方法具有兩個局限:
1.不論是否合法的連接請求都直接轉發至服務端A,待判斷為非法連接(無返回ACK)時才采取措施拆除連接,浪費服務端係統資源;
2.防火牆在本地建立表項以監控連接(一個類似TCPBacklog的表),有可能被攻擊者利用。
二、天網DoS防禦網關
天網防火牆采用經過優化的TCP連接監控工作方式。該方式在處理TCP連接請求的時候,在確定連接請求是否合法以前,用戶端Z與服務端A是隔斷的。其工作流程如下圖所示:
1.防火牆接到來自用戶端Z的SYN連接請求;
2.防火牆返回一個經過特殊處理的SYN/ACK至客戶端Z以驗證連接的合法性;
3.這時,根據連接請求是否合法,可能有以下兩種情況發生:
a.防火牆接收到來自客戶端Z的ACK回應,該連接請求合法。轉至第4步繼續;
b.防火牆沒有接收到來自客戶端Z的ACK回應,該連接請求非法,不進行處理;
4.防火牆在本地建立麵向該連接的監控表項,並發送與該連接請求相關聯的SYN至服務端A;
5.防火牆接到來自服務端A的SYN/ACK回應;
6.防火牆返回ACK以建立一個完整的TCP連接;
7.防火牆發送ACK至客戶端Z,提示可以開始TCP傳輸過程。
其中,在第2/3/4/7步過程中,防火牆內部進行了如下操作:
1.在第2步中,為了驗證連接的合法性,防火牆返回的SYN/ACK是經過特殊處理的,並提示客戶端Z暫時不要傳送有效數據;
2.在第3步中,防火牆接收到來自客戶端Z的ACK,檢驗其合法性。
3.在第4步中,防火牆在本地建立麵向該連接的監控表項,同時發送與該連接相關的SYN至服務端A;
4.在第7步中,防火牆通過將TCP數據傳輸與監控表項進行比對,並調整序列號和窗口以使之匹配。開始TCP數據傳輸。
在這裏,天網防火牆通過高效的算法(64K位的Hash)提供了超過30萬以上的同時連接數的容量,為數據傳輸的高效和可靠提供了強有力地保障。