
在Linux内核层面禁用ICMP重定向,是防范内网路由劫持最直接有效的方式。它不依赖防火墙规则,而是从协议栈源头切断接收与发送能力,特别适用于Web服务器、数据库、API后端等非路由器角色的主机。
必须同时关闭接收和发送
ICMP重定向劫持依赖两个环节:攻击者伪造重定向报文让目标主机改写路由表(需accept_redirects=0),或把本机当作跳板向其他主机广播恶意重定向(需send_redirects=0)。只关其一仍存在风险。
禁收:防止被网关或恶意设备误导,错误更新本地路由表 禁发:避免本机被利用为中间人,转发伪造重定向报文 IPv4和IPv6都要处理,现代网络双栈普遍启用,缺一不可
配置关键参数(推荐写入/etc/sysctl.d/99-secure.conf)
使用独立配置文件更清晰,也便于安全基线统一管理:
IPv4重定向控制:net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.default.accept_redirects = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0 IPv6重定向控制(常被忽略):net.ipv6.conf.all.accept_redirects = 0net.ipv6.conf.default.accept_redirects = 0 配套加固项(防绕过):net.ipv4.conf.all.secure_redirects = 0(该机制已过时且易被绕过)net.ipv4.conf.all.accept_source_route = 0(阻断源路由IP欺骗)net.ipv4.conf.all.rp_filter = 1(启用反向路径过滤,丢弃不可信源IP包)
立即生效并验证
执行以下命令加载配置:
sudo sysctl -p /etc/sysctl.d/99-secure.conf
验证是否全部设为0:
sysctl -a | grep -E ‘redirects|source_route|rp_filter’ | grep =\ 0
若输出包含所有目标参数且值为0,说明已生效。还可配合ip route get 8.8.8.8确认出向路径未异常变动。
注意事项与例外场景
绝大多数云服务器、容器宿主机(Docker/K8s)、常规业务节点都不需要ICMP重定向功能,可放心禁用。
若系统明确开启net.ipv4.ip_forward = 1且承担真实路由职责,需评估是否影响上游网关逻辑;但即便如此,通常也只需保留特定接口的重定向,而非全局开启 禁用后不影响TCP/UDP通信、DNS解析、HTTP服务等核心功能,仅限制ICMP路由类报文交互 无需重启系统,sysctl -p即可持久生效(因配置已落盘)

评论(0)