16.3. Настройка системы аудита

Пользовательская часть системы аудита входит в базовую систему FreeBSD, системная часть включена в ядро GENERIC, старт демона auditd(8) активируется включением следующей записи в /etc/rc.conf:

auditd_enable="YES"

Затем нужно запустить демон аудита:

# service auditd start

Пользователям, предпочитающим строить специализированное ядро, необходимо включить следующую запись в файл конфигурации ядра:

options	AUDIT

16.3.1. Выражения выбора событий

Выражения выбора используются в нескольких местах конфигурации для отбора событий, подлежащих аудиту. Выражения содержат перечень классов событий, с которым сравнивается происшедшее событие. Выражения выбора рассматриваются слева направо, и два выражения объединяются добавлением первого выражения ко второму.

Таблица 16.1, <<Классы событий системы аудита>> перечисляет имеющиеся по умолчанию записи:

Таблица 16.1. Классы событий системы аудита
Имя классаРасшифровкаДействие
allallСоответствует всем классам событий.
aaauthentication and authorization 
adadministrativeАудит административных действий, произошедших в системе.
apapplicationСобытия, определяемые каким-либо приложением.
clfile closeАудит вызовов системной функции close.
exexecАудит запуска приложения. Аудит аргументов командной строки и переменных окружения контролируется через audit_control(5) используя параметры argv и envv в опции policy.
fafile attribute accessАудит доступа к атрибутам объектов, например таких как stat(1), pathconf(2).
fcfile createАудит событий, в результате которых создаются файлы.
fdfile deleteАудит событий, в результате которых удаляются файлы.
fmfile attribute modifyАудит событий, в результате которых изменяются атрибуты файлов, например, chown(8), chflags(1), flock(2).
frfile readАудит событий, в результате которых происходит чтение данных или открываются файлы на чтение.
fwfile writeАудит событий, в результате которых происходит запись данных, запись или изменение файлов.
ioioctlАудит вызовов системной функции ioctl(2).
ipipcАудит различных видов взаимодействия процессов, включая создание неименованных каналов (POSIX pipe) и взаимодействие процессов в стиле System V IPC.
lologin_logoutАудит событий login(1) и logout(1).
nanon attributableАудит неприписываемых событий.
noinvalid classНе соответствует никаким событиям аудита.
ntnetworkАудит событий, связанных с сетевыми подключениями, например connect(2) и accept(2).
ototherАудит различных событий.
pcprocessАудит действий процессов, таких как exec(3) и exit(3).

Эти классы событий могут быть настроены изменением конфигурационных файлов audit_class и audit_event.

Каждый класс аудита можно скомбинировать с префиксом, показывающим, какие операции будут учитываться - удачные или неудачные, а также то, включает ли данная запись аудит для данного класса и типа, либо отключает его. Таблица 16.2, <<Префиксы классов аудита событий>> обобщает доступные префиксы:

Таблица 16.2. Префиксы классов аудита событий
ПрефиксДействие
+Аудит успешных событий в данном классе.
-Аудит ошибочных событий в данном классе.
^Отключение аудита как успешных, так и ошибочных событий в данном классе.
^+Отключение аудита успешных событий в данном классе.
^-Отключение аудита ошибочных событий в данном классе.

Если префикс не указан, то аудиту подлежат как успешные, так и неуспешные события.

Следующий пример выбирает успешные и неуспешные события входа в систему и выхода из нее, и только успешные события выполнения приложения:

lo,+ex

16.3.2. Конфигурационные файлы

В каталоге /etc/security находятся следующие конфигурационные файлы системы аудита:

  • audit_class: содержит определения классов аудита.

  • audit_control: контроллирует некоторые аспекты системы аудита, такие как классы по умолчанию, минимальное дисковое пространство, которое должно оставаться на разделе журнала аудита, максимальный размер журнала аудита.

  • audit_event: связывает идентификаторы событий (eventnum) с их текстовыми именами, описаниями и классами событий.

  • audit_user: уточняет настройки аудита для конкретных пользователей; они комбинируются с глобальными настройками при входе пользователя в систему.

  • audit_warn: настраиваемый скрипт командного интерпретатора, который вызывается auditd(8) для генерации предупреждений в исключительных ситуациях, таких как исчерпание дискового пространства записями аудита или при ротации журнала аудита.

Предупреждение:

Файлы конфигурации аудита должны редактироваться и изменяться с осторожностью, так как ошибки в конфигурации могут привести к сохранению бесполезных записей.

В большинстве случаев администратору придется вносить изменения только в два конфигурационных файла системы аудита: audit_control и audit_user. Первый из них содержит общие настройки системы аудита, второй может использоваться для уточнения настроек аудита для конкретных пользователей.

16.3.2.1. Файл audit_control

Ниже приведен перечень настроек по умолчанию, содержащихся в audit_control:

dir:/var/audit
dist:off
flags:lo,aa
minfree:5
naflags:lo,aa
policy:cnt,argv
filesz:2M
expire-after:10M

Запись dir используется для установки одного или более каталогов, в которых будет сохраняться журнал системы аудита. Если указан более чем один каталог, то указанные каталоги будут использоваться по очереди, по мере заполнения. Как правило, система аудита настраивается на хранение журнала аудита на отдельном разделе, чтобы предотвратить взаимное влияние подсистемы аудита и остальных подсистем в случае исчерпания свободного места на разделе.

Если опция dist имеет значение on или yes, то для всех журналов аудита будут создаваться жесткие ссылки, сохраняемые в /var/audit/dist.

Запись flags используется для установки глобальной маски предварительного выбора для приписываемых событий. В примере выше аудиту будут подвергаться как успешные, так и неудачные попытки входа в систему и выхода из нее, а также - аутентификация и авторизация для всех пользователей.

Запись minfree определяет минимальное количество свободного дискового пространства на разделе, в который сохраняются файлы журналов аудита.

Запись naflags определяет классы аудита для неприписываемых событий, например, процессов входа в систему и системных демонов.

Запись policy определяет разделяемый запятыми список флагов политики, определяющей различные аспекты поведения аудита. Флаг cnt указывает, что система должна продолжать работать, несмотря на ошибки аудита (данный флаг настоятельно рекомендуется). Второй флаг, argv, заставляет подвергать аудиту аргументы командной строки при вызове системного вызова execve(2).

Запись filesz определяет максимальный размер журнала событий аудита, по достижении которого журнал будет автоматически закончен и подвергнут ротации. Значение 0 запрещает автоматическую ротацию логов. Если указанный размер ниже минимального значения 512К, то он будет проигнорирован, и будет сгенерировано предупреждающее сообщение в логах.

Поле expire-after определяет момент времени, при достижении которого журнальные файлы считаются неактуальными и удаляются.

16.3.2.2. Файл audit_user

Администратор может определить дополнительные требования к аудиту для конкретных пользователей в файле audit_user. Каждая строка позволяет уточнить настройки аудита для пользователя при помощи двух полей: alwaysaudit - определяющее набор событий, которые должны всегда подвергаться аудиту для данного пользователя, и neveraudit - перечисляющее набор событий, которые никогда не должны подвергаться аудиту для пользователя.

Нижеследующий пример настраивает аудит всех событий входа в систему, выхода из системы, а также аудит всех успешных выполнений команд для пользователя root, а также - аудит всех событий, связанных с созданием файлов и успешным выполнением команд пользователем www. С настройками по умолчанию в audit_control запись lo для root является избыточной, кроме того, события входа в систему и выхода из системы будут подвергаться аудиту и для пользователя www.

root:lo,+ex:no
www:fc,+ex:no

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.