類型:SYN-Flood 攻擊
SYN-Flood攻擊是指攻擊者利用TCP三次握手的原理:
(1)攻擊者向被攻擊服務器發送一個包含SYN標志的TCP報文,SYN(Synchronize)即同步報文。同步報文會指明客戶端使用的端口以及TCP連接的初始序號。這時同被攻擊服務器建立了第一次握手。
(2)受害服務器在收到攻擊者的SYN報文后,將返回一個SYN+ACK的報文,表示攻擊者的請求被接受,同時,TCP序號被加一,ACK(Acknowledgment)即確認,這樣就同被攻擊服務器建立了第二次握手。
(3)攻擊者也返回一個確認報文ACK給受害服務器,同樣TCP序列號被加一,到此一個TCP連接完成,三次握手完成 。
SYN Flood是當前最流行的 DoS(拒絕服務攻擊)與 DDoS Distributed Denial Of Service(分布式拒絕服務攻擊)的方式之一,這是一種利用TCP協議缺陷,發送大量偽造的TCP連接請求,使被攻擊方資源耗盡(CPU滿負荷或內存不足)的攻擊方式 。
具體原理是:TCP連接的三次握手中,假設一個用戶向服務器發送了SYN報文后突然死機或掉線,那么服務器在發出SYN+ACK應答報文后是無法收到客戶端的ACK報文的(第三次握手無法完成),這種情況下服務器端一般會重試(再次發送SYN+ACK給客戶端)并等待一段時間后丟棄這個未完成的連接。這段時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數量級(大約為30秒-2分鐘);一個用戶出現異常導致服務器的一個線程等待1分鐘并不是什么很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況(偽造IP地址),那么服務器端將為了維護一個非常大的半連接列表而消耗非常多的資源。即使是簡單的保存并遍歷也會消耗非常多的CPU時間和內存,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。實際上,如果服務器的TC P/IP棧不夠強大,那么最后的結果往往是堆棧溢出崩潰——即使服務器端的系統足夠強大,服務器端也將忙于處理攻擊者偽造的TCP連接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),此時,從正常客戶的角度看來,服務器失去響應,這種情況就稱做:服務器端受到了SYN Flood攻擊(SYN洪水攻擊)
如果系統遭受SYN Flood,那么第三步就不會有,而且無論在防火墻還是S都不會收到相應的第一步的SYN包,所以我們就擊退了這次SYN洪水攻擊
網絡安全學院 社區 Wiki
推薦文章: