安全 - 拒绝来自 nginx 的所有直接 php 请求

安全 - 拒绝来自 nginx 的所有直接 php 请求

在过去几天里,我的其中一台服务器遭到了几次黑客攻击(似乎失败了,但不能确定,因为如果有人真正获得了访问权限,就可以抹去痕迹),之后我决定稍微加强一下安全性。

项目基于symfony 4,架构比较标准,服务器是nginx,php-fpm作为解释器。

我想做的 (许多) 更改之一是不允许任何 .php 调用 (因为所有流量都会路由到 index.php,而这应该是 php 直接解释的唯一文件)。因此,我想出了以下配置:

server {
    listen       80 443;
    # https config here
    server_name  epicServer.com;
    root   /var/www/html/epicProject/public;

    location / {
        try_files $uri /index.php$is_args$args; # This should route towards index.php
    }

    location ~ index\.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param APPLICATION_ENV "production";
        include fastcgi_params;
        fastcgi_read_timeout 300;
        # This should interpret index.php and do stuff
    }

    location ~ \.php$ {
        deny all; # This should deny any other php file directly accessed
    }
}

关于这个配置我有两个问题:

  1. 是否有任何方法可以让某人继续执行与 symfony 路由不匹配的 php 文件(基本上...我是否遗漏了什么?)?我试图缓解的情况是“好吧,有人设法上传了 php-shell(我对此采取了不同的措施,这是另一个话题);他应该无法执行它”。

  2. 它是否易受 CVE-2019-11043 攻击?乍一看似乎没有,但我不确定(我确实将 php 升级到了 7.3.11,所以应该没关系,但只是为了让我安心,即使在 7.3.9 上,这是否易受攻击?)

相关内容