Настройка и аудит системы Linux с помощью auditd
Для проведения аудита на серверах под управлением Linux-систем используют демон auditd. Он предназначен для комплексной проверки операционной системы Linux, например, для регистрации различных событий, анализа действий программ и предоставления информации администратору по заданным шаблонам. Также auditd проверяет операционную систему на ошибки: при необходимости активируется служба оповещения, которая высылает администратору предупреждения и сообщения.
Расскажем о том, как использовать auditd. В качестве примера используется сервер с ОС Ubuntu Server 18.04.
Установка
По умолчанию auditd не интегрирован в операционную систему. Установим его штатными средствами:
Важно! Если серверная платформа находится под управлением CentOS, устанавливать ничего не нужно — демон интегрирован в ОС.
Конфигурирование
Системные параметры хранятся в двух файлах. Первый называется auditd.conf и содержит настройки сервиса аудита, второй называется audit.rules. Audit.conf отвечает за сервис auditd по направлению какие события он записывает и в каком моменте времени. Второй файл содержит в себе правила и фильтры, используемые auditd при выполнении операций. В него администраторы вносят изменения, добавляют новые правила, а также правят текущие шаблоны или удаляют устаревшие.
Для просмотра установленных шаблонов используем следующий флаг:
Если настройки не выполнялись, то таблица будет пустой.
Важно! Удаление правил производится через ключ D.
Для активации мониторинга за конкретным файлом прописываем следующий синтаксис в терминале:
- name_file — имя файла, за которым ведется наблюдение со стороны сервиса auditd;
- permission — права на доступ.
Поле принимает четыре значения:
- R — права на чтение;
- W — разрешается изменять;
- X — используется для исполняемых файлов, сервис запускает его от своего имени;
- A — изменить атрибуты объекта.
Дополнительные ключи, которые идут совместно с командой, расшифровываются следующим образом:
–a: обозначает для демона auditctl список (task, exit, user или exclude) и действие (never или always). Пара перечисляется через запятую.
–F: задает путь к файлу и предоставляет права на поиск.
Если требуется найти определенное событие или объект, используем команду ausearch с ключом –f. Допустим, необходимо просмотреть информацию о том, кто и когда использовал объект /etc/passwd. Прописываем:
В ответ администратор получит число, которое в дальнейшем можно использовать для получения подробной информации о системном вызове. Прописываем в терминале:
- arch — архитектура операционной системы;
- number — числовое значение, полученное через команду uname.
Теперь вернемся к началу раздела. Зная, что такое системный вызов, администраторы использует команду auditctl для получения подробной информации о запускаемых приложениях и активных действиях по учетному имени.
Просмотр логов
Условия заданы, аудит проведен, а как же просмотреть результат? Для этого доступна команда aureport. Собранная информация хранится в директории /var/log/audit/, а файлы имеют расширение .log. Общий вид:
- option задает ключи, по которым происходит выборка информации;
- –if указывает на файл, по которому работает фильтр.
Наиболее часто встречается фильтр по датам. За это отвечают опции –start и –end, после которых следует указание даты и точного времени. К примеру:
Другой пример — просмотр всех отчетов, которые хранятся в каталоге:
Если нужна сводка событий, произошедших в ОС, добавляем в конце флаг –summary.
Последний востребованный вариант — просмотр «неудачных» операций. К таким относятся неудачный вход в ОС, блокировки и т.д. Посмотреть их можно следующим образом:
Основы аудита. Настраиваем журналирование важных событий в Linux
Подсистема аудита Linux позволяет на основе предварительно настроенных правил отслеживать значимую информацию о безопасности операционной системы, создает записи журнала для дальнейшего расследования нарушений политики. Сегодня мы посмотрим поближе на этот важный и для хакера, и для админа элемент системы безопасности.
С помощью аудита можно реализовать журналирование для следующих событий:
- доступ к объектам файловой системы;
- выполнение системных вызовов;
- запуск пользовательских команд;
- логины пользователей;
- действия с учетными записями и привилегиями.
В этой статье я расскажу, как устроена подсистема аудита, как ей управлять, а также как получить журнал аудита всех интересующих тебя событий.
Подсистема аудита в Linux состоит из двух групп компонентов: в пространстве ядра это kauditd, а в пользовательском — auditd.
В общем виде схема работы подсистемы аудита выглядит следующим образом.
Ядро, принимая системные вызовы из user space, пропускает их через фильтры user , task , filesystem , exclude и exit .
- Фильтр user используется для фильтрации (исключения) событий, происходящих в пользовательском пространстве до отправки в auditd. Практически никогда не используется.
- Фильтр task применяется для системных вызовов fork( ) и clone( ) .
- Фильтр filesystem используется для исключения событий для конкретной файловой системы.
- Фильтр exclude задает исключения для событий.
- Фильтр exit проходят все системные вызовы. Обычно настраивают именно этот фильтр.
Через netlink( 7) сообщения отправляются из kauditd в auditd. При получении событий, демон auditd записывает их в лог (по умолчанию / var/ log/ audit/ audit. log ).
Настраивая фильтры с помощью утилиты auditctl, мы можем управлять потоком событий, который хотим получать. С помощью утилит ausearch, aureport, aulast удобно просматривать журнал аудита.
Давай теперь установим и настроим все подсистемы аудита. Установка крайне проста и не вызывает никаких сложностей:
Статус работы подсистемы аудита можно получить так:
$ sudo auditctl -s
enabled 1
failure 1
pid 885
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
backlog_wait_time 60000
loginuid_immutable 0 unlocked
Для теста есть возможность отправить текстовое сообщение в подсистему аудита и убедиться, что соответствующее событие попало в журнал аудита.
$ sudo auditctl -m helloaudit
$ sudo ausearch -m USER
—-
type=USER msg=audit(08/31/2021 19:20:11.160:330699) : pid=305708 uid=root auid=andrey ses=5 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg=’text=helloaudit exe=/usr/sbin/auditctl hostname=rhel.ipa.localdomain addr=? terminal=pts/0 res=success’
Настройки демона auditd представлены в файле / etc/ audit/ auditd. conf . Конфиг по умолчанию рабочий и не требует изменений, оставляем его как есть.
Разберемся теперь, как управлять фильтрами kauditd. Все настройки фильтров группируются в файлы правил. Формат правил аналогичен синтаксису консольной программы auditctl. Демон auditd загружает эти правила последовательно при старте системы либо вручную по команде пользователя.
info
Важный момент: чтобы наши правила применялись после перезагрузки, необходимо записать их в файл, в каталог / etc/ audit/ rules. d/ .
Примеры правил ты можешь найти в каталоге / usr/ share/ audit/ sample-rules/ . Правила аудита бывают следующих типов:
- Управляющие правила настраивают систему аудита и поведение агента. Все возможные опции перечислены в мане auditctl( 8) .
- Правила файловой системы необходимы для наблюдения за файлом или каталогом, доступ к которым мы хотим контролировать. Формат правила следующий:
Важно отметить, что правила системных вызовов значительно влияют на производительность системы в целом. Старайся сократить их количество и объединяй правила, где это возможно.
В качестве тренировки создадим правило аудита для регистрации изменения файла / etc/ passwd .
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее