На главную
- Инструкции для UNIX-систем
- Обзор
- Подключение к серверу по SSH
- Подключение к серверу по SFTP
- Авторизация по SSH-ключу
- Смена или сброс пароля root
- Смена пароля root для MySQL
- Добавление пользователей
- Управление правами доступа
- Защита SSH от подбора пароля. Fail2ban
- Создание дампа базы и восстановление данных
- Установка LAMP на Ubuntu
- Установка phpMyAdmin на Ubuntu с LAMP
- Установка SSL-сертификата на Nginx
- Установка модулей PHP (CentOS)
- Установка модулей PHP (Debian / Ubuntu)
- Настройка параметров PHP (CentOS)
- Настройка параметров PHP (Debian / Ubuntu)
- Настройка перенаправлений
- Настройка перенаправлений (Nginx)
- Настройка FTP в Ubuntu 20.04
- Оптимизация MySQL с помощью MySQLTuner
- Сканирование с помощью ClamAV
- Управление службами в systemd
- Логирование в systemd
- Аудит системных событий
- Добавление дополнительного IP
- Настройка статического IP
- Добавление и удаление диска
- Изменение размера диска
- Монтирование резервных копий
- Создание swap, изменение его размера
- Установка и удаление программ. Менеджеры пакетов
- Установка графической оболочки XFCE на Ubuntu
- Настройка iptables
- Настройка OpenVPN
- Установка произвольной ОС на сервер
- Удаленный доступ к MySQL
- Установка QEMU-агента
- Установка Zabbix-агента
- Установка и работа с PostgreSQL
- Установка почтового сервера iRedMail
- Настройка почтового сервера iRedMail
- Установка SSL на сервер с Keitaro
- Запуск Wordpress на сервере c Ubuntu
- Запуск бота в фоновом режиме
- Установка сертификатов Минцифры
- Подготовка образа для создания облачного сервера
- Создание и развертывание образа с помощью утилиты dd
- Установка Minecraft на CentOS 7
- Запуск сервера Minecraft
- Запуск сервера с CS 1.6 и EngineGP
- Запуск сервера RageMP
- Настройка Outline VPN
- Диагностика и решение проблем
- Инструкции для Windows
- Панели управления
Аудит системных событий
Для поддержания безопасности и стабильности системы важно следить за ее состоянием. В основном это достигается с помощью мониторинга, анализа логов, а также — аудита системных событий. Хотя аудит сам по себе не является средством защиты от нежелательных действий, он полезен для обнаружения нарушений в безопасности и их дальнейшего устранения.
Специальная утилита — auditd
— позволяет вести мониторинг системных действий и анализировать их. Система аудита устанавливает триггеры на функции, ответственные за обработку системных вызовов (обращений к функциям ядра, без которых не может быть произведена ни одна операция в системе), после чего эти триггеры срабатывают согласно пользовательским правилам. Информация об всех действиях записывается в журнал и после может быть проанализирована администратором.
С помощью auditd
можно отслеживать, например, такие события, как запуск и завершение работы системы; запуск и остановка приложений; доступ к файлам и изменение прав на них; изменение информации о пользователе или группе; установка сетевого соединения, изменение настроек сети и многое другое.
Установка
В системе CentOS пакет audit
, как правило, установлен по умолчанию.
Для установки на Debian / Ubuntu выполните:
sudo apt-get install auditd
В пакет входит несколько утилит:
auditctl
— управление системой аудита, получение информации о состоянии системы, добавление и удаление правил;autrace
— аудит событий, вызываемых процессами (аналогичноstrace
);ausearch
— поиск событий в журналах;aureport
— создание отчетов о работе аудита.
Основные настройки демона auditd
(формат логов, частота обновления, максимальный размер и др.) находятся в конфигурационном файле /etc/audit/auditd.conf
. Как правило, стандартной конфигурации достаточно для эффективной работы с аудитом, но вы можете дополнительно изменить настройки по своему усмотрению. Подробную информацию о каждом параметре можно получить, например, здесь, либо выполнив man auditd.conf
.
Создание правил
Настройка правил выполняется с помощью утилиты auditctl
и следующих опций:
-l
— вывести список созданных правил (если выполнить команду сразу после установкиauditd
, список правил будет пустым);-а
— добавить новое правило;-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
. Для работы с ними используются утилиты aureport
и ausearch
, которые, обладая очень большим количеством опций, позволяют получать информативные отчеты из файлов журнала согласно заданным параметрам.
Полный список опций можно просмотреть с помощью 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 auserch -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
или в различных источниках в сети, например, здесь.