只写远程备份解决scheme,防止黑客进行备份删除

考虑这种情况:我有Linux服务器,每天通过rsync或类似的东西自动备份到某个远程位置。 一切都很好,直到一些坏人获得服务器的访问权限,find我的自动备份脚本并删除备份服务器的所有内容。

我试图find一些远程备份实用程序,只允许远程添加备份,但不能删除它们。 我现在不怎么做任何使用SSH的东西只写,我试图find一些不使用SSH,但只发现框备份 。

我现在有可能,但我想知道是否有一些规范的方式来实现这一点。


我有很多答案,谢谢大家!

最简单的事情可能是与备份相反,即。 从备份服务器拉。 这就是我用rdiff-backup运行备份的方法。

如果你正在做一个天真的备份(单一拷贝,覆盖所有数据),那么你就无法实现你想要的东西 – 攻击者总是可以“备份”一堆空文件(或空文件集),这将导致所有的数据都要再见了。 因此,我假设您正在进行适当的归档备份,并且您正在监视备份,以至于在发生永久性损坏之前,通过发送空白备份集来消除备份的任何尝试都将被检测到。

如果您的rsync-over-(推测)-SSH使用强制命令在目的地上运行rsync ,那么您的安全性可能会降低。 既然你只想运行一个特定的rsync命令,你可以硬编码所有的参数,然后唯一可以做的就是编写新的数据。 通过每次备份一棵新的树并使用硬链接将未更改的文件与先前的备份相关联,存档非常简单,节省了空间和传输时间。

另一种方法是使用备份服务器启动和pipe理rsync操作的备份 – 这意味着客户机甚至不能运行受限制的rsync命令,这意味着攻击者没有权力删除文件。

这一切都假定您的备份服务器是安全的。 如果攻击者可以通过其他方式访问攻击者,那么无论你做什么,你都会受到攻击。

这是我喜欢Tarsnap备份服务的function之一。 它允许我创build具有读取,写入和/或删除function的子键。

在我的服务器上,我通常保留具有读写function的子项。 有时,当我需要/希望修剪旧的备份存档时,我使用本地台式计算机上的主密钥来执行此操作。

请注意,Tarsnap本身就是一个存储服务。 您不能使用Tarsnap软件来针对您自己的存储服务器创build备份。

ftp:例如vsftp有一个选项来禁用删除,所以你只能上传。 然后在另一边创build一个脚本,删除x天以前的备份。 我使用这个选项,在主服务器上备份是使用tar + gz的简单备份,它们通过sftp上传到nas服务器,然后nas服务器删除超过7天的备份。

rsync:rsync服务器有一个选项来禁用删除,这样也可以为你工作,但你必须使用rsync协议/服务器。 拒绝选项=删除

但是,那么你将不得不一次手动删除“删除”文件。

尝试使用一个只能写一个文件系统的图层来掩盖你的实际目的地。

我在这里find一个例子,使用FUSE 。

您也可以使用任何人都可以写入的encryption文件系统,但需要更改密钥证书(似乎是最安全的select,尽pipe在实施过程中可能需要更多计划)。 如果你这样去看看检查WOCFS(只写enCrypted文件系统)和TrueCrypt

所以,第一个解决scheme将“屏蔽”你的文件系统,这实际上存储在机器内的其他地方,并且可以通过权限改变为系统用户,而在第二个解决scheme中,只能用适当的键来修改。

所以,我了解到有两个基本的策略:

  1. 从备份的服务器使用基于ssh的备份来备份
  2. 在备份服务器上设置sshd以仅接受安全命令

与第二个策略相关的rdiff-backup 联机帮助页报价:

尽pipessh本身可能是安全的,但是使用默认的方式使用rdiff-backup会带来一些安全风险。 例如,如果服务器以root用户身份运行,那么攻击者可能会利用rdiff-backup通过“备份”来覆盖任意服务器文件。 通过使用sshdconfiguration选项command =“rdiff-backup –server”以及–restrict *选项将rdiff-backup一起使用,可以使这种设置更加安全。 有关更多信息,请参阅此手册页上的网页,wiki以及–restrict *选项的条目。

 --restrict-update-only path ike --restrict, but only allow writes as part of an incremental backup. Requests for other types of writes (for instance, deleting path) will be rejected. 

当然你的备份必须是增量式的,而且你应该有一些监控系统,以防止黑客备份垃圾数据事件中“取代”来自增量备份系统的真实数据。