3.4.6 Замкнутая программная среда
Включение режима замкнутой программной среды
Проверка работы
Порядок обновления ОС при включенном режиме замкнутой программной среды
Окружение
- Версия ОС: 8
- Конфигурация ОС: Рабочая станция
- Редакция ОС: Все
- Версия ПО: ima-manage-0.2-1, dracut-059-11
Для контроля целостности компонентов ОС используется IMA. Компонент архитектуры измерения целостности (IMA) производит проверки целостности во время выполнения файлов с использованием хешей, сравнивая их со списком допустимых хешей.
Включение режима замкнутой программной среды
Для проведения контроля целостности необходимо выполнить следующие действия (потребуются права администратора):
1. Установить пакеты для работы с IMA:
sudo dnf install ima-manage openssl-gost-engine keyutils
2. Обновить пакет dracut:
sudo dnf update dracut
Для корректного осуществления контроля целостности компонентов ОС необходимо, чтобы в системе были установлены актуальные версии пакетов — dracut версии 056-6 и выше, ima-manage версии 0.2-1 и выше.
3. Включить ГОСТ в openssl:
sudo openssl-switch-config gost
4. Сгенерировать пару ключей.
а) Создать файл test-ca.conf:
nano test-ca.conf
В test-ca.conf добавить содержимое:
[ req ] distinguished_name = req_distinguished_name prompt = no string_mask = utf8only x509_extensions = v3_ca [ req_distinguished_name ] O = IMA-CA CN = IMA/EVM certificate signing key emailAddress = ca@ima-ca [ v3_ca ] basicConstraints=CA:TRUE subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer
Значения полей O, CN, emailAddress являются произвольными, можно заменить их на свои. Каталог хранения файла не имеет существенного значения, он нужен только для создания пары ключей один раз.
Сохранить изменения (Ctrl + S) и закрыть редактор (Ctrl + X).
б) Сгенерировать приватный ключ:
openssl genpkey -algorithm gost2012_512 -pkeyopt paramset:A -out privkey_evm.pem
в) Создать запрос:
openssl req -new -config test-ca.conf -md_gost12_512 -key privkey_evm.pem -out cert.req
г) Отправить файл запроса в Техническую поддержку РЕД СОФТ.
Контроль целостности компонентов ОС может быть осуществлен только с использованием ключей, подписанных доверенным центром РЕД СОФТ. Использование самоподписанных ключей не допускается.
Получить публичный ключ (например, x509_evm.der). В случае получения сертификата в CRT-формате, его можно перевести в формат DER следующим образом:
openssl x509 -outform der -in pub.crt -out x509_evm.der
5. Создать папку /etc/keys/ima/ и скопировать в нее открытый ключ x509_evm.der.
sudo mkdir -p /etc/keys/ima/ sudo cp x509_evm.der /etc/keys/ima/x509_evm.der
Секретный ключ privkey_evm.pem сохранить в каталоге, недоступном для всех пользователей, кроме администратора root, например:
sudo mv privkey_evm.pem /root/privkey_evm.pem
Постоянное наличие на машине закрытого ключа для работоспособности ЗПС не требуется. Закрытый ключ требуется только для подписи файлов. Для проверки используется открытый ключ, импортированный в хранилище ключей (keyring) ядра.
Однако обратите внимание, что закрытый ключ потребуется для установки нового ПО или обновления системы.
6. В файле /etc/fstab к опциям монтирования файловой системы (deafults) для разделов, на которых будут изменяться файлы, добавить опцию iversion. По умолчанию опция добавляется для корневого каталога (/):
UUID=ccb7f99f-5d40-428e-a277-be1d3cdaf2c4 / ext4 defaults,iversion 1 1
7. Запустить утилиту ima-manage с ключом init:
sudo ima-manage init
8. В файле /etc/ima-manage.conf изменить значение HASHALGO="sha256" на HASHALGO="streebog512".
Значение битности параметра HASHALGO должно совпадать с битностью сгенерированных ключей. Например, если приватный ключ был сгенерирован с параметром gost2012_256, то значение параметра HASHALGO в таком случае будет равен streebog256.
9. Запустить утилиту ima-manage с ключом «signfs» и указанием пути размещения секретного ключа:
sudo ima-manage signfs /root/privkey_evm.pem
10. Запустить утилиту ima-manage с ключом «enforce»:
sudo ima-manage enforce
Дождаться завершения работы утилиты и предложения перезагрузки. Дать согласие на перезагрузку системы.
После обновления/редактирования файлов, которые ранее были подписаны IMA, их рекомендуется переподписать. Подробную информацию см. в п. «Порядок обновления ОС при включенном режиме замкнутой программной среды».
В противном случае корректное поведение системы при следующем запуске не гарантируется.
Проверка работы
Для проверки работы защиты от запуска неподписанных исполняемых файлов создайте копию существующего исполняемого файла, например:
cp /bin/ls ls.copy
Попробуйте его запустить, будет выведена ошибка:
./ls.copy bash: ./ls.copy: Отказано в доступе
При этом в логе аудита появится запись о запрете запуска неподписанного файла:
sudo grep -i -a ima /var/log/audit/audit.log | tail -n 1 type=INTEGRITY_DATA msg=audit(1775464116.265:519): pid=2305 uid=1000 auid=1000 ses=2 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 op=appraise_data cause=IMA-signature-required comm="bash" name="/home/user/ls.copy" dev="sda4" ino=1593715 res=0 errno=0UID="user" AUID="user"
Для запуска сторонних файлов, не имеющих подписи, необходимо от имени администратора подписать файл:
sudo evmctl ima_sign --hashalgo md_gost12_512 --key <путь_к_приватному_ключу_privkey_evm.pem> <путь_к_файлу>
Например:
sudo evmctl ima_sign --hashalgo md_gost12_512 --key /root/privkey_evm.pem /home/user/ls.copy hash(md_gost12_512): f9b33a7cf341b5c30c8c10db00f70daeaaa25e66d068bb1993e33d2dbf0a85a0b138801794a4626f84c35cdf6121218eb545c3ed4a9556fcb34d4a6a4dbf14c7 evm/ima signature: 136 bytes 030213b3b964440080a425c73bddeaad7<...>223b09107893f01adfa0d01ef1a5d8420385757d56e16a1ce355786f5b0f2e21b0a94d97a80632faf4280d525b4b4b985e05f77bd
Для включения режима журналирования (система не будет запрещать запуск неподписанных файлов, но будет записывать попытки их запуска) необходимо в файле /etc/default/grub изменить параметр ima_appraise=enforce на ima_appraise=log.
Для применения изменений потребуется обновить конфигурацию загрузчика ОС командой:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Затем перезапустить систему:
reboot
Порядок обновления ОС при включенном режиме замкнутой программной среды
Для обновления компонентов замкнутой программной среды и последующего корректного запуска ОС необходимо выполнить следующий алгоритм действий:
1. Отключить IMA. Для этого откройте файл /etc/default/grub:
sudo nano /etc/default/grub
и измените следующие параметры:
GRUB_CMDLINE_LINUX+=" ima_appraise=off" GRUB_CMDLINE_LINUX+=" ima_policy=off"
Сохраните изменения (Ctrl + S) и закройте редактор (Ctrl + X).
2. Обновить конфигурацию загрузчика:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
3. Перезапустить ОС:
reboot
Во время запуска необходимо убедиться, что ядро загружается с указанными параметрами ima_appraise=off и ima_policy=off.
4. Обновить систему:
sudo dnf update
5. Переподписать файлы с использованием закрытого ключа (потребуются права администратора):
sudo ima-manage signfs /root/privkey_evm.pem sudo ima-manage enforce
6. Включить IMA. Для этого откройте файл /etc/default/grub:
sudo nano /etc/default/grub
и измените следующие параметры:
GRUB_CMDLINE_LINUX+=" ima_appraise=enforce" GRUB_CMDLINE_LINUX+=" ima_policy=on"
Сохраните изменения (Ctrl + S) и закройте редактор (Ctrl + X).
7. Обновить конфигурацию загрузчика:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
8. Перезапустить ОС:
reboot
Во время запуска необходимо убедиться, что ядро загружается с указанными параметрами ima_appraise=enforce и ima_policy=on.
9. После перезагрузки выполнить проверку работы защиты от запуска неподписанных исполняемых файлов и журналирования.
Дата последнего изменения: 09.04.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.