关闭 accept_source_route=0 是防御源路由欺骗攻击最直接有效的内核级措施,需同时配置 all 和 default 接口策略,并协同启用 rp_filter、禁用 ICMP 重定向及 IP 转发等加固手段。

关闭 accept_source_route 是防御源路由欺骗攻击最直接有效的内核级措施。该参数控制内核是否接受带有源路由选项(Strict/Loose Source Routing)的 IPv4 数据包,而攻击者常利用它绕过防火墙、伪装源地址或探测内网拓扑。
为什么必须禁用 accept_source_route
源路由允许发送方在 IP 头中指定数据包经过的路径,这会破坏默认路由策略。攻击者可构造含私有地址(如 192.168.x.x)作为“源”的源路由包,诱使目标主机向内部地址回包,从而实现隐蔽扫描、反射探测甚至中间人跳转。Linux 默认虽大多禁用,但部分发行版或容器环境可能开启,不可依赖默认值。
正确配置 accept_source_route=0
需同时设置全局和默认接口策略,避免遗漏:
- 编辑配置文件:
echo "net.ipv4.conf.all.accept_source_route = 0" | sudo tee -a /etc/sysctl.d/50-net-security.conf - 补充接口级设置:
echo "net.ipv4.conf.default.accept_source_route = 0" | sudo tee -a /etc/sysctl.d/50-net-security.conf - 立即生效:
sudo sysctl -p /etc/sysctl.d/50-net-security.conf - 验证结果:
sysctl net.ipv4.conf.all.accept_source_route net.ipv4.conf.default.accept_source_route应均返回 0
配套加固不可省略
单关 accept_source_route 不足以形成完整防护,需协同以下机制:
- 启用反向路径过滤:
net.ipv4.conf.all.rp_filter = 1,丢弃“入接口非最优返回路径”的包,大幅提高 IP 欺骗成本 - 禁用 ICMP 重定向:
net.ipv4.conf.all.accept_redirects = 0和net.ipv4.conf.all.send_redirects = 0,防止路由表被恶意篡改 - 关闭 IP 转发(除非是路由器):
net.ipv4.ip_forward = 0,避免主机被用作跳板 - 刷新路由缓存确保新策略即时应用:
sudo sysctl -w net.ipv4.route.flush=1
验证与误判排查
配置后建议做简单测试:从另一台机器尝试发送含源路由选项的 ping 包(如用 hping3 --ipopt "\x07\x00\x00\xc0\xa8\x01\x01" -1 target_ip),目标主机不应响应且 /proc/net/snmp 中的 InHdrErrors 计数应上升。若业务出现异常连接失败,优先检查是否误启了 rp_filter 严格模式导致合法多宿主场景中断——此时可改用 rp_filter = 2(宽松模式)并配合 src_valid_mark = 1 精准控制。



















