- 목적/배경
- 서비스를 운영하다보면 봇 등의 공격이 있을 수 있습니다.
 - 특정 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 |