Настройка Red OS в режиме Secure Boot

Отключите CSM в UEFI. Не спрашивайте зачем – просто сделайте это. Без этого ничего не будет загружаться как надо. Платформа должна быть в режиме native UEFI, никаких legacy. Убедились? Едем дальше.

Для проверки включён ли контроль цифровой подписи, выполните:

mokutil --sb-state

Если возвращает SecureBoot enabled, значит всё уже активно. Если disabled – включать придётся вручную через UEFI интерфейс, без вариантов. Каждый вендор делает это по-своему – читайте мануал к плате. Или лучше сразу прошивайте нормальную прошивку с открытым доступом к ключевому хранилищу.

Теперь про ключи. Использовать стандартные от Microsoft? Нет. Только свои. Генерируйте RSA-пару и подпишите ваш shim и GRUB. Это минимум. В Red OS без этого ничего не поедет. Пример команды для создания собственных ключей:

openssl req -new -x509 -newkey rsa:2048 -keyout DB.key -out DB.crt -days 3650 -nodes -subj "/CN=MyPlatformKey"

Внимание! Использование сторонних ключей из интернета – прямой путь к уязвимости. Только самостоятельно сгенерированные ключи. Только офлайн. Только через проверенную машину.

Подписывать можно с помощью sbsign:

sbsign --key DB.key --cert DB.crt --output grubx64.efi grubx64.efi

Потом добавить в MOK (Machine Owner Key) базу:

mokutil --import DB.crt

После перезагрузки MOK Manager запросит пароль. Без пароля ключ не загрузится. Не забыли?

Shim должен быть собран с поддержкой собственного ключа. Никаких prebuilt. Только пересобрать. Red OS требует строгой подлинности на всех этапах загрузки. GRUB, ядро, initramfs – всё должно быть подписано и проверено.

Важно помнить: если после включения загрузка останавливается на чёрном экране – почти всегда виноват неподписанный бинарник или конфликт с ядром. Проверка по цепочке – ваш единственный путь вперёд.

Для отладки смотрите журнал через journalctl -b и снимайте Secure Boot policy с помощью:

dmesg | grep -i secure

Ошибки вида Verification failed – индикатор, что ваша подпись не соответствует текущему PK/KEK/MOK.

Подпись ядра:

sbsign --key DB.key --cert DB.crt --output vmlinuz-signed vmlinuz

И initramfs:

sbsign --key DB.key --cert DB.crt --output initrd.img-signed initrd.img

Финальная загрузка работает только при полной цепочке доверия. Одно слабое звено – и чёрный экран, лог с ошибкой и грусть. Всё должно быть проверено, подписано, добавлено в MOK или PK. Отступлений нет.

Платформа жесткая. Red OS не прощает ошибок в последовательности. Один бит неверный в структуре EFI – и вы в текстовом режиме UEFI Shell без возможности загрузки. Поэтому – строго, пошагово, с проверкой каждой подписи. Без самодеятельности.

Проверка поддержки Secure Boot на оборудовании и в Red OS

Проверяйте через UEFI Setup: параметр с названием Secure Boot должен быть доступен. Если его нет – поддержка отсутствует физически. Платформа не подходит. И точка.

Читайте также:  Как настроить горячие клавиши в KDE для повышения эффективности работы

На рабочих станциях с прошивкой AMI ищите это в разделе Boot или Security. На серверных платформах от Supermicro или ASUS – может быть глубоко спрятан в Advanced > Trusted Computing. Не нашли? Меняйте прошивку. Или материнку.

Проверка в среде. Используйте:

mokutil --sb-state

Дополнительно проверяйте поддержку модуля ядра:

cat /sys/firmware/efi/vars/SecureBoot-*/data

Если файл существует и содержит 1 – платформа верифицирует подписи на каждом этапе. Если нет – вы не в EFI. Вы в legacy. В 2006 году.

Важно помнить: запуск в режиме CSM (Compatibility Support Module) полностью блокирует механизм контроля подлинности. UEFI только в чистом виде. Без наследия BIOS.

Проверка наличия shim:

ls /boot/efi/EFI/*/shimx64.efi

Если shim отсутствует, загрузка происходит напрямую. Это либо плохо, либо очень плохо. Без промежуточного shim вы не сможете внедрить собственные ключи без пересборки ядра с вложенной подписью.

Проверьте наличие переменной SetupMode:

hexdump -C /sys/firmware/efi/vars/SetupMode-*/data

Результат 01 означает, что PK (Platform Key) не установлен. Можно загружать любые ключи. Результат 00 – ключ уже установлен, придётся следовать правилам верификации. Ошибки будут. Будут обязательно.

Внимание! Red OS блокирует загрузку неподписанных компонентов уже на уровне GRUB, если активирована проверка ключей. Без актуального набора MOK и подписанных бинарников загрузка невозможна.

Проверяйте статус ядра:

dmesg | grep -i secure

Ожидайте строки вида UEFI: Secure Boot is enabled. Если тишина – значит либо не UEFI, либо модуль ядра не получил переменные среды. Проблема в цепочке. Ищите утечку.

Проверка завершена. Если хотя бы один этап не прошёл – систему нельзя использовать в защищённой среде. Любой сбой – это потенциальное окно. А мы окна не любим. Мы их закрываем.

Создание и установка собственных ключей безопасности для Secure Boot

Генерация пары ключей выполняется через OpenSSL. Для этого используйте команду:

openssl req -new -x509 -newkey rsa:2048 -keyout DB.key -out DB.crt -days 3650 -nodes -subj "/CN=MyPlatformKey"

Здесь DB.key – это приватный ключ, DB.crt – публичный сертификат, а 3650 – срок действия (10 лет). Конечно, вы можете поставить своё значение для срока, но меньше 5 лет не советую. Доверие должно быть проверено.

Важно! Без пароля для ключа дальше не двигаемся. Приватный ключ должен быть зашифрован и защищён паролем. В любой момент кто-то может украсть его, если не учтён этот момент.

Подпишем shim и загрузчик GRUB с помощью сгенерированного ключа:

sbsign --key DB.key --cert DB.crt --output /boot/efi/EFI/RedOS/shimx64.efi /boot/efi/EFI/RedOS/shimx64.efi

Результат: теперь shim имеет вашу подпись. Так делаем и с GRUB:

sbsign --key DB.key --cert DB.crt --output /boot/efi/EFI/RedOS/grubx64.efi /boot/efi/EFI/RedOS/grubx64.efi

Внимание! Если вы не подписали именно shim и GRUB, при загрузке будет ошибка. Не подписанный загрузчик не пройдет через проверку ключей.

Теперь создаём MOK (Machine Owner Key) для импорта в базу ключей. Используйте:

mokutil --import DB.crt

Затем перезагрузитесь, в процессе загрузки вас попросят ввести пароль для MOK Manager. Без этого пароля ключ не будет принят. Не забудьте! Без пароля – не работает. Если вы забыли – всё, начнём заново.

Читайте также:  Создание псевдонимов команд с помощью alias

После импорта MOK обязательно проверьте статус ключа:

mokutil --list-enrolled

Помните! Если после перезагрузки загрузка останавливается с ошибкой «Invalid Signature», значит где-то ошибка в цепочке. Проверяйте подпись каждого компонента по порядку.

Ваши ключи теперь установлены. Ядро и другие компоненты должны быть подписаны аналогичным образом, и без этого загрузка будет заблокирована. Убедитесь, что все бинарники, включая initramfs, подписаны вашим ключом.

Проверка подписанных бинарников выполняется с помощью:

sbverify /boot/efi/EFI/RedOS/grubx64.efi

Если всё прошло успешно, ваш загрузчик и shim будут проверяться на каждом этапе загрузки. Вы на 100% контролируете этот процесс. Платформа защищена.

Настройка загрузчика GRUB для работы с включённым Secure Boot

Без правильной конфигурации GRUB с включённым режимом контроля подписи загрузка будет заблокирована. Не ожидайте чудес, если просто поставите стандартный GRUB. Это не сработает. Вам нужно собрать его с поддержкой собственных ключей, иначе всё заблокируется на этапе загрузки.

Шаг 1. Убедитесь, что у вас установлен GRUB2 с поддержкой UEFI. Если у вас старая версия, обновите до последней. Убедитесь, что путь к загрузчику верен, и он скомпилирован с флагами, которые позволяют работать с включёнными ключами. Важно, что Red OS поставляется с уже нужной версией GRUB, но проверка никогда не помешает.

Шаг 2. Конфигурация файла /etc/default/grub. Включите опцию GRUB_ENABLE_BLSCFG, чтобы разрешить использование BLS (Boot Loader Specification). Это гарантирует, что GRUB будет корректно работать с EFI. Без этого – не выйдет! В вашем файле /etc/default/grub должно быть так:

GRUB_ENABLE_BLSCFG=true

Шаг 3. Перегенерируем конфигурацию GRUB:

grub2-mkconfig -o /boot/efi/EFI/RedOS/grub.cfg

После выполнения этой команды новый конфигурационный файл будет готов. Он должен включать правильные пути к ядрам и инициализирующим образам. Если пути неверны, загрузчик не загрузит ядро.

Шаг 4. Подпишем сам GRUB. Для этого используем команду sbsign, как в предыдущем разделе:

sbsign --key DB.key --cert DB.crt --output /boot/efi/EFI/RedOS/grubx64.efi /boot/efi/EFI/RedOS/grubx64.efi

Важно! Если вы забыли подписать сам загрузчик GRUB, система не пропустит его через проверку подписи. Это будет проявляться как ошибка и чёрный экран без возможности загрузки.

Шаг 5. После этого нужно обновить базу данных ключей в MOK (Machine Owner Key), иначе GRUB не будет принимать ваши ключи. Выполните команду:

mokutil --import DB.crt

Если не сделаете этого, загрузка застрянет на запросе пароля для MOK, который вы не указали. После перезагрузки откроется MOK Manager. Убедитесь, что ключ прошёл проверку.

Шаг 6. Перезагрузите систему. На экране MOK Manager выберите опцию для добавления ключа в базу. После этого загрузка продолжится нормально. Помните, что для продолжения нужно будет ввести пароль, который вы устанавливали при импорте ключа.

Проверка работы загрузчика. После выполнения всех шагов можно проверить, что загрузчик работает правильно, скомпилирован и подписан. Выполните команду:

Читайте также:  Автоматизация установки Red OS с помощью Kickstart

sbverify /boot/efi/EFI/RedOS/grubx64.efi

Теперь у вас правильно настроенный загрузчик. Все компоненты подписаны, и система будет загружаться только через доверенные подписи. Убедитесь, что каждое обновление GRUB и ядра также подписано вашими ключами – иначе через время система снова заблокирует загрузку.

Отладка проблем загрузки после включения Secure Boot

Шаг 1. Проблема: «Ошибка загрузки: Invalid Signature»

  • Проверьте, что загрузчик GRUB подписан вашим ключом. Если подпись отсутствует, загрузка не будет разрешена.
  • Используйте sbverify /boot/efi/EFI/RedOS/grubx64.efi, чтобы убедиться, что файл подписан правильно.
  • Если ошибка остаётся, перегенерируйте конфигурацию GRUB и снова подпишите его:
  • sbsign --key DB.key --cert DB.crt --output /boot/efi/EFI/RedOS/grubx64.efi /boot/efi/EFI/RedOS/grubx64.efi

Шаг 2. Проблема: «Ошибка загрузки: Access Denied»

  • Ошибка может быть связана с неверным сертификатом в MOK. Проверьте, импортирован ли ваш сертификат с помощью mokutil --list-enrolled.
  • Если сертификат отсутствует, импортируйте его снова командой:
  • mokutil --import DB.crt

  • Не забудьте перезагрузиться и пройти процедуру в MOK Manager, чтобы подтвердить импорт ключа.

Важно помнить! Если MOK Manager не отображает ваш сертификат, загрузка будет заблокирована. Проверьте точность сертификата и правильность его импорта.

Шаг 3. Проблема: «Зависание на чёрном экране»

  • Часто это результат неправильных путей к файлам загрузчика или повреждённого ядра. Проверьте настройки в конфигурации GRUB. Убедитесь, что все пути к образам корректны.
  • Используйте grub2-mkconfig -o /boot/efi/EFI/RedOS/grub.cfg, чтобы пересоздать конфигурацию.
  • Если после этого ошибка не устраняется, проверьте файл /var/log/boot.log для поиска других проблем.

Шаг 4. Проблема: «Ключи не загружаются, и система не проходит проверку»

  • Если система не пропускает загрузку из-за неправильных ключей, это может быть связано с их отсутствием в базе данных загрузчика. Подпишите заново все ключи, которые имеют отношение к загрузке – ядро, initramfs и другие файлы, которые загружаются в начале.
  • Запустите sbverify для проверки подписанных файлов.
  • Система должна быть настроена так, чтобы проверять подписи всех критически важных компонентов на этапе загрузки.

Внимание! Неверно подписанные компоненты, такие как ядро или инициализационные образы, могут стать причиной блокировки загрузки. Перепроверьте каждый файл, особенно если ошибка связана с «Invalid Signature».

Шаг 5. Проблема: «Запуск в режиме восстановления»

  • В случае появления режима восстановления после перезагрузки, проверьте параметры ядра, указанные в конфигурации GRUB. Убедитесь, что путь к файловой системе указан правильно.
  • Если вы видите ошибку «grub rescue», это может означать, что GRUB не может найти свой конфигурационный файл. Используйте команду ls в режиме rescue для проверки доступных разделов.
  • Попробуйте вручную загрузить загрузчик с помощью команды set root=(hd0,gpt1) и затем insmod normal.

Шаг 6. Проблема: «Не удаётся загрузить внешние модули или драйверы»

  • Проверьте, что все драйверы и модули подписаны вашими ключами. Без подписи система их отклонит.
  • Если это сторонние модули, их также нужно подписывать через sbsign.
  • Если проблема сохраняется, удалите или отключите все сторонние модули, а затем попробуйте загрузить систему без них.

Каждая из этих проблем требует внимания к мелочам. Проблемы с подписанием и сертификатами – это самые частые причины отказа в загрузке. Будьте готовы к долгой проверке, если что-то не срабатывает сразу. Внимание к деталям – залог стабильности работы системы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *