DDoS 基礎了解
目錄
基礎簡介
常常用到的網路協定包含:
- L3: ICMP
- L4: TCP/UDP
- L7: HTTP
打的受害目標:
- 網卡頻寬
- 一般電腦
- CPU 的軟中斷 (%si)。即使頻寬沒滿,如果每秒湧入千萬個小封包,CPU 會花光所有時間在處理網卡中斷,導致系統崩潰
- Kernel State Tables,SYN Backlog Queue 與 Conntrack Table。核心必須記住「誰還沒完成三次握手」。當這些表格滿了,系統會直接丟棄後續所有新連線
- 防火牆
- 也是有 Conntrack Table
- 應用程式的資源,像是 Web Server (Nginx/Apache) 或資料庫
- File Descriptors (FD)、Thread Pool、Memory、Database Connections
kola:~$ sysctl net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_max = 262144
kola:~$ sysctl net.netfilter.nf_conntrack_count
net.netfilter.nf_conntrack_count = 213
kola:~$ cat /proc/sys/net/netfilter/nf_conntrack_buckets
262144這是系統允許同時追蹤的最大連線數量。當這個數字滿了,系統就會開始丟棄新的連線封包,一般電腦不一定會用到 nf_conntrack,但很常會用到,像是 Docker 等應用程式。
TCP/UDP
- TCP 因為可能要三層握手,所以大部分攻擊時不能造假 IP,所以會需要像是殭屍網路有真的 IP 來發起攻擊
- UDP 可以造假 IP,因為不用握手
頻寬消耗型攻擊
通常攻擊封包會偽造來源 IP 避免被禁用。
L3
- ICMP flood: 就是 Echo,不停地 Ping,對方也必須回應,所以會導致對方的上傳頻寬消耗(上傳頻寬比較稀有)
- 更進階的利用反射的攻擊叫做 Smurf Attack,等下章節會講
- ICMPv6 在 IPv6 比較重要,因為 IPv6 的鄰居發現(Neighbor Discovery, ND)和路由宣告(RA)都靠 ICMPv6
- IGMP flood: 管理 Multicast 成員的協議,通常只能在 LAN 裡面發生
上面兩個現在都被 ISP 機制防禦了,在邊界路由器上都有設定 ICMP Rate Limiting(限速)。如果你發出的 Ping 流量大到像洪水,邊界設備在進到受害者網段前就會直接丟包(Drop)。
而 IGMP 是用來管理多播(Multicast)的協議。絕大多數的 ISP 邊界路由器會直接過濾掉來自外部(WAN 端)的 IGMP 封包,IGMP 的 TTL(存活時間)通常被強制設為 1。這代表這個封包「不准跨過路由器」。
L4
- UDP flood: 根據設定封包的大小,可以對不同的受害者造成困擾
- 小包:像是 64 byte,數量較多但小,對 router 造成困擾
- 大包:像是 1500 byte,超過 MTU 單元,強迫受害者重組封包,數量較少但大包,對頻寬造成困擾
- TCP PUSH + ACK flood: 許多簡單的防火牆或路由器為了效能,會採用「無狀態(Stateless)」過濾。它們會直接放行所有帶著 ACK 的封包,因為這看起來像是「已經建立連線(Established)」的合法流量
- 正常的 TCP 會為了效能把收到的資料先放在核心緩衝區(Buffer),等集滿一大塊再交給應用程式(如 NGINX)。但 PSH Flag 是在告訴核心:「不要等了,立刻(Push)把這段資料丟給應用程式處理!」
- 收到 ACK 的時候,核心必須先在 TCP 連接表(TCB) 或 Conntrack 表 中搜尋:「這組 IP+Port 的連線真的存在嗎?」,如果不存在會回 RST 封包
這邊會有兩種表格:
- TCP 雜湊表 (TCP Hash Table),核心都會有
- Conntrack Table,只有特定開啟才有
放大攻擊
UDP 放大攻擊是一種常見的反射型 DDoS 攻擊,攻擊者利用開放的 UDP 服務來產生比原始請求更大的回應流量,將這些流量反射到受害者身上,造成網路擁塞或服務中斷。
…
L4 資源消耗型攻擊 (攻擊連接表)
如果攻擊者知道你沒開連線表,他可以發動更高級的 「無狀態攻擊」:因為你沒記住連線狀態,他可以繞過很多行為偵測規則。
所以這邊是假設對方已經開啟連接表,或者可能有防火牆,我們要打他,這時候連接表還是可能成為瓶頸,受到攻擊。
…
L7 資源消耗型攻擊 (消耗目標 IO)
…
防禦
L3/L4
…
L7
…