1. 목적/배경
    1. 서비스를 운영하다보면 봇 등의 공격이 있을 수 있습니다.
    2. 특정 IP를 차단해도 IP를 변경해가면서 공격이 들어옵니다. 이때 효과적인 차단 방법 중 하나입니다.
  2. 제한 사항
    1. AWS의 CloudFront를 사용해야합니다.
    2. CloudFront에서 헤더 추가를 활성화해서 nginx에서 JA3헤더를 얻을 수 있어야합니다.(참고 링크)
  3. 참고
    1. 서버에서 tcpdump -s 0 -A 'tcp dst port 80' 등으로 인입되는 헤더의 CloudFront-Viewer-JA3-Fingerprint 를 분석
      1. AWS JA3헤더 관련 참고 링크
        1. 상세 셋팅 방법은 하단 참고
      2. ja3 fingerprint란? 링크
  4. nginx 설정 방법
    1. 확인된 나쁜 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 헤더 셋팅 방법

  1. CloudFront -> Distributions -> 대상 CloudFront -> Edit behavior
    1.  

AWS Cloud Front의 Custom Origin request policy를 추가하는 위치

2. Custom policies 생성

Custom policies 추가하는 방법
샘플 Custom Policy Origin reqeust settings

+ Recent posts