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