WAF·Shield·CloudFront로 만드는 Edge 보안과 DDoS 방어
_Category: Network Security_
인터넷 트래픽이 애플리케이션 서버에 도달하기까지 수많은 Edge Location과 로드 밸런서를 거칩니다. 보안의 핵심 원칙은 "공격을 가능한 한 외곽에서 차단하라"입니다. 건물 내부까지 침입한 공격자를 막는 것보다 정문 입구에서 먼저 걸러내는 편이 훨씬 효율적입니다. AWS WAF, Shield, CloudFront, AWS Firewall Manager가 이 원칙을 구현하는 Edge 보안 서비스 조합입니다.
---
Edge 방어의 원칙: 가능한 한 멀리서 차단하기
공격이 VPC 안쪽까지 도달하면 EC2 인스턴스가 DDoS 패킷을 처리하느라 CPU를 낭비하고, RDS에 SQL 인젝션 쿼리가 도달할 위험이 생깁니다. 이상적인 방어선은 CloudFront와 WAF가 동작하는 Global Edge 레이어입니다.
AWS Edge 보안 계층 구조는 이렇습니다. 가장 외곽에 Shield가 Layer 3/4 DDoS를 흡수하고, CloudFront가 전 세계 수백 개 Edge Location에서 트래픽을 수신합니다. 그 다음 레이어에서 AWS WAF가 HTTP/HTTPS 요청을 분석하고 악성 패턴을 차단합니다. 이 외곽 방어선을 통과한 요청만 Application Load Balancer나 EC2에 도달합니다.
WAF를 CloudFront에 연결하면 전 세계 Edge에서 규칙이 실행됩니다. WAF를 Application Load Balancer에 연결하면 리전 수준에서 실행됩니다. DDoS 방어 관점에서는 CloudFront + WAF 조합이 트래픽을 훨씬 일찍 필터링합니다.
---
AWS WAF의 구성 (Web ACL, Rule, Rule Group, Managed Rules)
AWS WAF는 건물 입구의 보안 검색대와 같습니다. 모든 HTTP 요청이 검색대를 통과해야 하고, 규칙에 따라 통과 또는 차단이 결정됩니다.
Web ACL은 WAF의 최상위 컨테이너입니다. CloudFront 배포, Application Load Balancer, API Gateway, AWS AppSync에 연결할 수 있습니다. Web ACL 안에 여러 Rule이 들어가며, Rule에는 우선순위(priority)가 있어 숫자가 낮을수록 먼저 평가됩니다.
Rule Group은 여러 Rule을 묶은 재사용 가능한 컨테이너입니다. Managed Rules는 AWS와 보안 파트너가 미리 작성하고 지속적으로 업데이트하는 Rule Group입니다.
| 카테고리 | 설명 | 대표 Rule Group | |---------|------|----------------| | Core Rule Set (CRS) | OWASP Top 10 기반 일반 웹 공격 차단 | AWSManagedRulesCommonRuleSet | | Known Bad Inputs | 알려진 취약점 악용 패턴 차단 | AWSManagedRulesKnownBadInputsRuleSet | | SQL Database | SQL 인젝션 공격 차단 | AWSManagedRulesSQLiRuleSet | | Amazon IP Reputation | AWS에서 관찰된 악성 IP 차단 | AWSManagedRulesAmazonIpReputationList | | Bot Control | 봇 트래픽 감지 및 차단 | AWSManagedRulesBotControlRuleSet |
IP Set은 최대 10,000개의 IP/CIDR을 저장하는 컨테이너로 Rule에서 참조합니다. WAF 로그는 Kinesis Data Firehose를 통해 S3, CloudWatch Logs로 전송되며 요청 IP, URI, 헤더, 매칭된 규칙명, 허용/차단 결과를 기록합니다. CloudWatch 지표는 규칙별 집계 카운트만 제공하지만, 요청별 1:1 추적은 WAF 로그에서만 가능합니다.
---
Rate-based Rule, Bot Control, Captcha로 자동화 공격 막기
Rate-based Rule은 특정 IP가 5분 창 안에 설정된 임계값(최소 100회) 이상 요청을 보내면 자동으로 차단합니다. URI 패턴 조건을 결합하면 공격받는 특정 경로만 선별 제한하면서 정상 트래픽을 허용할 수 있습니다. Layer 7 DDoS가 진행 중이고 특정 URI가 반복 호출된다면, Rate-based Rule + URI 조건 추가가 가장 빠른 즉각 대응입니다. Shield Advanced DRT 지원은 수 시간이 소요되므로 활성 공격에는 WAF가 우선입니다.
Geo Match Rule은 특정 국가에서 오는 트래픽을 차단하거나 허용합니다. CloudFront 자체의 Geo Restriction 기능과 차이가 있습니다. CloudFront Geo Restriction은 WAF 없이 CloudFront 배포 설정에서 직접 구성하며 추가 비용이 없고 차단 시 HTTP 403이 반환됩니다. WAF Geo Match Rule은 URL 패턴과 국가 조건을 조합하는 더 세밀한 제어가 필요할 때 사용하며 WAF 비용이 발생합니다.
Bot Control은 정상 봇과 악성 봇을 구분하여 처리합니다. Captcha Action은 의심스러운 요청에 CAPTCHA 퍼즐을 제시합니다. Custom Response는 차단 시 반환하는 HTTP 상태 코드와 응답 바디를 사용자 정의합니다.
---
Shield Standard vs Shield Advanced (비교표 + DRT·Cost Protection)
Shield Advanced는 전문 경호 팀이 24/7 상주하는 것과 같습니다. 단순히 방패만 있는 것이 아니라, 공격 발생 시 즉시 달려오는 전문가 팀이 함께합니다.
| 항목 | Shield Standard | Shield Advanced | |------|----------------|----------------| | 비용 | 무료 (자동 적용) | 월 $3,000 + 데이터 전송 비용 | | 보호 레이어 | Layer 3/4 | Layer 3/4 + Layer 7 | | DRT 24/7 지원 | 없음 | 있음 — 실시간 공격 대응 | | Cost Protection | 없음 | 있음 — 스케일 아웃 비용 환불 | | CloudWatch 지표 | 기본 지표만 | DDoSDetected 등 상세 지표 | | Health-based Detection | 없음 | Route 53 Health Check 기반 | | WAF 비용 면제 | 해당 없음 | 구독 시 WAF 사용료 면제 |
Shield Advanced의 DDoSDetected CloudWatch 지표는 공격이 감지되면 1로 변경되고 종료 시 0으로 돌아옵니다. 이 지표에 CloudWatch Alarm을 설정하고 SNS 토픽을 연결하면 공격 발생 즉시 이메일, SMS, Lambda로 알림이 전송됩니다. 이것이 Shield Advanced 실시간 DDoS 탐지 알림의 표준 아키텍처입니다.
Cost Protection은 DDoS 공격으로 EC2 Auto Scaling, CloudFront 데이터 전송, Route 53 쿼리 사용량이 비정상 증가했을 때 그 비용을 AWS가 크레딧으로 보전하는 기능입니다. Shield Standard에는 없는 결정적인 차별점입니다.
!Shield Standard vs Shield Advanced
AWS Firewall Manager로 Org-wide 정책 일괄 배포
수십, 수백 개의 AWS 계정을 운영할 때 각 계정에서 WAF Web ACL을 개별 관리하면 표준화가 어렵습니다. AWS Firewall Manager는 본사가 전 지점에 보안 매뉴얼을 일괄 배포하는 것과 같습니다.
Firewall Manager는 AWS Organizations와 연동하여 중앙 관리자 계정에서 전체 OU 또는 개별 계정에 WAF 정책, Shield Advanced 보호, Security Group 정책을 한 번에 배포합니다. 새로운 리소스가 생성되어도 scope 조건에 맞으면 자동으로 Web ACL이 연결됩니다.
일부 ALB에만 Web ACL이 연결되지 않는 가장 일반적인 원인은 scope 태그 설정 누락입니다. Firewall Manager 정책은 태그 기반으로 포함/제외 scope를 필터링하며, 특정 태그가 없는 리소스는 정책 scope 밖으로 판단됩니다.
중요한 동작: Firewall Manager policy scope에서 계정을 제외하면, 이미 연결된 Web ACL은 자동 분리되거나 삭제되지 않고 그대로 유지됩니다. scope 제외 후에는 Web ACL 변경 사항이 자동 반영되지 않으므로 계정 소유자가 직접 관리해야 합니다. Firewall Manager 사용 전제 조건은 AWS Organizations 활성화와 관리자 계정 지정입니다.
---
CloudFront 보안 통합 (OAC, Signed URL/Cookie, Field-Level Encryption)
OAI와 OAC는 S3에 CloudFront를 통해서만 접근하도록 강제하는 기능입니다. OAC가 OAI를 대체하는 최신 방식입니다.
| 항목 | OAI (구형) | OAC (최신, 권장) | |------|-----------|----------------| | 기반 기술 | CloudFront 전용 가상 ID | IAM 서비스 주체 (cloudfront.amazonaws.com) | | SSE-KMS 지원 | 제한적 | 완전 지원 | | SigV4 동적 서명 | 없음 | 있음 | | 권장 여부 | 신규 구성 지양 | 권장 |
OAC + WAF IP Set 조합은 S3 직접 접근 차단과 IP 기반 접근 제한을 동시에 구현하는 표준 패턴입니다. S3 버킷 정책의 aws:SourceIp는 CloudFront가 자체 IP로 요청을 전달하므로 클라이언트 IP 필터링이 불가능합니다.
Signed URL은 파일 하나에 대한 접근을 제어하고, Signed Cookie는 여러 파일 또는 경로에 대한 접근을 쿠키 하나로 일괄 제어합니다. 스트리밍 서비스에서 구독자에게만 영상을 제공할 때는 Signed Cookie가 더 적합합니다.
Field-Level Encryption은 CloudFront 엣지에서 특정 POST 필드를 공개키로 암호화한 후 백엔드로 전달합니다. 결제 정보 같은 민감 데이터가 평문으로 노출되지 않습니다. KMS는 저장 시 서버 측 암호화이고, Field-Level Encryption은 전송 중 특정 필드만 선택적으로 엣지에서 암호화하는 점이 다릅니다. CloudFront Origin Failover는 기본 오리진이 4xx/5xx 오류를 반환할 때 Origin Group 내 보조 오리진으로 자동 전환하는 고가용성 기능입니다.
---
시험에서 헷갈리는 Edge 보안 시나리오
소스 문제를 기반으로 자주 출제되는 혼동 포인트를 정리합니다.
"WAF 없이 국가 단위 콘텐츠 차단" → CloudFront Geo Restriction입니다. WAF Geo Match가 아닙니다. Geo Restriction은 추가 비용 없이 CloudFront 배포 설정에서 직접 구성합니다.
"Shield Advanced 구독 중, DDoS 공격 발생 시 즉시 알림" → DDoSDetected CloudWatch 지표 + CloudWatch Alarm + SNS입니다. GuardDuty는 DDoS 전용 지표가 없고, VPC Flow Logs는 DDoS 탐지 전용이 아닙니다.
"Layer 7 DDoS 진행 중, 특정 URI 반복 호출, 즉각 조치" → WAF Rate-based Rule + URI 조건 조합입니다. Shield Advanced DRT 지원은 수 시간이 소요됩니다.
"Firewall Manager 배포 후 일부 ALB만 Web ACL 미연결, 비준수 상태" → scope 태그 설정 누락입니다. 권한 부족이라면 정책 생성 자체가 실패합니다.
"CloudFront 도입 후 S3 직접 접근 차단 + IP 기반 접근 제한" → CloudFront OAC + WAF IP Set 조합입니다.
"WAF 규칙이 실제로 어떤 요청을 차단하는지 요청 단위 확인" → WAF 로깅 활성화(Kinesis Data Firehose → S3)입니다. CloudWatch 지표는 집계 카운트만 제공합니다.
---
시험 핵심 정리
AWS WAF: Web ACL은 CloudFront/ALB/API Gateway에 연결하는 최상위 컨테이너입니다. Rule 우선순위는 숫자가 낮을수록 먼저 평가됩니다. Rate-based Rule은 5분 창 기준 임계값 초과 IP를 자동 차단합니다. WAF 로그(Kinesis Firehose → S3)는 요청별 규칙 적용 내역을, CloudWatch 지표는 집계 통계를 제공합니다.
AWS Shield: Standard는 무료 Layer 3/4 자동 보호입니다. Advanced는 DRT 24/7 지원 + Cost Protection + DDoSDetected CloudWatch 지표를 제공합니다. DDoS 실시간 알림은 DDoSDetected + CloudWatch Alarm + SNS 조합입니다. 진행 중인 Layer 7 공격에는 WAF Rate-based Rule을 즉시 적용하세요.
AWS Firewall Manager: Organizations + 위임 관리자 계정이 필요합니다. scope 태그로 정책 적용 리소스를 필터링합니다. scope 제외 시 기존 Web ACL 연결은 유지됩니다(자동 삭제 아님). 비준수 상태는 scope 내 리소스에 Web ACL 미연결 시 표시됩니다.