直接用aureport配合预设审计规则可稳定产出周期性安全报表,关键在于规则精准、时间明确、导出格式适配;需先确保身份验证日志完整捕获,再用aureport生成登录、提权、敏感文件访问等定向报表,结合-i、--start/--end参数提升可读性,并通过cron自动化执行。

直接用 aureport 配合预设审计规则,就能稳定产出周期性安全报表。关键不是堆功能,而是规则打得准、时间切得清、导出格式适配后续使用。
一、确保身份验证日志被完整捕获
没日志,报表就是无源之水。先确认 auditd 正在记录你关心的行为:
- 检查是否已启用 login 相关规则:运行
sudo auditctl -l | grep USER_LOGIN,应有类似-a always,exit -m USER_LOGIN -k identity_login的条目 - 验证登录事件是否真实入库:执行
sudo ausearch -m USER_LOGIN -ts recent -i | head -3,能看到最近的 ssh 或 console 登录记录才算生效 - 若无输出,检查 SELinux 是否拦截(
ausearch -m avc -ts recent),或确认/etc/audit/rules.d/identity.rules中已包含-m USER_LOGIN规则并执行了sudo augenrules --load
二、用 aureport 定向生成常用周期报表
一条命令对应一类业务场景,不用写脚本也能每天自动跑:
-
每日登录汇总(含成功/失败):
sudo aureport --login -i --start today --end now --format csv > /var/log/audit/reports/login_daily_$(date +%Y%m%d).csv -
每周提权操作清单(sudo 命令):
sudo aureport -m USER_CMD --key sudo -i --start lastweek --end today --format csv > /var/log/audit/reports/sudo_weekly_$(date -d 'last Monday' +%Y%m%d)_$(date -d 'Sunday' +%Y%m%d).csv -
月度敏感文件访问追踪(如 /etc/shadow):
sudo aureport -f --key identity_shadow -i --start thismonth --end now --format csv > /var/log/audit/reports/shadow_monthly_$(date -d '1 month ago' +%Y%m).csv
三、让报表真正“可读可用”
导出不是终点,字段清晰、时间对齐、能进表格才是实用的关键:
- 加
--interpret(简写-i)参数,把 UID、系统调用号等转成用户名、命令名,避免人工查表 - 用
--start和--end明确指定周期,支持today、yesterday、lastweek、thismonth等自然语言,也支持具体时间如"2026-06-01 00:00:00" - CSV 导出默认字段齐全(时间、用户、终端、命令、结果等),Excel 打开后可直接按“结果=failed”筛选异常,或按“用户”排序看高频操作者
- 如需邮件发送,部分 auditd 版本支持
--format html,生成带表格样式的基础 HTML 报告
四、自动化执行只需一行 cron
把上面的命令放进定时任务,就实现真正的周期性交付:
- 每天凌晨2点生成昨日登录报表:
0 2 * * * root /usr/sbin/aureport --login -i --start yesterday --end now --format csv > /var/log/audit/reports/login_$(date -d 'yesterday' +\%Y\%m\%d).csv 2>/dev/null - 每周一早6点生成上周 sudo 操作报表:
0 6 * * 1 root /usr/sbin/aureport -m USER_CMD --key sudo -i --start lastweek --end today --format csv > /var/log/audit/reports/sudo_$(date -d 'last Monday' +\%Y\%m\%d)_$(date -d 'Sunday' +\%Y\%m\%d).csv 2>/dev/null - 注意:cron 中的
%需转义为\%,否则会被 shell 解析为注释











