Утилита auditd#
auditd запускает фоновый процесс, обеспечивающий функционирование системы аудита.
Система аудита позволяет отслеживать действия пользователей и процессов, а также изменения в файловой системе и системных настройках.
Для этого auditd в фоновом режиме осуществляет запись информации в журнал аудита, который может быть использован для расследования инцидентов безопасности, анализа производительности системы или отслеживания действий пользователей.
Синтаксис утилиты:
auditd [-f] [-l] [-n]
Часто используемые опции утилиты приведены в таблице ниже.
Опция |
Описание |
|---|---|
|
Отключает работу в фоновом режиме и направляет сообщения в стандартный вывод для ошибок ( |
|
Позволяет следовать по символическим ссылкам при поиске конфигурационных файлов |
|
Не создает дочерний процесс |
При каждом запуске демон auditd осуществляет проверку целостности сообщений в журнале аудита /var/log/audit/audit.log. Для контроля целостности в конце каждой строки файла дописывается контрольная сумма в формате crc32=eca8fac8, состоящая из 8 символов. С целью предотвращения возможности удаления строк из журнала в каждую из них добавляется контрольная сумма предыдущей строки в виде prev_crc32=c77d2e02, которая должна совпадать с контрольной суммой в конце предыдущей строки.
Ввиду отсутствия контрольной суммы последней строки во время запуска, для первого сообщения от аудита контрольная сумма предыдущей строки указывается равной 0 (prev_crc32=00000000). Для устранения неопределенности, для строки, вычисленная сумма которой равна 0, данное значение увеличивается на 1. Таким образом, минимально возможная контрольная сумма для строки равна 1.
Если в результате проверки выявлено нарушение целостности сообщений аудита, то в отчете появится строка с типом события UNKNOWN[2430], где 2430 - номер события, UNKNOWN - значение, заменяющее строку описания.
Значения контрольных сумм хранятся в среде выполнения auditd.
Примечание
Удаление строк из начала или конца журнала (с перезапуском демона) не приведет к нарушению целостности, поскольку в первом случае отсутствует предыдущая строка для сравнения, а во втором демон не будет учитывать последнюю строку при запуске.
Проверьте работу системы контроля целостности сообщений:
Для проверки отсутствия ошибок при первом запуске системы:
Запустите систему.
Выведите записи журнала аудита:
ausearch -ts todayВ выводе будут отображены сообщения обо всех событиях журнала аудита, произошедших с указанного момента времени. Подробнее про
ausearchсм. в «Утилита ausearch».Контрольные суммы, указанные как предыдущие (
prev_crc32=...), должны совпадать с суммами предыдущих строк (crc32=...).Проверьте отсутствие нарушений целостности:
ausearch -m unknownВывод команды при отсутствии в журнале строк соответствующего типа событий, начинающихся с
type=UNKNOWN[2430]:<no matches>Что в данном случае означает - нарушений целостности нет.
После перезапуска демона выполнение пунктов 2 и 3 приводит к аналогичному результату, все события в системе регистрируются штатно. Проверкой может послужить остановка какой-либо службы с помощью команды:
systemctl stop <service>Где
<service>- служба, которую необходимо остановить. Подробнее проsystemctlсм. в «Утилита systemctl».Или выполнение, например, следующей команды:
cat /etc/passwdПодробнее про
catсм. в «Утилита cat».Выполнение каждой команды будет отражено в журнале аудита.
Для проверки отображения ошибок – нарушений целостности сообщений журнала аудита – измените какую-либо строку в журнале, после чего перезапустите демон. В результате в журнале появятся сообщения, подобные следующим:
type=UNKNOWN[2430] msg=audit(1709742493.700:8521): 'Line "<line_with_a_violation_of_integrity>" failed the integrity check' UID="root" AUID="unset" prev_crc32=6b66ab17 crc32=c77d2e02 type=UNKNOWN[2430] msg=audit(1709742493.700:8522): 'Line "<next_line_after_the_corrected_one>" failed the integrity check' prev_crc32=c77d2e02 crc32=eca8fac8Где:
<line_with_a_violation_of_integrity>- строка, целостность которой нарушена;<next_line_after_the_corrected_one>- строка, следующая за исправленной.
Строка, в которой целостность нарушена, будет выведена целиком. Также
prev_crc32сравнивается с контрольной суммойcrc32предыдущей строки. Нарушение целостности одной строки ведет к автоматической ошибке в следующей. Удаление строки аналогично приведет к ошибке в следующей за ней.
Примеры использования#
Чтобы обеспечить запуск из systemd или inittab, для которых не нужно создавать дочерний процесс, используйте команду:
auditd -nЧтобы запустить
auditdв отладочном режиме, используйте команду:auditd -f