diff --git a/modules/app_stack/scripts/nginx_setup.sh.tftpl b/modules/app_stack/scripts/nginx_setup.sh.tftpl index 590561f..f9e1211 100644 --- a/modules/app_stack/scripts/nginx_setup.sh.tftpl +++ b/modules/app_stack/scripts/nginx_setup.sh.tftpl @@ -49,6 +49,24 @@ map \$http_upgrade \$connection_upgrade { '' ''; } +# 1차 차단: 도메인과 일치하지 않는 요청 차단 (IP 직접 접근, 알 수 없는 Host 헤더) +# 응답 없이 연결을 즉시 종료하여 봇이 서버 존재를 인식하지 못하게 함 +server { + listen 80 default_server; + server_name _; + return 444; +} + +server { + listen 443 ssl default_server; + server_name _; + + ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem; + + return 444; +} + server { listen 80; server_name $DOMAIN; @@ -74,6 +92,17 @@ server { ssl_stapling on; ssl_stapling_verify on; + # 2차 차단: 취약점 탐색용 정적 파일 확장자 요청 차단 + # ($|[/?]) 로 확장자 뒤에 /path 또는 ?query 가 붙는 우회 패턴도 차단 + location ~* \.(php|asp|aspx|jsp|cgi|sql|bak|backup|config|ini|log|sh|xml|txt|html|htm)($|[/?]) { + return 444; + } + + # .env, .env.production, .git 등 dotfile 변형 차단 + location ~* (^|/)\.(env|git) { + return 444; + } + location / { proxy_pass http://app_backend; proxy_http_version 1.1;