每次有讨厌的渗透测试人员试图在我的应用程序中寻找安全漏洞时,我的服务器就会崩溃。我在错误日志中看到以下内容:
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 请求一定是有原因的。