linux需禁用accept_redirects与send_redirects、设secure_redirects=0、accept_source_route=0、rp_filter=1;windows则通过注册表disableredirects=1加防火墙拦截icmp类型5/137实现双重防护。

要拒绝源地址伪造的 ICMP 重定向包,核心不是单纯“拦 ICMP”,而是从网络层源头切断其生效条件——既不让系统接收伪造重定向,也不让本机发出可疑重定向。Windows 和 Linux 的实现逻辑不同,但目标一致:阻断非法路由操控。
Linux 系统:关闭接收 + 启用反向路径校验
Linux 下伪造 ICMP 重定向攻击常依赖接收并信任恶意重定向报文。需组合配置内核参数:
-
禁用所有接口的重定向接收:执行
sysctl -w net.ipv4.conf.all.accept_redirects=0,同时对默认和各网卡单独设为 0(如net.ipv4.conf.eth0.accept_redirects=0),避免遗漏 -
关闭“安全重定向”校验:设
net.ipv4.conf.all.secure_redirects=0,防止旧机制被绕过 -
启用严格反向路径过滤:设
net.ipv4.conf.all.rp_filter=1,使系统丢弃“入包源 IP 不在路由表反向可达路径上”的流量——这是识别伪造源地址最有效的手段 -
禁用源路由选项:设
net.ipv4.conf.all.accept_source_route=0,堵住另一类 IP 地址伪造入口
将上述参数写入 /etc/sysctl.conf 并运行 sysctl -p 持久生效。
Windows 系统:禁用重定向功能 + 防火墙补充拦截
Windows 不像 Linux 提供细粒度内核级重定向控制,但可通过注册表+防火墙双保险:
-
注册表禁用重定向处理:打开
regedit,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,新建 DWORD 值 DisableRedirects,设为 1 -
防火墙阻止入站 ICMP 重定向类型:用
wf.msc打开高级安全防火墙,新建入站规则 → 类型选“自定义”→ 协议选“ICMPv4”→ 点“自定义…”→ 只勾选类型 5(重定向)→ 作用域不限 → 动作设为“阻止” - 若使用 IPv6,同样新建一条协议为 ICMPv6、类型为 137(IPv6 重定向)的阻止规则
验证是否生效
配置后建议做两件事:
- 用另一台同网段机器,借助
scapy构造源 IP 伪造的 ICMP 重定向包发向目标主机,观察其路由表是否变动(应无变化) - 在目标主机执行
route print(Windows)或ip route show(Linux),确认没有新增或被修改的默认/主机路由条目
不复杂但容易忽略:单靠防火墙拦类型 5 报文不够,必须配合内核/注册表级禁用,才能彻底消除伪造重定向的落地条件。











