Глава 73. Механизм аудита
Механизм аудита состоит из нескольких компонентов:
модуль ядра — перехватывает системные вызовы (syscalls) и выполняет регистрацию событий;
служба auditd — записывает зарегистрированное событие в файл;
служба audispd — осуществляет пересылку сообщений (выступает в роли диспетчера) к другому приложению;
ряд вспомогательных программ:
auditctl
— программа, управляющая поведением системы аудита и позволяющая контролировать текущее состояние системы, создавать или удалять правила;
aureport
— программа, генерирующая суммарные отчёты о работе системы аудита;
ausearch
— программа, позволяющая производить поиск событий в журнальных файлах;
autrace
— программа, выполняющая аудит событий, порождаемых указанным процессом.
Программы отсылают записи, предназначенные для журналирования, системному демону auditd, который идентифицирует тип каждой пришедшей записи и обрабатывает запись способом, определенным для данного типа.
Для каждого из регистрируемых событий в журналах указывается следующая информация:
дата и время;
субъект, осуществляющий регистрируемое действие;
тип события (если регистрируется запрос на доступ, то указываются объект и тип доступа);
успешность осуществления события (обслужен запрос на доступ или нет).
Конфигурация аудита хранится в файле /etc/audit/auditd.conf
, правила аудита, загружаемые при запуске службы, хранятся в файле /etc/audit/audit.rules
.
Для просмотра журналов используются команды ausearch
и aureport
. Команда auditctl
позволяет настраивать правила аудита. Кроме того, при загрузке загружаются правила из файла /etc/audit.rules
. Некоторые параметры самой службы можно изменить в файле auditd.conf
.
Служба auditd — это прикладной компонент системы аудита. Она ведёт журнал аудита на диске.
Синтаксис команды:
auditd [-f] [-l] [-n] [-s disable|enable|nochange] [-c <config_file>]
Опции:
-f
— не переходить в фоновый режим (для отладки). Сообщения программы будут направляться в стандартный вывод для ошибок (stderr), а не в файл;
-l
— включить следование по символическим ссылкам при поиске конфигурационных файлов;
-n
— не создавать дочерний процесс (для запуска из inittab или system);
-s=ENABLE_STATE
— указать, должен ли auditd
при старте изменять текущее значение флага ядра — enabled. Допустимые значения ENABLE_STATE: disable, enable и nochange. Значение по умолчанию enable (disable, когда auditd остановлен). Значение флага может быть изменено во время жизненного цикла auditd
с помощью команды: auditctl -e
;
-c
— указать альтернативный каталог конфигурационного файла (по умолчанию: /etc/audit/
). Этот же каталог будет передан диспетчеру.
Сигналы:
SIGHUP
— перезагрузить конфигурацию — загрузить файл конфигурации с диска. Если в файле не окажется синтаксических ошибок, внесённые в него изменения вступят в силу. При этом в журнал будет добавлена запись о событии DAEMON_CONFIG. В противном случае действия службы будут зависеть от параметров space_left_action
, admin_space_left_action
, disk_full_action
, disk_error_action
в файле auditd.conf
;
SIGTERM
— прекратить обработку событий аудита и завершить работу, о чем предварительно занести запись в журнал;
SIGUSR1
— произвести ротацию файлов журналов auditd
. Создать новый файл журнала, перенумеровав старые файлы или удалив часть из них, в зависимости от параметра max_log_size_action
;
SIGUSR2
— попытаться возобновить ведение журналов auditd
(необходимо после приостановки ведения журнала);
SIGCONT
— выгрузить отчёт о внутреннем состоянии auditd
в /var/run/auditd.state
.
Файлы:
/etc/audit/auditd.conf
— файл конфигурации службы аудита;
/etc/audit/audit.rules
— правила аудита (загружается при запуске службы);
/etc/audit/rules.d/
— каталог, содержащий отдельные наборы правил, которые будут скомпилированы в один файл утилитой augenrules
.
Для того чтобы сделать возможным аудит всех процессов, запущенных до службы аудита, необходимо добавить в строку параметров ядра (в конфигурации загрузчика) параметр audit=1
. В противном случае аудит некоторых процессов будет невозможен.
Демон аудита может получать события — сообщения от других приложений через плагин audispd: audisp-remote. Демон аудита может быть связан с tcp_wrappers, чтобы контролировать, какие машины могут подключаться. В этом случае можно добавить запись в hosts.allow и отказать в соединении.