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

Организация замкнутой программной среды в zVirt SE

1. Общие сведения

Замкнутая программная среда (ЗПС) в zVirt SE использует подсистемы ядра Linux Integrity Measurement Architecture (IMA) и Extended Verification Module (EVM). Подсистемы проверяют целостность файловой системы.

1.1. Основные компоненты

IMA (Integrity Measurement Architecture) блокирует запуск измененного файла.
Режимы IMA:

  • Измерение (measurement) — пассивный режим, в котором собираются хеш-образы файлов (эталоны).

  • Оценка (appraisal) — активный режим, в котором текущий хеш файла сравнивается с эталоном, и при несовпадении доступ к файлу запрещается.

EVM (Extended Verification Module) проверяет метаданные файла и блокирует их изменение. К метаданным относятся security.ima, security.selinux, идентификатор пользователя (UID) и идентификатор группы (GID).

1.2. Принцип работы

Система работает по цепочке доверия.

Ядро собирается с корневым сертификатом удостоверяющего центра (УЦ). В хранилище ключей ядра загружается сертификат пользователя, заверенный этим УЦ. Исполняемые файлы подписываются закрытым ключом этого сертификата.

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

2. Инструкция по настройке ЗПС

2.1. Подготовка сертификата

Для оценки целостности файлов подготовьте сертификат в формате DER.

Порядок действий
  1. Создайте запрос на подпись сертификата (Certificate Signing Request, CSR), например, по примеру конфигурационного файла myreq.cnf:

    openssl req -new -newkey rsa:2048 -nodes -keyout myserver.key -out myserver.csr -config myreq.cnf

    Где:

    • myserver.key — файл, в который сохраняется закрытый ключ;

    • myserver.csr — файл запроса на подпись сертификата (CSR);

    • myreq.cnf — файл конфигурации запроса: владелец, организация и расширения сертификата.

  2. Передайте файл запроса (в этом примере — myserver.csr) в УЦ Orion Soft (по электронной почте admin@orion) для заверения.

  3. Получите подписанный сертификат (в этом примере — myserver.crt).

  4. Конвертируйте подписанный сертификат в формат DER:

    openssl x509 -in myserver.crt -out x509_ima.der -outform DER

    Команда создает файл x509_ima.der.

Пример 1. Пример конфигурационного файла myreq.cnf
[ req ]
# Базовые настройки для генерации запроса (CSR)
default_bits = 2048                     # Разрядность ключа
default_md = sha256                     # Алгоритм хеширования
prompt = no                             # Не задавать вопросы интерактивно, а брать всё из файла
distinguished_name = req_distinguished_name # Какая секция описывает DN
req_extensions = v3_req                 # Какая секция описывает расширения для CSR

# Секция Distinguished Name (DN) - информация о владельце сертификата
[ req_distinguished_name ]
# Замените значения в кавычках на свои
C = RU                                  # Страна (2 буквы)
ST = Moscow                             # Штат или область
L = Moscow                              # Город
O = RRR GMBH                              # Название организации
OU = IT Security Dept                   # Отдел
CN = ima-signing-key                    # Common Name, обычно указывает на владельца ключа
emailAddress = admin@rrr.ru             # Email для связи

# Секция с расширениями для запроса на подпись (CSR)
[ v3_req ]
# Основные параметры для code signing
keyUsage = digitalSignature            # Использование ключа для цифровой подписи
extendedKeyUsage = critical,codeSigning # Использование для подписи кода (критично)

# Секция с альтернативными именами (SAN). Если не нужен, можно удалить или закомментировать.
subjectAltName = @alt_names

# Список альтернативных имён (SAN)
[ alt_names ]
DNS.1 = rrr.ru              # Доменное имя
DNS.2 = rrr2.ru                       # Дополнительное доменное имя

2.2. Настройка узла

Чтобы включить ЗПС на узле zVirt SE, выполните действия:

  1. Скопируйте сертификат x509_ima.der в каталог /etc/keys.

  2. Поместите закрытый ключ myserver.key в защищенное хранилище.

  3. Создайте файл политики /etc/ima/ima-policy с правилами оценки файлов:

    echo -e "dont_appraise fsmagic=0x1021994\nappraise func=BPRM_CHECK mask=MAY_EXEC\nappraise func=MMAP_CHECK mask=MAY_EXEC " > /etc/ima/ima-policy
  4. Настройте dracut, чтобы включить сертификат в initramfs (начальную файловую систему в ОЗУ):

    echo -e " install_items+= /etc/keys/x509_ima.der " > /etc/dracut.conf.d/ima.conf
    dracut -f
  5. Добавьте в конфигурацию GRUB параметр логирования, чтобы сначала проверить работу ЗПС:

    grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="ima_appraise=log"
  6. Подпишите исполняемые файлы и библиотеки:

    find /usr /etc /boot /opt /var -type f \( -perm /0111 -o -name "*.so*" \) -print0 | xargs -0 -I {} sh -c 'evmctl ima_sign --key myserver.key "$1"' -- {}
  7. Если проверка логов подтвердила работу ЗПС, включите принудительную блокировку:

    grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="ima_appraise=enforce"

3. Администрирование и проверка

3.1. Команды управления

  • Загрузка сертификата в хранилище .ima:

    keyctl padd asymmetric "" %:.ima < x509_ima2.der

  • Просмотр подписи файла:

    getfattr -n security.ima /path/to/file

  • Просмотр ключей в хранилище .ima:

    keyctl list %:.ima

3.2. Хранилища ключей (Keyrings)

В системе используются глобальные хранилища:

Таблица 1. Глобальные хранилища ключей
Хранилище Назначение

.builtin_trusted_keys

Ключи, встроенные в ядро при компиляции

.secondary_trusted_keys

Ключи, загруженные в систему и подтвержденные встроенными ключами

.ima

Проверка подписей исполняемых файлов

.evm

Защита метаданных

.machine

Ключи оборудования (Machine Owner Key, MOK)

.platform

Ключи из прошивки или UEFI

.blacklist

Отозванные ключи