[AWS] Network Firewall
정의
AWS Network Firewall (ANF) 은 VPC 를 위한 관리형 네트워크 방화벽 + 침입 방지 (IDS/IPS) 서비스입니다. Stateful + Stateless 규칙 엔진, Suricata 호환 규칙, TLS SNI 검사, 관리형 위협 인텔리전스 피드를 제공.
한 줄 요약: SG/NACL 로 부족한 딥 인스펙션 (Layer 7 검사, 도메인 필터, 시그니처 기반 IPS) 담당.
왜 필요한가
SG/NACL 의 한계
Security Group / NACL 은 5-tuple (src IP, port, protocol, dst IP, port) 만 봄:
- 도메인 기반 차단 불가 (example.com/malicious 만 막고 example.com/api 허용?)
- 패킷 내용 검사 X (SQL injection payload 감지?)
- 알려진 공격 시그니처 X
- 위협 인텔리전스 자동 연동 X
Network Firewall 의 접근
- Suricata 규칙: DPI (Deep Packet Inspection)
- TLS SNI: HTTPS 도메인 필터
- 관리형 규칙 그룹: AWS 유지 (
AttackVector,ThreatSignatures,BotNetCommandAndControlDomains) - 로그: alert/flow/TLS
아키텍처
flowchart LR IGW[Internet Gateway] --> FW[Network Firewall<br/>Endpoint] FW -->|allowed| Private[Private Subnet] Private -->|outbound| FW FW --> IGW
중요: 서브넷 사이에 방화벽 endpoint 를 두고 route table 을 조정해 트래픽이 방화벽을 통과하도록.
구성 요소
Firewall
전체 배포 단위. 하나의 VPC 에 연결.
Firewall Policy
Firewall 이 사용할 규칙 그룹 모음. Stateless + Stateful 규칙 그룹, default action.
Rule Group
실제 규칙 컨테이너. 두 유형:
- Stateless: 5-tuple 매칭 (Suricata 없음)
- Stateful: Suricata 규칙 (DPI, 도메인 필터, 시그니처)
Firewall Endpoint
각 AZ 에 하나. Route table 이 이 endpoint 로 트래픽 라우팅.
Stateful Rules (Suricata)
Suricata 규칙 문법:
drop tcp any any -> any 443 (msg:"Block bad.example.com"; \
tls.sni; content:"bad.example.com"; nocase; sid:1000001;)
alert http any any -> any any (msg:"SQL Injection"; \
content:"UNION SELECT"; http_uri; sid:1000002;)
drop ip any any -> [$MALICIOUS_IPS] any (msg:"Known bad IP"; sid:1000003;)
action: alert, drop, pass, reject.
direction: -> (단방향), <> (양방향).
도메인 리스트 (간편)
Suricata 대신 도메인 리스트로 필터:
RulesSourceList:
Targets: ['bad.example.com', '.malware.net']
TargetTypes: ['HTTP_HOST', 'TLS_SNI']
GeneratedRulesType: DENYLIST
HTTP Host (평문) 와 TLS SNI (HTTPS 도메인) 로 감지.
관리형 Rule Groups (AWS)
AWS 제공, 자동 업데이트:
- ThreatSignatures: 알려진 공격 시그니처
- AttackVectors: OWASP Top 10 등
- BotNetCommandAndControlDomains: C2 서버 도메인
- MalwareDomains: 알려진 malware 배포 도메인
- AbusedLegitDomains: 남용되는 정상 도메인
subscription 형식으로 정책에 포함.
관용 배포 패턴
Centralized Egress
Transit Gateway 뒤에 Inspection VPC 하나 두고 모든 VPC 의 인터넷 outbound 를 그 곳 통과:
VPC-A ─┐
VPC-B ─┼─→ Transit Gateway ─→ Inspection VPC (Network Firewall) ─→ Internet
VPC-C ─┘
여러 VPC 의 정책 중앙 관리 + 요금 절감.
Per-VPC Firewall
각 VPC 안 subnet 사이에 firewall endpoint. 소규모 조직.
East-West (VPC 내부)
같은 VPC 안 subnet 간 트래픽을 firewall 통과. Zero-trust 네트워크.
로깅
Firewall 이 생성하는 로그:
- Alert logs: 규칙 alert 발생
- Flow logs: 모든 flow 요약 (source, dest, action)
- TLS logs: TLS handshake 정보 (SNI 등)
CloudWatch Logs / Kinesis / S3 로.
요금
- Endpoint 시간당: AZ 마다 (~0.395 USD/hour)
- 트래픽 처리: GB 당 (~0.065 USD/GB)
- 관리형 규칙 그룹: 일부 무료, 일부 subscription
주의: 여러 AZ 배포 시 endpoint 요금 곱하기.
Network Firewall vs 대안
| 옵션 | 강점 | 언제 |
|---|---|---|
| SG/NACL | 무료, 간단, 대부분 케이스 | 기본 |
| Network Firewall | Layer 7, IPS, 도메인 필터 | 컴플라이언스, 엔터프라이즈 |
| WAF | HTTP 특화 (URL, header) | 웹 앱 앞단 |
| Shield | DDoS | 볼륨 공격 |
| 3rd-party (Palo Alto, Fortinet) | 종합 NGFW | 기존 firewall 팀 |
결정: SG/NACL 로 부족 + DPI 필요 → Network Firewall.
Stateless Rules 상세
Stateful 보다 먼저 평가. 5-tuple 만 사용, 빠르고 저렴함.
# Stateless rule group 예시
StatelessRules:
- Priority: 10
RuleDefinition:
MatchAttributes:
Protocols: [6] # TCP
DestinationPorts:
- FromPort: 443
ToPort: 443
Actions:
- aws:forward_to_sfe # Stateful engine 으로 전달
- Priority: 20
RuleDefinition:
MatchAttributes:
Sources:
- AddressDefinition: 10.0.1.0/24 # 관리 서브넷
DestinationPorts:
- FromPort: 22
ToPort: 22
Protocols: [6]
Actions:
- aws:pass
전략: 간단 허용/차단 = Stateless 로 먼저 처리, DPI 필요 = aws:forward_to_sfe 로 Stateful 에 전달.
Centralized Egress 상세 아키텍처
flowchart LR
A["VPC-A 워크로드"] --> TGW["Transit Gateway"]
B["VPC-B 워크로드"] --> TGW
C["VPC-C 워크로드"] --> TGW
TGW --> INS["Inspection VPC<br/>Network Firewall"]
INS -->|"허용 트래픽"| IGW["Internet Gateway"]
INS -->|"차단 트래픽"| DROP["Drop"]
Route Table 핵심:
- Inspection VPC
firewall-subnet: IGW 로 가는 경로 → firewall endpoint - Inspection VPC
public-subnet: 외부 → firewall endpoint - TGW attachment route: 스포크 VPC 트래픽 → Inspection VPC
CloudWatch Logs 쿼리
-- 상위 차단 시그니처 (Alert 로그)
fields @timestamp, alert.signature, src_ip, dest_ip
| filter event_type = "alert"
| stats count(*) as cnt by alert.signature
| sort cnt desc
| limit 20
-- 내부에서 외부로 나가는 차단 트래픽 (Flow 로그)
fields @timestamp, src_ip, dest_ip, dest_port, action
| filter action = "blocked"
| limit 100
Terraform 예시
resource "aws_networkfirewall_rule_group" "domain_denylist" {
name = "domain-denylist"
type = "STATEFUL"
capacity = 100
rule_group {
rules_source {
rules_source_list {
generated_rules_type = "DENYLIST"
target_types = ["HTTP_HOST", "TLS_SNI"]
targets = ["bad.example.com", ".malware.net"]
}
}
}
}
resource "aws_networkfirewall_firewall_policy" "main" {
name = "main-policy"
firewall_policy {
stateless_default_actions = ["aws:forward_to_sfe"]
stateless_fragment_default_actions = ["aws:forward_to_sfe"]
stateful_rule_group_reference {
resource_arn = aws_networkfirewall_rule_group.domain_denylist.arn
}
}
}
함정
WARNING
Route table 설정 실수. Firewall endpoint 로 라우팅 안 되면 방화벽 우회.
CAUTION
양방향 (return traffic). Stateful 이면 자동, stateless 는 규칙 명시.
WARNING
비용 폭발 가능. GB 당 요금 + 다중 AZ endpoint. 필요한 트래픽만 필터.
IMPORTANT
TLS SNI 만 검사, decrypt 안 함. TLS 안 payload 는 안 보임. TLS inspection 은 별도 (3rd-party appliance).
CAUTION
Suricata 규칙 성능. 수천 규칙은 지연 증가. 관리형 규칙 그룹 우선.
관련 위키
- VPC
- SG vs NACL
- Stateful vs Stateless Firewall
- Shield
- WAF - 웹 특화
- GuardDuty - 위협 탐지 (짝)
- PrivateLink
- Direct Connect
이 글의 용어 (8개)
- [AWS] Amazon GuardDutycloud
- 정의 Amazon GuardDuty 는 AWS 계정 활동 로그를 머신러닝 과 위협 인텔리전스 로 지속 분석하여 악의적 활동/이상 행동을 감지하는 관리형 위협 탐지 서비스입니다. …
- [AWS] Direct Connectcloud
- 정의 AWS Direct Connect (DX) 는 온프레미스 데이터센터 (또는 사무실) 를 AWS 리전에 전용선 으로 직접 연결하는 서비스입니다. 인터넷을 거치지 않아 낮은 지…
- [AWS] PrivateLink (VPC Interface Endpoints)cloud
- 정의 AWS PrivateLink 는 VPC 내부의 리소스가 인터넷을 거치지 않고 AWS 서비스, 다른 계정의 서비스, 또는 SaaS 파트너 서비스에 접근하도록 하는 서비스입니다…
- [AWS] Security Group vs NACL: stateful vs stateless 방화벽cloud
- 정의 AWS VPC 에는 두 계층의 네트워크 방화벽이 존재. | 항목 | SG (Security Group) | NACL (Network ACL) | |:---|:---|:---…
- [AWS] Shield (DDoS Protection)cloud
- 정의 AWS Shield 는 AWS 워크로드를 분산 서비스 거부 (DDoS, Distributed Denial of Service) 공격으로부터 보호하는 관리형 서비스입니다. S…
- [AWS] VPC: subnet, route, NAT, peeringcloud
- 정의 VPC (Virtual Private Cloud) = AWS 안의 논리적 격리 네트워크. CIDR 정의 + subnet 분할 + 라우팅. AWS 리소스를 격리된 네트워크에 …
- [AWS] WAF (Web Application Firewall)cloud
- 정의 AWS WAF (Web Application Firewall) 는 HTTP/HTTPS 요청을 검사하는 Layer 7 방화벽 서비스입니다. CloudFront, ALB, AP…
- Stateful vs Stateless Firewallnetwork
- 정의 방화벽 (Firewall) 은 네트워크 트래픽을 정책에 따라 허용/차단 하는 보안 장치. 상태 관리 방식으로 두 유형이 있습니다. - Stateless (상태 비저장): 각…
💬 댓글