拥有 apache 用户拥有的文件的安全隐患?

信息安全 阿帕奇 硬化 权限
2021-08-21 08:24:24

当前运行开发人员用于各种 web 应用程序的 LAMP 实例。我有以下情况:

  • 多个开发人员需要访问权限才能在 /var/www/html 下创建和修改文件
  • 开发人员需要能够访问彼此的代码,以防他们外出度假、生病等。

我的想法如下:

  1. 对于 /var/www/html 下的每个 Web 应用程序(目录),递归地将所有者更改为“apache”,并将组更改为“开发人员”组。将权限设置为570
  2. 对于 /var/www/html 下的每个文件,递归地将所有者更改为“apache”,并将组更改为“开发人员”组。将权限设置为470

将文件和目录保持为对 Apache 用户只读是一种很好的安全实践,但是让 Apache 用户拥有这些文件是一个坏的吗?我担心的是如果 Apache 受到 0-day 漏洞或类似的攻击会发生什么。

如果有人有更优雅的方式来做到这一点,我也有兴趣听到它。

2个回答

使用 MAC 限制守护进程

无论您如何削减它,将 Apache 包装在 AppArmor 或 SELinux 之类的强制访问控制层中都是不错的第一步。这将允许您限制守护程序允许的操作,即使否则有权这样做。这将阻止 Apache 修改您的文件。

使用带有自动签出的版本控制

如果每个开发人员都可以访问 git,并且生产分支在更新时由 Web 服务器自动签出,那么您将拥有所有加载内容的控制权和历史记录,以及即时验证一切是否应有的内容。

权限

让 Apache 成为文件所有者的缺点是 Apache 理论上可以对这些文件进行 chmod。出于这个原因,除非您希望 Apache 更改目录,否则将其中的数据目录和文件由另一个用户拥有是有好处的。如果这样做,请尝试为预期的动态内容和 Apache 永远不应该更新的内容分开目录。

你是绝对正确的,保持用户运行网络服务器进程,在你的情况下apache与写入 webroot 隔离是一个好主意。出于某种原因,它是基本的硬化指南之一。如果用户可以写入文件或目录,那么恶意用户就更容易修改文件系统。您没有考虑的一件事是文件系统的所有权如何工作。

拥有文件的用户始终可以对其进行写入。这似乎是矛盾的,但已经到位,以便用户可以执行诸如覆盖或删除文件之类的操作。

如果对于您的业务流程,开发人员需要对实时 Web 文件的直接写入权限,我会将您的建议修改为:

我的想法如下:

  1. 对于 下的每个 Web 应用程序(目录)/var/www/html,递归地将所有者更改为另一个帐户,例如nobodyorroot并将组更改为developers组。将权限设置为 575。
  2. 对于 下的每个文件/var/www/html,递归地将所有者更改为另一个帐户,例如nobodyorroot并将组更改为developers组。将权限设置为 474。

这将允许apache用户读取文件,从而允许 httpd 提供文件,同时防止它修改文件。