SYN 洪泛攻擊以及如何解決SYN 洪泛攻擊


在三次握手的過程中,服務器為了響應一個受到的SYN報文段,會分配並初始化連接變量和緩存,然后服務器發送一個SYNACK報文段進行響應,並等待客戶端的ACK報文段。如果客戶不發送ACK來完成該三次握手的第三步,最終(通常在一分多鍾之后)服務器將終止該半開連接並回收資源。

這種TCP連接管理協議的特性就會有這樣一個漏洞,攻擊者發送大量的TCP SYN報文段,而不完成第三次握手的步驟。隨着這種SYN報文段的不斷到來,服務器不斷為這些半開連接分配資源,從而導致服務器連接資源被消耗殆盡。這種攻擊就是SYN泛供攻擊

為了應對這種攻擊,現在有一種有效的防御系統,稱為SYN cookie。SYN cookie的工作方式如下:

(1) 當服務器接收到一個SYN報文段時,它並不知道該報文段是來自一個合法的用戶,還是這種SYN洪泛攻擊的一部分。因為服務器不會為該報文段生成一個半開的連接。相反,服務器生成一個初始TCP序列號,該序列號是SYN報文段的源IP地址和目的IP地址,源端口號和目的端口號以及僅有服務器知道的秘密數的復雜函數(散列函數)。這種精心制作的初始序列號稱為為“cookie”。服務器則發送具有這種特殊初始序號的SYNACK報文分組。服務器並不記憶該cookie或任何對應於SYN的其他狀態信息。

(2) 如果該客戶是合法的,則它將返回一個ACK報文段。當服務器收到該ACK報文段,需要驗證該ACK是與前面發送的某個SYN相對應。由於服務器並不維護有關SYN報文段的記憶,所以服務器通過使用SYNACK報文段中的源和目的IP地址與端口號以及秘密數運行相同的散列函數。如果這個函數的結果(cookie值)加1和在客戶的ACK報文段中的確認值相同的話,那么服務器就會認為該ACK對應於較早的SYN報文段,因此它是合法的。服務器則會生成一個套接字的全開連接。

(3) 另一方面,如果客戶沒有返回一個ACK報文段,說明之前的SYN報文段是洪泛攻擊的一部分,但是它並沒有對服務器產生危害,因為服務器沒有為它分配任何資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM