Linux流量清洗是分层识别、实时过滤、动态响应的组合动作,核心是保障合法请求优先通行并快速压制明显恶意行为,针对SYN Flood、UDP/ICMP Flood、HTTP Flood等不同攻击类型采取内核调优、iptables限速、应用层限频及上游协同清洗等差异化策略。

Linux 网络流量清洗不是“一刀切”的开关,而是分层识别、实时过滤、动态响应的组合动作。核心目标不是拦住所有异常流量,而是让合法请求优先通行,同时快速压制明显恶意行为。
识别攻击类型,决定清洗策略
不同 DDoS 攻击对清洗方式要求不同:
-
SYN Flood:大量半开 TCP 连接,消耗连接队列。清洗重点是启用内核级防护(
tcp_syncookies=1)+ iptables 限速规则(如每秒只放行 1 个新 SYN 包) -
UDP/ICMP Flood:无状态协议泛洪,不依赖握手。清洗关键在于速率限制(如
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/s -j ACCEPT),并丢弃超限包 -
HTTP Flood:看起来像正常访问,但集中在特定 URI 或 User-Agent。需应用层介入,如用
mod_evasive(Apache)或nginx rate_limit按 IP 或 cookie 限频
用 iptables 实现基础流量清洗
iptables 是 Linux 原生、低开销的清洗入口,适合在攻击初期快速部署:
- 限制单 IP 并发连接数(防慢速攻击):
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT - 限制每秒新建连接速率(防 SYN Flood):
iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 1/s --limit-burst 5 -j ACCEPT - 封禁已确认的攻击源(配合日志分析):
iptables -I INPUT -s 192.168.1.100 -j DROP - 默认拒绝 ICMP 回显请求(除非业务必需):
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
引入自动化清洗工具(如 DDoS-Deflate)
人工盯日志+手动封 IP 效率低,DDoS-Deflate 这类轻量脚本可自动完成检测→封禁→解封闭环:
- 它通过
netstat或ss统计每个 IP 的并发连接数,超过阈值(如 100)即调用 iptables 封禁 - 支持配置封禁时长(
DOS_BAN_TIME)、解封检查间隔(DOS_UNBAN_INTERVAL) - 注意:它不替代防火墙规则,而是作为补充;封禁前建议先记录日志,避免误伤 CDN 节点或 NAT 后用户
向上游协同清洗(关键防线)
当攻击流量远超服务器带宽(如 10Gbps+),本地清洗已失效,必须依赖上游:
- 联系 ISP 或云服务商,申请启用 BGP Flowspec 或 RTBH(Remotely Triggered Black Hole)路由黑洞,将攻击流量在骨干网边缘丢弃
- 接入专业清洗服务(如 Cloudflare、AWS Shield Advanced、Akamai Prolexic),它们提供 DNS 接入、JS 挑战、IP 信誉库等多维清洗能力
- 使用 CDN 隐藏源站 IP,让攻击流量打在边缘节点而非真实服务器,天然实现第一层分流与清洗


















