php - 保护共享 lighttpd 设置的安全

标签 php security lighttpd

(是的,我知道与 lighttpd 有关的问题更适合 SF,但我认为在这里更容易被问到,因为它主要与安全策略有关。)

我们计划在我的大学建立一个小型网络服务器,以便人们可以获得一些网络空间来发布网页等。他们还可以上传 PHP 页面。整个设置在 chroot jail 内运行。

我们正在考虑使用相同的基础设施来提供更多服务,例如论坛。 我的问题是,将论坛放在同一个文档根目录(或者实际上,同一个 chroot 环境)中几乎允许任何用户将小型 PHP 脚本放在可以访问论坛配置文件的目录中(使用,例如,file_get_contents)。这是一个巨大的安全风险!有没有什么方法可以解决这个问题,除了为用户帐户禁用 PHP,并且只为讨论论坛等启用它,或者在其他地方提供论坛并使用 lighttpd 代理它?

我怀疑设置所有权/权限是否可以解决此问题,因为在我看来,PHP FastCGI 进程是由 Web 服务器生成的,因此,服务器可以访问的任何页面(它们都一定是这样,看看服务器如何最终必须为它们提供服务)可以通过用户上传的 PHP 脚本进行访问。

如有任何帮助,我们将不胜感激!

最佳答案

嗯,有几点。

首先,虽然 Lighttpd 非常适合高性能需求,但它并不是设计用于共享主机设置。 Apache 可能是更好的选择,因为它支持 .htaccess...

其次,PHP 不需要以与 Lighttpd 相同的用户身份运行。您可以使用 spawn_fcgi 程序以该网站的用户身份启动每个 fastcgi 监听器。您将为每个虚拟主机声明一个 fastcgi 后端。请注意,您可能无法使用任何内置虚拟主机模块(simple_vhost 等)。只需使用正则表达式匹配即可:

通过 IP 和端口:

$SERVER["socket"] == "127.0.0.2:80" {
    fastcgi.server = (
        ".php" => (
            "username" => (
                "socket" => "/tmp/user_php.fastcgi",
            )
        )
    )
)

或按主机名:

$HTTP["host"] =~ "example\.com" {
    # ...
}

您可能需要修改 init 脚本以执行 spawn_fcgi 来为每个用户启动 php 进程。

关于php - 保护共享 lighttpd 设置的安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186056/

相关文章:

java - 单点登录以保护 REST API 和基于 Web 的内部系统

python - 如何防止 Gunicorn 尊重客户发起的重新协商?

ios - OS X 的 NSURLConnectionLoader 异常但使用 IOS

linux - 设备 (iMX6) 不可从外部网络使用

python - 如何使用 flup/python 配置 lighttpd bin-path 参数

c++ - lighttpd-cpp如何编译?

javascript - Twitter 和 Google Plus 的纯 Javascript API

php - 如何在脚本仍在执行时设置任何数据?

php - 如何在数组中产生行空间

php - 如何用foreach批量更新记录?