eCryptfs 的备份策略

eCryptfs 的备份策略

我们有一个小型网络,中间是一台 Ubuntu 服务器,周围是 Ubuntu 笔记本。所有笔记本都使用 eCryptfs 来加密用户的整个主目录。通常,每个笔记本有两个或更多用户。备份过程在网络内部进行,因此我们可以将未加密的文件传输到服务器。我们希望采用rsync基于的解决方案,但也可以采用其他解决方案。

在尝试备份笔记本的主目录时,我们遇到了困难,这给我们带来了很大的麻烦。归根结底是这样的:

  1. 如果用户 A 登录,则主目录将被解密,并且其中的加密文件/home/.ecryptfs/A将被锁定,以防止其他进程读取(这是一件好事)

  2. 如果用户 B不是登录后,他的主目录没有解密,只有中的加密文件/home/.ecryptfs/B

  3. 我们需要一个备份脚本,该脚本可以在用户 A 登录时运行(因为在我们的例子中她手动启动它)并且用户 B 可能登录或未登录(通常不登录)。

现在的问题是:什么我们应该备份吗?如果我们选择加密数据,则无法备份用户 A 的内容。另一方面,解密数据意味着用户 B必须也需要登录。当需要恢复某些东西时,将两者结合起来会带来乐趣。

是否还有我们未注意到的针对此问题的其他解决方案?

答案1

你确定那/home/.ecryptfs/A是锁定的,无法读取吗?我使用 ecryptfs,当我登录时,可以浏览和读取 中的文件/home/.ecryptfs/myusername/.Private。我刚刚尝试进入该目录(和子目录)并打开文件(使用vim -b),我可以正常读取它们。我当然希望它们被锁定以进行写入,但我不明白为什么它们会被锁定以进行读取。你使用的是什么操作系统版本?(我在 Ubuntu Lucid 10.04 上)。也许可以单独问一个关于你遇到的错误的问题,因为可能是其他原因导致了问题。

直接回答你的问题 - 备份的内容/home/.ecryptfs/。这将为所有用户备份所有文件(加密副本)。

此外,您还应该能够在必要时解密文件。因此,您应该将解开的密码存储在安全的地方,以防用户忘记密码、离开……要获取它,请让用户运行

ecryptfs-unwrap-passphrase

登录后,将结果存储在某处。结果足够小,您可以将其写下来(再三检查)并将其存储在保险箱中,或者让两个人各保管一半,或者其他方式,具体取决于您需要的安全性。

否则您将需要/home/.ecryptfs/*/.ecryptfs/wrapped-passphrase用户的密码。

您还应该注意,在同步加密数据时,rsync 无法加快文件传输速度。未加密文件中的任何更改都会完全改变加密文件。而且压缩对加密数据实际上不起作用。对于您的情况来说,这应该不是什么大问题,因为同步是在 LAN 上进行的,但对于阅读此问题的其他人来说可能很重要。不过 rsync 仍然可以检查加密文件是否未更改,因此它不必重新传输未更改的文件。

这个问题的读者可能也会感兴趣本指南由 ecryptfs 维护者提供

答案2

假设不存在的用户的密码对于解密是绝对必要的。因此,您唯一的选择是寻找一种备份加密文件的解决方案,并将其用于两个用户。这样做的好处是,看似机密的信息也在备份媒体上加密 - 如果您在各地(异地)传输它,这可能很重要。

我不熟悉 ecryptfs,但听起来这些文件在底层文件系统(猜测是 ext3)查看时是标准文件。

因此,1) 包含加密数据的“原始”目录实际上是否位于其他地方,然后挂载,以便未加密版本出现在您指定的位置 - 在这种情况下,您可以从原始位置获取加密数据。一些 ubuntu 文档表明未加密的私有文件是您在 /home/.ecryptfs/A/Private 中看到的,而它们的加密对应文件实际上存在于 /home/.ecryptfs/A/.Private 中。如果是这样,并且您使用 rsync,您将拥有两个用户的加密 .Private 目录,为了清楚起见,您可以使用 rsync 的排除选项来防止备份未加密的私有目录。

2) 或者,您的问题有点像整个文件夹 A(或 B)都已加密,并且可能未加密和加密版本都挂载在同一位置。如果是这样,您可以尝试类似 mount -o ro --bind /home/.ecryptfs/A /mnt/encryptedA 的操作,这将通过 /mnt/encryptedA 提供对 A 目录的另一个访问点。如果在用户登录之前完成此操作,那么即使 /home/.ecryptda/A 允许访问未加密版本,您也可能通过 /mnt/encryptedA 保留对加密版本的访问权限。我不知道这是否会起作用 - 您只需要尝试一下即可。

答案3

为什么不“仅仅”在注销时将他们的文件同步到共享中。这样,您就不必手动启动您的工作,它将“自动运行”(cron,操作事件......)将未加密的文件复制到共享(可能已加密也可能未加密),然后在注销之前再次加密其自己的 FS。

我知道这不是最终的解决方案,但这意味着用户将始终拥有最新的备份,因为他的文件已在服务器上同步。如果用户 B 有一段时间没有登录,那么不备份他也没有坏处,因为他的文件从一开始就没有改变。

这是您所寻找的东西吗,或者您追求的是一个更简化的一体化解决方案?

不过,理想情况下,通过加密传输进行备份会更好,因为现在您将宝贵的数据暴露给中间人和/或嗅探者。

相关内容