[Daily morning study] AWS WAF와 Shield - 웹 애플리케이션 방화벽과 DDoS 방어

#daily morning study

Image


AWS WAF (Web Application Firewall)

WAF는 HTTP/HTTPS 트래픽을 검사해서 악성 요청을 차단하는 레이어 7(애플리케이션 계층) 방화벽이다. 일반 방화벽이 IP/포트 기반으로 동작하는 것과 달리, WAF는 요청 내용(헤더, 쿼리 파라미터, 바디)을 분석한다.

AWS WAF는 다음 서비스와 연동된다:

  • CloudFront (글로벌 엣지)
  • Application Load Balancer (ALB)
  • API Gateway
  • AppSync

Web ACL (Access Control List)

WAF의 핵심 단위는 Web ACL이다. Web ACL은 여러 Rule과 Rule Group으로 구성되며, 각 요청은 규칙을 순서대로 평가해서 Allow / Block / Count / CAPTCHA 중 하나의 액션을 취한다.

요청 → Web ACL → Rule 1 → Rule 2 → ... → Default Action

Rule에는 우선순위(priority) 숫자를 붙이고, 낮은 숫자부터 평가한다.

Rule 유형

1. 관리형 규칙 (Managed Rule Groups)
AWS와 파트너사가 미리 만들어둔 규칙 세트. 별도 설정 없이 바로 붙여 쓸 수 있다.

규칙 그룹설명
AWSManagedRulesCommonRuleSetOWASP Top 10 기반 범용 규칙
AWSManagedRulesSQLiRuleSetSQL Injection 방어
AWSManagedRulesKnownBadInputsRuleSet알려진 악성 입력 패턴
AWSManagedRulesBotControlRuleSet봇 트래픽 탐지 및 차단

2. 커스텀 규칙
직접 조건을 정의한다. 조건 유형은 아래와 같다.

  • IP 세트: 특정 IP / CIDR 허용·차단
  • 지리적 매칭 (Geo match): 국가 코드 기반 차단
  • 문자열 매칭: 헤더, URI, 쿼리 스트링에 특정 문자열 포함 여부
  • 정규식 (Regex): 패턴 매칭
  • 크기 제약 (Size constraint): 요청 크기 제한
  • 레이트 제한 (Rate-based rule): 동일 IP에서 5분 내 요청 수가 임계값 초과 시 차단

레이트 제한 예시

{
  "Name": "RateLimitRule",
  "Priority": 1,
  "Statement": {
    "RateBasedStatement": {
      "Limit": 2000,
      "AggregateKeyType": "IP"
    }
  },
  "Action": { "Block": {} }
}

5분 동안 동일 IP에서 2000회 초과 요청이 들어오면 차단한다.

WAF 로그

WAF 로그는 Kinesis Data Firehose를 통해 S3 / CloudWatch Logs / Splunk 등으로 전송할 수 있다. 로그에는 요청 URI, 헤더, 적용된 규칙, 최종 액션이 포함된다.


AWS Shield

Shield는 DDoS(Distributed Denial of Service) 공격으로부터 AWS 리소스를 보호하는 서비스다. 두 가지 티어가 있다.

Shield Standard (기본, 무료)

모든 AWS 계정에 자동으로 활성화되어 있다. L3/L4 공격(SYN Flood, UDP 반사 공격 등)에 대한 기본 보호를 제공한다.

  • 추가 설정 불필요
  • 비용 없음
  • 자동으로 트래픽 이상 탐지 및 완화

Shield Advanced (유료)

월 $3,000 이상의 고가 서비스지만, 대규모 트래픽을 받는 서비스라면 고려할 가치가 있다.

기능StandardAdvanced
L3/L4 DDoS 보호✅✅
L7 DDoS 보호❌✅ (WAF 연동)
DDoS 비용 환급❌✅
실시간 가시성❌✅
AWS DRT 지원❌✅
고급 이벤트 감지❌✅

AWS DRT (DDoS Response Team): 공격 중 AWS 전문가 팀이 직접 완화 작업을 지원한다.

DDoS 비용 환급: 공격으로 인해 트래픽이 급증해 발생한 추가 비용을 환급해준다.

Shield Advanced 보호 대상

  • EC2
  • Elastic IP
  • CloudFront
  • Route 53
  • ALB / Global Accelerator

WAF + Shield 조합 아키텍처

실무에서는 WAF와 Shield를 계층적으로 조합해서 사용한다.

인터넷
  ↓
Route 53  ← Shield Advanced
  ↓
CloudFront ← Shield Advanced + WAF Web ACL
  ↓
ALB        ← Shield Advanced + WAF Web ACL
  ↓
EC2 / ECS

CloudFront 앞단에 WAF를 붙이면 엣지에서 악성 트래픽을 조기 차단해서 오리진 서버 부하를 줄일 수 있다.


WAF 우회 방지 포인트

WAF를 CloudFront에 붙였다면, ALB 직접 접근을 막아야 한다. 그렇지 않으면 공격자가 CloudFront를 우회해서 ALB에 직접 요청을 보낼 수 있다.

방법:

  1. ALB의 Security Group에서 CloudFront IP만 허용 → IP 대역이 너무 많아 관리가 어렵다
  2. CloudFront가 ALB에 커스텀 헤더를 추가하고, ALB에서 WAF로 해당 헤더 유무를 검사한다
CloudFront → ALB 요청에 X-Origin-Token: <비밀값> 헤더 추가
ALB WAF Rule: X-Origin-Token 헤더 없으면 Block

요금 모델

AWS WAF는 사용량 기반 과금이다.

  • Web ACL 당: 월 $5
  • Rule 당: 월 $1
  • 요청 처리: 백만 요청당 $0.60

관리형 규칙 그룹은 별도 추가 요금이 붙는 경우도 있다.


정리

  • WAF: HTTP/HTTPS 요청 내용을 분석해 SQL Injection, XSS, 레이트 리밋 등 L7 위협을 차단
  • Shield Standard: 모든 계정 기본 제공, L3/L4 DDoS 기본 보호
  • Shield Advanced: 유료, L7 보호 + DRT 지원 + 비용 환급
  • 실무에서는 CloudFront + WAF + Shield Advanced를 함께 구성해 다층 방어(Defense in Depth)를 구현한다