SYN 洪水攻擊利用 TCP/IP 交握中的漏洞,嘗試中斷 Web 服務。
閱讀本文後,您將能夠:
相關內容
訂閱 TheNET,這是 Cloudflare 每月對網際網路上最 流行見解的總結!
複製文章連結
SYN 洪水攻擊 (半開放式攻擊) 是一種阻斷服務 (DDoS) 攻擊,旨在透過消耗所有可用的伺服器資源,使伺服器無法用於合法流量。透過重複傳送初始連線要求 (SYN) 封包,攻擊者能夠淹沒目標伺服器上所有可用的連接埠,使目標裝置緩慢回應或完全不回應合法流量。
SYN 洪水攻擊透過利用 TCP 連線的交握程序進行工作。在正常條件下,TCP 連線會呈現三個不同的程序以進行連線。
為建立阻斷服務,攻擊者會利用這樣一個事實:當收到一個初始 SYN 封包後,伺服器將使用一個或多個 SYN/ACK 封包進行回應,並等待交握的最後一個步驟。其工作原理如下:
在網路中,當伺服器開啟某個連線,而連線另一端的機器卻未開啟,此連線可視為半開放。在此類型的 DDoS 攻擊中,目標伺服器將繼續保持開啟連線,並在連接埠再次可用前等待每個連線逾時。結果便是此類型的攻擊可視為「半開放式攻擊」。
透過使用 SYN 洪水攻擊,惡意執行者可嘗試在目標裝置或服務中使用極少流量 (而非其他 DDoS 攻擊) 建立阻斷服務。無需使用巨流量攻擊,它旨在使目標周圍的網路基礎結構飽和,而 SYN 攻擊僅需大於目標作業系統中的可用待處理項目。如果攻擊者能在逾時前確定待處理項目的大小及每個連線開啟的時長,攻擊者就能定位停用此系統所需的具體參數,從而使總流量減少至建立阻斷服務所需的最小數量。
SYN 洪水攻擊漏洞已由來已久,並且已運用一些緩解途徑。一些方法包括:
目標裝置中的每個作業系統都有其允許的特定數量的半開放式連線。一個作業系統之所以會對於大量 SYN 封包作出回應,旨在使得該作業系統允許可行的半開放式連線之最大數量增加。若要成功增加待處理項目的最大數量,該系統必須保留額外的記憶體資源以處理所有新的要求。如果系統沒有足夠的記憶體來處理增加的待處理項目佇列大小,系統效能將受到不利影響,但仍應該會優於阻斷服務。
另一個緩解策略是當待處理項目一旦填滿,覆寫最舊的半開放式連線。此策略要求,可以用比待處理項目填滿惡意 SYN 封包更少的時間,完全建立合法連線。當攻擊量增加時,或待處理項目大小過小而無法實行時,將無法進行此特定防禦。
此策略涉及由伺服器建立 Cookie。為避免在填滿待處理項目後發生斷開連線的風險,伺服器將回應帶有 SYN-ACK 封包的每個連線要求,但另一方面,會刪除待處理項目中的 SYN 要求,將此要求從記憶體中移除,並使連接埠保持開啟狀態以準備建立新的連線。如果連線為合法要求,最終 ACK 封包將由用戶端機器傳送回伺服器,隨後,伺服器將重新建構 (具有某些限制) SYN 待處理項目佇列項目。儘管此緩解措施確實會丟失一些有關 TCP 連線的資訊,但總比因受到攻擊而允許阻斷服務發生在合法使用者身上來得好。
Cloudflare 可透過介於目標伺服器與 SYN 洪水攻擊之間,在某種程度上緩解此類型的攻擊。建立初始 SYN 要求後,Cloudflare 將在雲端處理交握程序,保留與目標伺服器的連線,直到 TCP 交握完成為止。此策略將保持與假 SYN 封包連線的資源成本從目標伺服器中扣除,並將其置於 Cloudflare Anycast network。瞭解更多有關 Cloudflare DDoS 保護的工作原理。