AWS WAF
더 많은 작업
- AWS WAF; AWS Web Application Firewall
- CloudFront, ALB, API Gateway 등으로 들어오는 HTTP·HTTPS 요청을 검사해 허용, 차단, 계수, CAPTCHA 등을 적용하는 AWS의 관리형 웹 애플리케이션 방화벽
보안 그룹과 네트워크 ACL은 IP 주소와 포트만 본다. SQL 인젝션 문자열이 들어 있는 요청도 443 포트로 오면 그대로 통과한다. AWS WAF는 OSI 7계층에서 요청의 URI, 쿼리 문자열, 헤더, 본문, 출발 국가 같은 내용을 보고 판단한다. 일반 개념은 웹 방화벽 문서를 참조한다.
| 항목 | 설명 |
|---|---|
| 웹 ACL(보호 팩) | 규칙과 규칙 그룹의 묶음. 보호할 리소스에 연결한다. 새 콘솔에서는 '보호 팩(웹 ACL)'이라고 부른다. |
| 규칙 | 검사 조건(문)과 일치했을 때의 작업(Allow, Block, Count, CAPTCHA, Challenge) |
| 기본 작업 | 어떤 규칙에도 맞지 않은 요청을 허용할지 차단할지 |
| 규칙 그룹 | 재사용 가능한 규칙 묶음. 직접 만들거나 관리형 규칙 그룹을 쓴다. |
| WCU | 웹 ACL 용량 단위. 규칙의 복잡도에 따라 소모되며 웹 ACL마다 한도가 있다. |
- 규칙에서 검사할 수 있는 것
| 범위 | 리소스 | 웹 ACL 생성 위치 |
|---|---|---|
| 글로벌 | 아마존 CloudFront 배포, AWS Amplify 앱 | 미국 동부(버지니아 북부), 콘솔에서는 "Global (CloudFront)" |
| 리전 | Application Load Balancer, 아마존 API Gateway REST API, AWS AppSync GraphQL API, 아마존 Cognito 사용자 풀, AWS App Runner 서비스, AWS Verified Access 인스턴스 등 | 리소스와 같은 리전 |
Network Load Balancer, Classic Load Balancer, EC2 인스턴스에는 직접 연결할 수 없다. NLB 뒤의 애플리케이션을 보호하려면 앞단에 CloudFront를 두거나 ALB로 바꾸는 설계를 검토한다.
AWS 관리형 규칙은 일반적인 웹 위협을 막는 규칙 그룹을 AWS가 만들고 갱신해 주는 것이다. OWASP 상위 위협에 대응하는 핵심 규칙 세트, SQL 데이터베이스 규칙, 알려진 악성 입력, 아마존 IP 평판 목록, 익명 IP 목록(VPN·프록시·Tor) 등이 있다. AWS Marketplace에서 보안 업체가 판매하는 규칙 그룹도 구독할 수 있다. 봇 탐지를 위한 Bot Control, 계정 탈취·사기 가입 방지 규칙 그룹은 추가 요금이 붙는다.
- 운영 환경에 넣기 전에는 규칙을 Count 모드로 걸어 오탐을 확인한 뒤 Block으로 바꾼다.
- 관리형 규칙도 AWS 공동 책임 모델을 대체하지 않는다. 애플리케이션 취약점 자체는 고객이 고쳐야 한다.
속도 기반 규칙은 일정 평가 기간 동안 같은 집계 키(기본은 출발 IP, 그 밖에 헤더·쿼리 인수·쿠키 등)로 들어온 요청 수를 세어, 한도를 넘는 출발지의 요청을 차단하거나 CAPTCHA를 건다. 로그인 페이지 대입 공격, 크롤러 과다 요청, 애플리케이션 계층(L7) HTTP 플러드를 완화하는 가장 간단한 방법이다. 범위 축소 문을 붙이면 특정 URI(예: /login)만 대상으로 할 수 있다.
AWS Firewall Manager는 AWS Organizations 조직 전체에 방화벽 정책을 중앙에서 일괄 적용하는 서비스다. 한 번 정책을 만들면 새로 생긴 계정과 리소스에도 자동으로 보호가 붙는다.
- 관리 대상: AWS WAF 규칙, AWS Shield Advanced 보호, VPC 보안 그룹, 네트워크 ACL, AWS Network Firewall, Route 53 Resolver DNS 방화벽, Marketplace 타사 방화벽.
- 전제 조건: Organizations 가입, Firewall Manager 관리자 계정 지정, 대상 계정의 AWS Config 활성화.
- 리소스 유형(예: 모든 ALB)이나 태그 기준으로 보호 범위를 정하고, 규정 미준수 리소스를 보고하거나 자동으로 고친다.
AWS Network Firewall은 VPC 경계에 두는 관리형 스테이트풀 네트워크 방화벽이자 침입 탐지·방지 서비스다. 인터넷 게이트웨이, NAT 게이트웨이, VPN, Direct Connect로 오가는 트래픽을 걸러 낸다. 오픈 소스 IPS 엔진 Suricata 호환 규칙, 도메인 이름 기반 필터링(허용·거부 목록), 5-튜플 규칙, 심층 패킷 검사를 지원한다. VPC 라우팅 테이블로 트래픽을 방화벽 엔드포인트(전용 서브넷)로 보내는 방식이며, 웹 요청뿐 아니라 TCP·UDP·ICMP 모든 프로토콜을 다룬다.
| 구분 | 보안 그룹 | 네트워크 ACL | AWS Network Firewall | AWS WAF |
|---|---|---|---|---|
| 적용 위치 | ENI(인스턴스) | 서브넷 | VPC 경계(방화벽 서브넷) | CloudFront, ALB, API Gateway 등 |
| 계층 | L3/L4 | L3/L4 | L3~L7 | L7(HTTP/HTTPS) |
| 상태 | 스테이트풀 | 스테이트리스 | 스테이트풀·스테이트리스 규칙 | 요청 단위 |
| 규칙 | 허용만 | 허용·거부 | IPS 시그니처, 도메인 목록, 5-튜플 | 요청 내용, 속도, 관리형 규칙 |
| 대표 용도 | 인스턴스 접근 제어 | 서브넷 단위 IP 차단 | 아웃바운드 도메인 제한, 침입 방지, VPC 간 트래픽 검사 | SQL 인젝션·XSS 차단, 봇·속도 제한 |
자세한 비교는 보안 그룹과 네트워크 ACL 문서를 참조한다.
- SQL 인젝션, XSS 같은 애플리케이션 계층 공격 차단 → AWS WAF(ALB 또는 CloudFront에 연결). 보안 그룹·NACL로는 막을 수 없다.
- 특정 IP에서 과도한 요청이 몰린다 → 속도 기반 규칙. 특정 국가 차단 → 지리적 일치 규칙(또는 CloudFront 지리적 제한).
- NLB에는 WAF를 붙일 수 없다. HTTP 검사가 필요하면 ALB나 CloudFront 앞단을 쓴다.
- 여러 계정에 같은 WAF 규칙·보안 그룹 정책을 강제 → Firewall Manager.
- VPC에서 나가는 트래픽을 도메인 단위로 제한하거나 IPS가 필요 → Network Firewall.
- CloudFront용 웹 ACL은 us-east-1(Global)에서 만든다.