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. Я обнаружил похожую проблему, когда раздел ssl nginx настроен неправильно. Я проверил свою конфигурацию, но она выглядит нормально.

У меня та же проблема на другом сервере с похожей конфигурацией и на сервере с конфигурацией nginx -> apache_mpm_prefork_fpm.

Есть идеи, что это такое и как защитить сервер от сбоя. Как воспроизвести такой запрос на пентестинг (я пробовал в postman, но получил другой результат).

Большое спасибо.

РЕДАКТИРОВАТЬ

Я понял, как воспроизвести этот лог: https://servername:80.

Но я не могу понять, как заблокировать такие запросы. Я пробовал с $scheme, но запрос зашифрован. Я пробовал добавить ssl в конфигурацию, но ничего не изменилось. Должна быть причина, по которой эти pentesting/exploid-sites пытаются отправить https-запрос на порт 80.

Связанный контент