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

Egi*_*ile 5 boot disk-encryption lvm luks uefi

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

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

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

一切正常,没有问题。但是,如果我想使用 UEFI 从头开始​​进行新安装(我不想转换东西),我一直在徘徊,并且我必须创建挂载在 FAT32 EFI 分区/boot/efi,我还需要未加密的/boot分区,还是只需要EFI 分区和所有其他加密?

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

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

或者

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

小智 4

是的,我知道这是一个很晚的答案,但是,迟到总比不好......

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

  • EFI分区(挂载/boot/efi)带有grub EFI引导加载程序,格式化为fat32 EFI类型分区EF00。可能是你的/dev/sda1。该分区仅保存 grub 存根,以询问密码来挂载引导分区。
  • 引导分区(已安装/boot)是 luks 加密设备。加密解锁该分区后,您可以使用 grub 支持的任何文件系统(例如 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             |
+---------------+----------------+--------------------------------------------------+ 
Run Code Online (Sandbox Code Playgroud)

注意事项

  • Grub 会要求输入密码来解锁/boot,初始 ram 磁盘将再次要求输入密码(因为对他来说,/boot已锁定),并且可能在安装root分区时会再次发生这种情况。这里的技巧是在你的 /boot(也许在你的 initrd 中使用主密钥,并使用 选项FILES=添加mkinitcpioluksAddKey。你的引导分区是加密的,所以,无需担心,因为密钥位于加密分区内。chmod 000 keyfile.bin)你的朋友。
  • 添加encrypt lvm2mkinitcpio挂钩。
  • 如果由于某种原因您的系统无法使用该密钥,则会再次要求输入密码。
  • 您仍然容易受到探索冷启动故障的Evil Maid攻击。您在这里可以做的最好的事情是:
    • 启用安全启动。
    • 签署您的 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
Run Code Online (Sandbox Code Playgroud)

之后,重新生成conf:

# grub-mkconfig -o esp/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)

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