Cross-Region east-west is double-inspected: Syd NFW then Akl NFW (and the reverse on return). Icons from aws-icons.
Sydney’s firewall is on this path: egress follows 0.0.0.0/0 on the
inspection RT into the local endpoint, then leaves via the peer. Auckland
inspects on arrival. Return traffic mirrors the same pattern. That is
double-inspect What this lab ships. Peer on inspection route tables; both hubs inspect every cross-Region hop. Same-Region traffic hairpins through one local NFW..
Same-Region dev ↔ prod (e.g. 10.255.1.0/24 ↔ 10.255.2.0/24) hairpins
through that Region’s NFW only — one firewall sees both directions. See
Inspection model.
Deny keeps stateful default drop (no PASS groups). Allow attaches Suricata
groups from modules/network-firewall/rules.tf (IP sets of /32s — not whole
spoke /24s):
Group
Intent
peer_dev
Dev Syd ↔ Akl: ICMP; TCP 80/53; UDP 53
peer_dev_ssh
Dummy jumps .180–.199: TCP 22
same_region_demo
Dev ↔ prod same Region: ICMP; TCP 80
svc_prod_http
Prod app sets: TCP 80/443 both ways
svc_prod_db
Prod app → same-Region DB :5432
svc_prod_dns
Prod clients → DNS /32s :53
svc_prod_metrics
Prod monitors → apps :9100
svc_prod_ldap / ntp / dummy_batch
Dummy targets / CIDRs (demo hosts outside those sets still drop)
Demo host IPs fall inside those lab IP sets so peer-dev, same-region-demo, and
prod-http succeed after Allow. Unmatched traffic still drops (dummy CIDRs/ports,
prod ICMP across Regions, and so on) — same contrast as
Allow.
Each hub exports Network Firewall AWS Network Firewall. Managed Suricata-based packet inspection service, typically placed in an inspection VPC. Network Firewall docs CloudWatch
groups via Terraform: flow_log_group_name and alert_log_group_name
(e.g. /aws/network-firewall/nfw-lab-syd/flow). Prefer flow after Allow;
alert shows blocked / drop in Deny. Cross-Region success means entries
in both hubs’ flow groups.