audit日志180天留存需同时满足:auditd服务启用并开机自启;/etc/logrotate.d/auditd配置dateext、daily、maxage 180和missingok;/var/log/audit/目录权限设为0700,audit.log设为0600。

audit日志默认不自动归档,仅靠auditd写入/var/log/audit/audit.log,不配置logrotate就只会滚动覆盖或撑爆磁盘——必须显式绑定轮转策略+日期后缀+超期清理,否则180天留存纯属空谈。
auditd服务必须启用且开机自启
auditd未运行时,所有规则形同虚设,/var/log/audit/audit.log根本不会生成。检查状态并固化启动是第一步:
- 执行
systemctl status auditd确认状态为active (running) - 若未运行,立即执行
systemctl start auditd && systemctl enable auditd - 特别注意:某些精简镜像(如部分容器化CentOS)可能禁用
auditd,需检查/proc/cmdline中是否含audit=1,否则需修改/etc/default/grub并重生成grub配置
/etc/logrotate.d/auditd必须启用dateext + maxage 180
默认的/etc/logrotate.d/auditd通常只配了rotate 6和compress,这最多保留6个归档文件,跟“180天”完全无关。关键参数缺失会导致归档无日期、无法按天清理:
- 编辑
/etc/logrotate.d/auditd,确保包含:dateext(强制添加-YYYYMMDD后缀)、maxage 180(自动删除超180天的归档)、daily(每天轮转,而非monthly——后者无法保证每日连续性) - 避免使用
rotate N代替maxage:例如rotate 26看似对应半年,但若某天无审计事件,该日归档就不会生成,实际保留天数会缩水 - 必须加
missingok:audit日志可能因权限或磁盘满而临时中断写入,不加此选项会导致logrotate报错退出,后续轮转全部失效
权限锁定与归档完整性不可绕过
audit日志含敏感行为痕迹,若目录或文件权限宽松,攻击者可直接删改归档文件,使180天留存失去法律效力:
- 执行
chmod 0700 /var/log/audit/,禁止非root访问整个目录 - 执行
chmod 0600 /var/log/audit/audit.log,防止当前日志被截断或清空 - 对已归档的
.log.*.gz文件,建议在postrotate脚本中追加chattr +a(仅允许追加)或迁移至只读挂载点;单纯chmod对压缩包无效,需额外处理 - 若用
rsyslog转发远程,务必启用TLS加密和$ActionFileDefaultTemplate RSYSLOG_FileFormat,否则明文传输等于裸奔
真正卡住180天落地的,往往不是配置项写没写,而是maxage没生效(因logrotate未实际触发)、dateext没开(导致find无法按日期筛选)、或/var/log/audit/权限仍为755(给攻击者留了删档后门)。每一步都得用logrotate -d /etc/logrotate.d/auditd手动跑一次,再看ls -la /var/log/audit/里有没有带日期的压缩包生成。


















