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

## 16.4. Работа с журналами аудита

Так как журнал аудита хранится в бинарном формате BSM, то для его изменения или перевода в текстовый формат предоставляются встроенные утилиты. Утилита `praudit` преобразует журнал аудита в текстовый формат. Утилита `auditreduce` применяется для фильтрации журнальных записей с целью анализа, архивирования или распечатки. Последняя утилита поддерживает разнообразие параметров, позволяющих выбирать записи по типу события, по классу события, по пользователю, по дате или времени события, по пути к файлу или по объекту, над которым производилось действие.

Например, для отображения всего содержимого журнала аудита в текстовом формате выполните:

    # praudit /var/audit/AUDITFILE

В данном примере `AUDITFILE` - журнал, который будет выведен в текстовом формате.

Журнал аудита состоит из серии записей, которые, в свою очередь состоят из элементов, которые команда `praudit` выводит последовательно - по одному на строку. Каждый элемент имеет определенный тип, например `header` (содержит заголовок записи) или `path` (полный путь к файлу). Следующий пример показывает запись для события `execve`:

    header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
    exec arg,finger,doug
    path,/usr/bin/finger
    attribute,555,root,wheel,90,24918,104944
    subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
    return,success,0
    trailer,133

Эта запись отражает результат успешного выполнения системного вызова `execve`, который стал результатом выполнения команды `finger doug`. В элементе записи `exec arg` есть командная строка, которую оболочка передала ядру. Элемент `path` содержит путь к исполняемому файлу в представлении ядра. Элемент `attribute` описывает исполняемый файл, а также права доступа файла. Элемент `subject` описывает ID аудируемого пользователя, исполняющие (effective) UID и GID, реальные ID пользователя и группы, идентификатор процесса, идентификатор сессии, порт и адрес, с которого был осуществлен вход в систему. Обратите внимание: идентификатор аудируемого пользователя и реальный идентификатор пользователя отличаются, так как пользователь `robert` повысил привилегии до пользователя `root` перед выполнением команды, но система аудита занесла его действия в журнал используя изначальный идентификатор. Элемент `return` описывает успешное выполнение операции, а элемент `trailer` завершает запись.

Указав аргумент `-x` можно получить вывод в формате XML.

Поскольку логи системы аудита могут иметь огромный размер, возможно выделить только часть записей при помощи `auditreduce`. В следующем примере из `AUDITFILE` выбираются все записи, касающиеся пользователя `trhodes`:

    # auditreduce -u trhodes /var/audit/AUDITFILE | praudit

Члены группы `audit` имеют доступ на чтение к журналу аудита, находящемуся в `/var/audit`. По умолчанию эта группа пуста, и только `root` имеет к ним доступ. Для того, чтобы дать пользователю права на чтение журнала, его необходимо добавить в группу `audit`. Право на чтение журнала аудита позволяет получить множество информации о поведении пользователей и процессов, поэтому рекомендуется делегировать права на чтение журнала аудита с большой осторожностью.

### 16.4.1. Мониторинг системы в реальном времени с использованием потоков аудита

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

    # praudit /dev/auditpipe

По умолчанию, потоки доступны только пользователю `root`. Чтобы сделать их доступными членам группы `audit`, добавьте правило `devfs` в файл `/etc/devfs.rules`:

    add path 'auditpipe*' mode 0440 group audit

Обратитесь к devfs.rules(5) за более полной информацией о настройке файловой системы `devfs`.

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

Довольно легко создать зацикленный поток событий аудита, в котором просмотр каждого события порождает несколько событий аудита. Например, если аудиту подвергаются все операции сетевого ввода-вывода, и команда `praudit` запущена во время SSH-сессии, то будет сгенерирован интенсивный поток сообщений аудита, так как каждое печатаемое событие вызовет еще одно событие. По этой причине рекомендуется запускать `praudit` на устройстве потока только из сессий, для которых нет детального аудита ввода-вывода.

### 16.4.2. Ротация и сжатие журнальных файлов аудита

Журнал аудита пишется ядром и управляется демоном аудита auditd(8). Администраторам не следует пытаться использовать newsyslog.conf(5) или другие инструменты для прямой ротации логов. Вместо этого, для прекращения аудита, реконфигурации и ротации журнальных файлов должна использоваться команда `audit`. Следующая команда приведет к созданию нового журнального файла и даст указание ядру переключиться на запись в этот файл. Протоколирование в старый файл будет прекращено, а сам файл - переименован, в результате чего с ним можно будет работать администратору:

    # audit -n

Если auditd(8) не запущен, то эта команда окончится неудачей, и будет выведено сообщение об ошибке.

Добавление следующей строки в файл `/etc/crontab` приведет к ротации каждые двенадцать часов:

    0     */12       *       *       *       root    /usr/sbin/audit -n

Изменения вступят в силу после сохранения файла `/etc/crontab`.

Автоматическая ротация журнальных файлов на основании их размера возможна при использовании опции `filesz` в файле `audit_control`, которая описана в Раздел 16.3.2.1, <<Файл `audit_control`>>.

Поскольку журнальные файлы могут достигать очень больших размеров, может возникнуть необходимость сжимать их в целях хранения сразу же после закрытия их демоном аудита. Для выполнения определенных пользователем действий, соответствующих разнообразным событиям системы аудита, включая нормальное завершение журналов аудита при их ротации, может быть использован скрипт `audit_warn`. Например, добавление следующих строк в файл `/etc/security/audit_warn` приведет к сжатию файла аудита после его закрытия:

    #
    # Compress audit trail files on close.
    #
    if [ "$1" = closefile ]; then
    	gzip -9 $2
    fi

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

Пред. | Наверх | След.
16.3. Настройка системы аудита | Начало | Глава 17. Устройства хранения

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

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