Контроль целостности системных файлов

Контроль целостности системных файлов в РОСА Виртуализация реализован на основе системы обнаружения вторжения AIDE, которая сравнивает контрольные суммы и атрибуты файлов и директорий с эталонными значениями, хранящимися в базе данных.

Подключения репозитория DVD

Для подключения репозитория DVD нужно выполнить следующие действия:

  1. подключиться к хосту в виртуализации через ssh, используя логин и пароль учетной записи администратора (пользователь root);

Примечание – Все команды ниже выполняются от имени администратора (пользователь root).

  1. выполнить команды для подключения репозитория 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 будет создан архив, содержащий конфигурационные файлы с паролями и секретными ключами. Администратор системы виртуализации должен позаботиться о безопасном месте хранения этого архива или же удалить его после успешного включения опции шифрования паролей и секретных ключей.

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

  1. предварительно перевести кластер в режим глобального обслуживания, для чего на любом из активных хостов среды виртуализации, который был настроен для запуска и миграции виртуализированного ЦУ, включить режим глобального обслуживания, выполнив команду:
hosted-engine --set-maintenance --mode=global
  1. убедиться, что кластер перешел в режим глобального обслуживания (рисунок 8):
hosted-engine --vm-status

Рисунок 8 ‒ Кластер в режиме глобального обслуживания

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

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

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

  1. включить режим шифрования паролей и секретных ключей:
/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

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

  1. выполнить запуск ранее остановленных сервисов 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 активен

  1. зайти на портал администрирования и, убедившись в том, что система виртуализации находится в рабочем состоянии, отключить режим глобального обслуживания, для чего перейти в консоль хоста среды виртуализации, с которого было включено глобальное обслуживание, и выполнить команду:
hosted-engine --set-maintenance --mode=none
  1. выключить шифрование способом, аналогичным включению шифрования, за исключением одной опции:
/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