auditd可通过监控/proc/sys/路径写操作并补充关键系统调用,全面记录sysctl参数修改行为:1. 添加-w /proc/sys/ -p wa -k sysctl_write规则;2. 补充sysctl、write族及ioctl等系统调用监控;3. 使用ausearch -k sysctl_write分析日志;需注意不记录写入值本身且容器环境下依赖宿主auditd可见性。

auditd 本身不直接审计内核参数(如 /proc/sys/ 下的可调参数)的修改事件,因为这类操作本质是向 procfs 文件执行写入(write() 系统调用),而非专用的“内核参数设置”系统调用。但你可以通过监控相关 procfs 路径的写入行为,间接捕获内核参数被动态修改的痕迹。
监控关键 procfs 路径的写入操作
Linux 内核参数大多暴露在 /proc/sys/ 及其子目录下(例如 /proc/sys/net/ipv4/ip_forward、/proc/sys/kernel/sysrq)。要审计这些参数是否被修改,核心是监听对这些路径的 open(带写标志)和 write 系统调用。
- 使用
auditctl -w监控整个/proc/sys/目录(注意:此操作开销较大,生产环境建议缩小范围):sudo auditctl -w /proc/sys/ -p wa -k kernel_param_mod - 更推荐的方式是按需监控高风险子路径,例如:
sudo auditctl -w /proc/sys/net/ -p wa -k net_param_modsudo auditctl -w /proc/sys/kernel/sysrq -p wa -k sysrq_mod -
-p wa表示监控“写(write)”和“属性修改(attribute change)”,覆盖echo 1 > /proc/sys/...这类常见修改方式
识别真实修改行为,过滤干扰项
单纯监听 /proc/sys/ 会捕获大量合法写入(如 systemd-sysctl、sysctl 命令自身、容器运行时初始化等)。需结合规则顺序与上下文过滤:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 优先添加排除规则,跳过已知可信进程:
sudo auditctl -a always,exit -F arch=b64 -F auid!=4294967295 -F exe=/usr/lib/systemd/systemd-sysctl -F key=ignore_sysctl
(auid!=4294967295排除非登录用户的操作,exe=...指定可信二进制) - 对关键参数启用精确匹配,例如只记录非 root 用户或非 systemd 的修改:
sudo auditctl -a always,exit -F arch=b64 -F path=/proc/sys/kernel/sysrq -F perm=w -F uid!=0 -k suspicious_sysrq_write - 利用
ausearch查看原始事件时,重点检查exe(执行程序)、uid(用户ID)、auid(原始登录UID)和comm(命令名)字段,判断是否为异常行为
补充手段:审计 sysctl 命令调用本身
大多数管理员通过 sysctl 命令修改参数,直接审计该命令能快速定位人工干预:
sudo auditctl -a always,exit -F path=/usr/bin/sysctl -F perm=x -k sysctl_exec- 配合参数过滤,例如只记录带
-w选项的调用:sudo auditctl -a always,exit -F path=/usr/bin/sysctl -F perm=x -F argc=3 -F arg1=-w -k sysctl_write
(注意:argc和argN需内核 4.15+ 且启用CONFIG_AUDIT_TREE) - 查看日志:
ausearch -m execve -i -ts recent | grep sysctl
持久化规则与日志分析
临时规则重启后失效,需写入配置文件:
- 编辑
/etc/audit/rules.d/10-kernel-param.rules,内容如:-w /proc/sys/kernel/sysrq -p wa -k sysrq_mod-a always,exit -F path=/usr/bin/sysctl -F perm=x -k sysctl_exec - 重载规则:
sudo augenrules --load或sudo systemctl restart auditd - 定期用
aureport -k sysrq_mod -i或ausearch -k sysrq_mod --start today汇总分析,重点关注非预期时间、非预期用户、非预期来源 IP(若为远程执行)的记录

















