配置udp和icmp流量限制需分层设防:用iptables按源ip限速icmp(3/sec+burst 6)并放行type 3/11,全局限速udp(20/sec+burst 50)并封禁7/13/19端口,同时启用rp_filter=1、icmp_echo_ignore_broadcasts=1、accept_source_route=0等内核参数加固。

配置 UDP 和 ICMP 流量限制,关键在于分层设防:用 iptables 做包级速率控制和端口过滤,配合内核参数堵住协议栈漏洞,既防泛洪又不破坏基础网络功能。
ICMP 限速要按源 IP 控制,别只限全局
全局限速(比如每秒 1 个 ping)容易被单个攻击者占满配额,真正有效的做法是按源 IP 分别限速:
- 每秒最多允许 3 个 echo-request,突发可到 6 个:
sudo iptables -A INPUT -p icmp --icmp-type 8 -m hashlimit --hashlimit-above 3/sec --hashlimit-burst 6 --hashlimit-mode srcip --hashlimit-name icmp_per_ip -j ACCEPT - 紧接一条兜底规则,丢弃所有未匹配的 echo-request:
sudo iptables -A INPUT -p icmp --icmp-type 8 -j DROP - 务必放行 type 3(destination-unreachable)和 type 11(time-exceeded),否则 traceroute 失效、TCP 超时无法通知,导致静默断连
UDP 防御重在控速 + 封高危端口 + 关服务
UDP Flood 常利用响应型服务放大流量,不能简单禁 UDP,而要精准压制风险点:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 限制整体入向 UDP 包速率(每秒不超过 20 个,突发 50 个):
sudo iptables -A INPUT -p udp -m limit --limit 20/sec --limit-burst 50 -j ACCEPT - 立即封禁已知高危端口(Echo/Daytime/Chargen):
sudo iptables -A INPUT -p udp --dport 7 -j DROP
sudo iptables -A INPUT -p udp --dport 13 -j DROP
sudo iptables -A INPUT -p udp --dport 19 -j DROP - 检查并关闭系统上运行的 xinetd 或 inetd 管理的这些服务,光封端口不够,进程还在监听就可能被绕过
必须启用的内核防护参数
iptables 只管转发路径,内核参数才能从底层抑制伪造包和广播响应:
- 开启反向路径过滤(防 IP 源地址伪造):
echo "net.ipv4.conf.all.rp_filter = 1" | sudo tee -a /etc/sysctl.conf - 确认禁用广播 ICMP 响应(防 Smurf 攻击):
echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" | sudo tee -a /etc/sysctl.conf - 关闭源路由(阻断常见路径劫持):
echo "net.ipv4.conf.all.accept_source_route = 0" | sudo tee -a /etc/sysctl.conf - 全部写入后执行:
sudo sysctl -p
验证是否生效,别只改不测
改完规则必须验证,否则等于没做:
- 用 sudo iptables -L -n -v 查看 INPUT 链中 ICMP/UDP 规则的 packet 计数,确认有匹配流量
- 用 ping -c 10 your-server-ip 测试前 3~5 次能通,后续被限速丢弃
- 用 hping3 -2 -p 7 your-server-ip 模拟 UDP Flood,观察是否被 DROP 规则拦截
- 检查 sysctl net.ipv4.conf.all.rp_filter 返回值是否为 1










