【问题标题】:Executing scripts as apache user (www-data) insecure? How does a contemporary setup look like?以 apache 用户(www-data)身份执行脚本不安全?当代设置如何?
【发布时间】:2012-01-12 14:31:12
【问题描述】:

我的脚本(php、python 等)和我的 Linux 系统上其他用户的脚本由 apache 用户(又名“www-data”)执行。如果我错了,请纠正我,但这可能会导致一些尴尬的情况:

  1. 我可以通过使用脚本来读取其他用户脚本的源代码。我可能会找到硬编码的数据库密码。
  2. 脚本编写和上传的文件归 www-data 所有,脚本所有者可能无法读取或删除。
  3. 用户希望他们的上传文件夹可以被 www-data 写入。使用脚本,我现在可以写入其他用户的上传目录。
  4. 对这些权限问题感到沮丧的用户将开始将文件和目录权限设置为 777(只需查看 Wordpress 支持论坛...)。
  5. 一个可利用的脚本就足以危及所有其他用户。操作系统文件权限安全对遏制损害没有多大帮助。

那么现在人们是如何处理这个问题的呢? 在不削弱传统的基于文件权限的安全性的情况下,在共享系统上支持多个 Web 框架的合理(架构正确?)方法是什么? 使用 fastCGI 是否仍然可行?现代界面 (wsgi) 和性能策略如何适应?

感谢任何提示!

【问题讨论】:

    标签: apache permissions cgi security fastcgi


    【解决方案1】:

    据我所知,如果我错了,请纠正我!

    ad 1. - 4. 使用 wsgi,您可以更改并因此限制每个进程的用户/组。 http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess

    ad 5. 使用 wsgi,您可以隔离进程。 http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIProcessGroup

    来自 mod_wsgi-page 的引用: “在 UNIX 上,Apache 2.X 可用的另一种操作模式是‘守护进程’模式。这种模式的操作方式与 FASTCGI/SCGI 解决方案类似,其中不同的进程可以专用于运行 WSGI 应用程序。然而,与 FASTCGI/SCGI 解决方案不同,实现 WSGI 应用程序时不需要单独的进程管理器或 WSGI 适配器,一切都由 mod_wsgi 自动处理。

    由于守护模式下的 WSGI 应用程序在它们自己的进程中运行,因此对用于提供静态文件和使用 PHP、Perl 或其他一些语言的 Apache 模块托管应用程序的普通 Apache 子进程的影响大大减少。如果需要,守护进程也可以作为不同的用户运行,以确保 WSGI 应用程序不会相互干扰或访问它们不应该能够访问的信息。”

    【讨论】:

      【解决方案2】:

      你所有的观点都是有效的。 通过在 Apache 配置中设置 open_basedir 指令来解决第 1、3 和 5 点。 2 和 4 确实很烦人,但是由网络应用程序上传的文件也(希望)可以使用同一个应用程序删除。

      【讨论】:

        猜你喜欢
        • 2022-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 2022-01-17
        • 2017-07-25
        相关资源
        最近更新 更多