分散式阻斷服務攻擊 (DDoS)
Published: Sat Feb 01 2025 | Modified: Fri Feb 06 2026 , 2 minutes reading.
1. 定義
分散式阻斷服務 (Distributed Denial of Service, DDoS) 是一種可用性攻擊。攻擊者利用多個被攻陷的電腦系統(即 殭屍網路 Botnet)作為攻擊源,向目標(如伺服器、網站或其他網路資源)發起攻擊,導致合法用戶無法獲得服務。
「分散式」的特性使得防禦變得極其困難,因為僅封鎖單個來源是遠遠不夠的。
2. 技術原理
DDoS 攻擊針對 OSI 模型的不同層級:
- 容量消耗型攻擊 (Layer 3/4): 旨在耗盡頻寬。例如:UDP 洪水 (UDP Flood)、ICMP 洪水、DNS/NTP 放大攻擊。
- 協定限制型攻擊 (Layer 3/4): 消耗伺服器資源(如防火牆連接表、負載平衡器)。例如:SYN 洪水 (SYN Flood)(利用 TCP 三次握手缺陷)。
- 應用層攻擊 (Layer 7): 針對特定的重型 Web 應用程式。例如:HTTP 洪水、Slowloris(通過發送不完整的請求長期佔用連接)。
3. 攻擊流程 (以 Mirai 殭屍網路為例)
flowchart TD
C2[攻擊者 C2 伺服器]
subgraph Botnet [殭屍網路]
IoT1[受感染的攝影機]
IoT2[受感染的路由器]
IoT3[受感染的錄影機]
end
Target[目標 Web 伺服器]
C2 --"指令:攻擊目標 IP"--> Botnet
IoT1 --"UDP 洪水"--> Target
IoT2 --"TCP SYN 洪水"--> Target
IoT3 --"HTTP GET /"--> Target
Note right of Target: 頻寬飽和<br/>CPU 佔用 100%<br/>合法用戶請求被丟棄4. 真實案例:Dyn DNS 攻擊 (2016)
目標: Dyn (主要的 DNS 服務提供商)。 攻擊類型: 大規模容量型 IoT 殭屍網路 (Mirai)。 流量峰值: 估計達到 1.2 Terabits per second (Tbps)。
事件過程: Mirai 殭屍網路 在網際網路上掃描使用預設密碼(如 admin/admin)的 IoT 設備(攝影機、路由器等),並感染了數十萬台設備。 2016 年 10 月 21 日,這些設備接到指令,向 Dyn 的 DNS 基礎設施發起大量的 TCP 和 UDP 53 埠洪水攻擊。
影響: 由於 Dyn 為許多主流網站提供 DNS 服務,這次攻擊導致數百萬用戶遭遇「斷網」。Netflix、Twitter、Reddit、CNN 和 GitHub 等網站在北美和歐洲變得無法訪問。這不是因為他們的伺服器當機了,而是因為瀏覽器無法解析他們的網域名稱。
5. 深度防禦策略
A. 任播 (Anycast) 網路路由
使用任播網路(由 Cloudflare、AWS CloudFront 或 Akamai 等 CDN 提供)。
- 機制: 多個全球節點發布相同的 IP 地址。
- 防禦效果: 攻擊流量會被自然地分散到物理位置最近的資料中心,防止單點被壓垮。這種方式將「洪水」稀釋到了全球網路中。
B. WAF 與速率限制 (應用層 Layer 7)
針對應用層攻擊:
- 人機識別: 使用 CAPTCHA 或 JS 挑戰(瀏覽器完整性檢查)來區分機器人與真實人類。
- 速率限制 (Rate Limiting): 限制每個 IP 的請求頻率(如每分鐘 100 次請求)。
- WAF 規則: 封鎖已知的惡意爬蟲 User-Agent 或異常流量特徵。
C. 清洗中心 (Scrubbing Centers, Layer 3/4)
針對容量型攻擊:
- 當檢測到攻擊時,通過 BGP 路由將流量引導至專業的「清洗中心」。
- 清洗中心過濾掉惡意資料包(如畸形的 UDP、沒有 ACK 的 SYN),僅將乾淨的流量轉發回源站伺服器。
D. 減小攻擊面
- 不要直接公開源站伺服器的 IP。
- 使用白名單,僅允許來自 CDN 供應商 IP 段的流量。
- 關閉所有不必要的埠(如 SSH/FTP),或將其限制在 VPN 訪問內。
