怎么在linux利用sysctl禁用icmp-redirect响应防范内网环境的路由重定向劫持

在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即可持久生效(因配置已落盘)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。