最近搞等保的事情,在操作系统上安装了audit服务。但按照等保的要求,审计日志需要定时异地转储,所以查一下如何将audit服务的日志文件可以按时间来进行rotate。
在Redhat的kb上找到一篇:How to implement audit log rotation with compression based on time instead of size 的文章,下面就把文章内容中需要的部分抽取出来写下。
由于auditd并不支持按日期的rotate,所以这里需要先修改auditd的配置,取消auditd默认的rotate方式。这一步需要编辑 /etc/audit/auditd.conf文件,将配置中原有的的
max_log_file_action = ROTATE
修改为
max_log_file_action = ignore
修改完成后需要重启服务:
systemctl restart auditd
在进行这个变更后,auditd服务将不会自动rotate日志文件。此时在/etc/cron.daily目录下创建一个定时任务文件,例如audit_log,写入以下的脚本:
1 |
|
然后把这个脚本设置为可执行文件:
chmod +x audit_log
随后就可以由cron服务每天调用一次,把日志文件按照rotate时间进行重命名然后压缩。
如果需要测试,只需要直接运行下/etc/cron.daily/audit_log命令就可以了。在前几次运行时,由于没有足够的历史日志,可能会报rm的错误,可以忽略,等过几天就好了。