AWS 기술 블로그
L7 DDoS 공격 패턴에 대응하는 WAF 규칙 설정하기 – JA3 및 JA4 핑거프린팅 집계 속도 규칙
AWS는 보안을 최우선 과제(job zero)로 간주합니다. 고객의 워크로드를 안전하게 보호하기 위해 다양한 보안 서비스와 활용 방안을 제공하고 있습니다. 최근 분산 서비스 거부(Distributed Denial-of-Service, DDoS) 공격이 증가함에 따라 워크로드 보호 방안에 대한 문의가 늘고 있습니다. 이에 두 편의 게시물을 통해 아키텍처 설계와 방어 규칙 설정을 통한 효과적인 DDoS 대응 방안을 설명하고자 합니다.
- 1편: AWS Shield와 AWS WAF로 효과적인 DDoS 대응 방안 구축하기
- 2편: L7 DDoS 공격 패턴에 대응하는 WAF 규칙 설정하기 – JA3 및 JA4 핑거프린팅 집계 속도 규칙
이 게시물에서는 일반적인 7계층을 대상으로하는 DDoS 공격 패턴에 대응하기 위한 WAF 규칙 설정의 예와 그중에서도 새로 출시된 Fingerprint 기반의 속도 제어 규칙의 설정에 대해 설명합니다.
Network Firewall이 Layer 3, Layer 4 수준의 공격을 방어하는 것에 중점을 두는 반면, Web Application Firewall(WAF)은 Layer 7 수준에서 발생하는 웹 애플리케이션의 보안 취약점을 겨냥한 공격을 방어합니다. 웹 애플리케이션에 대한 공격 패턴은 진화하고 있습니다. 과거에는 SQL 인젝션이나 크로스 사이트 스크립팅 (Cross-Site Scripting, XSS)과 같은 웹 애플리케이션 보안 취약점을 노리는 공격이 주를 이뤘으나, 최근에는 Layer 7을 대상으로한 DDoS 공격으로 변화하고 있습니다. 대표적인 Layer 7 DDoS 공격 패턴은 다음과 같습니다.
- HTTP Flood 공격: 웹 서버에 대량의 HTTP 요청을 보내 서비스 거부 상태를 유발
- Slow HTTP Header/Body 공격: 공격자가 매우 느린 속도로 HTTP 헤더나 본문을 전송하여 서버 자원을 고갈시킴
AWS WAF(Web Application Firewall)는 웹애플리케이션을 보호하는 관리형 방화벽 서비스입니다. AWS WAF를 사용하면 보호할 리소스를 지정하고 해당 리소스에 도달하는 HTTP(S) 웹 요청에 대한 응답 방식을 제어할 수 있습니다. 이를 위해 웹 액세스 제어 목록(Web ACL)을 정의하고 이를 보호하고자 하는 웹 애플리케이션 리소스에 연결합니다. 웹 ACL에서는 요청에서 확인할 트래픽 패턴을 정의하는 규칙을 생성합니다. 이러한 규칙을 통해 정상적인 트래픽으로 판단되는 요청은 처리 및 응답을 위해 보호된 리소스로 전달되도록 허용(Allow)할 수 있습니다. 반면, 비정상적인 요청의 경우에는 차단(Block)하거나 계수(Count)할 수 있으며, CAPTCHA 또는 챌린지 검사를 실행하여 실제 사용자인지 판별할 수도 있습니다.
웹 ACL 구성 시에는 일반적인 웹 애플리케이션 공격 패턴에 대한 방어뿐만 아니라, DDoS 공격 패턴에 대한 대응 규칙도 함께 적용하여 포괄적인 보안 체계를 구축해야 합니다. 특히 속도 기반 규칙을 활용하는 것이 이러한 공격에 대한 효과적인 대응 방안으로 널리 알려져 있습니다.
일반적인 WAF 공격 대응 규칙 구성 사례
AWS WAF의 규칙 적용은 우선순위에 따라 순차적으로 이루어지며, 상위 우선순위 규칙에 의해 처리된 요청은 하위 우선순위 규칙의 평가 대상에서 제외됩니다. 따라서 효과적인 보안 정책 구현을 위해서는 규칙의 우선순위 설정에 특별한 주의가 필요합니다. 또한, 각 규칙에는 웹 ACL 용량 단위(WCU)가 할당되어 있으며, 전체 규칙의 총 용량이 최대 허용치인 5,000 WCU를 초과하지 않도록 구성해야 합니다.
- 자체 규칙
AllowedIP
: 항상 허용해야 할 IP 목록으로 테스트를 위한 접근이 필요한 온프레미스 IP 등을 등록 합니다. IP 세트를 구성하여 적용할 수 있습니다.BlockedIP
: 명확히 악성 IP 로 판별된 IP 를 등록하여 접근을 차단 합니다. 역시 IP 세트를 구성하여 적용할 수 있습니다.
- 관리형 규칙 그룹
- HAQM IP 신뢰도 목록 관리형 규칙 그룹: HAQM 내부 위협 인텔리전스를 기반으로 하는 규칙이 포함되어 있으며 일반적으로 봇이나 다른 위협과 연결된 IP 주소를 차단하려는 경우에 유용합니다.
- 익명 IP 목록 관리형 규칙 그룹: 최종 사용자 ID 난독화를 허용하는 서비스의 요청을 차단하는 규칙이 포함되어 있습니다. 여기에는 VPN, 프록시, Tor 노드 및 웹 호스팅 공급자의 요청이 포함됩니다.
- 속도 기반 규칙
- 속도 기반 규칙은 요청이 너무 빠른 속도로 수신될 때 수신 요청 수를 계산하고 요청 속도를 제한합니다. 규칙은 기준에 따라 요청을 집계하며, 규칙의 평가 기간, 요청 제한 및 작업 설정에 따라 집계 그룹의 수를 계산하고 집계 그룹의 속도를 제한합니다. 평가 기간(Evaluation window)은 60 ~ 500(기본) 초로 설정할 수 있습니다. 평가 기간은 ‘슬라이딩 윈도우(Sliding Window)’ 방식으로 적용되며 지속적으로 업데이트 되는 일정 시간 범위 내에서 요청을 평가합니다. 이를 통해 실시간으로 트래픽 패턴을 분석하고 동적으로 대응할 수 있습니다. ‘슬라이딩 윈도우(Sliding Windows)’로 평가 기간 동안 발생한 요청을 집계하여 최대 요청 수보다 많으면 해당 작업 옵션이 적용됩니다.
- 기본적으로 속도 기반 규칙은 요청 IP 주소에 기반하여 요청을 집계하고 속도를 제한합니다. 다양한 기타 집계 키와 키 조합을 사용하도록 규칙을 구성할 수 있습니다. 소스 IP 주소, 헤더의 IP 주소, 모두 계산, 사용자 지정 키의 옵션이 있습니다. DDoS 공격의 특성상 다수의 IP 를 통해 대용량의 웹 요청이 발생하므로 IP 집계 옵션을 활용할 필요가 있습니다.
- 속도 기반 규칙을 적용하는 자세한 방법은 ‘AWS WAF의 가장 중요한 세가지 속도 기반 규칙’ 을 참고하십시오.
여러 규칙을 조합하여 AWS WAF 설정을 하는 것이 유용합니다. 하지만 IP 주소를 기반으로하는 속도 기반 규칙은 발신 클라이언트의 주소를 포함하지 않을 수 있고 공격자가 검사를 우회하는 전략을 사용할 수 있어 공격을 효과적으로 막지 못하는 경우가 발생하고 있습니다. 이에 Fingerprint (지문)를 활용한 속도기반규칙은 효과적인 방어 전략이 될 수 있습니다. 이번에 출시한 JA3 및 JA4 핑거프린팅집계 속도 기반 규칙 기능은 더 정확한 규칙을 생성하여 정교한 공격을 식별하고 완화하는 능력을 강화 합니다.
Fingerprint (지문) 란?
웹 보안 강화의 주요 트렌드로, 크롬 브라우저는 2021년 9월 출시된 94버전부터 모든 웹사이트 접속 시 HTTPS 연결을 우선하는 모드를 기본값으로 지정했습니다. 이러한 변화로 HTTPS 통신이 더욱 보편화되었으며, 이는 개인정보 보호 강화와 웹사이트 신원 인증을 통한 안전한 브라우징 환경 제공에 기여하고 있습니다. HTTPS 통신 과정에서 이루어지는 클라이언트-서버 간 SSL/TLS 인증서 교환 방식에 착안하여, 이를 활용한 Fingerprint 기반 방어 전략이 개발되었습니다.
Fingerprint(지문)는 SSL/TLS 핸드셰이크 과정에서 수집되는 클라이언트 정보를 기반으로, 마치 사람의 지문처럼 클라이언트나 사용자를 고유하게 식별할 수 있는 특징들의 조합을 의미합니다. JA3는 Salesforce에서 개발한 TLS 클라이언트 Fingerprinting 기법입니다. 이 기법은 TLS 핸드셰이크의 Client Hello Packet 단계에서 전송되는 정보를 문자열로 변환한 후, 이를 MD5 해시값으로 만들어 클라이언트를 식별하는 방식으로 작동합니다. JA3는 다음의 요소들을 조합하여 사용하게 됩니다.
SSLVersion, Cipher, SSL Extension, Elliptic Curve, Elliptic Curve Point Format
- SSL Version: 클라이언트가 지원하는 SSL/TLS 프로토콜 버전(예: TLS 1.0, TLS 1.1, TLS 1.2 등)
- Accepted Ciphers: 클라이언트가 지원하는 암호화 알고리즘 목록과 그 순서
- List of Extensions: 클라이언트가 요청하는 SSL/TLS 확장 기능 및 그 순서
- Elliptic Curves: 클라이언트가 지원하는 타원 곡선 암호화 알고리즘
- Elliptic Curve Formats: 클라이언트가 지원하는 타원 곡선 포맷
이러한 요소들의 조합을 문자열로 만들고 해시화한 값이 바로 Fingerprint입니다. 이 방식이 효과적인 이유는 애플리케이션의 동작은 쉽게 모방할 수 있지만, TLS 계층의 특성은 변경하기가 매우 어렵다는 특징 때문입니다. 이 기법의 주요 장점은 두 가지입니다. 첫째, HTTPS 연결 과정에서 TLS 교환이 가장 먼저 이루어지므로 실제 HTTP 요청을 처리하기 전에 비정상 클라이언트를 미리 식별할 수 있습니다. 둘째, 대규모 트래픽 상황에서도 효율적인 필터링이 가능합니다.
Fingerprint의 주목할 만한 특징은 목적지 IP, 포트, X.509 인증서 등의 요소가 변경되더라도 그 값이 유지된다는 점입니다. 이러한 특성을 활용하여 악성봇이나 다크웹 브라우저 클라이언트의 Fingerprint를 데이터베이스화하고, 이를 기반으로 의심스러운 요청을 차단할 수 있습니다. 대표적인 예로, 금융 및 가상화폐 기업을 표적으로 하는 Trickbot 악성코드는 ‘6734f37431670b3ab4292b8f60f29984’라는 고유한 Fingerprint로 식별됩니다. AWS WAF는 이미 이러한 식별된 Fingerprint를 차단하거나 계수할 수 있는 기능을 규칙으로 제공하고 있습니다.
Fingerprint 에 대해 더 자세한 내용은 TLS Fingerprinting with JA3 and JA3S를 참고하십시오.
JA4 Fingerprint 의 등장
2023년 초, 크롬 브라우저는 Client Hello 메시지 내 SSL Extension 리스트의 순서를 랜덤하게 전송하도록 정책을 변경했습니다. 이로 인해 Fingerprint가 매번 달라지게 되어, JA3가 클라이언트를 고유하게 식별하는 도구로서의 기능이 약화되었습니다. 이러한 한계를 극복하기 위해 FoxIO-LLC에서는 새로운 핑거프린팅 기술인 JA4를 제안했습니다. JA4는 크롬의 랜덤화 정책에 더욱 강건할 뿐만 아니라, QUIC과 같은 새로운 전송 계층 프로토콜에서도 활용할 수 있다는 장점을 가지고 있습니다.
크롬 브라우저의 경우, 프로토콜별로 다음과 같은 JA4 Fingerprint 값이 도출됩니다:
- TCP 프로토콜:
JA4=t13d1516h2_8daaf6152771_02713d6af862
- QUIC 프로토콜:
JA4=q13d0312h3_55b375c5d22e_06cda9e17597

http://medium.com/foxio/ja4-network-fingerprinting-9376fe9ca637 에서 발췌
속도기반 규칙에 JA3/JA4 Fingerprint 설정하기
- Add my own rules and rule groups 로 새로운 규칙 만들기
WAF & Shield 콘솔창에서 편집할 웹 ACL 을 선택 하고, 규칙(Rules) 탭에서 ‘Add my own rules and rule groups’로 새로운 규칙을 만듭니다.
- 규칙 빌더(Rule Builder) 로 규칙 구성하기
Rule visual editor 로 규칙 이름을 등록한 후 타입 중 Rate-based rule을 선택 합니다. - 규칙의 최대 요청수(Rate limit), 평가 기간(Evaluation window)을 설정 합니다.
이 구성은 평소에 워크로드에 유입되는 정상적인 요청 수가 얼마인지를 참고로 하여 관리해야 합니다. DDoS 공격 대응에 대한 모범 아키텍처는 평소보다 많이 트래픽이 유입 되더라도 확장성을 확보하여 일부 수용할 수 있도록 설계하는 것을 권하고 있습니다. 또한 마케팅 이벤트와 같은 평소와 다른 패턴의 유입이 늘 수도 있고 서비스 사용자가 늘어남에 따라 사용량이 늘어나는 경우도 있는 등 최대 요청수는 지속적으로 관리하여야 합니다. WAF 로그를 분석하거나 규칙을 Count 옵션을 선택하여 평소 유입되는 트래픽의 특성을 참고하여 조정할 수 있습니다. Request aggregation은 Custom keys를 선택합니다. - Aggregation key 로 JA3, JA4 fingerprint 선택하기
트래픽의 특성을 파악하여 JA3 fingerprint 또는 JA4 fingerprint 를 선택합니다. - Action 선택하기
처음부터 Block 로 설정하게되면 오탐(False Positive)에 의해 정상 트래픽 조차도 차단될 가능성이 있습니다. 처음에는 Count Action으로 추이를 살펴본 후 Block, CAPCHA, Challenge를 선택하기를 권장합니다.
DDoS 공격 시뮬레이션 WAF 로그 분석
AWS WAF는 유입 웹요청 기록을 남겨 분석에 활용할 수 있습니다. 이러한 로그는 HAQM CloudWatch Logs, HAQM S3, HAQM Kinesis Data Firehose와 같은 서비스로 전송하여 분석할 수 있습니다. 로그 분석 과정에 대한 자세한 내용은 AWS WAF의 가장 중요한 세가지 속도 기반 규칙을 참고하기 바랍니다. 여기에서는 DDoS 공격을 시뮬레이션하고 이 때 발생한 로그를 분석해보고자 합니다.
WAF 로그는 S3 에 적재하여 HAQM Athena 를 통해 분석할 수 있습니다.