Перейти к содержанию

Управление журналом событий#

Перечень журналируемых событий#

Для просмотра журнала событий безопасности используется утилита journalctl.

Тип события Расшифровка события
AUDIT_VIRT_CONTROL: pause Постановка ВМ на паузу
AUDIT_VIRT_CONTROL: unpause Снятие ВМ с паузы
AUDIT_VIRT_CONTROL: start Запуск ВМ
AUDIT_VIRT_CONTROL: hard_shutdown Принудительное выключение ВМ
AUDIT_VIRT_CONTROL: hard_reboot Принудительная перезагрузка ВМ
AUDIT_VIRT_CONTROL: clean_reboot Перезагрузка ВМ
AUDIT_VIRT_CONTROL: clean_shutdown Выключение ВМ
AUDIT_VIRT_CONTROL: suspend Приостановка ВМ
AUDIT_VIRT_CONTROL: resume Возобновление работы ВМ после приостановки
AUDIT_VIRT_INTEGRITY_CHECK Проверка целостности
AUDIT_VIRT_CREATE Создание ВМ
AUDIT_VIRT_DESTROY Уничтожение ВМ
AUDIT_VIRT_MIGRATE_IN Миграция ВМ в хост
AUDIT_VIRT_MIGRATE_OUT Миграция ВМ из хоста
SERVICE_START Запуск сервисов
SERVICE_STOP Остановка сервисов
USER_ROLE_CHANGE Смена роли пользователя
USER_START Аутентификация пользователя
USER_LOGIN Идентификация пользователя

Просмотр событий безопасности#

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

Ключ Описание
-b <номер журнала> Вывод журнала из определенной сессии
-f Просмотр событий в режиме реального времени
--since Просмотр событий с определенной даты/времени. Допустимые форматы: yyyy-mm-dd hh:mm:ss, yyyy-mm-dd, hh:mm, yesterday, today
--until Просмотр событий до определенной даты/времени. Допустимые форматы: yyyy-mm-dd hh:mm:ss, yyyy-mm-dd, hh:mm, yesterday, today, <N> hour ago и т.д.
-p <уровень критичности> Просмотр событий с определенным уровнем критичности, где <уровень критичности> принимает значения от 0 до 7
-n <количество> Вывод последних событий, где <количество> - количество выводимых событий

Уровни критичности:

  • 0: emergency (неработоспособность системы)
  • 1: alerts (предупреждения, требующие немедленного вмешательства)
  • 2: critical (критическое состояние)
  • 3: errors (ошибки)
  • 4: warning (предупреждения)
  • 5: notice (уведомления)
  • 6: info (информационные сообщения)
  • 7: debug (отладочные сообщения)

Просмотр всех событий из определенной сессии:

journalctl -b <номер журнала>

где <номер журнала> определяется при выполнении команды journalctl --list-boots.

  • Просмотр списка журналов сессий:
journalctl --list-boots
1
2
3
4
5
[root@vserver:~]# journalctl --list-boots
-3 0701fbd4aebb42a78a73526f2a86a4a8 Thu 2024-03-21 15:23:14 MSK—Fri 2024-03-22 19:01:21 MSK
-2 d39a3f4520da4c82932f72d6f413b9d9 Mon 2024-03-25 13:31:07 MSK—Fri 2024-04-05 19:20:35 MSK
-1 f965e7161502442eb2f59240e51b0801 Mon 2024-04-08 10:27:17 MSK—Fri 2024-04-12 19:13:42 MSK
0 02fd52b6ac92479e8784f0a6cbad32a5 Wed 2024-04-17 18:44:30 MSK—Fri 2024-04-19 10:36:03 MSK

где первый номер показывает номер журнала, а второй номер - boot ID - уникальный идентификатор журнала, который также можно использовать для вывода журнала.

Фильтрация событий безопасности#

Для фильтрации событий безопасности используется параметр grep:

Запуск сервиса:

journalctl -b | grep SERVICE_START

Остановка сервиса:

journalctl -b | grep SERVICE_STOP

Запуск ВМ:

journalctl -b | grep "VIRT_CONTROL.*start"

Неуспешный запуск:

journalctl -b | grep "VIRT_CONTROL.*start.*failed"

Запуск определенной ВМ:

journalctl -b | grep "VIRT_CONTROL.*start.*<vm-uuid>"

где <vm-uuid> – это uuid ВМ, который можно узнать с помощью команды xe vm-list

Завершение работы ВМ:

journalctl -b | grep "VIRT_CONTROL.*shutdown"

Успешные попытки:

journalctl -b | grep "VIRT_CONTROL.*clean_shutdown.*success"

Определенная ВМ:

journalctl -b | grep "VIRT_CONTROL.*clean_shutdown.*<vm-uuid>"

где <vm-uuid> – это uuid ВМ, который можно узнать с помощью команды xe vm-list

"Чистое" завершение работы:

journalctl -b | grep "VIRT_CONTROL.*clean_shutdown"
journalctl -b | grep "VM.clean_shutdown.*audit"

Принудительное завершение работы:

journalctl -b | grep "VIRT_CONTROL.*hard_shutdown"
или
journalctl | grep "VM.hard_shutdown.*audit"

Поставнока ВМ на паузу:

journalctl -b | grep "VM.pause.*audit"

Снятие ВМ с паузы:

journalctl -b | grep "VM.unpause.*audit"

Приостановка ВМ:

journalctl -b | grep "VM.suspend.*audit"

Возобновление работы ВМ после приостановки:

journalctl -b | grep "VM.resume.*audit"

Перезагрузка ВМ:

journalctl | grep "VIRT_CONTROL.*VM.clean_reboot"
или
journalctl -b | grep "VM.clean_reboot.*audit"

Принудительная перезагрузка:

journalctl | grep "VIRT_CONTROL.*VM.hard_reboot"
или
journalctl | grep "VM.hard_reboot.*audit"

Импорт ВМ фиксируется как событие создания ВМ

Экспорт ВМ:

journalctl | grep VM.*export

Клонирование ВМ:

journalctl | grep "VIRT_CREATE.*VM.clone"

Создание субъекта доступа:

journalctl | grep subject.create

Удаление субъекта доступа:

journalctl | grep subject.destroy

Доступ субъектов доступа к УВМ:

journalctl -b 0 | grep USER_LOGIN
и
journalctl | grep USER_AUTH

Успешный доступ:

journalctl -b 0 | grep "USER_LOGIN.*success"
и
journalctl | grep "USER_AUTH.*success"

Неуспешный доступ:

journalctl -b 0 | grep "USER_LOGIN.*failed"
и
journalctl | grep "USER_AUTH.*failed"

Доступ определенного субъекта доступа к УВМ:

journalctl | grep "USER_LOGIN.*user"

Доступ по ssh:

journalctl -b | grep "USER_LOGIN.*ssh"

Неуспешная попытка доступа по ssh (неправильный логин):

journalctl -b | grep "sshd.*invalid"

Создание ВМ:

journalctl -b | grep "VIRT_CREATE.*VM.create"

Удаление ВМ:

journalctl -b | grep VIRT_DESTROY

Копирование ВМ:

journalctl -b | grep "VIRT_CREATE.*VM.copy"

Управление ролями пользователей (присвоение/удаление/изменение):

journalctl -b 0 | grep 'role.*add' && journalctl -b 0 | grep 'role.\*remove'

Контроль целостности объектов контроля (VDI ВМ):

journalctl -b | grep VIRT_INTEGRITY_CHECK

Успешный контроль целостности:

journalctl -b | grep "VIRT_INTEGRITY_CHECK.*success"

Неуспешный контроль целостности:

journalctl -b | grep "VIRT_INTEGRITY_CHECK.*failed"

Обновление КС VDI ВМ:

journalctl | grep VDI.update_checksum

Создание снапшота:

journalctl -b | grep VM.snapshot

Миграция ВМ на другой сервер:

journalctl -b | grep VIRT_MIGRATE_OUT

Миграция ВМ с другого сервера:

journalctl -b | grep VIRT_MIGRATE_IN

Создание хранилища:

journalctl -b | grep sr.create

Удаление журнала событий#

Удалить журналы, оставив только последние 100 Мб:

journalctl --vacuum-size=100M

Удалить журналы, оставив журналы только за последние 7 дней:

journalctl --vacuum-time=7d

Экспорт журнала событий#

Для экспорта журнала аудита необходимо:

  1. Выполнить команду по выгрузке журнала в файл. Пример выгрузки:
    journalctl [ключи|параметры] > journal.log
    
  2. Подключить и смонтировать USB-Flash-накопитель к устройству, на которое установлен Numa vServer
  3. Скопировать полученный файл на USB-Flash-накопитель

Контроль целостности журнала событий#

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

  1. Сгенерировать пару ключей для подписи журнала аудита

    journalctl --setup-key
    
    Команда выведет значение секретного ключа

  2. Проверить целостность журнала

    journalctl --verify --verify-key '<значение секретного ключа>'