禁用非法ICMP重定向是Linux服务器基础安全的刚性要求,须同时关闭IPv4/IPv6的accept_redirects与send_redirects(all/default),并补全secure_redirects=0、accept_source_route=0、rp_filter=1,写入/etc/sysctl.d/99-secure.conf后执行sysctl -p生效,再通过sysctl -a | grep验证全为=0或=1(rp_filter),确保业务路由正常。

禁用不安全的 ICMP 重定向报文,关键是在内核网络栈层面彻底关闭其接收与发送能力,而不是依赖防火墙过滤。这对 Web 服务器、数据库、API 后端等非路由器角色的 Linux 主机是刚性安全要求。
必须同时关闭 IPv4 和 IPv6 的收发
只关接收或只关发送,都会留下攻击面:
- 关闭接收(accept_redirects = 0):防止主机被恶意网关误导,错误更新本地路由表,导致流量劫持
- 关闭发送(send_redirects = 0):避免本机在开启转发时被利用为跳板,向局域网广播伪造重定向报文
- IPv4 和 IPv6 都要覆盖 all(全局)和 default(新接口默认)两个作用域
配置项如下(写入 /etc/sysctl.d/99-secure.conf):
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
补全配套防护参数防绕过
仅关重定向不够,攻击者可能通过其他 IP 层机制达成类似效果,需同步加固:
- secure_redirects = 0:该旧机制本意校验重定向来源是否“可信”,但实际易被绕过,显式关闭更可靠
- accept_source_route = 0:禁用源路由选项,堵住 IP 地址伪造和路径操控入口
- rp_filter = 1:启用反向路径过滤,自动丢弃源 IP 不可达或不匹配入接口的可疑包;若环境复杂(如多网卡、Kubernetes),可先试 = 2(宽松模式)
追加配置:
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.rp_filter = 1
加载配置并验证是否生效
执行命令使新参数立即生效:
sudo sysctl -p /etc/sysctl.d/99-secure.conf
验证所有参数是否已正确加载:
sysctl -a | grep -E 'redirects|source_route|rp_filter' | grep '= 0\|= 1'
输出中每行末尾应为 = 0(除 rp_filter 应为 = 1)。再运行 ip route get 8.8.8.8 确认业务出向路由未受影响,连通性正常。

















