Если вы поместите следующее в свой auditd.conf
, auditd
приостановит ведение журнала, если на вашем диске будет 50 МБ или меньше места :
admin_space_left = 50
admin_space_left_action = SUSPEND
Как может внешняя программа, например, проверка монитора, узнать, достиг ли auditd
этого приостановленного состояния?
(Я понимаю, что вы также можете использовать действие EXEC
что-то делать, когда auditd
приостанавливает ведение журнала, но это не соответствует моим целям.)
В системе CentOS, которую я должен передать, структурировано, что делать при соблюдении различных ограничений дискового пространства ...
space_left = 75
space_left_action = SYSLOG
admin_space_left = 74
admin_space_left_action = SUSPEND
Это вызывает отправку этого сообщения в системный журнал когда свободное место в разделе, содержащем журнал аудита, становится меньше 75 МБ
21 мая 08:53:01 c6test auditd [5851]: демону аудита не хватает места на диске для ведения журнала
Аналогичным образом, когда пространство становится меньше 74 МБ, появляется сообщение отправлено в системный журнал
21 мая 08:54:01 c6test auditd [5851]: Демон аудита приостанавливает ведение журнала из-за нехватки места на диске.
Итак, чтобы ответить на ваш вопрос, он записывает сообщение в системный журнал, которое затем находит путь в системные журналы, чтобы можно было настроить monit для его поиска.
Какое на самом деле сообщение и в какой файл журнала оно записывается, вероятно, будет зависеть от ОС и / или дистрибутива.
Глядя на исходный код (в версии 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