我正在寻找一种更安全的异地备份方法,这种方法还可以保护我的数据,防止恶意黑客获得对我的服务器的 root 访问权限。尽管如果正确设置了 SSH 和密码安全性并且系统保持最新状态,发生这种情况的可能性小于其他类型的风险,但可能造成的永久性损害非常高,因此我想找到一种解决方案来限制这种情况。
我已经尝试了两种异地备份的方式:
一个简单的 root 可写 webdav 挂载(并在 fstab 中配置),备份数据被复制到其中。问题:实际上并非异地备份,因为与异地位置的连接(以及访问)始终作为文件系统中的文件夹保持打开状态。如果挂载点具有有限的访问权限(只读 root 访问权限),这足以防范多种攻击,但无法防范具有 root 访问权限的恶意人员。
Borg 通过 SSH 和密钥认证进行备份。问题:如果恶意用户具有主机的 root 访问权限,则可以使用存储在主机上的密钥连接到该异地服务器。
作为解决方案,我正在考虑这些潜在的方法,但我不知道如何以及用什么:
- 备份只能写入或附加到目标,但不能删除。
- 使用处理异地备份的备份软件,不支持从第一台主机批量删除异地备份。
对我来说不太有用的解决方案:
- 异地主机上的额外备份作业将其传输到第一个主机无法访问的位置(由于技术限制)。
有人能就如何针对我的情况实施适当的异地备份提供建议吗?
答案1
目前,您的所有建议都有一个共同点:备份源会执行备份并有权访问备份目标。无论您是挂载位置还是使用 SSH 或 rsync 等工具,源系统都会以某种方式访问备份。因此,服务器上的入侵也可能危及您的备份。
如果备份解决方案可以访问服务器,情况会怎样?备份系统可以通过只读访问,因此对备份系统的任何攻击都不太可能危及服务器。此外,备份系统可能仅用于此目的,使备份内容成为唯一的攻击媒介。这种情况不太可能发生,需要非常复杂的攻击。
为了避免被篡改或损坏的内容覆盖备份,请增加的备份允许您在定义的恢复期内恢复任何以前的状态。
答案2
不可变存储
一个不错的选择是让备份存储不可变,或者至少提供可靠的版本控制,从而有效地提供不可变性。明确地说:不可变意味着无法更改或永久。
有多种服务可以为您做到这一点。AWS S3、BackBlaze B2,我怀疑 Azure 和 Google 都提供类似的服务。您可能可以设置一个服务器来执行此操作,但我不确定如何操作。
当您拥有一个不可变/版本控制的存储库时,您可以将备份恢复到任何点,因此如果您的主机受到威胁,您仍然可以在任何时间点进行恢复。
*AWS S3**
我最熟悉的是 AWS S3。S3 提供版本化、加密存储,具有高水平的耐用性。
S3 支持版本控制,为您提供有效的不变性。您可以选择使用生命周期规则在可配置的时间段后删除旧版本的文件。您还可以将版本存档到冷存储(Glacier Cold Archive),费用约为 1 美元/TB/月。
您可以使用智能存储分层类以降低成本。我选择使用生命周期规则将所有静态数据移动到不频繁访问的类,这是持久的和中等(热)性能,但没有 S3 标准的可扩展性或性能。
S3 使用 IAM(身份访问管理,即用户管理)用户和策略。这让您可以非常精细地控制备份软件可以对您的存储执行的操作。您可以授予备份用户上传权限,但拒绝更新和删除。您还可以要求多因素身份验证来删除文件,甚至可以提供对象锁这样文件就无法被删除。
推荐软件
我使用创建增量备份雷斯蒂奇。Restic 将新文件上传到您的存储位置。我相信(但我可能不正确)它会创建新文件,但在一般操作中它不会更新或删除任何文件。
Borg 是另一个选择。我以前用过 Borg,但我发现,对于我数百 MB 的中等大小的备份,它每天都会有效地将我的所有数据从 EC2 上传到 S3。对我来说,这不是增量的,所以我停止使用它了。我确实找到了关于此的文档,但没有链接。
可以上传到云存储的软件有几十种。
受保护的存储
使用某些备份软件,您可以尝试授予 IAM 用户写入新文件但不更新现有文件的权限。使用 AWS IAM 很容易做出此限制,但根据以下评论,Restic 不会使用这些权限。您还可以设置从 S3 删除文件所需的多因素身份验证。
您可以让另一个 IAM 用户(比如从您的 PC 运行)定期清理档案,并根据您设置的策略丢弃版本。
答案3
Borg Backup 支持仅附加远程存储库. 任何对正在备份的服务器的损害都只会导致创建新的备份,而不会覆盖旧的备份。
答案4
您可以使用 AWS S3 等存储服务(或者可能是 Google 或 Azure 的同类服务),在这些服务中,您可以授予根账户对存储桶的 PUT 权限,但不授予 DELETE 权限。这样,您可以使用推送模型,攻击者将无法删除备份。
您还可以使用 AWS 采取进一步的安全措施,例如要求 MFA 在存储桶上执行 DELETE,但允许在没有 MFA 的情况下执行 PUT 和 GET。这样,您既可以备份数据,也可以检索数据以恢复服务,而无需使用 MFA 设备,这在某些极端情况下(可能太模糊甚至无法提及)可能会很有用,因为访问 MFA 设备可能会危及设备安全。
此外,您可能会发现超出范围的评论很有趣/有用,有几种方法可以配置 S3 和类似的服务,以便在主数据源离线时进行自动故障转移。