如何使用全盘加密(LUKS 之上的 LVM)确保 Ubuntu 上 RAM 的安全挂起?

如何使用全盘加密(LUKS 之上的 LVM)确保 Ubuntu 上 RAM 的安全挂起?

我在 Ubuntu 13.04 上使用全盘加密(LUKS 之上的 LVM)。

我想将其纳入luksSuspend暂停程序(并稍后使用luksResume),以便我可以暂停到 RAM,而无需在内存中留下密钥材料并解锁根。

过去 7 个小时我一直在尝试移植Arch Linux 的脚本,到目前为止还没有成功:老实说,我不知道自己在做什么……

有人能帮我移植这个吗(或者从头开始创建类似的东西)?或者,至少,有人能给我提供一些文档,说明如何将内容挂接到挂起程序中,以及如何在所有到 root 的 IO 被阻止后仍保持必要的二进制文件和脚本(如 cryptsetup)可用luksSuspend

关于如何保持恢复所需的二进制文件和脚本,这其他博客文章(也适用于 Arch)将它们复制到/boot;不过,我希望在 Vianney 之前我在脚本中提到的那些行中使用更多的东西,因为这种方法在这方面似乎更优雅一些。

答案1

我遇到了同样的问题,所以我再次尝试移植相同的脚本,你可以看到这里。它不会触及任何非易失性存储luksSuspend,因此即使使用加密的 /boot 进行真正的全盘加密,它也能正常工作。但是,您需要小心——它有时可能无法按预期工作!

移植后的脚本执行以下操作:

  • 在某处创建 ramfs 挂载
  • 提取其中的 initramfs 内容(包括 initramfs 挂起脚本)
  • 将相关目录(例如,,,/sys)绑定到ramfs挂载/proc/dev/run
  • 停止任何可能干扰的服务(systemd-udevd、systemd-journald)
  • 使用 nobarrier 重新挂载根文件系统(ext4 或 btrfs),以便 Linux 在尝试进入 S3 时不会挂起,然后同步
  • Chroot 进入 initramfs 挂载,再次同步、运行luksSuspend,然后让计算机进入睡眠状态
  • 唤醒后luksResume,重新挂载文件系统,重新启动服务,在 initramfs 挂载中卸载绑定挂载
  • 最后,卸载 initramfs 挂载,以便释放用于 initramfs 文件的 RAM

我还没有对我的脚本进行广泛的测试,但它似乎对我来说很可靠。如果您使用其他文件系统(即不是 ext4 或 btrfs),那么您可能会遇到屏障问题,因此您也需要修改脚本。

不管怎样,最好先测试并验证脚本是否有效。如果您在尝试将 Linux 放入 S3(即echo mem > /sys/power/state)时遇到挂起,那么您应该能够恢复:

  • 暂停之前,打开 tty 或其他终端(可访问,最好是 tty)
  • 将 cryptsetup 和相关库加载到 RAM 中:sudo cryptsetup luksResume anything_here
  • 使用脚本暂停
  • 如果它在 chroot 之后挂起(例如starting version xxx在新的 vt 上显示 after),请切换到之前打开的 tty 并运行sudo cryptsetup luksResume your_luks_device_name_here
  • 如果这也挂了,请打开另一个 vt 并 chroot 到/run/initramfssudo chroot /run/initramfs /bin/ash
  • 尝试运行luksResumecryptsetup luksResume your_luks_device_name_here && exit
  • 然后您的计算机应该会暂停。然后您可以将其唤醒,如果脚本仍在运行,则将其终止,卸载绑定挂载和/run/initramfs,然后使用屏障(如果适用)重新挂载您的根文件系统。

答案2

我没有使用过这种设置,但许多人都声称这样做成功了。以下是其中几个。

dm-crypt 与 LUKS - 加密交换分区
如何使用 Ubuntu 6.10 Edgy Eft 完全加密硬盘(包括挂起到磁盘分区)
ubuntu-全盘加密-lvm-luks

但是它们都没有使用 luksSuspend(这可能是它们能起作用的原因)。

答案3

我花了一些时间让它在 Ubuntu 15.10 上完全发挥作用。如果您尝试在 ext2、ext3 或 ext4 上使其工作,则需要更新 /etc/fstab 以使用“nobarrier”选项挂载卷。否则,我建议使用 BTRFS。

准备好文件系统后,请使用此处的脚本:https://github.com/Microcentillion/ubuntu-lukssuspend

相关内容