【问题标题】:protect files from editing in linux在linux中保护文件不被编辑
【发布时间】:2013-07-12 20:48:25
【问题描述】:

如何保护文件不被外部程序或用户编辑,即使该用户以某种方式获得了 root 权限。假设我有这个必须保护的文件 F,默认情况下只有 root 和用户可以执行、读取和写入 F,所有其他人只有读取权限。

假设我有一个程序,它正在保护关键文件 F,并检测到编辑环境异常,并且系统的安全性似乎已经受到威胁。如何防止保存对文件 F 的更改?如果可能的话,还要杀死尝试进行该更改的程序。

我发现 fuser 可以终止该进程,但在进行任何修改(即损坏)之前不会。我使用 inotify 来检测更改。我的问题是大多数编辑器制作一个临时文件,进行更改,然后将其保存到原始文件。虽然我收到了 IN_OPEN、IN_CLOSENOWRITE 等事件,但只有在事件完成后我才会收到 IN_CLOSEWRITE 和 IN_CLOSEMODIFY ?如何阻止我的文件 F 被修改?

我知道有人进入系统后我的程序可能会被杀死,但我能以某种方式保存我能做的任何事情吗?

编辑:我忘了提到我无法更改任何受监控文件的权限。

编辑#2:我有一组必须不断监控的文件。我的程序将在后台运行并记录这些文件中的更改。我之前写的所有文件都可以由 root 编辑和执行,但是有些操作(修改)可能是不可取的,并且很可能意味着有人获得了 root 访问权限并编辑了这些关键文件。我需要阻止这些有害的变化。从答案中,我以某种方式假设我将不得不获取这些文件的快照。但问题是文件数量可能很大,大约 1 到 4 百万。欢迎任何比快照解决方案更有效的解决方案。

【问题讨论】:

  • 我认为最好写一个问题来描述你想要做什么。
  • 使文件不可变chattr +i file_to_protect。详情请见man chattr
  • pmg,我查看了 chattr+i,问题是我必须监控的文件可能会被删除,即对于某些文件,这是法律行为,至于其他文件可能会有所不同,也可以写入数据在不将其视为有害更改的情况下更改某些文件。

标签: c linux inotify


【解决方案1】:

如果“攻击者”有 root 权限,则无法保护文件。无论您做什么,root 都可以撤消。 话虽如此,如果你想让它变得更难,你可以把文件放在只读文件系统上,比如 cdrom。

【讨论】:

  • 问题不是root能做​​什么或撤销什么,程序在这种情况下能做什么,程序应该是实时的,放入cdrom是不可能的。跨度>
  • 也许你应该提供一些关于你究竟想要做什么的额外信息,但在我看来,一旦文件被写入,你就无能为力了。也许您可以使用某种 LVM 快照来保留“已知良好”的版本。或者使用 DragonlyBSD 的锤子文件系统。有关这种想法的更多信息,请参阅en.wikipedia.org/wiki/Versioning_file_system
  • 我研究了版本控制系统,因为我从未使用过,有人可以建议研究一下需求,一个好的版本控制系统(不是版本控制文件系统),它有一个可以从 c 程序调用的 API。看看回复,似乎可以撤消,但不能预防?
  • 我认为你不能阻止任何有写权限的人写,你能做的最好的就是回滚(假设他也不简单地破坏备份)libgit2.github.com/api.html适合你需要什么?
【解决方案2】:

如果 root 是恶意的,则无法保证数据完整性。理想情况下,在这样一个关键系统上,如果不使系统脱机并进入维护环境(如果持续正常运行时间至关重要,则可能在系统处于脱机状态时将其替换为代理系统)。

【讨论】:

    【解决方案3】:

    我相信您可以执行 chattr+i(将属性更改为不可变)以防止甚至根用户编辑文件。 root 可以随时恢复此内容,但您也许可以保护您的文件免受不了解 chattr 的脚本小子的攻击。

    【讨论】:

      【解决方案4】:

      您应该从您的应用程序中锁定文件或更改它的ACLRWX 权限

      【讨论】:

      • 我忘了说我不能改变任何被监控的文件的权限
      【解决方案5】:

      如果您的监控应用程序锁定了它正在监控的每个文件,该怎么办?例如,fctnl 可能会起作用。然后,其他应用程序将无法编辑该文件。

      不确定这会如何影响删除(您说的可能是有效的)。

      【讨论】:

        猜你喜欢
        • 2011-01-09
        • 2020-06-16
        • 2014-07-19
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多