直接禁用ICMP重定向收发是最有效防御方式,需同时设IPv4/IPv6的accept_redirects和send_redirects为0(共六行),补全secure_redirects=0、accept_source_route=0、rp_filter=1,并用iptables或nftables拦截ICMP类型5,最后通过sysctl -a | grep redirect验证全为=0且ip route get 8.8.8.8路由正常。

直接禁用 ICMP 重定向收发,是防御这类攻击最有效的方式——它从内核协议栈源头切断攻击路径,比防火墙拦截更底层、更可靠。非网关类服务器(如 Web、数据库、API)必须禁用,否则可能被诱导修改路由表,导致流量劫持。
关闭 IPv4/IPv6 的接收与发送
只关接收或只关发送都不够。攻击者可能利用本机转发能力作跳板,也可能伪造重定向报文误导本地路由。需同时禁用:
- 编辑 /etc/sysctl.d/99-secure.conf(推荐)或 /etc/sysctl.conf
- 添加以下六行(IPv4 和 IPv6 全覆盖):
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0 - 执行 sudo sysctl -p /etc/sysctl.d/99-secure.conf 立即生效
补全配套内核参数防绕过
ICMP 重定向常与其他 IP 层机制配合使用,仅关 redirect 不足以构建完整防线:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- net.ipv4.conf.all.secure_redirects = 0:禁用已过时且易绕过的“安全重定向”校验
- net.ipv4.conf.all.accept_source_route = 0:阻止源路由选项,防范 IP 地址伪造
- net.ipv4.conf.all.rp_filter = 1:启用反向路径过滤,自动丢弃源 IP 不匹配入接口的包(多网卡环境可先试 =2)
用 iptables 拦截残余 ICMP 类型
内核参数禁用后,仍建议在防火墙层做兜底过滤,尤其针对类型 5(重定向)报文:
- 丢弃所有入站 ICMP 重定向:
iptables -A INPUT -p icmp --icmp-type 5 -j DROP - 若使用 nftables(新系统推荐):
nft add rule ip filter input ip protocol icmp icmp type redirect drop - 注意:此规则不能替代内核参数,仅作为纵深防御补充
验证是否全部生效
配置完成后务必验证,避免遗漏或拼写错误:
- 检查重定向相关参数:
sysctl -a | grep redirect | grep "= 0" —— 应全部输出为 = 0 - 确认关键参数已加载:
sysctl net.ipv4.conf.all.accept_redirects 返回 0 - 测试业务连通性:
ip route get 8.8.8.8 确保默认路由未受影响

















