Вопрос или проблема
Моя цель – зашифровать свои разделы /boot и /boot/efi с помощью luks1 на системе RHEL8 с безопасной загрузкой UEFI для полной криптографической защиты системы.
Я могу зашифровать (LUKS1) свой раздел /boot в установке RHEL8 в режиме BIOS и обновить grub, чтобы предварительно загрузить необходимые крипто-модули, но я пытаюсь зашифровать свои разделы /boot И /boot/efi на машине с UEFI. Я могу зашифровать все, но у меня есть проблема с обновлением GRUB2, чтобы принять новые параметры. Мои основные шаги следующие:
- Скопируйте данные разделов /boot и /boot/efi в /root
- Отмонтируйте оба раздела
- Преобразуйте разделы в luks1, зашифруйте, повторно смонтируйте и переместите данные обратно
- Исправьте fstab и crypttab с новыми UUID
- Создайте новую конфигурацию grub с помощью grub2-mkconfig (это соответствующим образом изменяет файл /boot/efi/EFI/redhat/grub.cfg с insmod cryptodisk и другими записями)
- Установите новый загрузчик
Все работает, кроме изменения загрузчика (GRUB2). При использовании grub2-install я получаю ошибку, что grub2 не может обновить систему безопасной загрузки uefi. Попробовал использовать efibootmgr, но, похоже, эта программа не переустанавливает загрузчик, а только управляет текущими записями.
Есть ли программа, которую я могу использовать для переустановки загрузчика grub на системе с безопасной загрузкой uefi, которая имеет необходимую поддержку криптографии luks1?
Заранее спасибо.
Вы не можете зашифровать /boot/efi. EFI должен быть VFAT согласно стандарту EFI. Вы можете только подписать модули EFI, хранящиеся на этом разделе, и включить Secure Boot. Хотя в Linux это может быть немного сложно из-за истории с shim и так далее. Но, по крайней мере, теоретически это возможно.
Также вам не нужно использовать LUKS1, вы все еще можете использовать LUKS2, но единственная PBKDF, поддерживаемая grub2, – это PBKDF2, поэтому вам нужно использовать ее при выполнении luksFormat или позже при luksConvertKey.
Чтобы избежать ввода пароля дважды, вам нужно использовать свежую версию grub2. В grub.conf команда grub2-mkconfig создаст соответствующий код, передающий учетные данные для разблокировки разделов на более поздних этапах загрузки.
Если вы хотите поэкспериментировать с этим, вы можете установить openSUSE Tumbleweed в виртуальной машине, у нее есть все желаемые настройки в их установщике, поэтому вам не придется делать все вручную.
Если вы все же хотите зашифровать EFI, то возможна только аппаратная FDE. Если вас устраивает проприетарная реализация шифрования, то есть 2 варианта:
- Пароль SATA (в основном устаревший на настольных ПК, может быть доступен на серверах и материнских платах ноутбуков)
- TCG Opal, вам потребуется использовать что-то вроде sedutil для инициализации шифрования/дешифрования.
Вы можете комбинировать аппаратную FDE и LUKS (сверх FDE), в вашем случае FDE будет считаться просто для защиты /boot/efi, и этого может быть достаточно, чтобы избежать безопасной загрузки.
ОБНОВЛЕНИЕ: Я вижу, что вы используете RHEL8, эта дистрибуция определенно не имеет достаточно свежей версии grub2 для многих вещей, описанных выше. Если вас устраивает использовать openSUSE, то я могу порекомендовать версию Leap 15.6 (не 15.5). У нее есть все такие функции, если вам нужно SLA, то SLES (SUSE Enterprise). Leap – это сообщественный форк SLES.
Ответ или решение
Вопрос о шифровании разделов /boot
и /boot/efi
на системе RHEL8 с поддержкой UEFI и Secure Boot касается важных аспектов безопасности и управления загрузчиком GRUB2. Ваша задача сложна, но возможно выполнить ее, следуя нескольким важным шагам и рекомендациям.
Проблема шифрования разделов
Согласно стандартам UEFI, шифрование раздела /boot/efi
невозможно, так как он должен быть отформатирован в файловой системе FAT (VFAT). Тем не менее, можно подписывать модули EFI, находящиеся на этом разделе, и включить Secure Boot.
Таким образом, основная цель будет заключаться в шифровании только раздела /boot
, так как он будет находиться под управлением LUKS, в то время как /boot/efi
будет оставаться нешифрованным для обеспечения корректной работы загрузчика GRUB.
Рекомендуемое решение
Вот шаги, которые помогут в вашей задаче:
-
Создание резервной копии данных: Сначала сделайте резервную копию содержимого обоих разделов (
/boot
и/boot/efi
) на временное место, например, в/root
. -
Отмонтирование разделов: Отмонтируйте оба раздела:
umount /boot umount /boot/efi
-
Шифрование раздела
/boot
: Используйте LUKS для шифрования раздела/boot
:cryptsetup luksFormat /dev/sdXn --type luks1 cryptsetup open /dev/sdXn cryptboot mkfs.ext4 /dev/mapper/cryptboot
-
Перенос данных обратно: После форматирования, перенесите ранее сохраненные данные обратно на зашифрованный раздел
/boot
:mount /dev/mapper/cryptboot /boot cp -a /root/boot_backup/* /boot/
-
Обновление fstab и crypttab: Измените UUID в
/etc/fstab
и/etc/crypttab
на новые значения, полученные с помощью командыblkid
. -
Создание нового конфигурационного файла GRUB: Теперь создайте новый конфигурационный файл GRUB:
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
-
Установка загрузчика GRUB: Для UEFI-системы вам необходимо установить GRUB, убедившись, что используете правильную версию:
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --recheck
Если возникают проблемы с безопасной загрузкой, убедитесь, что используете последнюю версию GRUB, которая поддерживает работу с LUKS и обеспечьте наличие всех необходимых модулей.
-
Настройка безопасности: Проверьте настройки интерфейса Secure Boot и возможность загрузки через подписи модулей. Убедитесь, что все необходимые EFI-загрузчики подписаны.
Примечания
- Учтите, что использование LUKS2 может дать некоторые преимущества, однако необходимо поддерживать PBKDF2 для совместимости с GRUB.
- Если вы испытываете проблемы на RHEL8 из-за устаревших компонентов GRUB, рассмотрите возможность использования других дистрибутивов, таких как openSUSE Tumbleweed, которые могут предложить более современное решение.
- В качестве альтернативы для шифрования раздела
/boot/efi
, можно рассмотреть использование аппаратного шифрования (например, TCG Opal или SATA пароль), но это требует наличия соответствующего оборудования.
Эти шаги помогут вам эффективно зашифровать и настроить вашу систему с RHEL8 и обеспечить необходимую защиту для раздела /boot
, при этом соблюдая стандарты UEFI и Secure Boot.