6 Регистрация событий безопасности

6.1 Введение

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

6.2 Создание и удаление правил регистрации событий безопасности

Утилита auditctl позволяет формировать, добавлять или удалять правила регистрации событий безопасности.

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты auditctl и их значения

Опция

Значение

-b backlog

Установить максимальное количество доступных для записи данных регистрации буферов. Значение по умолчанию – 64.

--backlog_wait_time

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

-e [0..2]

Установить флаг блокировки: 0 позволит на время отключить регистрацию, 1 позволит включить ее обратно, а 2 позволит защитить конфигурацию регистрации от изменений.

-f [0..2]

Установить способ обработки для флага сбоя. Эта опция позволяет определить, каким образом ядро будет обрабатывать критические ошибки. Значение по умолчанию: 1. Для систем с повышенными требованиями к безопасности значение 2 может быть более предпочтительным.

-h

Краткая помощь по аргументам командной строки.

-i

Игнорировать ошибки при чтении правил из файла.

-l

Вывести список всех правил по одному правилу в строке.

-k ключ

Установить на правило ключ фильтрации. Ключ фильтрации – это произвольная текстовая строка длиной не больше 31 символа. Ключ помогает уникально идентифицировать записи, генерируемые в ходе аудита за точкой наблюдения.

-m текст

Послать в систему регистрации событий пользовательское сообщение. Это возможно только из аккаунта учетной записи суперпользователя root.

-p [r|w|x|a]

Установить фильтр прав доступа для точки наблюдения. r (чтение), w (запись), x (исполнение), a (изменение атрибута).

-r частота

Установить ограничение скорости выдачи сообщений в секунду (0 – нет ограничения). Если эта частота ненулевая, и она превышается в ходе аудита, флаг сбоя выставляется ядром для выполнения соответствующего действия. Значение по умолчанию: 0.

-R файл

Читать правила из файла. Правила должны быть расположены по одному в строке и в том порядке, в каком они должны исполняться. Владельцем файла с правилами должен быть суперпользователь root. Данный файл не должен быть доступен для чтения любым другим пользователям, в противном случае операция с опцией не будет позволена.

-s

Получить статус регистрации событий.

-a список, действие

Добавить правило с указанным действием к концу списка.

-A список, действие

Добавить правило с указанным действием в начало списка.

-d список, действие

Удалить правило с указанным действием из списка. Правило удаляется только в том случае, если полностью совпали и имя системного вызова, и поля сравнения.

-D

Удалить все правила и точки наблюдения.

-c

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

-S [Имя или номер системного вызова | all]

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

F [n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v]

Задать поле сравнения для правила. Атрибуты поля следующие: объект, операция, значение. Можно задать до 64 полей сравнения в одной команде. Каждое новое поле должно начинаться с -F. Служба регистрации событий будет генерировать запись, если произошло совпадение по всем полями сравнения. Допустимо использование одного из следующих 8 операторов: равно, не равно, меньше, больше, меньше либо равно, больше либо равно, битовая маска (n&v) и битовая проверка (n&=v). Битовая проверка выполняет операцию and над значениями и проверяет, равны ли они. Битовая маска просто выполняет операцию and. Поля, оперирующие с идентификатором пользователя, могут также работать с именем пользователя – программа автоматически получит идентификатор пользователя из его имени.

-A list,action

Добавить правило в начало списка list с действием action.

-C [f=f | f!=f]

Сравнить значения полей между собой. Формат задания сравнения: поле, оператор, поле. Можно в одной команде сравнивать несколько пар полей одновременно. Перед каждой новой парой записывается опция -C. Опция снабжена двумя операторами: = и !=. Доступные для сравнения поля: -w путь (добавить точку наблюдения за файловым объектом, находящимся по указанному пути) и -W путь (удалить точку наблюдения за файловым объектом, находящимся по указанному пути).

Пример: добавим правило аудита, осуществляющее наблюдение за доступом к файлу /etc/profile:

auditctl -w /etc/profile -p rw -k profile

6.3 Добавление правила регистрации событий безопасности

Утилита autrace позволяет добавлять правила регистрации событий безопасности для того, чтобы следить за использованием системных вызовов в указанном процессе. Она поддерживает опцию -r, с помощью которой можно ограничить сбор информации о системных вызовах только теми, которые необходимы для анализа использования ресурсов.

Пример: с помощью утилиты autrace от имени администратора получим информацию из журналов аудита:

[root@msvsphere ~]# autrace /bin/date
Waiting to execute: /bin/date
Пн апр 9 22:56:19 MSK 2023
Cleaning up
Trace complete. You can locate the records with 'ausearch -i -p 12438'

6.4 Поиск данных регистрации событий безопасности

Утилита ausearch используется для поиска данных регистрации событий безопасности по различным критериям.

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты ausearch и их значения

Опция

Значение

-a, --event audit-event-id

Искать события с заданным идентификатором события.

-c, --comm comm-name

Искать события с заданным именем исполняемого файла.

-f, --file file-name

Искать события с заданным именем файла.

-tm, --terminal terminal

Искать события с заданным терминалом.

-x, --executable executable

Искать события с заданной исполняемой программой.

--session Login-Session-ID

Искать события с заданным идентификатором сессии.

-ua, --uid-all all-user-id

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

-ue, --uid-effective effective-user-id

Искать события с заданным эффективным идентификатором пользователя.

-ui, --uid user-id

Искать события с заданным идентификатором пользователя.

-ga, --gid-all all-group-id

Искать события с заданным эффективным или обычным идентификатором группы.

-ge, --gid-effective effective-group-id

Искать события с заданным эффективным идентификатором группы или именем группы.

-gi, --gid group-id

Искать события с заданным идентификатором группы или именем группы.

-hn, --host host-name

Искать события с заданным именем узла. Имя узла может быть именем узла, полным доменным именем или цифровым сетевым адресом.

-k, --key key-string

Искать события с заданным ключевым словом.

-p, --pid process-id

Искать события с заданным идентификатором процесса.

-pp, --ppid parent-process-id

Искать события с заданным идентификатором родительского процесса.

-sc, --success syscall-name-or-value

Искать события с заданным системным вызовом.

-o, --object SE-Linux-context-string

Искать события с заданным объектом SELinux.

se, --context SE-Linux-context-string

Искать события с заданным контекстом SELinux.

su, --subject SE-Linux-context-string

Искать события с заданным субъектом SELinux.

-sv, --success success-value

Искать события с заданным флагом успешного выполнения. Допустимые значения: yes (успешно) и no (неудачно).

-te, --end [end-date] [end-time]

Искать события, которые произошли раньше или во время указанной временной точки.

-ts, --start [start-date] [start-time]

Искать события, которые произошли после или во время указанной временной точки.

-w, --word

Совпадение с полным словом. Поддерживается для имени файла, имени узла, терминала и контекста SELinux.

-uu, --uuid uuid_гостевой_системы

Искать событие в гостевой ОС с заданным UUID.

-vm, --vm-name имя_гостевой системы

Искать событие в гостевой ОС с заданным именем.

--just-one

Остановить поиск после появления первого события, удовлетворяющего критериям поиска.

-e, --exit exit-code-or-errno

Искать события по заданному системному вызову: коду возврата или номеру ошибки.

--input-logs

Использовать место нахождения файла логов, обозначенное в /etc/audit/auditd.conf.

-h, --help

Выдать справку об утилите.

6.5 Генерация отчетов по данным регистрации событий безопасности

Утилита aureport позволяет генерировать отчеты по данным регистрации событий безопасности.

Утилита поддерживает следующие опции, перечисленные в таблице:

Опции утилиты aureport и их значения

Опция

Значение

-u, --user

Отчет о пользователях.

-e, --event

Отчет о событиях.

-f, --file

Отчет о файлах.

-p, --pid

Отчет о процессах.

-s, --syscall

Отчеты о системных вызовах.

-t, --log

Отчет о временных рамках отчета.

-x, --executable

Отчет об исполняемых объектах.

-tm, --terminal

Отчет о терминалах.

-l, --login

Отчет о попытках входа в систему.

-au, --auth

Отчет о всех попытках аутентификации.

-c, --config

Отчет об изменениях конфигурации.

-m, --mods

Отчет об изменениях пользовательских учетных записей.

--tty

Отчёт о нажатиях пользователя на клавиатуре.

-ma, --mac

Отчет о событиях в системе мандатного управления доступом.

--success

Для обработки в отчетах выбирать только удачные события. По умолчанию показываются и удачные и неудачные события.

--failed

Для обработки в отчетах выбирать только неудачные события. По умолчанию показываются и удачные и неудачные события.

-te, --end [дата] [время]

Искать события, которые произошли раньше или во время указанной временной точки.

-ts, --start [дата] [время]

Искать события, которые произошли после или во время указанной временной точки.

--node имя_узла

Выбрать события, связанные с узлом, имя которого указано после ключа. Можно указать несколько имён узлов. По умолчанию информация собирается со всех узлов.

--summary

Генерировать итоговый отчет, который дает информацию только о количестве элементов в том или ином отчете.

--input-logs

Использовать место нахождения файла логов, обозначенное в /etc/audit/auditd.conf.

6.6 Конфигурационный файл /etc/audit/auditd.conf

Конфигурационный файл /etc/audit/auditd.conf содержит параметры настройки средств регистрации событий безопасности, в том числе:

Параметр

Описание

log_file

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

log_group

Группа, являющаяся владельцем файла регистрации.

log_format

Формат хранения данных регистрации. Возможные значения: raw (данные записываются в том виде, в каком они были получены от ядра операционной системы) и nolog (запись данных отключается).

priority_boost

Приоритет выполнения службы регистрации.

flush

Режим работы службы регистрации. Возможные значения: none (не использовать какие-либо политики записи, т.е. дополнительные действия), incremental (запись с периодичностью, определенной параметром freq), data (запись данных в синхронном режиме), sync (запись в синхронном режиме и данных, и метаданных файла).

freq

Максимальное число регистрационных записей, которые могут храниться в буфере перед записью буферизованных данных на диск. Используется, только когда параметр flush имеет значение incremental.

num_logs

Максимальное число файлов регистрации на диске. Используется, только когда параметр max_log_file_action имеет значение rotate. Значение параметра не должно превышать 99.

disp_qos

Режим передачи данных между службой регистрации и диспетчером. Возможные значения: lossy (блокирование запрещено, т.е. служба регистрации может не передавать диспетчеру некоторые данные о событиях, если очередь данных о событиях полна. При этом данные регистрации будут записаны на диск, если только значение параметра log_format не равно nolog), lossless (блокирование разрешено, т.е. запись данных регистрации о событиях на диск будет остановлена, пока не освободится место в очереди).

dispatcher

Место расположения исполняемого файла программы диспетчера.

name_format

Порядок разрешения имен хостов. Возможные значения: none (имя не используется), hostname (имя, возвращенное через запрос gethostname), fqd (полное имя хоста, возвращенное через DNS запрос) numeric (IP-адрес), user (строка, определенная в параметре name).

max_log_file

Максимальный размер файла регистрации в мегабайтах, по достижении которого будет выполнено действие, определенное параметром max_log_file_action. Возможные действия: ignore (ничего не делать), syslog (отправить предупреждение в syslog), suspend (остановить запись данных регистрации событий на диск), rotate (произвести ротацию файлов регистрации в соответствии с параметром num_logs), keep_logs (осуществить ротацию, не удаляя при этом старые файлы).

space_left

Величина в мегабайтах, определяющая размер оставшегося дискового пространства, по достижении которого будет выполнено действие, определенное параметром space_left_action. Возможные действия: ignore (ничего не делать), syslog (отправить предупреждение в syslog), email (отправить письмо аккаунту, определенному в action_mail_acct), exec (выполнить скрипт), suspend (остановить запись на диск и перевести систему в single mode), halt (выключить систему).

admin_space_left

Величина в мегабайтах оставшегося свободного пространства на диске для предупреждения администратора о том, что надо добавить/очистить свободное пространство. Величина должна быть меньше чем space_left. Действия, которые можно определить в admin_space_left_action, аналогичны space_left_action.

disk_full_action

Действия, выполняемые при заполнении всего дискового пространства. Аналогичны space_left_action.

disk_error_action

Действия, выполняемые при возникновении дисковой ошибки. Аналогичны space_left_action.