在 luks 上使用 lvm 进行 Uefi 和全盘加密

在 luks 上使用 lvm 进行 Uefi 和全盘加密

我有一台华硕机器,可以在旧 BIOS 和新 UEFI 之间进行选择。我一直使用旧 BIOS 系统,运行完整加密的 Debian,配置如下:

  1. 未加密的启动分区安装在/boot

  2. 所有剩余空间均使用 LUKS 加密,并在其上包含所有 LVM 逻辑卷(/、swap、/home)。

一切都运行良好,没有任何问题。但我想知道,如果我想使用 UEFI 从头开始​​安装(我不想转换内容),并且必须创建安装在 的 FAT32 EFI 分区/boot/efi,我是否仍然需要未加密的/boot分区,还是只需要 EFI 分区和所有其余加密分区?

换句话说,哪种配置是正确的?

  • /boot/efi
  • /boot
  • 加密的 LUKS 卷

或者

  • /boot/efi
  • 加密的 LUKS 卷?

答案1

是的,我知道答案已经很晚了,但迟到总比不到好……

我不知道 Debian 是否有工具可以做到这一点,但使用 Arch Linux 你可以创建磁盘布局像这样:

  • EFI 分区(已安装/boot/efigrub EFI 引导加载程序,格式化为 fat32 EFI 类型分区EF00。可能是您的/dev/sda1。此分区将仅保存 grub 存根,以询问密码来挂载您的启动分区。
  • 启动分区(已安装/boot),这是一个 luks 加密设备。加密解锁此分区后,您可以使用 grub 支持的任何文件系统将其格式化为 but(例如 ext4)。这将是您的/dev/sda2
  • 加密设备,将存储所有剩余分区作为逻辑卷。加密设备,带有 LVM 及其逻辑卷(3 层)。这将是您的/dev/sda3
    • 在这里,您可以根据需要创建任意数量的逻辑卷。解锁此分区的密钥将用于访问其所有逻辑卷上的数据。

借用 Arch Wiki 的说法,你的磁盘布局将是这样的:

+---------------+----------------+----------------+----------------+----------------+
|ESP partition: |Boot partition: |Volume 1:       |Volume 2:       |Volume 3:       |
|               |                |                |                |                |
|/boot/efi      |/boot           |root            |swap            |home            |
|               |                |                |                |                |
|               |                |/dev/store/root |/dev/store/swap |/dev/store/home |
|/dev/sdaX      |/dev/sdaY       +----------------+----------------+----------------+
|unencrypted    |LUKS encrypted  |/dev/sdaZ encrypted using LVM on LUKS             |
+---------------+----------------+--------------------------------------------------+ 

注意事项

  • Grub 将要求输入密码才能解锁/boot,初始 RAM 磁盘将再次要求输入密码(因为他/boot被锁定了),并且可能在安装root分区时会再次发生这种情况。这里的技巧是使用你的内心的主密钥 /boot(也许在您的 initrd 里面有FILES=选项mkinitcpio并将其添加luksAddKey。您的启动分区是加密的,所以没有必要担心,因为密钥在加密分区里面。chmod 000 keyfile.bin是你的朋友。
  • 添加encrypt lvm2mkinitcpio钩子。
  • 如果由于某种原因您的系统无法使用该密钥,则会再次要求输入密码。
  • 你仍然会受到邪恶女仆探索攻击冷启动失败。您在这里能做的最好的事情是:
    • 启用安全启动。
    • 签署您的 Grub EFI。
    • 撤销主板上的 Microsoft CA(您知道,不能相信任何人)。
    • grub-efi无论何时,当您有软件包更新时,请记得对 grub efi 进行签名。

进一步阅读:

在研究了将启动分区保留在 lvm 之外的必要性之后(据我所知,grub-pc/bios 有lvmluks模块),我发现这家伙在 Arch 论坛上确认无需保留/boot备用加密分区。

您可以在您的上安装 grub ESP,并告诉它从 esp 读取配置文件像这样

# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=grub --boot-directory=esp

此后,重新生成conf:

# grub-mkconfig -o esp/grub/grub.cfg

而且,它似乎grub是唯一支持在没有单独的 /boot 分区的情况下启动 lvm+crypto 的引导加载程序。

相关内容