Так как журнал аудита хранится в бинарном формате
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
. Право на чтение журнала
аудита позволяет получить множество информации о поведении
пользователей и процессов, поэтому рекомендуется делегировать
права на чтение журнала аудита с большой осторожностью.
Потоки системы аудита - клонирующиеся псевдоустройства, позволяющие приложениям просматривать в реальном времени поток событий аудита. В первую очередь, это должно заинтересовать авторов программ определения вторжений и мониторинга системы. Тем не менее, для администратора поток системы аудита предоставляет возможность организовать наблюдение за системой, избежав проблем с правами доступа на журнал аудита или с прерыванием потока событий из-за ротации журнала. Для отслеживания потока событий аудита в реальном времени, выполните:
#
praudit /dev/auditpipe
По умолчанию, потоки доступны только пользователю
root
. Чтобы
сделать их доступными членам группы audit
, добавьте правило
devfs
в файл
/etc/devfs.rules
:
add path 'auditpipe*' mode 0440 group audit
Обратитесь к devfs.rules(5) за более полной
информацией о настройке файловой системы
devfs
.
Довольно легко создать зацикленный поток событий
аудита, в котором просмотр каждого события порождает
несколько событий аудита. Например, если аудиту
подвергаются все операции сетевого ввода-вывода, и команда
praudit
запущена во время
SSH-сессии, то будет сгенерирован
интенсивный поток сообщений аудита, так как каждое
печатаемое событие вызовет еще одно событие. По этой
причине рекомендуется запускать praudit
на устройстве потока только из сессий, для которых нет
детального аудита ввода-вывода.
Журнал аудита пишется ядром и управляется демоном аудита
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
Примерами других действий могут быть копирование файлов аудита на централизованный сервер, удаление старых журнальных файлов, фильтрация журнальных файлов для удаления ненужных записей. Скрипт будет запущен только при корректном закрытии журнала системой аудита и не запустится для журнальных файлов, запись в которые была прекращена в результате некорректного завершения.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.