AWS WAF · 웹 애플리케이션 방화벽 · L7

HTTP 요청을 규칙 순서대로 검사하고 판정합니다

AWS WAF는 CloudFront, ALB, API Gateway 같은 리소스로 들어오는 HTTP(S) 요청을 검사하는 관리형 웹 애플리케이션 방화벽입니다. web ACL에 규칙을 우선순위대로 쌓고, 요청마다 Allow · Block · Count · CAPTCHA · Challenge 중 하나로 처리합니다.

web ACL · priority orderdefault: Allow

POST /api/login · 203.0.113.7 · UA: python-requests

  1. 0IP set · allowlist사내 CIDRno match
  2. 1AWSManagedRulesCommonRuleSetCore rule set · OWASP 계열 위험no match
  3. 2AWSManagedRulesBotControlRuleSetrule action override: Count+ awswaf:managed:aws:bot-control:bot:category:http_libraryCount
  4. 3block-bot-labellabel match → 앞 규칙이 붙인 레이블Block

Count는 레이블만 남기고 다음 규칙으로 넘어갑니다. Block을 만나면 평가가 끝나고 403이 돌아갑니다.

5

규칙 액션 (Allow · Block · Count · CAPTCHA · Challenge)

1,500 WCU

web ACL 기본 요금에 포함된 용량 (최대 5,000)

9

연결 가능한 리소스 유형

3

로그 대상 (CloudWatch Logs · S3 · Firehose)

Why AWS WAF

포트가 아니라 요청 내용으로 판단해야 할 때

보안 그룹과 Network Firewall은 주소, 포트, 흐름을 봅니다. SQL injection, 자격 증명 대입, 스크래핑 봇은 정상 HTTPS 세션 안에서 일어나므로 헤더, 쿼리, 본문, 클라이언트 행위를 보는 L7 계층이 필요합니다.

Inline

서비스에 붙이는 방화벽

별도 어플라이언스나 라우팅 변경 없이, CloudFront 배포나 ALB 같은 리소스에 web ACL을 연결하면 바로 검사가 시작됩니다.

Managed

관리형 규칙으로 빠르게

AWS Managed Rules와 AWS Marketplace 규칙 그룹으로 흔한 웹 취약점, 평판 나쁜 IP, 봇을 먼저 막고 맞춤 규칙은 그 위에 더합니다.

Observe

Count로 먼저 관찰

규칙을 Count로 넣고 CloudWatch 지표, 샘플 요청, 전체 로그로 오탐을 확인한 뒤 Block으로 바꿉니다.

Rules · labels

규칙은 JSON 문장, 판단은 레이블로 이어 갑니다

아래는 로그인 경로에 대해 IP별 요청 수를 제한하되, 사내 IP 레이블이 붙은 요청은 빼는 rate-based rule입니다. 앞선 규칙이 붙인 레이블을 뒤 규칙의 조건으로 쓰면 규칙을 잘게 나눠 조합할 수 있습니다.

rate-limit-login.jsonwafv2 Rule
{
  "Name": "rate-limit-login",
  "Priority": 4,
  "Statement": {
    "RateBasedStatement": {
      "Limit": 100,
      "EvaluationWindowSec": 300,
      "AggregateKeyType": "IP",
      "ScopeDownStatement": { "AndStatement": { "Statements": [
        { "ByteMatchStatement": { "SearchString": "/api/login",
            "FieldToMatch": { "UriPath": {} }, "PositionalConstraint": "STARTS_WITH",
            "TextTransformations": [{ "Priority": 0, "Type": "LOWERCASE" }] } },
        { "NotStatement": { "Statement": { "LabelMatchStatement": {
            "Scope": "LABEL", "Key": "corp:trusted-ip" } } } }
      ] } }
    }
  },
  "Action": { "Block": {} },  // Allow는 쓸 수 없음
  "VisibilityConfig": { "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true, "MetricName": "rate-limit-login" }
}
로그인 경로에 IP별 rate limit을 걸고 신뢰 레이블은 제외하는 AWS WAF 규칙 예시
  1. 우선순위 순서 평가 Priority

    web ACL은 숫자가 낮은 규칙부터 평가합니다. Allow · Block 같은 종료 액션을 만나면 멈추고, 어디에도 맞지 않으면 web ACL의 기본 액션을 적용합니다.

  2. Count와 레이블 Label

    Count는 일치를 기록하고 다음 규칙으로 넘어가는 비종료 액션입니다. 규칙과 관리형 규칙 그룹이 붙인 레이블은 같은 web ACL 안에서 뒤 규칙이 LabelMatchStatement로 참조합니다.

  3. Rate-based rule 60–600s

    평가 창은 60 · 120 · 300 · 600초 중 고르고, 한도는 최소 10입니다. IP, forwarded IP, 헤더, 쿼리 인자, 레이블 네임스페이스 같은 키를 조합해 집계합니다. 정밀한 쿼터가 아니라 높은 요청률을 억제하는 용도입니다.

Features

주요 기능

Managed rules

AWS Managed Rules

Core rule set, Known bad inputs, SQL database, IP reputation 같은 규칙 그룹을 버전 단위로 씁니다. 그룹 안 개별 규칙의 액션을 override하거나 scope-down으로 적용 범위를 좁힙니다.

Bot Control

봇 식별과 관리

Common 수준은 스스로 신원을 밝히는 봇을 분류해 레이블을 붙이고, Targeted 수준은 브라우저 검증과 행위 분석으로 정체를 숨기는 봇까지 잡습니다. 검색 엔진처럼 유용한 봇은 검증 후 허용합니다.

Fraud Control

ATP · ACFP

ATP는 로그인 페이지의 자격 증명 대입과 계정 탈취 시도를, ACFP는 가입 페이지의 가짜 계정 생성을 탐지합니다. 유출 자격 증명 대조와 세션 단위 집계로 판정합니다.

CAPTCHA · Challenge

사람 · 브라우저 검증

CAPTCHA는 사용자에게 퍼즐을 풀게 하고, Challenge는 화면 없이 브라우저 환경을 검사합니다. 통과하면 AWS WAF 토큰이 발급되어 면제 시간 동안 다시 묻지 않습니다.

App integration

클라이언트 통합 SDK

JavaScript, iOS · Android SDK로 클라이언트가 미리 토큰을 받아 요청에 싣습니다. Bot Control Targeted와 Fraud Control의 효과를 제대로 내려면 SDK 통합을 권장합니다.

Logging

전체 요청 로그

web ACL 로그를 CloudWatch Logs, Amazon S3, Amazon Data Firehose로 보냅니다. 대상 이름은 aws-waf-logs-로 시작해야 하며, 필드 마스킹과 로그 필터로 양을 줄입니다.

L7 DDoS

Anti-DDoS 관리형 규칙 그룹

AWSManagedRulesAntiDDoSRuleSet은 리소스별 트래픽 기준선을 학습해 L7 DDoS를 수 초 안에 탐지합니다. 의심도가 낮은 요청은 silent Challenge로, 높은 요청은 Block으로 완화합니다. 유료 규칙 그룹입니다.

AI traffic

AI 봇 · 에이전트 관리

Bot Control이 AI 크롤러와 에이전트를 분류하고 AI activity 대시보드로 보여 줍니다. Web Bot Auth 서명으로 검증된 봇은 기본 허용되며, CloudFront에서는 AI traffic monetization으로 HTTP 402 기반 과금도 할 수 있습니다.

Request handling

레이블 전달과 정규화

dynamic label interpolation으로 레이블 네임스페이스, 클라이언트 IP, JA3 · JA4 지문을 맞춤 헤더나 응답 본문에 한 규칙으로 넣습니다. pre-parse text transformation은 파싱 전 쿼리 문자열을 정규화해 우회를 막습니다.

맞춤 응답: Block 액션에 상태 코드, 헤더, 본문을 지정해 사용자 정의 응답을 돌려주고, Allow · Count에서는 오리진으로 가는 요청에 맞춤 헤더를 넣을 수 있습니다.

Protected resources

web ACL을 연결하는 리소스

web ACL 하나를 같은 범위의 여러 리소스에 연결할 수 있지만, 리소스 하나에는 web ACL 하나만 연결됩니다. CloudFront용은 글로벌 범위로 만들고, 나머지는 리소스와 같은 리전에 만듭니다.

EdgeGlobal scope

Amazon CloudFront · AWS Amplify

엣지 로케이션에서 요청을 검사해 공격 트래픽이 오리진까지 오지 않습니다. CloudFront의 본문 검사 한도는 기본 16 KB이며 64 KB까지 올릴 수 있습니다.

CloudFront distributionAmplify appscope: CLOUDFRONT
LB · APIRegional

ALB · API Gateway · AppSync

리전 진입점을 직접 보호합니다. ALB와 AppSync의 본문 검사 한도는 8 KB로 고정되고, API Gateway REST API는 기본 16 KB에서 늘릴 수 있습니다.

Application Load BalancerAPI Gateway REST APIAppSync GraphQL API
AppRegional

Cognito · App Runner · Verified Access · AgentCore Gateway

사용자 풀 로그인 엔드포인트, 컨테이너 웹 서비스, 제로 트러스트 애플리케이션 접근, 에이전트 도구 게이트웨이 앞에도 같은 규칙을 둡니다.

Cognito user poolApp Runner serviceVerified Access instanceBedrock AgentCore Gateway

NLB, API Gateway HTTP API, EC2 Elastic IP에는 web ACL을 직접 연결할 수 없습니다. 이런 진입점은 CloudFront를 앞에 두거나 Shield Advanced와 Network Firewall로 보호합니다.

Where it fits

AWS WAF와 이웃 보안 서비스

계층과 보는 대상이 다르므로 대체 관계가 아니라 함께 쓰는 관계입니다.

AWS WAF, Shield, Network Firewall, 보안 그룹 비교
서비스계층검사 대상붙이는 위치
AWS WAFL7 HTTP(S)헤더, URI, 쿼리, 본문, 쿠키, IP · 국가, 요청률, 봇 신호CloudFront, ALB, API Gateway 등 리소스에 web ACL 연결
AWS ShieldL3 · L4 (+ L7 Advanced)볼류메트릭 · 상태 고갈 DDoS. Advanced는 구독에 포함된 Anti-DDoS 규칙 그룹으로 L7 완화Standard는 자동. Advanced는 보호 리소스 지정
Network FirewallL3 – L7 흐름5-tuple, Suricata 시그니처, TLS SNI · 도메인, 모든 프로토콜VPC · TGW 라우팅 경로의 방화벽 엔드포인트
보안 그룹 · NACLL3 · L4IP, 포트, 프로토콜ENI · 서브넷

Reference architecture

엣지에서 먼저 거르고, 조직 전체에 같은 기준을 겁니다

웹 트래픽은 글로벌 web ACL이 연결된 CloudFront에서 먼저 검사합니다. 리전의 API Gateway에는 리전 web ACL을 둡니다. Firewall Manager는 조직의 모든 계정에 공통 규칙 그룹을 강제하고, 각 web ACL의 로그는 한 곳으로 모읍니다.

AWS WAF 레퍼런스 아키텍처 인터넷의 사용자, 봇, 공격 트래픽이 들어옵니다. 웹 트래픽은 글로벌 범위 web ACL이 연결된 CloudFront 배포에서 Managed Rules, Bot Control, rate-based rule로 검사되고, 차단된 요청은 엣지에서 403을 받습니다. 허용된 요청은 리전의 Application Load Balancer와 애플리케이션으로 갑니다. 모바일 앱의 API 호출은 리전 범위 web ACL이 연결된 API Gateway REST API로 갑니다. 조직 관리 영역에서는 Firewall Manager 관리자 계정이 정책으로 각 계정 web ACL의 첫 규칙 그룹과 마지막 규칙 그룹을 배포하고, web ACL 로그는 Amazon Data Firehose를 거쳐 S3로 모이며 CloudWatch 지표가 함께 수집됩니다. INTERNET AWS EDGE · GLOBAL WEB ACL REGION · WORKLOAD ACCOUNT 사용자browser 봇 · 공격scraper · SQLi · flood 모바일 앱WAF SDK token CloudFront + web ACL 0 FMS first rule groups 1 AWS Managed Rules 2 Bot Control · CAPTCHA 3 rate-based · label match default action: Allow 차단 요청→ 엣지에서 403 ALBCloudFront 오리진 애플리케이션ECS · EC2 API GatewayREST · regional web ACL LambdaAPI 백엔드 허용 요청 API 호출 Firewall ManagerAWS WAF policy · 조직 전체 Data Firehoseaws-waf-logs-* S3 · CloudWatch로그 · 지표 · 대시보드 정책 배포 logs ORGANIZATION · SECURITY ACCOUNT
클라이언트 요청 봇 · 공격 요청 (엣지에서 차단) 검사 통과 트래픽 Firewall Manager 정책 배포 리전 내부 요청 · 로그 전달

좁은 화면에서는 다이어그램을 좌우로 밀어서 보세요.

Getting started

첫 web ACL을 적용하는 순서

  1. STEP 1

    web ACL 생성

    보호할 리소스의 범위(CloudFront 또는 리전)를 고르고 기본 액션을 정합니다. 새 콘솔에서는 protection pack으로 표시됩니다.

  2. STEP 2

    관리형 규칙 추가

    Core rule set, IP reputation 등 AWS Managed Rules를 넣고 WCU 사용량을 확인합니다.

  3. STEP 3

    Count로 관찰

    규칙을 Count로 두고 로깅과 CloudWatch 지표를 켜서 오탐을 찾고 예외를 만듭니다.

  4. STEP 4

    Block 전환

    검증된 규칙부터 Block으로 바꾸고, rate-based rule과 Bot Control을 더합니다.

  5. STEP 5

    조직 확장

    Firewall Manager 정책으로 모든 계정과 새 리소스에 공통 규칙 그룹을 자동 적용합니다.

Pricing

비용 항목

사용한 만큼 냅니다. web ACL과 규칙 개수에 붙는 월 요금, 처리한 요청 수가 기본이고, 지능형 위협 완화 기능과 확장 옵션을 켜면 요금이 더해집니다.

AWS WAF 과금 항목
과금 항목과금 기준참고
web ACLweb ACL당 월 요금사용 시간에 비례해 일할 계산됩니다
규칙web ACL 안의 규칙 · 규칙 그룹당 월 요금관리형 규칙 그룹 하나는 하나의 규칙으로 계산됩니다
요청처리한 요청 100만 건당web ACL이 검사한 모든 요청에 적용됩니다
WCU · 본문 검사 확장1,500 WCU 초과분 · 16 KB 초과 본문 검사초과 WCU는 구간별 요금입니다. 본문 한도를 올리면 16 KB를 넘는 요청에만 추가 요금이 붙습니다
Bot Control · Fraud Control · DDoS월 구독료 + 요청 · 시도 건수Bot Control은 Common · Targeted 수준별(무료 요청 구간 포함), ATP는 로그인 시도, ACFP는 계정 생성 시도 기준입니다. Anti-DDoS 규칙 그룹도 별도 요금이 붙습니다
CAPTCHA · Challenge시도 · 응답 건수CAPTCHA 퍼즐 제시와 Challenge 응답에 따라 과금됩니다
관련 요금다른 서비스에서 청구AWS Marketplace 규칙 그룹 구독, Firewall Manager 정책, 로그 대상(S3 · Firehose, 요청 100만 건당 500 MB를 넘는 CloudWatch Logs)

Shield Advanced로 보호하는 리소스는 표준 AWS WAF 요금이 구독에 포함됩니다(Bot Control, Fraud Control, CAPTCHA 등은 제외). CloudFront 배포에는 AWS WAF와 DDoS 보호가 월 정액에 포함된 flat-rate 요금제(2025년 11월 출시)를 고를 수도 있습니다. 단가는 바뀔 수 있으니 AWS WAF 요금 페이지에서 확인하세요.

Next step

우리 서비스에 맞는 web ACL을 설계해 보세요

인터넷에 노출된 진입점, 로그인 · 가입 경로, 봇 트래픽 비중, 계정 구조를 정리해 오시면 규칙 구성과 Count → Block 전환 계획을 함께 검토합니다.