Настройка проверки целостности (SIG)
Данный функционал предназначен для проверки целостности виртуальных машин и системных директорий с помощью утилиты afick.
Примечание
Документация описывает настройку SIG-сервиса в среде OpenStack Antelope, установленного с использованием kolla-ansible.
Требования к системе
Установленный и настроенный Agent (см. «Установка и настройка»);
В контейнере
tos-agentустановлена утилитаafick;В контейнер
tos-agentпроброшен сокет Docker для выполнения команд вnova_libvirt:volumes: - "/run/docker.sock:/run/docker.sock:shared" - "/usr/bin/docker:/usr/bin/docker:ro"
Контейнер
tos-agentимеет доступ к XML-файлам виртуальных машин (обычно через общий том сnova_libvirt):volumes: - "/etc/libvirt/qemu/:/etc/libvirt/qemu/:ro"
Настройка
Для настройки SIG-сервиса необходимо в конфигурационном файле agent.conf указать sig в параметре agent_type и добавить секцию [sig]:
[DEFAULT]
agent_type = control,sig
[sig]
destroy_vm = true
signature_check_interval = 60
verifier_config_path = /etc/tos/afick.conf
vm_configs_filepath = /etc/libvirt/qemu/
system_check_dir = /usr/share/qemu,/usr/share/seabios,/usr/share/OVMF
sign_config_opts = /usr/share/qemu PARSEC,/usr/share/seabios PARSEC,/usr/share/OVMF PARSEC,/etc/libvirt/qemu/ agent,/var/lib/nova/instances/_base agent,/etc/libvirt/secrets agent
Параметры секции [sig]:
destroy_vm— уничтожать ВМ при компрометации. Значения:true,false;signature_check_interval— интервал проверки в секундах. По умолчанию:60;verifier_config_path— путь к конфигуafick. По умолчанию:/etc/afick.conf;vm_configs_filepath— путь к XML-файлам ВМ. По умолчанию:/run/libvirt/qemu/;system_check_dir— список системных директорий для проверки (через запятую). Если не задан — проверка не выполняется;sign_config_opts— правила проверки в форматепуть правило, разделенные запятой. Правила определяют проверяемые атрибуты файлов:agent— права, дата, имя, владелец, группа, размер, блоки, MD5;DIR— права, inode, ссылки, владелец, группа;ETC— права, дата, владелец, группа, размер, MD5;Logs— права, ссылки, владелец, группа.
Настройка контейнера
При использовании kolla-ansible инициализация базы данных afick выполняется на этапе bootstrap контейнера:
if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
afick -i -c /etc/tos/afick.conf
exit 0
fi
Для хранения базы данных необходимо создать том:
volumes:
- "tos:/var/lib/tos"
Конфигурационный файл afick должен содержать пути к базе данных, истории и архиву. Пример содержимого /etc/tos/afick.conf:
database:=/var/lib/tos/afick/afick
history:=/var/lib/tos/afick/history
archive:=/var/lib/tos/afick/archive
Принцип работы
SIG-сервис с интервалом signature_check_interval выполняет два типа проверок: целостность виртуальных машин и целостность системных директорий. Обновление базы данных afick выполняется при запуске сервиса.
Проверка виртуальных машин
Сервис сканирует директорию vm_configs_filepath и для каждого найденного XML-файла ВМ выполняет команду:
afick -c /etc/tos/afick.conf -k -l /etc/libvirt/qemu/<vm>.xml
При обнаружении изменений в XML-файле ВМ считается скомпрометированной. Если параметр destroy_vm установлен в true, выполняется уничтожение ВМ командой:
docker exec -u root nova_libvirt virsh destroy <vm>
Cloud Manager оповещается о компрометации.
Проверка системных директорий
Сервис проверяет директории из параметра system_check_dir:
afick -c /etc/tos/afick.conf -k -l <system_dir>
При обнаружении изменений узел переводится в режим обслуживания.
Обновление базы данных
При запуске сервиса проверяется наличие базы данных afick. Если база существует — выполняется её обновление:
afick -c /etc/tos/afick.conf -u
Если база отсутствует — сервис завершает работу с ошибкой. Инициализация базы данных должна быть выполнена на этапе bootstrap контейнера.
Дополнительно
Если
system_check_dirне задан — проверка системных директорий не выполняется.При добавлении новой директории необходимо указать её в
system_check_dirиsign_config_opts.База данных
afickхранится в томеtosи сохраняется между перезапусками контейнера.