我们正在尝试在 2 个服务器之间实现安全的 rsync 备份。我们尽一切努力避免在 2 个系统之间拥有没有密码的 root 访问权限,如果有的话,也只为特定用户这样做。
我理解这存在备份文件权限问题。我已阅读这里是 serverfault并且在这个网站上关于使用 fakeroot 以及 SSH 服务器的“PermitRootLogin forced-commands-only”选项,但仍然无法从安全角度找出最合乎逻辑和最合理的选项。我们不希望 root 用户在没有密码的情况下自动获得另一台机器的 root 访问权限。不确定我们是否只是对此过于偏执,但我认为这是很常见的,任何反馈都会非常感激。
- PermitRootLogin 强制命令仅使用一对密钥而无需密码是否足够好?这是否需要目标服务器(即 rsync)上允许的命令的特定列表?
- fakeroot 选项是否有效(在我们的例子中主要是数据备份)并且如果有效...它如何与 rsync 命令结合?
- 我们是否可以拥有一个在两个系统上都具有足够权限的 rsync 用户,以便无密码 rsync 正常工作?
非常感谢。
答案1
您说得对,无论是在您的实时机器还是备份机器上使用无密码 root 登录都是一个坏主意 - 如果有人获得一侧的访问权限,他们就可以立即访问另一侧,因此可能会同时损坏您的实时数据和在线备份。
如果您要备份的服务器正在向存储备份的服务器推送更新,则 fakeroot 选项应该可以正常工作,您只需添加--fake-super
到 rsync 命令行并确保接收端的文件系统支持扩展属性。
另一个选择是引入一个中间机器,实时服务器和备份服务器都具有密钥库根登录。这样实时机器就可以使用 rsync 将备份推送到中间机器,然后备份机器可以将其拉下,而实时机器和备份机器都无法相互登录根本,不必以 root 身份登录。中间机器也不需要能够通过实时服务器或备份服务器进行身份验证。中间服务器只需要足够的空间来保存所有内容的最新版本(即,备份服务器上存储的数据(包括不同时间的快照)可能比中间服务器可以存储的数据大几倍。
当然,不言而喻,除了禁止服务器之间基于密钥的根登录之外,还要确保根密码(和其他密码)在各个机器之间也都不同。