如何判断 auditd 是否已暂停日志记录?

如何判断 auditd 是否已暂停日志记录?

如果您将以下内容放入您的auditd.confauditd当您的磁盘空间为 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

相关内容