Настройка и аудит системы Linux с помощью демона Auditd

В инструкции рассмотрена установка, настройка и использование Auditd на серверах под управлением операционной системы Linux.

Что это такое?

Linux Audit Daemon - это среда, позволяющая проводить аудит событий в системе Linux. Используя мощную систему аудита возможно отслеживать многие типы событий для мониторинга и проверки системы, например:

Установка и настройка

Для установки используйте ваш пакетный менеджер, например для Debian/Ubuntu:

На серверах CentOS демон auditd обычно уже предустановлен (пакеты audit and audit-libs).

Конфигурация выполняется с помощью двух файлов: auditd.conf - настройка самого демона, audit.rules - настройка правил, используемых средством auditctl.

Примечание: auditctl - клиентский инструмент для настройки auditd.

Файл auditd.conf настраивает демон аудита Linux (auditd) с акцентом на том, где и как он должен регистрировать события. Он также определяет, как работать с дисками, журналом повторов и количеством хранимых логов. Обычно стандартная конфигурация подходит для большинства систем.

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

Активные правила можно просмотреть с помощью опции -l:

auditctl -l

Сразу после установки набор правил будет пустым.

Удалить правила можно с помощью опции -D:

auditctl -D

Чтобы выполнить мониторинг файла, необходимо определить его полное имя и разрешения для поиска:

Например:

Ключ -F задет фильтры, определив переменную path, мы задаем, какой каталог или файл следует отслеживать. Переменная path определяет, какой вид доступа вызовет событие. Существует 4 вида доступа и они похожи на разрешения файлов, но обратите внимание, что между ними существует важное различие:

Ключ -a указывает список и действие. Допустимые списки: task, exit, user, exclude. Допустимые действия: never, always.

Поиск связанного события или доступ к файлу можно быстро отслеживать с помощью инструмента ausearch:

ausearch -f <имя_файла>

Например:

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

Обратите внимание, что auid определяет исходного пользователя вошедшего в систему. Другие поля могут указывать на другого пользователя, в зависимости от того, какой пользователь используется при выполнении действия.

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

Используя команду ausyscall, можно определить, что представляет собой числовой вызов:

ausyscall <архитектура> <номер>

Например вызов 82 на архитектуре x86_64:

Аудит пользователей

Auditd может использоваться для мониторинга системных вызовов, включая доступ к файлам. Чтобы узнать, к каким файлам обратился конкретный пользователь необходимо знать его идентификатор:

Пример:

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

Аудит журнальных файлов

Аудит журнальных файлов выполняется с помощью утилиты aureport, которая позволяет создавать сводные отчеты о событиях, записанных в файлах журнала Audit. По умолчанию все файлы audit.log находятся в каталоге /var/log/audit/ и запрашиваются для создания отчета. Вы можете указать другой файл для запуска отчета с помощью опции -if:

aureport <опции> -if <имя_файла>

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

aureport --start <месяц>/<день>/<год> <часы>:<минуты>:<секунды> --end <месяц>/<день>/<год> <часы>:<минуты>:<секунды>

Например:

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

Для генерации сводки событий используйте ключ --summary:

Чтобы создать сводный отчет о неудачных событиях для всех пользователей, используйте следующую команду:

Для создания сводного отчета о всех неудачных попытках входа в систему для каждого пользователя, используйте следующую команду:

Последнее обновление: 14.10.2022