Пользовательская часть системы аудита входит в базовую
систему FreeBSD, системная часть включена в ядро
GENERIC
, старт демона auditd(8)
активируется включением следующей записи в
/etc/rc.conf
:
auditd_enable="YES"
Затем нужно запустить демон аудита:
#
service auditd start
Пользователям, предпочитающим строить специализированное ядро, необходимо включить следующую запись в файл конфигурации ядра:
options AUDIT
Выражения выбора используются в нескольких местах конфигурации для отбора событий, подлежащих аудиту. Выражения содержат перечень классов событий, с которым сравнивается происшедшее событие. Выражения выбора рассматриваются слева направо, и два выражения объединяются добавлением первого выражения ко второму.
Таблица 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, <<Префиксы классов аудита событий>> обобщает доступные префиксы:
Префикс | Действие |
---|---|
+ | Аудит успешных событий в данном классе. |
- | Аудит ошибочных событий в данном классе. |
^ | Отключение аудита как успешных, так и ошибочных событий в данном классе. |
^+ | Отключение аудита успешных событий в данном классе. |
^- | Отключение аудита ошибочных событий в данном классе. |
Если префикс не указан, то аудиту подлежат как успешные, так и неуспешные события.
Следующий пример выбирает успешные и неуспешные события входа в систему и выхода из нее, и только успешные события выполнения приложения:
lo,+ex
В каталоге /etc/security
находятся
следующие конфигурационные файлы системы аудита:
audit_class
: содержит определения
классов аудита.
audit_control
: контроллирует
некоторые аспекты системы аудита, такие как классы по
умолчанию, минимальное дисковое пространство, которое
должно оставаться на разделе журнала аудита, максимальный
размер журнала аудита.
audit_event
: связывает
идентификаторы событий (eventnum) с их текстовыми
именами, описаниями и классами событий.
audit_user
: уточняет настройки
аудита для конкретных пользователей; они комбинируются
с глобальными настройками при входе пользователя
в систему.
audit_warn
: настраиваемый скрипт
командного интерпретатора, который вызывается
auditd(8) для генерации предупреждений в
исключительных ситуациях, таких как исчерпание дискового
пространства записями аудита или при ротации журнала
аудита.
Файлы конфигурации аудита должны редактироваться и изменяться с осторожностью, так как ошибки в конфигурации могут привести к сохранению бесполезных записей.
В большинстве случаев администратору придется вносить
изменения только в два конфигурационных файла системы аудита:
audit_control
и
audit_user
. Первый из них содержит
общие настройки системы аудита, второй может использоваться
для уточнения настроек аудита для конкретных
пользователей.
Ниже приведен перечень настроек по умолчанию,
содержащихся в 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
определяет момент
времени, при достижении которого журнальные файлы считаются
неактуальными и удаляются.
Администратор может определить дополнительные
требования к аудиту для конкретных пользователей в файле
audit_user
. Каждая строка позволяет
уточнить настройки аудита для пользователя при помощи двух
полей: alwaysaudit
- определяющее
набор событий, которые должны всегда подвергаться аудиту
для данного пользователя, и neveraudit
- перечисляющее набор событий, которые никогда не
должны подвергаться аудиту для пользователя.
Нижеследующий пример настраивает аудит всех событий
входа в систему, выхода из системы, а также аудит всех
успешных выполнений команд для пользователя root
, а также - аудит
всех событий, связанных с созданием файлов и успешным
выполнением команд пользователем www
. С настройками по
умолчанию в audit_control
запись
lo
для root
является избыточной,
кроме того, события входа в систему и выхода из системы
будут подвергаться аудиту и для пользователя www
.
root:lo,+ex:no www:fc,+ex:no
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.