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

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

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

Для просмотра журнала событий безопасности используется утилита 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 Идентификация пользователя
VIRT_CREATE Создание объекта

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

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

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

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

  • Просмотр списка журналов сессий:

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

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

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

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

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

где – это 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>"

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