Помощь

Проверка системных событий

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

Для этой цели используется специальная утилита под названием auditd, которая обеспечивает мониторинг системных операций и их анализ. Система аудита устанавливает триггеры на функции, обрабатывающие системные вызовы (которые являются фундаментальными операциями в ядре системы). Затем эти триггеры срабатывают в соответствии с правилами, заданными администратором. Информация о всех этих действиях записывается в журнал, который впоследствии может быть проанализирован.

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

Установка

В большинстве случаев, пакет audit уже установлен по умолчанию в системах CentOS.

Для Debian / Ubuntu вы можете выполнить следующую команду для установки:

sudo apt-get install auditd

Установленный пакет включает в себя несколько утилит:

  • auditctl — управление системой аудита, получение информации о текущем состоянии, добавление и удаление правил;
  • autrace — аудит событий, вызываемых процессами, аналогично утилите strace;
  • ausearch — поиск событий в журналах;
  • aureport — создание отчетов о работе аудита.

Основные параметры конфигурации демона auditd (такие как формат логов, периодичность обновления, максимальный размер и другие) настраиваются в конфигурационном файле /etc/audit/auditd.conf. Обычно, стандартные настройки достаточно для успешного выполнения аудита, но при необходимости вы можете вносить дополнительные изменения по вашему усмотрению. Подробные описания параметров можно найти, например, здесь, а также в мануале команды man auditd.conf.

Создание правил

Настройка правил выполняется с использованием утилиты auditctl и следующих опций:

  • -l — вывод списка созданных правил (после установки auditd, список правил будет пустым);
  • -a — добавление нового правила;
  • -d — удаление правила из списка;
  • -D — удаление всех правил.

Для формирования новых правил используется следующая команда:

sudo auditctl -a список,действие -S имя_системного_вызова -F фильтр

Список представляет собой набор событий, к которым нужно применить правило. Можно интерпретировать список как фильтр, который делает правило более точным.

Существует пять видов списков:

  • task — события, связанные с созданием процессов;
  • entry — события, возникающие при входе в системный вызов;
  • exit — события, происходящие при завершении системного вызова;
  • user — события, связанные с параметрами пространства пользователя (uid, pid и gid);
  • exclude — используется для исключения событий из отслеживания.

На практике, наиболее часто используются entry и exit.

Действие определяет, что необходимо сделать после наступления события: записать его в журнал (always) или не записывать (never).

Имя системного вызова указывает, к какому вызову должен срабатывать триггер и производить захват события (например, open, close, exit и другие).

Фильтр — необязательная опция, которая используется для установки дополнительных параметров. Например, чтобы отслеживать доступ к файлам в каталоге /etc, можно указать его в этом параметре:

sudo auditctl -a exit,always -S open -F path=/etc/

Возможно использование нескольких фильтров, чтобы более точно определить интересующие события, такие как изменения файлов с разрешениями w (write) и a (attribute change):

sudo auditctl -a exit,always -S open -F path=/etc/ -F perm=wa

При настройке правил отслеживания файлов можно не указывать имя системного вызова (опция -S):

sudo auditctl -a exit,always -F path=/etc/ -F perm=wa

Чтобы следить за определенным файлом, можно использовать еще более краткую форму (опция -p заменяет perm):

sudo auditctl -w /etc/passwd -p wa

Файл audit.rules

Правила можно также определять через консоль и сохранять их в файле /etc/audit/audit.rules. В этом случае они будут действовать постоянно.

Синтаксис правил в этом случае идентичен, только нужно опустить команду auditctl, например:

-w /etc/passwd -p wa

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

# Очистить все предыдущие правила
-D 

# Задать количество буферов для хранения сообщений 
-b 320 

# Действие при переполнении буферов: 0 — ничего не делать; 1 — отправить сообщение в dmesg, 2 — вызвать панику ядра 
-f 1

Затем следуют пользовательские правила.

Ниже представлены примеры правил для мониторинга различных событий:

# Слежение за конфигурационными файлами системы аудита 
-w /etc/audit/auditd.conf -p wa 
-w /etc/audit/audit.rules -p wa

# Слежение за журнальными файлами 
-w /var/log/audit/ 
-w /var/log/audit/audit.log 

# Наблюдение за настройками и заданиями at 
-w /var/spool/at 
-w /etc/at.allow 
-w /etc/at.deny 

# Мониторинг файлов паролей и групп 
-w /etc/group -p wa 
-w /etc/passwd -p wa 
-w /etc/shadow 

# Слежение за конфигурационными и журнальными файлами входа в систему 
-w /etc/login.defs -p wa 
-w /etc/securetty 
-w /var/log/faillog 
-w /var/log/lastlog 

# Мониторинг списка и имен хостов 
-w /etc/hosts -p wa 

# Слежение за стартовыми скриптами демонов 
-w /etc/init.d/ 
-w /etc/init.d/auditd -p wa 

# Наблюдение за настройками сервера SSH 
-w /etc/ssh/sshd_config 

# Отслеживание изменений прав доступа к файлам 
-a entry,always -S chmod -S fchmod -S chown -S chown32 -S fchown -S fchown32 -S lchown -S lchown32 

# Отслеживание создания, открытия и изменения размера файлов 
-a entry,always -S creat -S open -S truncate -S truncate64 -S ftruncate -S ftruncate64 

# Отслеживание создания и удаления каталогов 
-a entry,always -S mkdir -S rmdir 

# Отслеживание удаления и создания ссылок 
-a entry,always -S unlink -S rename -S link -S symlink 

# Мониторинг операций с монтированием файловых систем 
-a entry,always -S mount -S umount -S umount2

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

sudo service auditd restart

Анализ журналов аудита

Журнальные файлы системы аудита сохраняются по пути /var/log/audit. Для анализа этих файлов применяются инструменты ausearch и aureport, которые обладают обширными функциональными возможностями, позволяя создавать информативные отчеты на основе данных журнала в соответствии с заданными критериями.

Дополнительные параметры и опции для этих инструментов можно найти в документации (man aureport и man ausearch) или в онлайн-ресурсах, например, здесь.

Для создания отчета о файлах, можно использовать aureport с опцией -f:

sudo aureport -f

Вы также можете ограничить отчет определенным временным интервалом:

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

# Например:

sudo aureport -f --start 08/20/20 12:00 --end 08/20/20 13:00

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

  • now (текущее время),
  • recent (последние десять минут),
  • today (сегодня, начиная с полуночи),
  • yesterday (вчера),
  • this-week (на текущей неделе),
  • this-month (в текущем месяце),
  • this-year (в текущем году).

Вывод команды содержит обширное количество информации, и для упрощения анализа можно воспользоваться опцией --summary, чтобы получить краткий обзор обращений к каждому файлу.

sudo aureport -f -i --start recent --summary

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

sudo aureport -f -i --start today | grep /etc/passwd

Затем, с применением инструмента ausearch, каждое событие можно более детально проанализировать:

sudo ausearch -a номер_события

Ausearch также предоставляет возможность находить события на основе различных параметров, таких как:

Идентификатор пользователя (с опцией -ui):

sudo ausearch -ui 1111 --interpret

(Опция --interpret или -i позволяет выводить данные в удобочитаемом формате.)

Имя исполняемого файла (с опцией -x):

sudo ausearch -x /путь/к/файлу

Имя демона (с опцией -tm):

sudo ausearch -tm cron

Системный вызов (с опцией -sc):

sudo ausearch -sc ptrace

Для ограничения результатов по времени можно использовать тот же синтаксис, что и для aureport.

Полный перечень доступных опций ausearch доступен в документации (man ausearch) или в онлайн-ресурсах, например, здесь.

Остались вопросы - пишите