Managed rules
AWS Managed Rules
Core rule set, Known bad inputs, SQL database, IP reputation 같은 규칙 그룹을 버전 단위로 씁니다. 그룹 안 개별 규칙의 액션을 override하거나 scope-down으로 적용 범위를 좁힙니다.
AWS WAF · 웹 애플리케이션 방화벽 · L7
AWS WAF는 CloudFront, ALB, API Gateway 같은 리소스로 들어오는 HTTP(S) 요청을 검사하는 관리형 웹 애플리케이션 방화벽입니다. web ACL에 규칙을 우선순위대로 쌓고, 요청마다 Allow · Block · Count · CAPTCHA · Challenge 중 하나로 처리합니다.
POST /api/login · 203.0.113.7 · UA: python-requests
Count는 레이블만 남기고 다음 규칙으로 넘어갑니다. Block을 만나면 평가가 끝나고 403이 돌아갑니다.
규칙 액션 (Allow · Block · Count · CAPTCHA · Challenge)
web ACL 기본 요금에 포함된 용량 (최대 5,000)
연결 가능한 리소스 유형
로그 대상 (CloudWatch Logs · S3 · Firehose)
Why AWS WAF
보안 그룹과 Network Firewall은 주소, 포트, 흐름을 봅니다. SQL injection, 자격 증명 대입, 스크래핑 봇은 정상 HTTPS 세션 안에서 일어나므로 헤더, 쿼리, 본문, 클라이언트 행위를 보는 L7 계층이 필요합니다.
별도 어플라이언스나 라우팅 변경 없이, CloudFront 배포나 ALB 같은 리소스에 web ACL을 연결하면 바로 검사가 시작됩니다.
AWS Managed Rules와 AWS Marketplace 규칙 그룹으로 흔한 웹 취약점, 평판 나쁜 IP, 봇을 먼저 막고 맞춤 규칙은 그 위에 더합니다.
규칙을 Count로 넣고 CloudWatch 지표, 샘플 요청, 전체 로그로 오탐을 확인한 뒤 Block으로 바꿉니다.
Rules · labels
아래는 로그인 경로에 대해 IP별 요청 수를 제한하되, 사내 IP 레이블이 붙은 요청은 빼는 rate-based 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" }
}
Priorityweb ACL은 숫자가 낮은 규칙부터 평가합니다. Allow · Block 같은 종료 액션을 만나면 멈추고, 어디에도 맞지 않으면 web ACL의 기본 액션을 적용합니다.
LabelCount는 일치를 기록하고 다음 규칙으로 넘어가는 비종료 액션입니다. 규칙과 관리형 규칙 그룹이 붙인 레이블은 같은 web ACL 안에서 뒤 규칙이 LabelMatchStatement로 참조합니다.
60–600s평가 창은 60 · 120 · 300 · 600초 중 고르고, 한도는 최소 10입니다. IP, forwarded IP, 헤더, 쿼리 인자, 레이블 네임스페이스 같은 키를 조합해 집계합니다. 정밀한 쿼터가 아니라 높은 요청률을 억제하는 용도입니다.
Features
Managed rules
Core rule set, Known bad inputs, SQL database, IP reputation 같은 규칙 그룹을 버전 단위로 씁니다. 그룹 안 개별 규칙의 액션을 override하거나 scope-down으로 적용 범위를 좁힙니다.
Bot Control
Common 수준은 스스로 신원을 밝히는 봇을 분류해 레이블을 붙이고, Targeted 수준은 브라우저 검증과 행위 분석으로 정체를 숨기는 봇까지 잡습니다. 검색 엔진처럼 유용한 봇은 검증 후 허용합니다.
Fraud Control
ATP는 로그인 페이지의 자격 증명 대입과 계정 탈취 시도를, ACFP는 가입 페이지의 가짜 계정 생성을 탐지합니다. 유출 자격 증명 대조와 세션 단위 집계로 판정합니다.
CAPTCHA · Challenge
CAPTCHA는 사용자에게 퍼즐을 풀게 하고, Challenge는 화면 없이 브라우저 환경을 검사합니다. 통과하면 AWS WAF 토큰이 발급되어 면제 시간 동안 다시 묻지 않습니다.
App integration
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
AWSManagedRulesAntiDDoSRuleSet은 리소스별 트래픽 기준선을 학습해 L7 DDoS를 수 초 안에 탐지합니다. 의심도가 낮은 요청은 silent Challenge로, 높은 요청은 Block으로 완화합니다. 유료 규칙 그룹입니다.
AI traffic
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 하나만 연결됩니다. CloudFront용은 글로벌 범위로 만들고, 나머지는 리소스와 같은 리전에 만듭니다.
엣지 로케이션에서 요청을 검사해 공격 트래픽이 오리진까지 오지 않습니다. CloudFront의 본문 검사 한도는 기본 16 KB이며 64 KB까지 올릴 수 있습니다.
CloudFront distributionAmplify appscope: CLOUDFRONT리전 진입점을 직접 보호합니다. ALB와 AppSync의 본문 검사 한도는 8 KB로 고정되고, API Gateway REST API는 기본 16 KB에서 늘릴 수 있습니다.
Application Load BalancerAPI Gateway REST APIAppSync GraphQL API사용자 풀 로그인 엔드포인트, 컨테이너 웹 서비스, 제로 트러스트 애플리케이션 접근, 에이전트 도구 게이트웨이 앞에도 같은 규칙을 둡니다.
Cognito user poolApp Runner serviceVerified Access instanceBedrock AgentCore GatewayNLB, API Gateway HTTP API, EC2 Elastic IP에는 web ACL을 직접 연결할 수 없습니다. 이런 진입점은 CloudFront를 앞에 두거나 Shield Advanced와 Network Firewall로 보호합니다.
Where it fits
계층과 보는 대상이 다르므로 대체 관계가 아니라 함께 쓰는 관계입니다.
| 서비스 | 계층 | 검사 대상 | 붙이는 위치 |
|---|---|---|---|
| AWS WAF | L7 HTTP(S) | 헤더, URI, 쿼리, 본문, 쿠키, IP · 국가, 요청률, 봇 신호 | CloudFront, ALB, API Gateway 등 리소스에 web ACL 연결 |
| AWS Shield | L3 · L4 (+ L7 Advanced) | 볼류메트릭 · 상태 고갈 DDoS. Advanced는 구독에 포함된 Anti-DDoS 규칙 그룹으로 L7 완화 | Standard는 자동. Advanced는 보호 리소스 지정 |
| Network Firewall | L3 – L7 흐름 | 5-tuple, Suricata 시그니처, TLS SNI · 도메인, 모든 프로토콜 | VPC · TGW 라우팅 경로의 방화벽 엔드포인트 |
| 보안 그룹 · NACL | L3 · L4 | IP, 포트, 프로토콜 | ENI · 서브넷 |
Reference architecture
웹 트래픽은 글로벌 web ACL이 연결된 CloudFront에서 먼저 검사합니다. 리전의 API Gateway에는 리전 web ACL을 둡니다. Firewall Manager는 조직의 모든 계정에 공통 규칙 그룹을 강제하고, 각 web ACL의 로그는 한 곳으로 모읍니다.
좁은 화면에서는 다이어그램을 좌우로 밀어서 보세요.
Getting started
보호할 리소스의 범위(CloudFront 또는 리전)를 고르고 기본 액션을 정합니다. 새 콘솔에서는 protection pack으로 표시됩니다.
Core rule set, IP reputation 등 AWS Managed Rules를 넣고 WCU 사용량을 확인합니다.
규칙을 Count로 두고 로깅과 CloudWatch 지표를 켜서 오탐을 찾고 예외를 만듭니다.
검증된 규칙부터 Block으로 바꾸고, rate-based rule과 Bot Control을 더합니다.
Firewall Manager 정책으로 모든 계정과 새 리소스에 공통 규칙 그룹을 자동 적용합니다.
Pricing
사용한 만큼 냅니다. web ACL과 규칙 개수에 붙는 월 요금, 처리한 요청 수가 기본이고, 지능형 위협 완화 기능과 확장 옵션을 켜면 요금이 더해집니다.
| 과금 항목 | 과금 기준 | 참고 |
|---|---|---|
| web ACL | web 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
인터넷에 노출된 진입점, 로그인 · 가입 경로, 봇 트래픽 비중, 계정 구조를 정리해 오시면 규칙 구성과 Count → Block 전환 계획을 함께 검토합니다.