应运行sysctl -a | grep '\.accept_redirects\|\.send_redirects'检查六项参数是否全为0,再用ip route show | grep redirect确认路由表未被非法修改,并同步关闭secure_redirects、accept_source_route和启用rp_filter以实现纵深防御。

确认系统是否接收或发送ICMP重定向
Linux内核默认可能允许接收和发送IPv4/IPv6的ICMP重定向报文,而普通服务器(如Web、数据库、API后端)根本不该承担路由器角色。一旦开启,攻击者可伪造重定向包,诱使主机修改本地路由表,导致流量被劫持到恶意网关。
检查当前状态最直接的方式是运行:
sysctl -a | grep '\.accept_redirects\|\.send_redirects'
重点关注以下六项是否都为 0:
- net.ipv4.conf.all.accept_redirects
- net.ipv4.conf.default.accept_redirects
- net.ipv4.conf.all.send_redirects
- net.ipv4.conf.default.send_redirects
- net.ipv6.conf.all.accept_redirects
- net.ipv6.conf.default.accept_redirects
只要其中任一值为 1,就存在被重定向劫持的风险。
验证路由表是否已被非法修改
即使内核参数已关闭,也要检查历史是否已被攻击影响。攻击成功后,目标主机会在路由表中新增指向恶意网关的“redirect”类型路由条目。
执行:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
ip route show | grep redirect
若输出非空(例如出现类似 10.0.2.0/24 via 192.168.1.100 dev eth0 proto icmp src 192.168.1.5 metric 100 的行),说明已有重定向生效,需立即清理:
ip route flush cache(清空路由缓存)
ip route flush proto icmp(仅清除由ICMP重定向生成的路由)
排查是否启用配套危险功能
禁用重定向只是基础,还需同步关闭依赖它的辅助机制,否则可能被绕过:
- net.ipv4.conf.all.secure_redirects = 0:禁用已过时且不可靠的“安全重定向”校验
- net.ipv4.conf.all.accept_source_route = 0:阻止源路由选项,防止IP地址伪造
- net.ipv4.conf.all.rp_filter = 1:启用反向路径过滤,丢弃源IP不可信的入包
这些参数应统一写入 /etc/sysctl.d/99-secure.conf 或 /etc/sysctl.conf,再执行 sysctl -p 生效。
模拟测试与连通性回归验证
加固后务必实测有效性:
- 用另一台机器(如Kali)配合 scapy 构造伪造ICMP重定向包发往目标主机,观察其路由表是否变化
- 执行 ip route get 8.8.8.8 和 ip route get 2001:4860:4860::8888,确认出向路径未被干扰
- 检查业务访问是否正常,尤其注意跨网段服务调用、容器网络通信(Docker/K8s节点需额外评估转发逻辑)
若发现异常,回查是否遗漏了IPv6配置,或误启了 net.ipv4.ip_forward=1 却未配相应策略。










