意见:权限:出于安全目的写入但不读取?

edo*_*oze 7 server permissions security backup networking

我有许多连接的系统,并且正在考虑为增量备份和完整备份设置单独的服务器。

为了防止在某个系统/备份遭到破坏时丢失所有系统/备份,我正在考虑将其作为一种投递箱式事务,在备份推送到的每个系统上安装一个只写共享。

我打算,如果某些东西受到攻击,备份可以通过新创建的只读共享暴露给或推送到受影响的系统,然后从那里恢复 - 但系统本身无法访问。

我们的一个竞争对手最近失去了他们的全部业务,因为即使他们的备份也是连接的——所以他们没有什么可以恢复的。

我还将以适当的时间间隔下载完整的备份。

请戳破我的计划。

谢谢。

Rin*_*ind 19

请戳破我的计划。

当然。仅删除 read 并不能阻止您遇到问题。任何修改尝试都需要写权限。然后攻击者仍然可以将文件写为空(他只需要知道文件在哪里)。

除了附加新数据之外,为什么不锁定该磁盘上有关备份的任何内容?

可能的设置:

/backups/20160911/backup.tar.gz
/backups/20160912/backup.tar.gz
/backups/20160913/backup.tar.gz
Run Code Online (Sandbox Code Playgroud)

创建一个脚本

chattr -R +a /backups/
chattr -R +i /backups/*.tar.gz
Run Code Online (Sandbox Code Playgroud)

+i意思是“不可变的”;对这些文件或目录无能为力。甚至 root 也不能​​改变它(包括删除、编辑、写入、添加新文件。任何东西)。-i在 root 可以对这些文件执行某些操作之前,甚至 root 也需要删除它(使用)。

+a意思是“附加”;-i与 1 个例外相同的规则。除了添加文件或目录,任何人都不得对文件或目录进行任何更改。再说一遍:即使是 root 也需要删除它(使用-a),然后才能更改文件或目录,而更改不会向其附加内容。

(以上可能需要一些调整。1 个大备份文件可能不是最好的方法。带有子目录和文件的东西可能会更好。所以这需要对这两行进行调整:例如,仅在旧目录上执行此操作并执行备份完成后手动“今天”。然后变成

chattr -R +i /backups/{not_today}
chattr -R +a /backups/{today}
Run Code Online (Sandbox Code Playgroud)

每隔一段时间运行此脚本,以便在任何时候有人更改其中的某些内容时,/backups/都会重置所有备份的权限。

目录和文件可以添加到“今天”,备份完成后,您可以手动添加 +i。创建一个好的管理员密码,除了管理员之外没有人会接触这些文件。曾经。

顺便说一句:还可以考虑在线存储备份。我们在多个 google 实例中有我们的备份(我们在 3 个大洲有 3 个实时系统,它们共享数据,每个系统在另一个大陆上创建一个备用实例,每个系统共享一个备份系统)。

  • @Advancid 答案已经提到,如果他们确定了,他们可以删除不可变位。此处的保护并未声称提供针对具有 root 访问权限的攻击者的安全性。 (5认同)
  • @Advancid 据我所知,用例是为了防止备份服务器本身没有受到损害,以防止其他服务器(受到损害)使用他们对备份服务器的正常访问来破坏备份。 (4认同)

L. *_*mes 4

删除read您想要不可读的文件或目录的权限。

权限是:

u - Owner
g - group
o - others
Run Code Online (Sandbox Code Playgroud)

关闭每个人的读取权限,并为您希望拥有写入权限的每个人关闭权限。

$ chmod -R ugo-r [path]
Run Code Online (Sandbox Code Playgroud)

目录 [path] 及其所有文件和子目录都将具有此属性。在这种情况下-r(无读访问权限)。