我有许多连接的系统,正在考虑设置一个单独的服务器用于增量备份和完整备份。
为了防止在发生故障时丢失所有系统/备份,我正在考虑将其做成一个 Drop-box 类型的系统,在每个系统上安装一个只写共享,将备份推送到该共享。
我的意图是,如果出现攻击,可以通过新创建的只读共享将备份公开或推送到受影响的系统,然后从那里恢复 - 但系统本身无法访问。
我们的一个竞争对手最近失去了整个业务,因为他们的备份也被连接起来了,所以他们无法恢复任何东西。
我还将以适当的时间间隔下载完整的备份。
请指出我的计划中的漏洞。
谢谢。
答案1
请指出我的计划中的漏洞。
当然。仅删除读取权限并不能防止出现问题。任何修改尝试都需要写入权限。然后攻击者仍然可以将文件写入空(他只需要知道文件在哪里)。
除了添加新数据之外,为什么不锁定磁盘上有关备份的任何内容?
可能的设置:
/backups/20160911/backup.tar.gz
/backups/20160912/backup.tar.gz
/backups/20160913/backup.tar.gz
创建一个脚本
chattr -R +a /backups/
chattr -R +i /backups/*.tar.gz
+i
表示“不可改变”;无法对这些文件或目录执行任何操作。甚至 root 也无法更改它(包括删除、编辑、写入、添加新文件。任何操作)。甚至 root 也需要先删除它(使用-i
),然后 root 才能对这些文件执行任何操作。
+a
表示“附加”;-i
与 1 个例外的规则相同。任何人都不得对文件或目录进行任何更改除了添加它。再说一遍:即使是 root 也需要先删除它(使用-a
),然后才能更改文件或目录,而更改不会向其中添加内容。
(以上可能需要一些调整。1 个大备份文件可能不是最好的方法。带有子目录和文件的东西可能会更好。因此,需要对这两行进行调整:例如,仅在旧目录上执行此操作,并在备份完成后手动执行“今天”。然后这变成
chattr -R +i /backups/{not_today}
chattr -R +a /backups/{today}
让此脚本间歇地运行,这样如果有人在任何时候更改了其中的内容,/backups/
就会重置所有备份的权限。
目录和文件可以添加到“今天”,备份完成后,您可以手动添加 +i。创建一个好的管理员密码,除了管理员,没有人可以触碰这些文件。永远。
顺便说一句:还可以考虑在线存储备份。我们的备份位于多个 Google 实例中(我们在 3 个大洲拥有 3 个实时系统,它们共享数据,每个系统在另一个大洲创建一个后备实例,每个后备实例共享一个备份系统)。
答案2
删除read
您不想读取的文件或目录的权限。
权限如下:
u - Owner
g - group
o - others
关闭所有人的读取权限以及您希望每个具有写权限的人的权限。
$ chmod -R ugo-r [path]
目录 [path] 及其所有文件和子目录均具有此属性。在本例中为-r
(无读取权限)。
答案3
没有什么比断开连接的备份更安全。将备份下载到外部驱动器上,并在将备份复制到该驱动器上后将其从网络上拔下。获取多个驱动器并轮换它们。
例如,购买 5 个 1TB 硬盘(总成本 < 300 美元)。将其中 3 个指定为每日备份;每天连接一个并将备份复制到其中,然后断开连接。将一个指定为每周备份,将另一个指定为每月备份,然后执行相同操作。
将一些驱动器存放在第二个位置,以防发生火灾或盗窃。
这种方法可以保护您免受多种不同的数据丢失威胁。
如果您的系统全部基于服务器,请使用云等效系统。在不同的提供商(亚马逊、谷歌、Azure)上设置一些服务器。每天连接到另一台服务器,并将您的备份通过 sftp 传输到该服务器上,然后断开连接。保留多个副本,这样您就不会覆盖一个好的副本。
但没有什么比断开与任何网络的连接并保存在异地位置的物理副本更难以被黑客入侵。