16진수 http 동사/메서드를 사용한 의심스러운 침투 테스트 요청 후 Nginx + PHP-FPM이 충돌하기 시작합니다.

16진수 http 동사/메서드를 사용한 의심스러운 침투 테스트 요청 후 Nginx + PHP-FPM이 충돌하기 시작합니다.

짜증나는 침투 테스터가 내 애플리케이션에서 보안 허점을 찾으려고 할 때마다 내 서버가 충돌합니다. 오류 로그에 다음이 표시됩니다.

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 구성이 있는 서버에서 동일한 문제가 있습니다.

이것이 무엇인지, 서버 충돌을 방지하는 방법에 대한 아이디어가 있으신가요? 이러한 침투 요청을 재현하는 방법(우체부에서 시도했지만 다른 결과를 얻었습니다).

정말 고마워.

편집하다

해당 로그를 재현하는 방법을 알아냈습니다: https://servername:80.

하지만 이런 종류의 요청을 어떻게 차단하는지 알 수 없습니다. $scheme으로 시도했지만 요청이 암호화되었습니다. 구성에 SSL을 추가하려고 시도했지만 아무것도 변경되지 않았습니다. 이러한 침투 테스트/폭발 사이트가 포트 80에 https 요청을 보내려고 하는 데는 이유가 있을 것입니다.

관련 정보