auditd无法记录icmp重定向报文,因其不捕获网络层数据包;有效防御是禁用内核重定向功能:设置net.ipv4.conf.all.accept_redirects=0等参数并执行sysctl -p。

想靠 auditd “监控所有 ICMP 重定向日志”来防范中间人攻击,方向上存在根本性误解——这不是日志能力问题,而是功能边界问题。
真正有效的防御方式:从内核参数禁用重定向
防范 ICMP 重定向攻击的核心动作是切断其生效路径,而非事后记录。Linux 提供了明确、轻量、内核级的开关:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 编辑 /etc/sysctl.conf,添加或修改以下行:
net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0
- 执行 sysctl -p 加载配置
- 用 sysctl net.ipv4.conf.all.accept_redirects 验证返回值为 0
- 对非路由器角色的服务器(Web、DB、API 等),这是必须关闭的项
为什么不能依赖 auditd 记录重定向事件?
- ICMP 重定向由内核网络子系统(如 IPv4/IPv6 协议栈)直接处理,不经过 auditd 监控的系统调用路径
- 没有对应的 syscall(如 socket、sendto)会被 auditd 触发审计规则匹配
- 即使你用
-a always,exit -F arch=b64 -S socket等规则监听网络相关调用,也捕获不到重定向报文的生成或接收 - 试图用 auditd 追踪重定向,就像用门禁日志查电梯是否被远程操控——对象错了
可配合 auditd 做的增强防护
虽然 auditd 不管重定向本身,但它能守住“被重定向后可能引发的危险操作”这条线:
- 监控路由表变更:
-w /proc/sys/net/ipv4/conf/ -p wa -k route_change - 审计关键网络配置文件修改(如 /etc/sysctl.conf、/etc/network/interfaces)
- 记录可疑进程执行(如发现 netwox、hping3 等常用于伪造重定向的工具)
- 跟踪 root 用户对 iptables/nftables 的修改,防止攻击者绕过策略
辅助验证与持续观测建议
- 用 tcpdump -i any icmp[icmptype] == icmp-redirect 在测试阶段抓包确认是否还有重定向流入(生产环境慎用)
- 定期检查 ip route show cache,若无重定向生成的缓存条目,说明已生效
- 将 sysctl 配置纳入基线扫描(如 OpenSCAP、Ansible check mode),确保长期合规










