Шифрование /boot и /boot/efi RHEL8 на машине с UEFI

Вопрос или проблема

Моя цель – зашифровать свои разделы /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.

Рекомендуемое решение

Вот шаги, которые помогут в вашей задаче:

  1. Создание резервной копии данных: Сначала сделайте резервную копию содержимого обоих разделов (/boot и /boot/efi) на временное место, например, в /root.

  2. Отмонтирование разделов: Отмонтируйте оба раздела:

    umount /boot
    umount /boot/efi
  3. Шифрование раздела /boot: Используйте LUKS для шифрования раздела /boot:

    cryptsetup luksFormat /dev/sdXn --type luks1
    cryptsetup open /dev/sdXn cryptboot
    mkfs.ext4 /dev/mapper/cryptboot
  4. Перенос данных обратно: После форматирования, перенесите ранее сохраненные данные обратно на зашифрованный раздел /boot:

    mount /dev/mapper/cryptboot /boot
    cp -a /root/boot_backup/* /boot/
  5. Обновление fstab и crypttab: Измените UUID в /etc/fstab и /etc/crypttab на новые значения, полученные с помощью команды blkid.

  6. Создание нового конфигурационного файла GRUB: Теперь создайте новый конфигурационный файл GRUB:

    grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
  7. Установка загрузчика GRUB: Для UEFI-системы вам необходимо установить GRUB, убедившись, что используете правильную версию:

    grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --recheck

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

  8. Настройка безопасности: Проверьте настройки интерфейса Secure Boot и возможность загрузки через подписи модулей. Убедитесь, что все необходимые EFI-загрузчики подписаны.

Примечания

  • Учтите, что использование LUKS2 может дать некоторые преимущества, однако необходимо поддерживать PBKDF2 для совместимости с GRUB.
  • Если вы испытываете проблемы на RHEL8 из-за устаревших компонентов GRUB, рассмотрите возможность использования других дистрибутивов, таких как openSUSE Tumbleweed, которые могут предложить более современное решение.
  • В качестве альтернативы для шифрования раздела /boot/efi, можно рассмотреть использование аппаратного шифрования (например, TCG Opal или SATA пароль), но это требует наличия соответствующего оборудования.

Эти шаги помогут вам эффективно зашифровать и настроить вашу систему с RHEL8 и обеспечить необходимую защиту для раздела /boot, при этом соблюдая стандарты UEFI и Secure Boot.

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

Капча загружается...