- 목적/배경
- 서비스를 운영하다보면 봇 등의 공격이 있을 수 있습니다.
- 특정 IP를 차단해도 IP를 변경해가면서 공격이 들어옵니다. 이때 효과적인 차단 방법 중 하나입니다.
- 제한 사항
- AWS의 CloudFront를 사용해야합니다.
- CloudFront에서 헤더 추가를 활성화해서 nginx에서 JA3헤더를 얻을 수 있어야합니다.(참고 링크)
- 참고
- nginx 설정 방법
- 확인된 나쁜 JA3 Fingerprint값을 아래 nginx 설정에 추가해서 1(true)로 설정 -> 403리턴
map $http_cloudfront_viewer_ja3_fingerprint $block_fingerprint {
default 0;
"차단할 CloudFront-Viewer-JA3-Fingerprint값" 1;
"차단할 CloudFront-Viewer-JA3-Fingerprint값" 1;
}
server
{
if ($block_fingerprint) {
return 403;
}
.......
}
추가로, API 요청이었고 rate limit 처리해서 429 리턴 json으로 처리해야하는 경우 아래처럼 작업 가능
error_page 429 /429.json;
location /429.json {
add_header 'Content-Type' 'application/json charset=UTF-8';
return 429 '{"success":false, "errorCd":"RATE_LIMITED","msg":"Too Many Requests(rate limit nginx)"}';
}
참고- AWS Cloud Front 헤더 셋팅 방법
- CloudFront -> Distributions -> 대상 CloudFront -> Edit behavior
2. Custom policies 생성
'리눅스 및 서버 > nginx' 카테고리의 다른 글
nginx location 기본문법 몇가지 메모 (1) | 2022.12.20 |
---|---|
Avoiding the Top 10 NGINX Configuration Mistakes (0) | 2022.02.23 |