内核级审计是系统可信链起点,需启用加固auditd、配置不可篡改日志路径、监控关键内核对象、强制远程落盘与完整性校验。

内核级审计不是“锦上添花”,而是系统可信链的起点。真正不可变的审计能力,必须绕过用户空间干扰,直接绑定内核事件流——auditd 正是实现这一点的核心机制。
启用并加固 auditd 服务
auditd 不是装上就生效的服务,它依赖内核 audit 子系统持续供能,且默认配置极简,需主动强化:
- 确保服务开机自启:systemctl enable --now auditd
- 验证内核支持:运行 grep CONFIG_AUDIT= /boot/config-$(uname -r),输出应为 CONFIG_AUDIT=y
- 禁止手动停用:执行 systemctl mask auditd,防止误操作或恶意进程 kill 或 stop 该服务
- 检查 auditd 进程是否由 systemd 直接托管(非 fork 启动),可用 ps -eo pid,ppid,comm | grep auditd 确认其父 PID 为 1
配置不可篡改的日志路径与权限
日志若存于普通文件系统且权限宽松,root 用户仍可删除或覆盖——这违背“不可变”前提:
- 将日志目录挂载为只读或使用 chattr +a 设置追加属性(如 chattr +a /var/log/audit/audit.log),允许 auditd 写入但禁止截断或删除
- 设置目录属主为 root:root,权限严格为 700;日志文件权限设为 600
- 在 /etc/audit/rules.d/ 下统一管理规则文件(如 10-critical.rules),避免直接编辑 /etc/audit/audit.rules
- 加载后执行 augenrules --load 并确认规则已生效:auditctl -l | head -5
监控关键内核对象与系统调用
仅记录登录日志远远不够。不可变审计的价值,在于捕获攻击者提权、逃逸、持久化的底层动作:
- 监控敏感文件变更:例如 -w /etc/shadow -p wa -k identity(记录所有写入和属性修改)
- 拦截高危系统调用:如 -a always,exit -F arch=b64 -S execve -F uid!=0(记录非 root 用户执行程序行为)
- 跟踪模块加载:-a always,exit -F arch=b64 -S init_module,delete_module,内核模块是常见后门载体
- 审计 capability 获取:-a always,exit -F arch=b64 -S capset,识别非法权限提升尝试
强制日志远程落盘与完整性校验
本地日志再坚固,也挡不住物理访问或 root 权限下的覆盖。不可变审计必须延伸至传输与存储环节:
- 配置 /etc/audisp/plugins.d/au-remote.conf 启用远程插件,使用 TLS 加密转发至专用日志服务器
- 在远程端启用 auditd-log-server 或搭配 rsyslog+TLS,拒绝未签名或时间戳异常的审计包
- 对本地日志启用 auditctl -e 2(锁定模式),一旦设置,除非重启,任何用户(含 root)都无法修改规则或关闭 auditd
- 结合 aureport --key identity --summary 定期生成摘要,并用离线密钥签名存档,用于事后一致性验证
不复杂但容易忽略:真正的不可变,不在配置多华丽,而在每一步都切断绕过路径——从内核钩子到磁盘属性,再到网络传输策略,缺一不可。

















