Глава 87. Механизм аудита
Механизм аудита состоит из нескольких компонентов:
модуль ядра — перехватывает системные вызовы (syscalls) и выполняет регистрацию событий;
служба auditd — записывает зарегистрированное событие в файл;
служба audit-rules — загружает правила аудита в ядро и после этого завершается;
служба audispd — осуществляет пересылку сообщений (выступает в роли диспетчера) к другому приложению;
ряд вспомогательных программ:
auditctl — программа, управляющая поведением системы аудита и позволяющая контролировать текущее состояние системы, создавать или удалять правила;
aureport — программа, генерирующая суммарные отчёты о работе системы аудита;
ausearch — программа, позволяющая производить поиск событий в журнальных файлах;
aulast — используется для просмотра истории входов пользователей, основанной на логах аудита (auditd).
Программы отсылают записи, предназначенные для журналирования, системному демону auditd, который идентифицирует тип каждой пришедшей записи и обрабатывает запись способом, определенным для данного типа.
Для каждого из регистрируемых событий в журналах указывается следующая информация:
дата и время;
субъект, осуществляющий регистрируемое действие;
тип события (если регистрируется запрос на доступ, то указываются объект и тип доступа);
успешность осуществления события (обслужен запрос на доступ или нет).
Конфигурация аудита хранится в файле /etc/audit/auditd.conf.
Правила аудита, загружаемые при запуске службы audit-rules, хранятся в файлах .rules в каталоге /etc/audit/rules.d/. Правила будут обрабатываться в определённом порядке, основанном на их естественном порядке сортировки. Механизм правил ядра использует стратегию «первый совпавший выигрывает», поэтому порядок правил имеет значение.
Для просмотра журналов используются команды ausearch и aureport. Команда auditctl позволяет настраивать правила аудита.
Служба 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/audit-stop.rules — правила аудита, загружаемые при остановке службы;
/etc/audit/rules.d/ — каталог, содержащий отдельные наборы правил, которые будут скомпилированы в один файл утилитой augenrules;
/etc/audit/plugins.d/ — каталог, содержащий отдельные файлы конфигурации плагинов.
Для того чтобы сделать возможным аудит всех процессов, запущенных до службы аудита, необходимо добавить в строку параметров ядра (в конфигурации загрузчика) параметр audit=1. В противном случае аудит некоторых процессов будет невозможен.
Демон аудита может получать события — сообщения от других приложений через плагин audispd: audisp-remote. Демон аудита может быть связан с tcp_wrappers, чтобы контролировать, какие машины могут подключаться. В этом случае можно добавить запись в hosts.allow и отказать в соединении.