Nginx + PHP-FPM 在使用十六进制 http 动词/方法进行可疑渗透测试请求后开始崩溃

Nginx + PHP-FPM 在使用十六进制 http 动词/方法进行可疑渗透测试请求后开始崩溃

每次有讨厌的渗透测试人员试图在我的应用程序中寻找安全漏洞时,我的服务器就会崩溃。我在错误日志中看到以下内容:

17:48:48 +0200] "\x16\x03\x01\x00M\x01\x00\x00I\x03\x03\xDBJA\xC5\xB17\xF6\xDA \xD4\xEEEg0\xE0\xF2\xF2\xC9S\xE4\xF9v}\x1E\x00\xC8\xC3d\x 80h;= \x1F\xD2\xAF?\x88\x8A\xA2\xCF\x16G\x99\x1D\x91" 400 173 "-" "-"

该服务器的配置与普通的 nginx + php-fpm 服务器类似。端口 80 重定向到 443,并且 ssl 配置正确。

我还添加了这一行:

if ($request_method !~ ^(GET|HEAD|POST|OPTIONS|DELETE|PUT|PATCH)$) { return 405; }

(在两种服务器配置中)

这也是唯一一个导致 400 的“渗透测试”请求。所有其他请求都导致 301 或 404。我发现了类似的问题,即 nginx 的 ssl 部分配置不正确。我检查了我的配置,但看起来没问题。

我在另一台具有类似配置的服务器和具有 nginx -> apache_mpm_prefork_fpm 配置的服务器上遇到了同样的问题。

大家知道这是什么吗?如何防止服务器崩溃?如何重现这样的渗透测试请求(我在 postman 中尝试过,但得到了不同的结果)。

多谢。

编辑

我知道如何重现该日志:https://servername:80。

但我不知道如何阻止这种请求。我尝试使用 $scheme,但请求已加密。我尝试将 ssl 添加到配置中,但没有任何变化。这些渗透测试/exploid 站点尝试向端口 80 发送 https 请求一定是有原因的。

相关内容