16.3. Настройка системы аудита
Пред. | Глава 16. Аудит событий безопасности | След.

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

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

    auditd_enable="YES"

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

    # service auditd start

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

    options	AUDIT

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

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

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

Таблица 16.1. Классы событий системы аудита

Имя класса | Расшифровка | Действие
--- | --- | ---
all | all | Соответствует всем классам событий.
aa | authentication and authorization |
ad | administrative | Аудит административных действий, произошедших в системе.
ap | application | События, определяемые каким-либо приложением.
cl | file close | Аудит вызовов системной функции `close`.
ex | exec | Аудит запуска приложения. Аудит аргументов командной строки и переменных окружения контролируется через audit_control(5) используя параметры `argv` и `envv` в опции `policy`.
fa | file attribute access | Аудит доступа к атрибутам объектов, например таких как stat(1), pathconf(2).
fc | file create | Аудит событий, в результате которых создаются файлы.
fd | file delete | Аудит событий, в результате которых удаляются файлы.
fm | file attribute modify | Аудит событий, в результате которых изменяются атрибуты файлов, например, chown(8), chflags(1), flock(2).
fr | file read | Аудит событий, в результате которых происходит чтение данных или открываются файлы на чтение.
fw | file write | Аудит событий, в результате которых происходит запись данных, запись или изменение файлов.
io | ioctl | Аудит вызовов системной функции ioctl(2).
ip | ipc | Аудит различных видов взаимодействия процессов, включая создание неименованных каналов (POSIX pipe) и взаимодействие процессов в стиле System V IPC.
lo | login_logout | Аудит событий login(1) и logout(1).
na | non attributable | Аудит неприписываемых событий.
no | invalid class | Не соответствует никаким событиям аудита.
nt | network | Аудит событий, связанных с сетевыми подключениями, например connect(2) и accept(2).
ot | other | Аудит различных событий.
pc | process | Аудит действий процессов, таких как 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

Пред. | Наверх | След.
16.2. Ключевые понятия | Начало | 16.4. Работа с журналами аудита

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

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