加密远程服务器磁盘
回答
在远程服务器上,全盘加密使用 LUKS2,启动时通过带外控制台或 initramfs 中的 dropbear SSH 外壳输入口令。它保护磁盘被扣押和退役硬盘的恢复。但它不能保护运行中的服务器,因为其密钥存储在内存中。
准确理解它应对的威胁
全盘加密保护静态数据。一旦机器启动并解锁卷,密钥就在内核内存中,文件系统对任何具有足够权限的事物可读——包括在虚拟化平台上,可以转储客户机内存的虚拟机监控程序操作员。
因此,FDE 可以抵御:断电时硬件被扣押、硬盘在生命周期结束时离开数据中心,以及虚拟磁盘映像的冷拷贝。它不能抵御:对运行中系统的攻击,或针对运行中虚拟机的虚拟机监控程序级对手。这些是诚实的界限,任何跳过它们的指南都是在贩卖安慰。
远程解锁问题
在笔记本电脑上,启动时输入口令。但对于两千公里外的服务器,必须有东西提供口令,而显而易见的解决方案都会使目的落空——相同磁盘上的密钥文件或提供商存储的密钥意味着加密形同虚设。
有两个正确答案。对于我们的专用服务器和 GPU 服务器,使用带外控制台:IPMI 提供启动屏幕,您可以像本地一样输入口令。对于 VPS,在初始 ramdisk 中放入 dropbear-initramfs,使机器启动到足以接受 SSH 连接,然后通过该连接解锁,继续启动。
设置方法
最干净的方法是在安装时加密。通过虚拟介质启动自定义 ISO,划分一个未加密的 /boot 和一个包含其他所有内容的 LUKS2 容器,然后在其中安装。选择 Argon2id 作为密钥派生函数——它是 LUKS2 的默认值,并且内存困难,这对抵御暴力破解很重要。
在任何专用、GPU 或存储套餐上订购 LUKS,我们会进行分区;您在首次启动时通过控制台输入口令,它永远不会接触我们的基础设施。不收取任何费用,也没有恢复途径,这其实是同一件事的两种说法。
- cryptsetup luksFormat --type luks2 --pbkdf argon2id /dev/sdaX
- 未加密的 /boot,其他一切放入容器内
- 在 VPS 上安装 dropbear-initramfs 以实现远程解锁
- 将您的 SSH 密钥添加到 /etc/dropbear/initramfs/authorized_keys
- 在放入任何数据之前测试完整重启
- 保留第二个密钥槽,口令存储在安全的地方
两个常见错误
第一个是只有一个密钥槽。LUKS2 支持八个;至少使用两个,第二个保存一个长随机口令,放在密码管理器中。单个忘记的口令无法恢复,而无法恢复就是无法恢复。
其次是给机器装载数据前没有测试重启。配置错误的 dropbear initramfs 会让第一次计划外重启变成一台永远无法回来的机器。在机器还空着的时候,故意重启两次。
常见问题
01 我的提供商能读取加密磁盘吗?
静止时不能。在运行中的虚拟机上,虚拟机监控程序操作员原则上可以读取客户机内存,其中包含密钥——这对所有虚拟化提供商都是一样的。带 LUKS 的裸机消除了这种接口。
02 我如何解锁无法接触的服务器?
专属和 GPU 服务器上的带外 IPMI 控制台,或者 VPS 上的 dropbear-initramfs——机器启动到足够接受 SSH 的程度,您通过它解锁,然后继续启动。
03 如果我忘记了密码短语怎么办?
数据就没了。没有恢复方法,没有后门,也没有提供商持有的密钥。至少使用两个 LUKS 密钥槽,第二个持有密码管理器中的长随机密码短语。
相关