Контроль целостности системных файлов
Контроль целостности системных файлов в РОСА Виртуализация реализован на основе системы обнаружения вторжения AIDE, которая сравнивает контрольные суммы и атрибуты файлов и директорий с эталонными значениями, хранящимися в базе данных.
Подключения репозитория DVD
Для подключения репозитория DVD нужно выполнить следующие действия:
- подключиться к хосту в виртуализации через ssh, используя логин и пароль учетной записи администратора (пользователь root);
Примечание – Все команды ниже выполняются от имени администратора (пользователь root).
- выполнить команды для подключения репозитория DVD:
# смонтировать DVD
mount /dev/sr0 /mnt
# активировать репозиторий DVD
sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/dvd.repo
Установка дополнительных пакетов
Для реализации контроля целостности необходимо убедиться, что на хостах виртуализации установлены следующие пакеты: aide, aide-extra, и если они отсутствуют, то установить их.
Для проверки установки пакетов используют команду:
yum list installed <имя пакета>
Например:
# yum list installed aide
Установленные пакеты
aide.x86_64 0.17.4-2.0.1.rv31 @anaconda
В примере выше пакет aide уже установлен.
Для установки пакетов используют команду:
yum install <имя пакета>:
Например:
[root@rvhost1 ~]# yum install aide aide-extra
dvd 203 MB/s | 3.0 MB 00:00
Пакет aide-0.17.4-2.0.1.rv31.x86_64 уже установлен.
Зависимости разрешены.
================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
================================================================================================================
Установка:
aide-extra x86_64 1.1-4.rv31 DVD 8.5 k
Результат транзакции
================================================================================================================
Установка 1 Пакет
...
Выполнение транзакции
Подготовка : 1/1
Установка : aide-extra-1.1-4.rv31.x86_64 1/1
Проверка : aide-extra-1.1-4.rv31.x86_64 1/1
Установлен:
aide-extra-1.1-4.rv31.x86_64
Выполнено!
Аналогично необходимо проверить присутствие следующих пакетов на машине СУСВ (Hosted Engine): aide, ovirt-aide-extra, и при необходимости установить их.
Пример установки пакетов:
[root@susv ~]# yum install aide ovirt-aide-extra
Зависимости разрешены.
================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
================================================================================================================
Установка:
aide x86_64 0.17.4-2.0.1.rv31 DVD 125 k
ovirt-aide-extra x86_64 1.1-4.rv31 DVD 189 k
Установка зависимостей:
ansible-collection-community-general noarch 7.0.0-1.rv31 DVD 1.6 M
python3-configparser noarch 3.7.1-6.rv31 DVD 43 k
Результат транзакции
================================================================================================================
Установка 4 Пакета
...
Установлен:
aide-0.17.4-2.0.1.rv31.x86_64 ansible-collection-community-general-7.0.0-1.rv31.noarch
ovirt-aide-extra-1.1-4.rv31.x86_64 python3-configparser-3.7.1-6.rv31.noarch
Выполнено!
Данные пакеты обеспечивают функционал по регистрации событий в журнале безопасности и рассылки уведомлений, связанных с работой системы контроля целостности системных файлов.
Настройка контроля целостности системных файлов
Контроль целостности системных файлов реализован на основе системы обнаружения вторжения AIDE, которая сравнивает контрольные суммы и атрибуты файлов и директорий с эталонными значениями, хранящимися в базе данных.
Для настройки необходимо предварительно убедиться, что на хостах виртуализации установлены следующие пакеты, и если они отсутствуют, то установить: aide, aide-extra. Аналогично следует проверить присутствие следующих пакетов на машине СУСВ (Hosted Engine): aide, aide-extra, ovirt-aide-extra. Данные пакеты обеспечивают функционал регистрации событий в журнале безопасности на веб-портале администрирования РОСА Виртуализация и рассылки уведомлений, связанных с работой системы контроля целостности системных файлов. Если перечисленные выше пакеты отсутствовали в Системе и их пришлось устанавливать, то нужно выполнить перезапуск сервиса rsyslog:
systemctl restart rsyslog
Для автоматизации процесса проверки целостности необходимо создать пользователя с минимальными правами доступа к событиям журнала безопасности среды виртуализации РОСА Виртуализация. Для этого следует перейти в консоль машины СУСВ (Hosted Engine), создать пользователя, например, с именем eventadmin, и установить для него пароль:
ovirt-aaa-jdbc-tool user add eventadmin --attribute=firstName=eventadmin
ovirt-aaa-jdbc-tool user password-reset eventadmin --force --password-valid-to="2035-10-01 12:00:00+0300"
Далее необходимо зайти на портал администрирования РОСА Виртуализация под учётной записью admin и в меню "Администрирование → Пользователи" нажать кнопку Добавить, в открывшемся окне в строке "Поиск:" выбрать internal (internal-authz) и нажать кнопку Вперёд. Из списка найденных пользователей нужно выбрать ранее созданного пользователя eventadmin и нажать кнопку Добавить и закрыть (рисунок 1).

Рисунок 1 ‒ Добавление пользователя
После того как пользователь был добавлен в СУСВ, нужно перейти к назначению прав доступа, нажав кнопкой мыши на имя пользователя, и на вкладке "Права доступа" нажать кнопку Добавить системные полномочия.
Далее следует выбрать из списка роли AuditLogManager и ExternalEventsCreator и нажать кнопку ОК (рисунок 2).

Рисунок 2 ‒ Добавление системных полномочий для пользователя eventadmin
Если требуется переводить хост в режим обслуживания при выявлении каких-либо изменений в контролируемых файлах, то необходимо добавить роль HostAdmin (рисунок 2). Кроме того, нужно отредактировать файл /etc/ovirt-engine/engine-config/engine-event-access.conf, указав в нём имя и пароль ранее созданного пользователя eventadmin:
[ovirt]
username=eventadmin@internal
password=passwordforeventadmin
ca_file=/etc/pki/ovirt-engine/ca.pem
Формат eventadmin@internal подразумевает, что пользователь (администратор) с логином eventadmin находится в домене internal (учетная запись в Портале администрирования СУСВ).
В процессе работы системы пароль, изначально указанный в текстовом виде в поле password будет переведён в зашифрованный вид. При необходимости смены пароля достаточно указать новый пароль в текстовом виде и в дальнейшем к нему будут применены методы шифрования.
Весь процесс настройки контроля целостности системных файлов на хостах можно выполнить удалённо из консоли машины СУСВ (Hosted Engine). Для этого необходимо отредактировать конфигурационный файл /usr/share/ovirt-aide-extra/aide/aide.conf, который в последствии будет автоматически скопирован на хосты системы виртуализации. Также следует убедиться, что параметр report_url=syslog:LOG_AUTH присутствует в конфигурационном файле и не содержит символ "#" в начале строки, как показано на рисунке 3.

Рисунок 3 ‒ 'Редактирование файла /usr/share/ovirt-aide-extra/aide/aide.conf'
На основе такой конфигурации в файле /var/log/aide/aide.log будет сохраняться результат последней проверки целостности системных файлов, а в файле /var/log/aide/aidecheck.log будут накапливаться результаты всех выполненных проверок.
При необходимости можно отредактировать дополнительные секции файла /usr/share/ovirt-aide-extra/aide/aide.conf, указав какие файлы и директории файловой системы требуется контролировать.
Затем требуется отредактировать файл /usr/share/ovirt-aide-extra/inventory/hosts, содержащий список хостов, на которых необходимо выполнять контроль целостности системных файлов:
all:
hosts:
rosa-virt01.example.com:
install_aide_conf: False
aide_conf: "/usr/share/ovirt-aide-extra/aide/aide.conf"
rosa-virt02.example.com:
install_aide_conf: False
aide_conf: "/usr/share/ovirt-aide-extra/aide/aide.conf"
vars:
allow_send_email: False
smtp_to: "Administrator <root@localhost>"
smtp_username: "none"
smtp_password: "none"
smtp_host: localhost
smtp_port: 25
Файл используется в качестве inventory-файла для Ansible и имеет соответствующую структуру. В качестве имени хоста может быть использовано короткое доменное имя (например, rosa-virt01), полное доменное имя (например, rosa-virt01.example.com) или же IP-адрес (например, 192.168.1.162) в зависимости от того, что было прописано в поле "Имя хоста/IP" при добавлении хоста в систему виртуализации (файл конфигурации /etc/hosts) (рисунок 4).

Рисунок 4 ‒ Имя хоста
Настройка и проверки системы контроля целостности с помощью утилиты ovirt-aidecheck
Для настройки и проверки системы контроля целостности можно воспользоваться утилитой ovirt-aidecheck, запустив её в консоли машины СУСВ (Hosted Engine). Утилита предоставляет функционал для удалённой настройки AIDE на всех хостах, указанных в файле /usr/share/ovirt-aide-extra/inventory/hosts, или на каком-то одном хосте, если задан ключ --host. Список всех поддерживаемых ключей командной строки:
--host=rosa-virt01.example.com‒ задаёт одно из имен хоста, указанных в inventory-файле /usr/share/ovirt-aide-extra/inventory/hosts, на котором будет запущен процесс контроля целостности системных файлов;--install-aide-conf‒ перед началом запуска процесса контроля целостности выполнит установку конфигурационного файла /usr/share/ovirt-aide-extra/aide/aide.conf на всех хостах или только на том, который был выбран с помощью ключа —host;--allow-maintenance‒ разрешает перевести хост в режим обслуживания, если проверка целостности обнаружила изменения. Перевод хоста в режим обслуживания произойдёт только в том случае, если на хосте не будут найдены запущенные виртуальные машины;--update-aidedatabase‒ обновляет базу данных AIDE, хранящую эталонные значения контрольных сумм и атрибутов файлов и директорий.
Для первоначальной настройки достаточно выполнить команду:
ovirt-aidecheck --install-aide-conf --update-aidedatabase
В процессе работы вышеописанной команды будет выполнено копирование конфигурационного файла /usr/share/ovirt-aide-extra/aide/aide.conf на все хосты системы, сформирована база данных с эталонными значениями контрольных сумм и атрибутов файлов и запущена проверка целостности.
Настройка периодичности контроля целостности
Для управления периодичностью запуска проверки целостности нужно отредактировать файл /etc/cron.d/0aidecheck. Изначально в этом файле присутствует одна закомментированная строка в качестве примера запуска проверки ежечасно. Достаточно убрать символ "#" в начале строки, чтобы включить соответствующее расписание:
0 */1 * * * root /sbin/ovirt-aidecheck > /dev/null 2>&1
и перезапустить планировщик заданий:
systemctl restart crond
В случае необходимости можно запускать скрипт с параметром --allow-maintenance, который разрешает перевести хост в режим обслуживания, если проверка целостности обнаружила изменения. Перевод хоста в режим обслуживания произойдёт только в том случае, если на хосте не будут найдены запущенные виртуальные машины. В таком случае содержимое файла /etc/cron.d/0aidecheck будет иметь следующий вид:
0 */1 * * * root /sbin/ovirt-aidecheck --allow-maintenance > /dev/null 2>&1
Просмотр результатов работы системы контроля целостности
Краткий отчёт с результатом работы системы контроля целостности будет записан в журнал безопасности, который доступен на Портале администрирования РОСА Виртуализация в секции "Дополнения → События (ГОСТ)" (рисунок 5).

Рисунок 5 ‒ Записи в системе безопасности, дополнение "События (ГОСТ)"
Более полный отчёт находится на хостах в файлах /var/log/aide/aide.log и /var/log/aide/aidecheck.log.
Файл /var/log/aide/aide.log содержит результаты текущей проверки (рисунок 6).

Рисунок 6 ‒ Содержимое файла /var/log/aide/aide.log
Файл /var/log/aide/aidecheck.log содержит историю всех проверок (рисунок 7).

Рисунок 7 ‒ Содержимое файла /var/log/aide/ aidecheck.log
При необходимости отправки полного отчёта проверки на почтовый адрес в системе автоматизации контроля целостности системных файлов такая возможность предусмотрена. Для этого потребуется отредактировать соответствующие строки в файле /usr/share/ovirt-aide-extra/inventory/hosts:
vars:
allow_send_email: True
smtp_to: "Administrator <root@localhost>"
smtp_username: "none"
smtp_password: "none"
smtp_host: localhost
smtp_port: 25
а именно:
- установить значение "True" для переменной allow_send_email;
- указать адрес получателя smtp_to, SMTP-хост и порт (smtp_host, smtp_port), с которого будет выполняться отправка уведомлений;
- при необходимости указать параметры авторизации;
- если авторизация не требуется, то оставить переменные smtp_username и smtp_password без изменений.
В заголовке отправляемого письма будет указан один из четырёх типов уведомления:
"[ INFO ] AIDE is not found differences."– проверка целостности не обнаружила изменений;"[ ALERT ] AIDE found differences."– проверка целостности обнаружила изменения;"[ ALERT ] AIDE found differences. Switching host to maintenance mode."– проверка целостности обнаружила изменения и будет выполнена попытка перевести хост в режим обслуживания;"[ WARNING ] The AIDE utility is already running."– проверка целостности уже запущена.
Включение или выключение шифрования паролей и секретных ключей в конфигурационных файлах РОСА Виртуализация
Для определения текущего состояния режима шифрования паролей и секретных ключей можно воспользоваться консольной командой на машине СУСВ:
/usr/share/ovirt-engine/bin/engine-crypto-tool –status
Current encryption option in the config file: False
All passwords and secret keys in all configuration files are not encrypted
Подобный ответ сообщает об отключенной функции шифрования и о том, что последующая проверка всех конфигурационных файлов не выявила никакого несоответствия заданной опции, а все пароли и секретные ключи находятся в незашифрованном виде.
Перед тем как включить опцию шифрования паролей и секретных ключей, необходимо сделать резервную копию некоторых конфигурационных файлов системы виртуализации. Для этого нужно перейти в консоль машины СУСВ и выполнить команду:
tar -zcf /root/ovirt-conf_`date +%Y%m%d%H%M%S`.tar.gz /etc/ovirt-*
В результате выполнения данной команды в директории /root будет создан архив, содержащий конфигурационные файлы с паролями и секретными ключами. Администратор системы виртуализации должен позаботиться о безопасном месте хранения этого архива или же удалить его после успешного включения опции шифрования паролей и секретных ключей.
Чтобы включить режим шифрования требуется выполнить следующие действия:
- предварительно перевести кластер в режим глобального обслуживания, для чего на любом из активных хостов среды виртуализации, который был настроен для запуска и миграции виртуализированного ЦУ, включить режим глобального обслуживания, выполнив команду:
hosted-engine --set-maintenance --mode=global
- убедиться, что кластер перешел в режим глобального обслуживания (рисунок 8):
hosted-engine --vm-status

Рисунок 8 ‒ Кластер в режиме глобального обслуживания
- перейти в консоль машины СУСВ и остановить работу сервисов ovirt-engine, ovirt-engine-dwhd, выполнив команду:
systemctl stop ovirt-engine ovirt-engine-dwhd
- убедиться в том, что сервисы остановлены (рисунки 9 и 10):
systemctl status ovirt-engine ovirt-engine-dwhd

Рисунок 9 ‒ Сервис ovirt-engine остановлен

Рисунок 10 ‒ Сервис ovirt-engine-dwhd остановлен
- включить режим шифрования паролей и секретных ключей:
/usr/share/ovirt-engine/bin/engine-crypto-tool –enable-encryption
Service ovirt-engine: stopped
Service ovirt-engine-dwhd: stopped
Current encryption option in the config file: False
The encryption option in the config file has been changed to: True
All passwords and secret keys in all configuration files are encrypted
Данный ответ сообщает о переводе режима шифрования в активное состояние и о том, что последующая проверка всех конфигурационных файлов не выявила никакого несоответствия заданной опции, а все пароли и секретные ключи были успешно зашифрованы.
- выполнить запуск ранее остановленных сервисов ovirt-engine, ovirt-engine-dwhd и проверить, что они перешли в состояние "active" (рисунки 11 и 12):
systemctl start ovirt-engine ovirt-engine-dwhd

Рисунок 11 ‒ Сервис ovirt-engine активен
systemctl status ovirt-engine ovirt-engine-dwhd

Рисунок 12 ‒ Сервис ovirt-engine-dwhd активен
- зайти на портал администрирования и, убедившись в том, что система виртуализации находится в рабочем состоянии, отключить режим глобального обслуживания, для чего перейти в консоль хоста среды виртуализации, с которого было включено глобальное обслуживание, и выполнить команду:
hosted-engine --set-maintenance --mode=none
- выключить шифрование способом, аналогичным включению шифрования, за исключением одной опции:
/usr/share/ovirt-engine/bin/engine-crypto-tool --disable-encryption
Service ovirt-engine: stopped
Service ovirt-engine-dwhd: stopped
Current encryption option in the config file: True
The encryption option in the config file has been changed to: False
All passwords and secret keys in all configuration files are not encrypted