执行脚本为apache用户(www-data)不安全?现代设置如何?

时间:2011-12-04 12:41:46

标签: apache permissions cgi security fastcgi

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

  1. 我可以使用脚本阅读其他用户脚本的源代码。我可能会找到硬编码的数据库密码。
  2. 脚本和上传文件由www-data拥有,脚本所有者可能无法阅读或无法删除。
  3. 用户希望他们的上传文件夹可以通过www-data写入。使用脚本我现在可以写入其他用户上传目录。
  4. 对这些权限问题感到沮丧的用户将开始将文件和目录权限设置为777(只需查看Wordpress支持论坛......)。
  5. 一个可利用的脚本足以危及所有其他用户。操作系统文件权限安全性无助于控制损坏。
  6. 那么现在人们如何处理这个问题呢? 在不削弱传统文件权限的安全性的情况下,在共享系统上支持多个Web框架的合理(架构正确?)方法是什么?使用fastCGI仍然是可行的方法吗?当代接口(wsgi)和性能策略如何适应?

    感谢任何提示!

2 个答案:

答案 0 :(得分: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应用程序不会相互干扰或访问他们不应该访问的信息。"

答案 1 :(得分:0)

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