auditd未启动导致ausearch无记录,须systemctl enable --now auditd并检查/var/log/audit/audit.log;监控/etc/shadow需加-f perm=000捕获失败事件;execve日志过多应按时间、用户、路径过滤;日志轮转需配置auditd.conf与logrotate或远程转发。

auditd 服务没启动,ausearch 查不到任何记录
auditd 是 Linux 审计子系统的守护进程,所有内核级审计事件(比如文件访问、系统调用、权限变更)都得靠它收集中转。不启动它,auditctl 加的规则只是挂在内存里,重启就丢,ausearch 和 aureport 也全为空。
实操建议:
- 先确认状态:
systemctl status auditd,不是active (running)就得systemctl enable --now auditd - 检查日志是否写入磁盘:
ls -l /var/log/audit/audit.log,空文件或不存在说明 auditd 没真正跑起来,或配置被覆盖 - 别依赖
auditctl -e 1(锁定规则)后就以为万事大吉——它不等同于 auditd 启动,锁规则前 auditd 必须已运行 - 某些云镜像(如部分 AWS AMI)默认禁用 auditd,需手动启用,且 SELinux 策略可能拦截其日志写入,可临时设为 permissive 验证
想监控敏感文件但 -w /etc/shadow -p rwxa 不生效
audit 规则里的 -p 参数只捕获“路径上发生的操作”,不是递归,也不管硬链接或符号链接跳转;更关键的是,/etc/shadow 这类文件通常由特权进程(如 passwd、usermod)通过 openat 或 read 系统调用访问,而普通用户直接读会 Permission Denied——audit 能看到拒绝事件,但默认不记录(除非显式开启失败事件)。
实操建议:
- 加
-k shadow_access方便后续ausearch -k shadow_access快速过滤 - 必须加上失败事件捕获:
auditctl -w /etc/shadow -p rwxa -k shadow_access -F perm=000(perm=000表示所有权限检查失败) - 注意
-p rwxa中的a(attribute change)对/etc/shadow几乎无意义,因为它的权限/属主变更通常走chown/chmod,应单独加规则监控这些命令的执行 - 规则持久化要写进
/etc/audit/rules.d/*.rules,不能只用auditctl临时加——重启后失效
ausearch -m execve 日志太多,根本没法定位真实可疑行为
execve 是进程执行的起点,所有 shell、脚本、二进制启动都会触发,尤其在有自动化任务或容器环境里,每分钟几百条很常见。盲目查 execve 等于在日志海里捞针。
实操建议:
- 缩小范围:加时间窗口,比如
ausearch -m execve -ts yesterday;加用户上下文,-ui 0(root)、-ui 1001(某业务用户) - 排除高频白名单:用
--input-logs结合grep -v过滤掉/usr/bin/bash、/bin/sh、/usr/bin/systemctl等常规路径(注意路径要和日志中exe字段完全一致) - 关注异常参数:用
ausearch -m execve | aureport -f -i看文件访问模式,再反查哪些execve带了可疑参数(如curl http://、python -c "import os; os.system) - 别忘了
execve日志里cwd(当前工作目录)和cmdline(完整命令行)字段比exe更能暴露意图,但默认不显示,要用aureport --key --interpret或ausearch --input-logs | aureport -f -i解析
合规要求保留 90 天日志,但 /var/log/audit/ 磁盘爆了
audit.log 默认不轮转,也不压缩,一条 execve 记录就占 200+ 字节,高负载机器一天轻松破 G。硬设 max_log_file 只是到上限就停写,不解决长期留存问题。
实操建议:
- 改用
audispd-plugins的log_file插件配合外部轮转:在/etc/audit/auditd.conf中设log_file = /var/log/audit/audit.log+max_log_file = 100(MB)+num_logs = 7(本地最多留 7 个),再配logrotate压缩归档 - 禁用
space_left相关告警(如space_left_action = email),它们在磁盘紧张时可能触发误报,反而掩盖真实空间耗尽原因 - 远程转发更可靠:启用
audispd的af_unix或syslog插件,把日志实时发到 SIEM(如 ELK、Splunk),本地只留最近 24 小时,既满足合规留存又避免单点故障 - 注意:
auditctl -e 2(不可更改模式)会阻止auditd重载配置,轮转脚本若尝试systemctl reload auditd会失败,得用kill -USR1 $(pidof auditd)手动触发日志切分
audit 规则越细,日志量越大;但规则太粗,又漏关键行为。真正难的不是加几条 auditctl,是持续校准规则粒度、验证日志可检索性、以及确保归档链路不中断——这些环节一断,前面所有配置都白搭。










