auditd统计分析报告需先用ausearch提取日志,再用aureport或awk等工具聚合分类,输出csv/html格式;注意日志轮转与规则优化以防性能问题。

要从 Auditd 生成系统事件的统计分析报告,核心是先提取原始日志(/var/log/audit/audit.log 或通过 ausearch),再用工具清洗、聚合、分类,最终输出可读性强的统计视图。
提取关键字段的审计事件
Auditd 日志结构复杂,直接解析文本效率低。推荐用 ausearch 按需筛选,再用 aureport 生成基础统计:
- 查指定用户的所有操作:ausearch -ui
--start today | aureport -f -i - 统计所有失败的系统调用:ausearch -m avc,syscall --success no --start today | aureport -x -i --summary
- 导出指定时间段的原始事件(供后续分析):ausearch --start "03/15/2024 00:00" --end "03/15/2024 23:59" --raw > audit_raw.log
按事件类型做聚合统计
常见关注维度包括:系统调用类型、目标文件路径、执行用户、SELinux 审计拒绝(AVC)、登录/登出行为。可用 awk + sort + uniq 快速汇总:
- 统计高频系统调用:awk '/syscalls/ {print $13}' audit.log | sort | uniq -c | sort -nr | head -10
- 列出被频繁访问的敏感路径(如 /etc/shadow、/root):ausearch -f "/etc/shadow" --raw | wc -l;再结合 ausearch -f
-i 查详细上下文 - 统计各用户的 AVC 拒绝次数:ausearch -m avc --raw | awk '{print $10}' | grep -o 'auid=[^ ]*' | cut -d= -f2 | sort | uniq -c | sort -nr
生成可视化或结构化报告
纯命令行结果适合快速排查,但定期报告建议转为 CSV 或 HTML 格式便于归档与分享:
- 用 aureport 输出 CSV:aureport -au --csv > auth_events.csv
- 自定义字段导出(时间、事件类型、用户、命令):ausearch --start today --raw | aureport -f -i --key "login" --summary | sed 's/^ *//',再用 Python/Pandas 做分组统计
- 简单 HTML 报告模板:用 shell 脚本拼接 table 标签,把 aureport -x --summary 的结果嵌入,加 CSS 稍作美化即可用于内部通报
注意日志轮转与性能影响
Auditd 默认启用日志轮转(log_file = /var/log/audit/audit.log),但高负载下可能丢事件或写满磁盘:
- 检查当前配置:sudo auditctl -s | grep "num_logs\|max_log_file"
- 确保 space_left_action = email 或 exec 已设置,避免磁盘满导致审计中断
- 生产环境慎用 -w 监控大量文件,优先用 -a always,exit -F arch=b64 -S execve 等精准规则替代全路径监控











