# DDoS 清洗中心基礎了解


## 正文

清洗中心在你受到 DDoS 攻擊的時候，會自動把你導流到清洗中心（可能使用 BGP reroute, Anycast DNS, Tuneel），過濾完回到使用者的伺服器（可能透過 Tunnel or 直接送回 ISP 網路）。

伺服器在回送的時候可能會走網路回到使用者，或有些用 Tunnel 強制回到清洗中心，走原路回去，這是對稱回程（Return Path 也繞清洗中心）。

如果是走原路回去，就可以用 Syn proxy，沒有走原路回去，不能用 Syn proxy。

像 Cisco Systems、NETSCOUT（Arbor）、Radware 這類廠商提供給清洗中心設備，他們會有自己的高吞吐 network appliance（硬體設備）。使用 FPGA / ASIC 加速封包檢測。

然後他們會有自己的控制平台，偵測系統。

這種通常都是無狀態防禦，也就是不紀錄 session，像是

* ACL / 黑白名單
* Rate limiting（基於 IP / prefix），不記 session，只記「計數」
* SYN Proxy (要原路返回)
* Packet filtering / signature match
  * 根據像是 TTL/Flag 異常，丟掉封包
* uRPF 逆向轉發
* 黑洞
* 採樣後的統計狀態，不是建立狀態，而是紀錄像是正常情況下，某網段的 UDP 與 TCP 比例是多少？SYN 與 ACK 的非對稱比例是多少？
  * 負責看流量行為的 Cisco Detector 並非串接（Inline）在主幹線上，而是透過 NetFlow 數據匯出 或 SPAN（鏡像流量） 來獲取資料
* 動態粒度與多級聚合結構（Dynamic Granularity）
  * MULTOPS 數據結構
  * 粗粒度聚合（Coarse Granularity）： 系統初期只記錄大網段（例如 /16 或 /24）的封包進出比例與速率
  * 動態分裂（Dynamic Sub-nodes）： 只有當某個網段的流量突破特定閾值（Threshold），判定有異常時，系統才會在記憶體中動態建立子節點（Sub-node），把監控粒度切細到更小的網段 ，最後一路往下追查到具體的單一 IP
  * 動態釋放： 一旦流量恢復正常，該記憶體節點就會立刻被回收，這讓記憶體消耗量始終保持在 $O(N)$ 的可控範圍內，有效防止狀態表溢出

不能像是防火牆建立狀態，因為容易狀態表塞報，有狀態他會氣路 session timeout, tcp state，因此可以 drop half-open flood，偵測怪異的建立連線速率，使用者的請求模式，慢速攻擊（偵測到 state 太慢了）。

<!-- TODO 感覺可以更詳細，下面那個簡報滿詳細講的，網路上一定有更多 -->

## Reference

* [Cisco DDoS Protection Solutions Overview](https://www.scribd.com/document/890512800/Ddos-Protection)

