我已经使用 LUKS 加密了我的根分区,并使用 ecryptfs 加密了我的主分区,因此它们上的数据只会被损坏。问题是,您可以轻松地从 Windows 修改 boot/efi 分区上的内容。我怎样才能防止这种情况发生?
答案1
切勿将任何敏感数据放入/boot/efi
.你无法加密它。原因是您的系统固件需要读取 EFI 才能启动您的机器。如果它被加密,固件将无法访问引导加载程序。
如果您的系统有 TPM,那么您可以使用 TPM 的“测量”(PCR 寄存器)来验证启动组件/boot/efi
是否未被篡改。
TPM 还可以为您存储加密密钥,并根据 PCR 寄存器进行“密封”(锁定)。然后 TPM 将“解封”并允许您读取这些加密密钥仅有的如果启动过程没有被篡改。
确定在哪些 PCR 中测量哪些内容非常重要。如果您没有将 TPM 配置为包含重要的 PCR,那么尽管遭到篡改,它也可能会解封。
TPM 并非 100% 防弹。从理论上讲,通过将它们从板上拆下并将硬件放置在它们和主板之间,可以将它们作为中间人攻击的一种物理人进行篡改。这通常非常困难,但并非不可能。
作为测量 PCR 中所有内容(包括 grub 配置)的替代方案,grub 有一个check_signatures
选项。您构建一个包含您自己的 PGP 公钥和基本配置的 EFI 二进制文件,该配置要求 grub 加载的所有其他文件必须具有与公钥匹配的数字签名。
这样,您就可以对内核、initrd、grub 配置进行数字签名,并通过 TPM PCR 验证 grub EFI 没有被篡改。这可能会更容易使用,因为您不需要每次对启动进行最轻微的配置更改时都需要摆弄 TPM。
由于另一个人建议了它,我将评论“安全启动”并解释为什么不......
安全启动是一种出于不同目的的保护。它更多的是关于供应链验证,而不是 EFI 分区的防篡改。
它提供了一些保护(但不是绝对保护),防止在引导的早期阶段安装不来自受信任供应商的东西。例如:它可以保护您免遭欺骗安装黑客的引导加载程序。
它的工作原理是通过受信任的 CA 签署二进制文件。默认情况下,大多数硬件都已安装 Microsoft 的 CA,并且各个 Linux 供应商都拥有 Microsoft 签名的证书。
它不保护您的笔记本电脑在安装、设置或配置过程中生成的任何内容。它实际上只是验证二进制文件是否来自信誉良好的供应商。它不会阻止有人用其他信誉良好的供应商的任何其他引导加载程序替换您的引导加载程序,或重新配置您的引导加载程序以执行任何操作。因此,它实际上几乎没有提供针对 EFI 篡改的保护。
答案2
问题是,您可以轻松地从 Windows 修改 boot/efi 分区上的内容。我该如何防止这种情况发生?
如果您启用了安全启动,则不会。
编辑:菲利普·库林先生声称“黑客”可以更改内核启动参数并添加init=/bin/bash
导致违规的内容但这种攻击显然不会起作用,因为 OP 已对其数据进行了加密。没有狂欢。即使黑客/bin/bash
从某个外部位置使用,他们仍然无法做任何事情,因为用户数据是加密的。简而言之,这种“攻击”毫无价值,根本不起作用。
其次,如果黑客能够像菲利普·库林(Philip Couling)强烈暗示的那样物理访问您的电脑,则会产生更危险的影响,并且您无法采取任何措施来保护自己。黑客可以简单地安装一个硬件键盘嗅探器或十几个其他小工具来访问您的系统,而您对此一无所知。
最后,Windows 本身远远比 Linux 更安全。 Linux 的安全性是可笑的,它主要基于模糊性而不是安全性。例如,在 Linux 中,您只有内核和模块经过数字签名,而在 Windows 中,每个正在运行的 Microsoft 二进制文件都经过签名,这可以确保您的系统没有被篡改。更不用说其他功能了,比如 Bitlocker、基于管理程序的进程隔离、执行组策略等等。