說在前面 : 我只用這方式對付了 百M 的 DDoS 流量。在我認為,使用頻寬來壓制這件事情無解;也就是說,如果對方的水管比你粗,請不要浪費時間使用下面的方法。
另外,這只是我個人經驗,不代表一定有用。如果你不確定這樣做會發生什麼事,請找顧問公司… orz
1. 利用 sysctl,調整對於packet處理需要的等待時間:例如減少 tcp three way handshake 的 SYN ACK 等待時間、SYN backlog …. etc (詳細內容網路上有很多可以抄,請用Google 找 iptables+DDoS)
2. 減少濫用 iptables Logging,但Logging 是必要的:我看過很多人下了這樣的東西… iptables -A INPUT -p udp –dport XX -j LOG,然後只要一被打,iptables 的 LOG 就開始狂操硬碟。但是如果不做Logging又不能瞭解發生了什麼事。建議加上 limit 會好一點。
3. 參考上面的 log,先 DROP 掉不正常的 packet。(通常會有些奇怪的 pattern ,比方說會用 src port 80 來連我的 port 80 … )
4.把網卡driver 更新 , compile 進 kernel 裡。
5. 如果是 Web Server 被打,請在 Web Server 前面擋其他的工具。