2.4.5 Замкнутая программная среда
Скачать документ Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Рабочая станция
- Версия ПО: ima-manage-0.2-1, dracut-056-9
Для контроля целостности компонентов ОС используется IMA. Компонент архитектуры измерения целостности (IMA) производит проверки целостности во время выполнения файлов с использованием хэшей, сравнивая их со списком допустимых хэшей.
Работает, начиная с версии ядра 5.15.78 из репозитория РЕД ОС.
Для проведения контроля целостности необходимо перейти в сеанс пользователя root:
su -
и выполнить следующие действия:
1. Установить пакеты для работы с IMA:
dnf install ima-manage openssl-gost-engine keyutils
2. Обновить пакет dracut:
dnf update dracut
Для корректного осуществления контроля целостности компонентов ОС необходимо, чтобы в системе были установлены актуальные версии пакетов - dracut версии 056-6 и выше, ima-manage версии 0.2-1 и выше.
3. Включить ГОСТ в openssl:
openssl-switch-config gost
4. Сгенерировать пару ключей.
а) Создать файл 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 являются произвольными, можно заменить их на свои. Место расположения файла не играет роли, он нужен только для создания пары ключей один раз.
б) Сгенерировать приватный ключ:
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.
mkdir /etc/keys/ima/ cp x509_evm.der /etc/keys/ima/x509_evm.der
Секретный ключ «privkey_evm.pem» сохранить в каталоге, недоступном для всех пользователей, кроме администратора root, например:
mv privkey_evm.pem /root/privkey_evm.pem
6. Запустить утилиту ima-manage с ключом init:
ima-manage init
7. В файле /etc/ima-manage.conf изменить значение HASHALGO="sha256" на HASHALGO="streebog512".
Значение битности параметра HASHALGO должно совпадать с битностью сгенерированных ключей. Например, если приватный ключ был сгенерирован с параметром gost2012_256, то значение параметра HASHALGO в таком случае будет равен streebog256.
8. Запустить утилиту «ima-manage» с ключом «signfs» и указанием пути размещения секретного ключа:
ima-manage signfs /root/privkey_evm.pem
9. Запустить утилиту ima-manage с ключом «enforce»:
ima-manage enforce
Дождаться завершения работы утилиты и предложения перезагрузки. Дать согласие на перезагрузку системы.
После обновления/редактирования файлов, которые ранее были подписаны IMA, их рекомендуется переподписать, выполнив действия, указанные в п. 8-9.
В противном случае корректное поведение системы при следующем запуске не гарантируется.
Для проверки работы защиты от запуска неподписанных исполняемых файлов создайте копию существующего исполняемого файла, например:
cp /bin/ls ls.copy
Попробуйте его запустить, будет выведена ошибка:
./ls.copy bash: ./ls.copy: Permission denied
При этом в логе аудита появится запись о запрете запуска неподписанного файла:
grep -i ima /var/log/audit/audit.log | tail -n 1 type=INTEGRITY_DATA msg=audit(1638974599.231:11315): pid=2800 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="dm-0" ino=946370 res=0 errno=0UID="user" AUID="user"
Для запуска сторонних файлов, не имеющих подписи, необходимо от имени администратора подписать файл:
evmctl ima_sign --hashalgo md_gost12_512 --key <путь_к_приватному_ключу_privkey_evm.pem> <путь_к_файлу>
Например:
evmctl ima_sign --hashalgo md_gost12_512 --key /root/privkey_evm.pem /home/user/ls.copy
Для включения режима журналирования (система не будет запрещать запуск неподписанных файлов, но будет записывать попытки их запуска) необходимо в файле /etc/default/grub изменить параметр ima_appraise=enforce на ima_appraise=log.
После этого обновите конфигурацию загрузчика ОС, для этого выполните в терминале команду:
- для систем, использующих BIOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
- для систем, использующих UEFI:
grub2-mkconfig -o /boot/efi/EFI/redos/grub.cfg
Дата последнего изменения: 09.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.