如何验证加密 LVM 设置上的 /boot 分区

如何验证加密 LVM 设置上的 /boot 分区

未加密的 /boot 分区是否是加密 LVM 设置的弱点?攻击者可能会将恶意软件安装到 /boot 分区,以便在下次系统启动时嗅探加密密码。在双启动系统上,安装到 Windows 的恶意软件也可能实现此目的,而无需任何物理访问。

我是否缺少一些保护方案,或者至少我可以验证 /boot 内容自上次系统关闭以来没有发生变化?

答案1

如果您担心文件完整性,可以使用 UEFI 安全启动。您可以使用 Linux 发行版中的签名内核,也可以使用自签名内核,如中所述http://kroah.com/log/blog/2013/09/02/booting-a-self-signed-linux-kernel/。自签名目前还不是很方便,因为您要么必须将 initrd 包含在内核中,要么完全没有 initrd 就无法工作。而且您必须在编译时指定内核命令行。

答案2

使用当前在 LVM 卷上实施加密的方法,无法加密/boot。如果加密,除非主板上的硬件支持,否则无法启动操作系统。到目前为止,我还没有看到或听说过可以做到这一点的硬件,但可能存在。

来自建筑维基:在大多数设置中,专用的 /boot 分区不是必需的,但在像这样的复杂设置中,它是必需的,因为 GRUB 需要能够从 /boot 目录读取内核、initramfs、它自己的配置文件等。由于 GRUB 本身不知道如何解锁 LUKS 分区(这是内核的工作),所以 /boot 不能加密,因此必须是单独的磁盘分区。

这意味着,为了让您的操作系统启动,引导加载程序必须能够读取它在 中找到的自己的配置设置/boot,如果卷已加密,则它无法执行此操作。无论您使用哪种加密例程/方法,情况都是如此。

这是弱点吗?是的。可以安装某种密码嗅探器/boot,但加密的 LVM 并非旨在保护您免受这种攻击。如果您如此偏执,那么当有人物理访问您的机器或root访问正在运行的系统时,您将被迫假设自己已被入侵。

这可能是我的错误结论,但我认为 LVM 分区上的加密是为了防止您的计算机丢失或被盗。在这种情况下,他们必须以某种方式获取您的密码,然后才能访问驱动器的内容或手动破解密钥,除非该人可以无限制地访问资源,否则这是不可能的。

答案3

是的,这是一个弱点。正如@Mogget 所写,除非您有特殊硬件,否则您的系统需要一个未加密的 /boot 分区。

一种可能的保护方案是将此未加密的 /boot 分区放在您随身携带的单独 USB 密钥上。如果存在有人篡改它的风险,您应该使用自己签名和验证的映像创建一个新的。

另一个想法是让未加密的 /boot 像往常一样成为磁盘上的一个分区,但不是解锁系统的其余部分,而是使用密钥 A 解锁加密的 /boot2 分区。在 /boot2 上存储一个二进制文件,该二进制文件在您使用密钥 B 解锁系统的其余部分之前验证 /boot 的完整性。

相关内容