使用LUKS全盘加密时,您将如何防范邪恶的女仆?
邪恶的女仆攻击是当有人在您不在时对您的计算机进行物理访问并破坏未加密的/ boot分区以在您下次启动计算机时捕获FDE密码
解决方案之一是将/ boot分区留在随身携带的USB记忆棒上(女仆无法进入),但是我应该在哪个USB文件系统上使用它,以及如何配置系统以妥善处理删除操作的USB记忆棒(以及/ boot分区本身)?
我正在使用CentOS,但是当然欢迎通用的,与发行版无关的答案。谢谢。
使用LUKS全盘加密时,您将如何防范邪恶的女仆?
邪恶的女仆攻击是当有人在您不在时对您的计算机进行物理访问并破坏未加密的/ boot分区以在您下次启动计算机时捕获FDE密码
解决方案之一是将/ boot分区留在随身携带的USB记忆棒上(女仆无法进入),但是我应该在哪个USB文件系统上使用它,以及如何配置系统以妥善处理删除操作的USB记忆棒(以及/ boot分区本身)?
我正在使用CentOS,但是当然欢迎通用的,与发行版无关的答案。谢谢。
Answers:
终于明白了。这仍然感觉确实很肮脏和肮脏,因为系统从未意识到/boot
可能无法挂载它,并且您必须先手动挂载它,然后再进行可能会写入该文件的任何操作(例如系统更新等),但除此之外,它还可以完美运行。
shred -n 1 -v /dev/sdX
它以完全擦除它,包括以前的任何引导扇区。完成后,运行该命令fdisk
以创建一个分区以及mkfs
您选择的文件系统。/mnt/boot
甚至/newboot
可以。/boot
移到闪存驱动器mv /boot/* /newboot
。/etc/fstab
磁盘,并更改原始引导分区的UUID(如果没有,则创建一个条目)以匹配您的闪存驱动器之一。您可以使用获取UUID lsblk -o name,uuid
。还要添加该noauto
选项,以使该驱动器不会被自动挂载,以便能够在系统开始引导(一旦加载内核)后立即将其删除,而不会破坏其上的FS。umount /boot && umount /newboot
)并安装闪存驱动器;如果您的fstab条目正确,则可以运行mount /boot
,它将根据fstab中指定的UUID自动挂载它。hd0
)。如果可以使用大多数发行版提供的默认GRUB配置脚本,则可以运行grub-mkconfig -o /path/to/grub.cfg
,它将根据当前安装的分区和/或fstab生成文件。请注意,对于CentOS 7,正确的grub.cfg
位置实际上位于/boot/grub2/grub.cfg
。进行可能会访问引导分区的任何操作时,请连接USB记忆棒并运行mount /boot
。完成后,您可以运行umount /boot
。请注意,后一个命令可能需要一些时间才能完成,因为它会将缓冲区刷新到磁盘上(磁盘本身很慢,因此内核会缓冲一些写操作以加快速度)。
解决此特定问题的另一种方法是使用TPM来存储加密密钥,但是防御措施确实依赖于用户才能使其生效。一个基本的,基于RHEL7的解决方案是tpm-luks(https://github.com/GeisingerBTI/tpm-luks)。
它的工作方式是在引导过程中,引导过程的每个步骤都将测量下一步,并将此测量结果存储到TPM上的PCR中。引导过程完成后,tpm-luks会根据“已知正常”配置检查PCR的状态。如果处于“已知良好”配置,则TPM将解封LUKS密钥,而tpm-luks将传递此数据以解锁根LUKS分区。
因为所有重要的事情都是用密码学哈希表来衡量的,所以从根本上没有邪恶的女仆替换GRUB /内核/ ramdisk来邪恶地收集FDE密码的方法。另外,您根本不需要FDE密码!从理论上讲,您可以完全删除人类可读的密码短语,并且完全依赖于tpm-luks,但是,如果按照这种方式进行操作,最好存储LUKS标头并将其保留为备份。
正如我提到的,这需要对用户进行一些努力。如果您无人看管计算机,并且提示您输入密码,那么在进行一些调查之前,键入它可能是个坏主意。那时,您应该启动到实时CD环境中,看看tpm-luks是否存在错误,或者/boot
分区是否确实被更改。您仍然不对/boot
分区进行加密,但是,如果重要内容发生更改,则永远不会对主磁盘进行解密。