3.4.4 Замкнутая программная среда
Скачать документ Окружение
- Версия РЕД ОС: 8
- Конфигурация: Рабочая станция
- Версия ПО: 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:
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 являются произвольными, можно заменить их на свои. Место расположения файла не играет роли, он нужен только для создания пары ключей один раз.
Для сохранения и выхода из текстового редактора nano использовать: CTRL + O
-> Enter
-> 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.
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
Дата последнего изменения: 13.11.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.