安全的异地备份,即使在黑客具有root用户访问权限的情况下


24

我正在寻找一种实现非安全备份的更安全方式的方法,该方法还可以保护我的数据免遭恶意黑客获得对我的服务器的根访问权限的情况。如果正确设置了SSH和密码安全性并正确地保持了系统的最新状态,即使发生这种情况的机会比其他种类的风险要小,但是可以永久造成的损失确实很高,因此我想要找到一种解决方案来限制这一点。

我已经尝试了两种异地备份方式:

  • 一个简单的可根写入的webdav挂载(并在fstab中配置),将备份的数据复制到该挂载上。问题:并不是真正的非现场备份,因为与非现场位置的连接(以及访问权限)一直作为文件系统中的文件夹保持打开状态。如果该安装具有有限的访问权限(只读的root用户访问权限),但它不能防止具有root用户访问权限的恶意用户,这足以抵御多种攻击。

  • 通过具有密钥身份验证的SSH进行Borg备份。问题:如果恶意用户具有对主机的根访问权限,则可以使用存储在主机上的密钥来完成与该异地服务器的连接。

作为解决方案,我正在考虑这些潜在的方法,但是我不知道该如何做以及如何做:

  • 备份只能写入或附加到目标,而不能删除。
  • 使用可处理异地备份的备份软件,并且不支持从第一台主机中大量删除异地备份。

在我的情况下,并不是很有趣的解决方案:

  • 非现场主机上的额外备份作业会将其转移到第一台主机无法访问的位置(由于技术限制)。

谁能为我的案例提供适当的异地备份建议?


7
首先,您在服务器内部进行本地备份。然后,从另一台服务器将备份下载到您自己(没有安装目录)。
TheDESTROS

2
30或40年前,存在带有匿名“传入”目录的FTP服务器。您可以上传文件,但不能覆盖或列出它们。只需设置相应目录的权限即可。所以...本地根与否,没有区别。
达蒙(Damon)

@TheDESTROS请回答,而不是评论。
wizzwizz4

我认为不应该再使用匿名FTP。
卢卡斯·拉奇

Answers:


54

当前,您的所有建议都有一个共同点:备份源执行备份并有权访问备份目标。无论您是安装位置还是使用SSH或rsync之类的工具,源系统都可以以某种方式访问​​备份。因此,对服务器的损害也可能会损害您的备份。

如果备份解决方案可以访问服务器怎么办?备份系统可以通过只读访问来完成其工作,因此备份系统上的任何损害都可能不会损害服务器。同样,备份系统也可以专门用于此目的,从而使备份的内容成为唯一的攻击手段。那将是非常不可能的,并且需要真正复杂的攻击。

为避免使用篡改或损坏的内容覆盖备份,请执行增量备份,以使您可以在定义的恢复期内恢复任何先前的状态。


关于在何处搜索建立只读访问解决方案的指南的任何建议?
EarthMind

5
这就是我通过ssh备份内容的方式:备份服务器将ssh放入要备份的服务器中。
迈克尔·汉普顿

4
通过ssh进行rsync也是一个不错的选择,它允许进行增量备份。直SCP更适合于完全备份
GoFundMonica - codidact.org

10
+
Criggie

1
这也是BackupPCIBM Tivoli Storage Manager(又名Spectrum Protect)之类的备份解决方案的工作方式。
杜布

9

不变的存储

一个不错的选择是使您的备份存储不可变,或者至少提供可靠的版本控制,从而使您有效地保持不变。要明确:不变是指无法更改或永久不变。

有多种服务可以为您做到这一点。AWS S3,BackBlaze B2和我怀疑Azure和Google都提供了类似的服务。您可能可以设置服务器来执行此操作,但是我不确定如何执行此操作。

当您拥有不可变的/版本控制的存储库时,可以将备份还原到任何位置,因此,如果主机受到威胁,您仍可以在任何时间点还原。

* AWS S3 **

我最熟悉AWS S3。S3提供了版本化的加密存储,具有高度的耐用性。

S3支持版本控制,从而为您提供有效的不变性。在可以配置的时间段后,您可以选择使用生命周期规则删除文件的旧版本。您还可以将版本存档到冷存储(冰川冷存档),每月费用约为1美元/ TB。

您可以使用智能存储分层类来降低成本。我选择使用生命周期规则将所有静态数据移动到不频繁访问的类,这是持久的,中等的(热)性能,但不具有S3标准的可伸缩性或性能。

S3使用IAM(身份访问管理,即用户管理)用户和策略。这使您可以非常精细地控制备份软件可以对存储执行的操作。您可以授予备份用户上载的权限,但拒绝更新和删除。您还可以要求多重身份验证来删除文件,甚至提供对象锁定,以使文件无法删除。

推荐软件

我使用Restic创建增量备份。Restic将新文件上传到您的存储位置。我相信(但我可能不正确)它会创建新文件,但在一般操作中,它不会更新或删除任何文件。

博格是另一个选择。我曾经使用过Borg,但是我发现通过进行数百MB的中等大小的备份,它每天可以有效地将我的所有数据从EC2上传到S3。对我来说这不是增量的,所以我停止使用它。我确实找到了有关此文档,但是没有链接。

有很多软件可以上传到云存储。

受保护的存储

使用某些备份软件,您可以尝试授予IAM用户写入新文件的权限,但不能更新现有文件。使用AWS IAM进行此限制很容易,但是根据下面的注释,Restict不适用于这些权限。您还可以具有从S3删除文件所需的多因素身份验证。

您可能有另一个IAM用户,从您的PC运行,它会定期清理存档,并按照您设置的策略丢弃版本。


1
另请参见S3对象锁定。可以对其进行配置,以便在定义的时间内,没有人,甚至不是root用户,都可以删除或覆盖对象。
user71659

我怀疑对象锁定对于备份可能有点过多,因为有时您会想要删除文件。它可能会过期,因此您以后可以删除文件。
Tim

1
Restic喜欢在“ locks”目录中创建和删除文件以控制独占访问,因此,如果您剥夺了在后端删除文件的权限,则会中断。这里提出的一种解决方案是使用两个存储桶(一个用于锁的读/写存储桶,以及一个用于其他所有内容的仅附加存储桶)。然后,它使用一个本地tinyproxy实例根据请求路径通过两个Rclone实例之一发送内容,并且每个Rclone都将命令分发到相应的存储桶。
斯科特·达德利

8

Borg Backup支持仅追加远程存储库。备份服务器的任何妥协只能导致创建新的备份,而不会仅覆盖旧的备份。


2
对于Borg,我不喜欢的一件事是,如果增量备份的大小小于给定的大小,它将仅将每个备份上载所有备份。我之所以选择Restic,是因为带宽效率低下。我不知道门槛是多少,但足以使它有点烦人。
Tim

那么,谁删除了这种系统中的旧备份呢?我尝试过一次只添加而不是删除硬盘驱动器中的内容,结果发现它们很快就会耗尽存储空间。
桅杆

7

在我的情况下,并不是很有趣的解决方案:

非现场主机上的额外备份作业会将其转移到第一台主机无法访问的位置。

根本的问题是,如果您可以远程访问备份,那么黑客也可以

(由于技术限制)

克服了技术限制。

谁能为我的案例提供适当的异地备份建议?

磁带驱动器近70年来一直在提供针对各种灾难(包括黑客)的安全的异地保护。


1
我不明白为什么这个答案不高。防止受到在线攻击的最佳方法是使它脱机。胶带简单且经过验证。
格雷格

@Greg并不是每一种解决方案,由于我所使用的服务的局限性,就我而言,它仅允许webdav,Borg,SMB和NFS连接。另外,它是一个非常昂贵的解决方案(与不错的替代方案相比),在每种情况下都不是一件有趣的事情。我没有看到自己使用昂贵的离线备份解决方案备份我的每月10欧元VPS。如果数据消失了,那对我来说不是世界末日。很高兴在这里看到不同价格范围的建议,但是对于我的用例而言,这种解决方案最不有趣。
EarthMind

这个。备份到物理介质上并通过安全的异地位置旋转物理介质,理想情况下,该物理介质具有不同的自然灾害风险特征。
ARP

@asp我的两个系统管理员(我是DBA)将磁带保存在汽车后备箱中……其中一个在9/11的WTC上工作较晚(这些系统位于不同的DC),所以在9 / 12或9/13(我忘了哪个),他用一周的磁带开车到备用DC。
罗恩·约翰

3

您可以使用存储服务,例如AWS S3(或者可能是Google或Azure的等效产品),在其中您可以为根帐户授予存储桶的PUT权限,但不能授予DELETE权限。这样,您可以使用推送模型,攻击者将无法删除备份。

您可以使用AWS采取进一步的安全措施,例如要求MFA在存储桶上执行DELETE,但允许没有MFA的PUT和GET。这样,您既可以备份数据又可以检索数据以恢复服务,而无需使用MFA设备,这在某些极端的情况下很有用(甚至可能太晦涩,甚至无法提及),在这种情况下访问MFA设备可能会损害数据。

同样,您可能会发现一个有趣的/有用的范围外注释,有几种方法可以配置S3和类似服务以在主数据源脱机的情况下进行自动故障转移。


1
我建议在IAM中创建一个具有写入功能且无删除访问权限的专用“推送”客户端。另外,在bucket上打开版本控制,因此早期版本仍然可用。为了节省成本,可以将旧版本“退役”到Glacier。
Criggie

3

通过具有密钥身份验证的SSH进行Borg备份。问题:如果恶意用户具有对主机的根访问权限,则可以使用主机上存储的密钥来完成与该异地服务器的连接。

您可以在authorized_keys中使用选项命令。您修复了远程允许的命令。

如何在sshauthorized_keys中添加命令

即使攻击者恢复了登录根,他也将无法执行已定义命令以外的任何其他操作。


1

您可以设置的一种方法是在服务器与远程备份服务器之间使用同步,并让远程备份服务器对其进行快照或执行任何操作,以使擦除服务器端不会导致异地擦除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.