如果您将以下内容放入您的auditd.conf
,auditd
当您的磁盘空间为 50MB 或更少时,将暂停日志记录:
admin_space_left = 50
admin_space_left_action = SUSPEND
外部程序(例如 monit 检查)如何知道是否auditd
已达到此暂停状态?
(我意识到您也可以使用EXEC
操作在暂停日志记录时执行某些操作auditd
,但这不符合我的目的。)
答案1
在 CentOS 系统上,我必须处理当满足各种磁盘空间限制时该怎么做......
space_left = 75
space_left_action = SYSLOG
admin_space_left = 74
admin_space_left_action = SUSPEND
当审计日志所在分区的可用空间低于 75MB 时,就会向 syslog 发出此消息
5 月 21 日 08:53:01 c6test auditd[5851]: 审计守护进程的磁盘空间不足,无法进行日志记录
同样,当空间低于 74MB 时,此消息会发送到 syslog
5 月 21 日 08:54:01 c6test auditd[5851]: 由于磁盘空间不足,审计守护进程正在暂停日志记录。
因此,回答您的问题,它会将一条消息写入 syslog,然后该消息会进入您的系统日志,以便可以配置 monit 来查找它。
实际消息是什么以及它写入哪个日志文件可能取决于操作系统和/或发行版。
答案2
查看源代码(版本 2.6.7),除了将调试器附加到进程并让其转储内部变量的值之外,没有其他方法可以检索当前的“挂起”状态logging_suspended
。
您可以发送一条测试消息并检查它是否被记录。这样,您就可以检查暂停条件,以及任何阻止日志记录发生的因素。也就是说,您需要验证它是否始终正常工作。
msg="audit test $(uuidgen)" || exit # generate unique message
auditctl -m "$msg" || exit # send the unique message
sleep 1 # enough time for the message to be logged
ausearch -ts recent -m USER | grep -Fqe "$msg" && echo OK