我想将 LUKS 分区添加到远程 VPS。但是,VPS 必须偶尔自动重新启动(大约每 10 到 14 天),因为它会自动安装安全更新。这与 cryptsetup/LUKS 兼容吗?
如果我正确阅读此Digital Ocean 教程,我可以在磁盘本身上创建一个密钥文件,并将其用作分区的第二个密码。这是否意味着我只需在 LUKS 卷的初始创建过程中手动输入一次自己的密码,然后我就可以忘记自己的密码?
如果可能的话,在磁盘本身上使用新密码会有什么安全影响?
我想将 LUKS 分区添加到远程 VPS。但是,VPS 必须偶尔自动重新启动(大约每 10 到 14 天),因为它会自动安装安全更新。这与 cryptsetup/LUKS 兼容吗?
如果我正确阅读此Digital Ocean 教程,我可以在磁盘本身上创建一个密钥文件,并将其用作分区的第二个密码。这是否意味着我只需在 LUKS 卷的初始创建过程中手动输入一次自己的密码,然后我就可以忘记自己的密码?
如果可能的话,在磁盘本身上使用新密码会有什么安全影响?
这是可能的 – 大多数 Linux 发行版支持在启动时根据 /etc/crypttab 解锁 LUKS 卷(使用密钥文件或提示输入密码短语),并且密钥文件的工作方式与密码短语相同,并且 LUKS 支持添加多个密码短语(密钥槽)一卷,因此教程中完成的所有内容都将起作用。
问题是以这种方式设置加密是否有用。
仅当您有专用SSD 时,这才是一个潜在问题 - 无论是通过 SATA 连接磁盘的物理系统,还是通过“原始”磁盘的虚拟机。在这种情况下,加密是个好主意;尽管托管公司有责任在重新使用服务器之前(或在扔掉服务器之前)对服务器进行消毒,但确实存在一些轻微的风险,即不会发生这种情况并且会连接用过的 SSD。(当我在Hetzner上租用一台折扣服务器时,它有两个不匹配的SSD,明明已经使用过,但都被随机数据覆盖了。)
但对于虚拟机来说,情况实际上并非如此。在大多数情况下,您获得的虚拟“磁盘”是一个文件——可能是存储在大型 ZFS 存储池上的新的 .qcow2 映像——并且所有现代文件系统都已经确保新文件不会“包含”旧数据。(由于它们是文件,因此有实际理由重用现有文件;删除虚拟机时删除它们,并在创建虚拟机时创建新文件更简单。)
磁盘映像要么是按需增长的磁盘映像(映像格式跟踪分配了哪些区域),要么是固定大小的稀疏文件(底层文件系统跟踪相同的区域),要么是固定大小的磁盘映像。预分配文件(文件系统主动将扇区清零),但通常在没有清零的情况下不会进行预分配。(我想我已经在 ESXi VMFS 上看到了这一点,但没有人在 ESXi 上运行 VPS 服务。)
因此,尽管您的 LUKS 设置确实提供了额外的安全层(假设“其他客户”不会同时获取您的两个磁盘),并且它确实使通过丢弃密钥文件来清除卷变得更容易,但它仍然在这种情况下不是特别有用。
如果已经存在其他客户获取您的旧数据的风险,那么这种设置的安全性将取决于两个卷的分离(来自明文操作系统卷的加密数据)——如果“未来客户”是安全的仅可以访问其中一卷,但如果他们可以访问两卷,则不能访问。
假设两个卷都存储在同一个磁盘上(同样,仅当它是具有自己的专用 SSD 的物理服务器时),那么任何获得该磁盘访问权限的人都可以查看您的 /etc/crypttab,找到密钥文件,然后以与重新启动时解锁相同的方式解锁另一个卷。