전체 그래프
AWS Services

AWS WAF

web-securityawswaffirewall

상위: Web Security

요약

AWS WAF(Web Application Firewall)는 웹 애플리케이션을 SQL Injection, XSS 등의 공격으로부터 보호하는 서비스입니다. HTTP/HTTPS 요청의 내용을 검사하여 악성 트래픽을 차단합니다.

핵심 개념

WAF vs 일반 방화벽

구분일반 방화벽 (L3/L4)WAF (L7)
검사 대상IP, 포트HTTP 요청 내용
차단 기준출발지 IPSQL문, 스크립트, 패턴
예시"이 IP 차단""SELECT * FROM 포함 요청 차단"
일반 방화벽: 택배 받는 사람만 확인 (IP/포트)
WAF:         택배 내용물까지 검사 (HTTP Body, Headers)

구성 요소

1. Web ACL (Access Control List)

규칙들의 모음집

Web ACL: "MyWebACL"
├── Rule 1: SQL Injection 차단 (Priority: 1)
├── Rule 2: XSS 차단 (Priority: 2)
├── Rule 3: 특정 국가 차단 (Priority: 3)
└── Default Action: Allow (기본 허용)

2. Rule (규칙)

트래픽 검사 조건 + 액션

Rule: "BlockSQLInjection"
├── Condition: URI에 "SELECT", "UNION", "DROP" 포함
├── Action: Block
└── Priority: 1 (숫자 낮을수록 먼저 평가)

3. Rule Group (규칙 그룹)

여러 규칙을 묶어서 관리

종류설명
AWS ManagedAWS가 관리하는 규칙 (OWASP, Known Bad Inputs 등)
Marketplace서드파티 제공 규칙 (F5, Fortinet 등)
Custom직접 만든 규칙

AWS Managed Rules (추천)

Rule Group방어 대상월 비용
Core Rule Set (CRS)OWASP Top 10 기본 방어$0
SQL DatabaseSQL Injection$0
Known Bad InputsLog4j, Spring4Shell 등$0
Linux/Windows OSOS 명령어 삽입$0
PHP/WordPressPHP/WP 취약점$0
Bot Control봇 트래픽 관리$10
Account Takeover계정 탈취 방지$10

추천 조합

# 기본 보안 (무료)
- AWSManagedRulesCommonRuleSet      # OWASP 기본
- AWSManagedRulesSQLiRuleSet        # SQL Injection
- AWSManagedRulesKnownBadInputsRuleSet  # 알려진 공격 패턴

# 언어/프레임워크별 추가
- AWSManagedRulesPHPRuleSet         # PHP 사용 
- AWSManagedRulesLinuxRuleSet       # Linux 서버

Custom Rules 작성

예시 1: 특정 국가 차단

{
  "Name": "BlockCountries",
  "Statement": {
    "GeoMatchStatement": {
      "CountryCodes": ["RU", "CN", "KP"]
    }
  },
  "Action": { "Block": {} }
}

예시 2: Rate Limiting

{
  "Name": "RateLimitPerIP",
  "Statement": {
    "RateBasedStatement": {
      "Limit": 2000,           // 5분당 최대 요청 수
      "AggregateKeyType": "IP"
    }
  },
  "Action": { "Block": {} }
}

예시 3: Admin 페이지 IP 제한

{
  "Name": "AdminIPRestriction",
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "ByteMatchStatement": {
            "SearchString": "/admin",
            "FieldToMatch": { "UriPath": {} }
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "IPSetReferenceStatement": {
                "ARN": "arn:aws:wafv2:...:ipset/AllowedIPs"
              }
            }
          }
        }
      ]
    }
  },
  "Action": { "Block": {} }
}

적용 가능한 서비스

서비스리전 WAFGlobal WAF
CloudFront-
ALB-
API Gateway-
AppSync-
Cognito-

비용

요금은 2026-08 기준이며 변동될 수 있음

항목비용
Web ACL$5/월
Rule$1/월 (per rule)
요청 처리$0.60/백만 요청
Bot Control$10/월 + $1/백만 요청

예상 비용 계산

 1000만 요청, Rule 10개 사용 :
- Web ACL: $5
- Rules: $10 (10개 × $1)
- 요청: $6 (10M × $0.60/M)
=  $21/

아키텍처에서의 위치

                    인터넷
                       
                       
              ┌────────────────┐
                CloudFront    
                (CDN + WAF)   │◀── AWS WAF 적용
              └────────────────┘
                       
                       
              ┌────────────────┐
                    ALB       │◀── AWS WAF 적용 (선택)
              └────────────────┘
                       
                       
              ┌────────────────┐
                 EC2 / ECS    
              └────────────────┘

Cloudflare WAF vs AWS WAF

항목AWS WAFCloudflare WAF
비용사용량 기반플랜 기반 (Pro $25~)
관리직접 규칙 설정Managed Rules 중심
적용 대상AWS 서비스만모든 웹서비스
CDN 통합CloudFront 별도자동 포함
학습 곡선높음낮음

선택 가이드

  • AWS 올인: AWS WAF + CloudFront
  • 간단한 설정: Cloudflare
  • 하이브리드: Cloudflare (CDN) + AWS WAF (ALB)

관련 개념

  • SQL Injection - WAF로 방어하는 대표적 공격
  • XSS - Cross-Site Scripting 방어
  • AWS Shield - DDoS 방어 (WAF와 함께 사용)
  • Cloudflare - 대안적 WAF 서비스
  • OWASP Top 10 - WAF가 방어하는 취약점 목록