мой сервер падает каждый раз, когда надоедливый пентестер пытается найти дыры в безопасности моего приложения.
Я вижу это в журнале ошибок:
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.
Любые идеи, что это такое и как защитить сервер от сбоя.
Как воспроизвести такой запрос на пентест (пробовал в почтальоне, но получил другой результат).
Большое спасибо.
РЕДАКТИРОВАТЬ
Я понял, как воспроизвести этот журнал:
https://имя_сервера:80.
Но я не могу понять, как блокировать такие запросы.
Я попробовал это с помощью схемы $, но запрос зашифрован. Я пытался добавить ssl в конфиг, но ничего не изменилось.
Должна быть причина, по которой эти пентестинговые/эксплойд-сайты пытаются отправить HTTPS-запрос на порт 80.