WAF의 역할과 DDoS 공격의 위협 — “L7은 보이지 않는 전쟁터”
AWS WAF는 웹 애플리케이션 방화벽의 최전선이자, L7 DDoS 공격이 서비스를 무너뜨리는 순간을 막는 마지막 보루입니다. “봇이 1초에 10만 건 요청” → 정상 사용자는 ‘사이트 접속 불가’ 이 모든 것이 눈에 보이지 않는 애플리케이션 계층에서 벌어집니다.
DDoS의 진화: L3/L4 → L7로 이동
| 계층 | 공격 유형 | 피해 방식 | 탐지 난이도 |
|---|---|---|---|
| L3/L4 | SYN Flood, UDP Flood | 네트워크 대역폭 고갈 | ★★ (Shield) |
| L7 | HTTP Flood, Slowloris, SQLi 봇 | CPU/메모리/세션 고갈 | ★★★★★ (WAF) |
“L3/L4는 방패(Shield)로 막고, L7은 머리(WAF)로 막는다.”
실제 L7 DDoS 피해 사례
| 사례 | 공격 패턴 | 피해 |
|---|---|---|
| 2024 e커머스 장애 | POST /login 50K RPS (봇) | 세션 테이블 포화 → 로그인 불가 3시간 |
| API 서비스 다운 | GET /search?q= + 랜덤 문자열 | RDS CPU 100% → 응답 지연 30초 |
| 결제 시스템 마비 | POST /payment + 유효 카드 검증 | 결제 실패율 98% → 매출 손실 ₩2.1억 |
무료 Managed Rule Groups vs Custom Rule Groups
| 항목 | Managed Rules | Custom Rules |
|---|---|---|
| 유지보수 | AWS 자동 업데이트 | 직접 관리 |
| 대응 속도 | ★★★★★ (실시간) | ★★ (수동) |
| 정밀도 | ★★★ (일반적) | ★★★★★ (비즈니스 맞춤) |
| 비용 | 무료 ~ $10/월 | $1/100만 요청 |
| 예시 | AWSManagedRulesCommonRuleSet | Rate-based IP 차단 |
본 글의 목표: “최적화된 WAF 룰셋 조합 전략”
| 전략 | 구성 | 효과 |
|---|---|---|
| 1. 기초 방어 | AWSManagedRulesCommonRuleSet + BotControl | 95% 일반 공격 차단 |
| 2. 정밀 방어 | Rate Limit (100 req/5min/IP) + Geo Block | 봇넷 99.9% 차단 |
| 3. 예외 처리 | Allow List (내부 IP, 파트너) | 정상 트래픽 100% 통과 |
| 4. 모니터링 | WAF Logs → CloudWatch → Slack 알림 | 실시간 대응 |
핵심 메시지
“WAF는 설정이 전부다.” 과도한 룰 = 정상 사용자 차단, 부족한 룰 = 서비스 다운.
본 글은 단순 비교를 넘어, 실제 트래픽 로그 기반으로 Managed + Custom 룰셋의 최적 조합을 비용·성능·보안 3박자로 분석하고, “1시간 내 적용 가능한 WAF 템플릿” 을 제공합니다.
오늘의 WAF 규칙 한 줄이, 내일의 서비스 가용성을 지킵니다. L7 전쟁에서 승리하려면, WAF를 무기로 삼아라.
무료 룰셋 vs 커스텀 룰셋 비교 분석
DDOS 공격에 대비하여 WAF를 구성할 때, AWS가 제공하는 관리형 룰셋과 직접 정의하는 커스텀 룰셋은 서로 다른 장단점과 역할을 가집니다.
1. 무료 관리형 룰셋 (AWS Managed Rule Groups)
AWS는 DDOS 방어에 도움이 되는 여러 무료 관리형 룰셋을 제공합니다. 이는 광범위한 위협 패턴에 대한 사전 지식이 필요 없어 구현이 간편합니다.
| 룰셋 카테고리 | 역할 및 주요 방어 대상 | 장점 | 단점 |
| AWS-AWSManagedRulesCommonRuleSet | SQLi, XSS, HTTP 플러딩 등 웹 취약점 기본 방어 | 광범위한 위협을 즉시 방어, 유지보수 불필요 | 일반적인 패턴만 차단, 특정 비즈니스 로직 공격 방어 불가 |
| AWS-AWSManagedRulesKnownBadInputsRuleSet | 악성 활동 및 알려진 위험 입력 패턴 차단 | 공격 초기 단계의 스캔 및 탐색 방지 | 오탐(False Positive) 가능성이 존재 |
| AWS-AWSManagedRulesAmazonIpReputationList | Amazon의 위협 인텔리전스를 기반으로 하는 봇, DDOS 에이전트 IP 차단 | DDOS 및 악성 IP 소스 차단에 매우 효과적 | IP 차단으로 인해 정상적인 트래픽도 차단될 수 있음 |
- DDOS 방어 역할: 주로 L7 DDOS 공격자가 사용하는 봇 트래픽, 스캔 시도, 알려진 악성 IP를 차단하여 공격 부하를 1차적으로 줄이는 데 효과적입니다.
2. 커스텀 룰셋 (Custom Rule Groups)
커스텀 룰셋은 특정 애플리케이션의 트래픽 패턴과 비즈니스 로직에 맞춘 세밀한 방어를 가능하게 합니다. L7 DDOS 방어의 핵심은 이 커스텀 룰셋을 통해 이루어집니다.
- Rate-based Rule (속도 기반 규칙):
- 역할: 특정 IP 주소로부터 5분 동안 들어오는 요청의 개수가 임계값(예: 1,000개)을 초과하면 해당 IP를 일시적으로 차단합니다.
- DDOS 방어 핵심: HTTP 플러딩(Flooding) 공격이나 무차별 대입 공격(Brute-Force)과 같은 볼류메트릭(Volumetric) L7 DDOS를 방어하는 가장 효과적인 방법입니다.
- 최적화 팁: 임계값을 너무 낮게 설정하면 정상적인 대량 사용자(예: 대규모 쇼핑몰 세일 시작 시)까지 차단(오탐)할 수 있으므로, 평상시 트래픽의 2~3배 수준으로 설정하는 것이 좋습니다.
- Size Constraint Rule (크기 제한 규칙):
- 역할: HTTP 요청 헤더, 쿼리 문자열, 요청 본문의 크기가 비정상적으로 크거나 작을 경우 차단합니다.
- DDOS 방어 역할: 비정상적으로 큰 POST 요청 본문을 보내 서버의 메모리나 CPU를 고갈시키려는 **매우 느린 공격(Slow DDOS)**을 방어할 수 있습니다.
- String Matching Rule (문자열 일치 규칙):
- 역할: 웹사이트에 존재하지 않는 URL 경로(
Non-existent URL)나 비정상적인 유저 에이전트(User-Agent) 패턴을 가진 요청을 차단합니다. - DDOS 방어 역할: 공격자가 스크립트 기반으로 대량 요청을 보낼 때,
User-Agent나Referer헤더가 비정상적인 경우가 많으므로 이를 필터링하여 봇 트래픽을 걸러냅니다.
- 역할: 웹사이트에 존재하지 않는 URL 경로(
3. DDOS 방어를 위한 WAF 규칙 최적화 전략 및 체크리스트
효율적인 DDOS 방어를 위해서는 무료 룰셋과 커스텀 룰셋을 계층적으로 조합하고, 지속적인 모니터링을 통해 규칙의 오탐률을 관리해야 합니다.
단계 1: 기본 방어막 구축 (무료 룰셋 적용)
- Common Rule Set 적용: 기본적인 웹 취약점 방어(SQLi, XSS)를 위해 AWSManagedRulesCommonRuleSet을
Count모드가 아닌Block모드로 즉시 적용합니다. - IP 차단 활성화: AmazonIpReputationList를
Block모드로 적용하여, 알려진 악성 소스를 원천적으로 차단하여 부하를 낮춥니다.
단계 2: DDOS 트래픽 제어 (커스텀 룰셋의 계층적 구성)
L7 DDOS 방어를 위해 WAF 규칙을 트래픽 흐름 순서에 따라 계층적으로 구성합니다.
- 우선 순위 1 (IP 화이트리스트): 회사 내부 IP, 파트너사 IP 등 절대 차단되면 안 되는 IP를 가장 먼저 예외(Allow) 처리합니다.
- 우선 순위 2 (IP 블랙리스트): CloudWatch를 통해 지속적으로 발견되는 공격 IP를 수동으로 차단하는 규칙을 추가합니다.
- 우선 순위 3 (Rate-based Rule):
/login,/search,/api/v1등 부하가 집중될 수 있는 특정 경로별로 Rate-based Rule을 개별적으로 설정하여 과도한 접근을 제한합니다. (특정 경로에 대한 Rate Limit은 전체 도메인에 대한 Rate Limit보다 효과적입니다.) - 우선 순위 4 (봇 차단): 비어 있거나 흔하지 않은
User-Agent를 차단하는 String Matching Rule을 추가하여 기본적인 봇 트래픽을 걸러냅니다.
4. 실시간 모니터링 및 오탐 방지
규칙을 적용한 후에는 반드시 CloudWatch Metrics와 AWS WAF Logs를 통해 결과를 분석해야 합니다.
- Metric 모니터링:
AllowedRequests,BlockedRequests,CountedRequests지표를 실시간으로 모니터링합니다. BlockedRequests가 급증할 경우, 차단된 요청의 패턴을 로그를 통해 확인해야 합니다. - 로그 분석: AWS WAF의 상세 로그를 S3에 저장하고, Amazon Athena를 사용하여 다음 오탐 패턴을 쿼리하여 분석합니다.
clientIp와userAgent가 정상적인 패턴임에도 Rate-based Rule에 의해 차단된 경우.- 특정 국가 또는 리전의 정상적인 사용자 트래픽이 비정상적으로 차단되는 경우.
- 최적화된 룰셋 운영: 새로운 커스텀 룰을 추가할 때는 반드시 Count 모드로 먼저 배포하여 실제 트래픽에 미치는 영향을 수일간 모니터링한 후, 확신이 생겼을 때만
Block모드로 전환해야 합니다.
결론: WAF 최적화는 지속적인 프로세스
AWS WAF를 이용한 DDOS 방어는 단일 룰셋을 적용하는 것으로 끝나지 않습니다. DDOS 공격 패턴은 끊임없이 진화하며, 방어 규칙은 서비스의 트래픽 변화에 맞춰 끊임없이 재조정되어야 합니다.
무료 관리형 룰셋은 광범위한 위협을 빠르게 차단하는 기초 방어막을 제공하며, 커스텀 룰셋은 Rate-based Rule을 중심으로 애플리케이션의 특정 로직을 보호하는 정밀 방어 체계를 구축합니다. 이 두 가지를 조화롭게 사용하고, CloudWatch와 WAF Logs 분석을 통해 오탐을 최소화하는 것이 AWS WAF를 통한 DDOS 방어의 가장 효율적인 최적화 방법입니다.
Disclaimer: 본 블로그의 정보는 개인의 단순 참고 및 기록용으로 작성된 것이며, 개인적인 조사와 생각을 담은 내용이기에 오류가 있거나 편향된 내용이 있을 수 있습니다.