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

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

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

Для просмотра журнала событий безопасности используется утилита 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 | grep SERVICE_START

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

journalctl | grep SERVICE_STOP

Запуск ВМ

journalctl | grep "VIRT_CONTROL.*start"

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

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

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

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

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

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

journalctl | grep "VIRT_CONTROL.*shutdown"

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

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

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

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

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

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

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

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

journalctl | grep "VIRT_CONTROL.*hard_shutdown"
journalctl | grep "VM.hard_shutdown.*audit"

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

journalctl | grep "VM.pause.*audit"

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

journalctl | grep "VM.unpause.*audit"

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

journalctl | grep "VM.suspend.*audit"

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

journalctl | grep "VM.resume.*audit"

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

journalctl | grep "VIRT_CONTROL.*VM.clean_reboot"
journalctl | 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 | grep "USER_LOGIN.*success"

journalctl | grep "USER_AUTH.*success"

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

journalctl | grep "USER_LOGIN.*failed"

journalctl | grep "USER_AUTH.*failed"

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

journalctl | grep "USER_LOGIN.*user"

Доступ по ssh

journalctl | grep "USER_LOGIN.*ssh"

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

journalctl | grep "sshd.*invalid"

Создание ВМ

journalctl | grep "VIRT_CREATE.*VM.create"

Удаление ВМ

journalctl | grep VIRT_DESTROY

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

journalctl | grep "VIRT_CREATE.*VM.copy"

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

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

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

journalctl | grep VIRT_INTEGRITY_CHECK

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

journalctl | grep "VIRT_INTEGRITY_CHECK.*success"

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

journalctl | grep "VIRT_INTEGRITY_CHECK.*failed"

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

journalctl | grep VDI.update_checksum

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

journalctl | grep VM.snapshot

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

journalctl | grep VIRT_MIGRATE_OUT

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

journalctl | grep VIRT_MIGRATE_IN

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

journalctl | 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 '<значение секретного ключа>'