了解 AWS Network Firewall:控制 VPC 流量的托管式网络防火墙

在 AWS 中提到防火墙时,许多人首先想到安全组(Security Group)或 AWS WAF。然而,安全组更接近于资源级别的访问控制,而 AWS WAF 是一种检查 Web 请求的 Web 应用程序防火墙。

在本文中,我们将排除 Web 应用程序防火墙 AWS WAF,重点介绍检查和控制 VPC 网络流量的 AWS Network Firewall。


什么是 AWS Network Firewall?

AWS Network Firewall 是一种在 Amazon VPC 中运行的托管式网络防火墙服务。

简而言之,它是一种可以集中检查、允许或阻止进出 VPC 流量的服务。可以将其视为将传统本地环境中使用的防火墙、IDS 和 IPS 概念作为托管服务提供,以适应 AWS VPC 环境。

AWS Network Firewall 在以下情况下使用:

使用目的 说明
互联网出站控制 检查私有子网中服务器流向外部互联网的流量
入站流量检查 过滤从互联网进入 VPC 内部的流量
VPC 间流量检查 集中检查多个 VPC 之间的通信
阻止恶意域名/IP 阻止已知的恶意 IP、可疑域名和僵尸网络通信
入侵检测/防御 利用 Suricata 兼容规则进行 IDS/IPS 性质的检查
中央安全架构 与 Transit Gateway 结合配置中央检查 VPC

与安全组有何不同?

初学 AWS 时,安全组可能看起来像防火墙。然而,安全组和 AWS Network Firewall 的目的不同。

类别 安全组 (Security Group) AWS Network Firewall
应用单位 EC2、ENI、RDS、ALB 等资源单位 VPC 流量路径
操作方式 有状态访问控制 无状态 + 有状态流量检查
主要目的 控制哪些资源可以被谁访问 检查并阻止网络流本身
规则级别 以 IP、端口、协议为中心 IP、端口、协议、域名、Suricata 规则等
日志记录 有限 支持流日志 (Flow Log)、警报日志 (Alert Log)、TLS 日志
典型用例 仅允许 ALB 访问 EC2 检查所有出站互联网流量

安全组在资源访问控制方面很强大,例如“此服务器的 443 端口仅允许从 ALB 访问”。

而 AWS Network Firewall 更接近于“检查此 VPC 中所有流向外部的流量,并阻止恶意域名或可疑模式”。

换句话说,它不是替代安全组的服务,而是在安全组之上添加的网络安全层。


AWS Network Firewall 的核心组件

要了解 AWS Network Firewall,您需要了解其四个核心组件。

AWS Network Firewall
 ├─ Firewall
 ├─ Firewall Policy
 ├─ Rule Group
 │   ├─ Stateless Rule Group
 │   └─ Stateful Rule Group
 └─ Firewall Endpoint

1. 防火墙 (Firewall)

防火墙是实际部署在 VPC 中的防火墙资源。

创建防火墙后,将在选定的 VPC 和可用区中创建防火墙端点。这些端点充当流量必须经过的检查点。

重要的是,创建 AWS Network Firewall 并不意味着流量会自动被检查。

您必须修改路由表,以确保流量通过防火墙端点。


2. 防火墙策略 (Firewall Policy)

防火墙策略定义了要应用于防火墙的规则。

在防火墙策略中,您可以关联无状态规则组 (Stateless Rule Group) 和有状态规则组 (Stateful Rule Group)。

简而言之,如果防火墙是实际设备,那么防火墙策略就是应用于该设备的安全策略集合。

Firewall
  ↓
Firewall Policy
  ↓
Rule Group

3. 规则组 (Rule Group)

规则组是实际检查规则的集合。

AWS Network Firewall 的规则组主要分为两种:

类别 说明
无状态规则组 (Stateless Rule Group) 独立检查每个数据包
有状态规则组 (Stateful Rule Group) 跟踪连接流并检查流量

无状态规则 (Stateless Rule)

无状态规则独立检查每个数据包。

例如,您可以创建以下规则:

- 특정 출발지 IP 차단
- 특정 목적지 IP 차단
- 특정 프로토콜 차단
- 특정 포트 차단

无状态规则运行速度快,但不会深入理解连接状态。因此,它们适用于简单的基于 IP、端口和协议的过滤。


有状态规则 (Stateful Rule)

有状态规则在跟踪流量流的同时进行检查。

例如,它理解客户端启动了与服务器的连接,并且响应属于该流。因此,它可以创建比简单数据包过滤更精细的安全策略。

有状态规则可以使用 Suricata 兼容规则。Suricata 是一种开源 IDS/IPS 引擎,常用于网络威胁检测和阻止。

例如,您可以配置以下策略:

- 특정 도메인으로 나가는 트래픽 차단
- 악성 IP와의 통신 차단
- 알려진 공격 시그니처 탐지
- 의심스러운 네트워크 패턴 차단

4. 防火墙端点 (Firewall Endpoint)

防火墙端点是实际流量经过的检查点。

当您将 AWS Network Firewall 部署到 VPC 时,将为每个可用区创建一个防火墙端点。然后,您需要在路由表中将流量的下一跳指定为该端点。

例如,让我们考虑一个私有子网中的 EC2 实例访问互联网的结构。

典型结构如下:

Private Subnet EC2
  ↓
NAT Gateway
  ↓
Internet Gateway
  ↓
Internet

引入 AWS Network Firewall 后,它会变为如下所示:

Private Subnet EC2
  ↓
AWS Network Firewall Endpoint
  ↓
NAT Gateway
  ↓
Internet Gateway
  ↓
Internet

换句话说,防火墙通过插入到流量路径中来工作。


典型架构 1:出站流量检查

最常用的结构是让私有子网中的服务器在访问互联网时通过 AWS Network Firewall。

Private Subnet
  ↓
Network Firewall Endpoint
  ↓
NAT Gateway
  ↓
Internet Gateway
  ↓
Internet

在此结构中,EC2、ECS、EKS 节点、Lambda ENI 等在访问外部互联网时都会经过防火墙。

用例包括:

示例 说明
阻止恶意域名 阻止服务器与 C2 服务器或恶意域名通信
阻止未经授权的端口 限制除 80、443 之外的外部通信
控制外部 API 访问 仅允许访问已批准的 API 域名
防止数据泄露 检测流向可疑外部目的地的流量

特别是在生产环境中,“服务器可以访问任何外部互联网目的地”的结构是危险的。AWS Network Firewall 允许您集中控制此类出站流量。


典型架构 2:入站流量检查

您还可以检查从互联网进入 VPC 内部的流量。

Internet
  ↓
Internet Gateway
  ↓
Network Firewall Endpoint
  ↓
Public 또는 Private Subnet
  ↓
Application

但是,在使用此结构时,路由设计至关重要。如果只有入站流量经过防火墙,而响应流量走不同的路径,可能会出现非对称路由问题。

由于防火墙会跟踪流量流,因此必须一致地设计入站和出站路径。


典型架构 3:中央检查 VPC

在运营多个 VPC 的组织中,通常会配置一个中央检查 VPC,而不是为每个 VPC 单独设置防火墙。

Spoke VPC A
Spoke VPC B
Spoke VPC C
   ↓
Transit Gateway
   ↓
Inspection VPC
   ↓
AWS Network Firewall
   ↓
NAT Gateway / Internet Gateway

这种结构的优点是可以在中央管理安全策略。

即使有多个应用程序 VPC,流向互联网的流量也可以汇集到中央检查 VPC,然后由 AWS Network Firewall 统一检查。

但是,这种结构比单个 VPC 结构更复杂,因为它需要同时设计 Transit Gateway、路由表、NAT Gateway 和防火墙端点路由。


AWS Network Firewall 中可用的安全策略

AWS Network Firewall 允许您以多种方式控制流量。

策略类型 示例
基于 IP 的控制 阻止或允许特定 IP 范围
基于端口的控制 阻止 22、3389 等危险端口
基于协议的控制 控制 TCP、UDP、ICMP 等
基于域名的控制 阻止流向特定域名的流量
基于签名的检测 检测已知的攻击模式
使用托管规则 使用 AWS 提供的托管规则组
使用 Suricata 规则 应用自定义 IDS/IPS 规则

例如,当生产服务器访问外部时,您可以创建以下策略:

허용:
- 회사에서 사용하는 패키지 저장소
- AWS API 엔드포인트
- 운영에 필요한 외부 SaaS API

차단:
- 알려진 악성 IP
- 의심 도메인
- 불필요한 외부 포트
- 비인가 국가 또는 네트워크 대역

日志记录和监控

对于防火墙而言,日志与阻止同样重要。

AWS Network Firewall 可以生成以下类型的日志:

日志类型 说明
流日志 (Flow Log) 通过防火墙的流量流信息
警报日志 (Alert Log) 由有状态规则检测或阻止的事件
TLS 日志 (TLS Log) 与 TLS 检查相关的事件

日志通常可以发送到以下目的地:

- Amazon CloudWatch Logs
- Amazon S3
- Amazon Data Firehose

在生产环境中,建议至少启用警报日志。因为当发生安全事件时,可以查看是哪个源试图与哪个目的地进行通信。

在大规模环境中,通常会将日志存储在 S3 中并通过 Athena 进行分析,或者通过 Firehose 将其转发到 SIEM。


设计时的注意事项

AWS Network Firewall 功能强大,但如果设计不当,可能会增加成本和运营复杂性。

1. 路由是关键

AWS Network Firewall 并非仅凭创建就能运行。

您必须在路由表中配置流量以通过防火墙端点。

잘못된 생각:
방화벽을 만들면 자동으로 VPC 트래픽이 검사된다.

정확한 이해:
방화벽 엔드포인트를 트래픽 경로에 넣어야 검사된다.

2. 考虑对称路由

在使用有状态检查时,必须设计路由,使请求和响应通过相同的防火墙路径。

如果发生非对称路由,防火墙可能无法正确跟踪流量流。


3. 按可用区设计

AWS Network Firewall 使用按可用区划分的端点。

在生产环境中,建议在多个可用区(而非单个可用区)部署防火墙端点,并设计每个可用区内的流量通过同一可用区内的防火墙端点。

这可以提高可用性并减少不必要的跨可用区流量成本。


4. 务必考虑成本

AWS Network Firewall 会产生防火墙端点小时费和数据处理量费。

此外,还必须一并考虑 NAT Gateway、Transit Gateway 和日志存储的成本。

特别是在所有出站流量都通过防火墙的结构中,数据处理量越大,成本就越高。

因此,建议根据以下标准进行设计:

- 모든 트래픽을 검사할 것인가?
- 인터넷 방향 트래픽만 검사할 것인가?
- VPC 간 트래픽도 검사할 것인가?
- 로그를 전부 저장할 것인가, Alert Log만 저장할 것인가?
- 중앙 검사 VPC를 둘 것인가, 각 VPC에 분산 배치할 것인가?

何时使用 AWS Network Firewall?

在以下情况下,值得考虑引入 AWS Network Firewall:

情况 引入必要性
需要控制生产服务器的互联网出站流量 高
需要集中检查多个 VPC 的外部通信 高
安全审计要求进行网络流量检查 高
需要阻止恶意 IP/域名通信 高
只需简单地打开/关闭 EC2 端口 低
只想阻止 Web 攻击 属于 AWS WAF 领域,需单独考虑

换句话说,AWS Network Firewall 更适合“VPC 网络流量检查”,而不是“Web 请求防御”。

您可以理解为,Web 应用程序的 SQL 注入、XSS 和基于 URI 的阻止由 AWS WAF 负责,而 VPC 内部资源的网络通信控制由 AWS Network Firewall 负责。


实际推荐配置

在一般的生产环境中,推荐以下配置:

https://aws.amazon.com/ko/blogs/security/use-aws-network-firewall-to-filter-outbound-https-traffic-from-applications-hosted-on-amazon-eks/

Public 영역
- ALB, NAT Gateway, Internet Gateway

Private 영역
- EC2, ECS, EKS, RDS 등 실제 워크로드

보안 영역
- AWS Network Firewall Endpoint
- Firewall Policy
- Stateful Rule Group
- Alert Log 저장

以出站为中心的配置如下:

Private Subnet Workload
  ↓
Route Table
  ↓
AWS Network Firewall Endpoint
  ↓
NAT Gateway
  ↓
Internet Gateway
  ↓
Internet

通过这种配置,私有子网中服务器的所有出站流量都可以由防火墙进行检查。


操作清单

在操作 AWS Network Firewall 时,建议检查以下项目:

[ ] 보호할 트래픽 범위가 명확한가?
[ ] Route Table이 방화벽 엔드포인트를 경유하도록 설정되어 있는가?
[ ] 요청과 응답 경로가 대칭으로 구성되어 있는가?
[ ] AZ별 방화벽 엔드포인트가 구성되어 있는가?
[ ] Stateful Rule과 Stateless Rule의 역할이 구분되어 있는가?
[ ] Alert Log가 활성화되어 있는가?
[ ] 로그 저장 위치와 보관 기간이 정해져 있는가?
[ ] 비용 산정에 엔드포인트, 데이터 처리량, NAT Gateway, 로그 비용이 포함되어 있는가?
[ ] 보안 정책 변경 절차가 정해져 있는가?
[ ] 테스트 환경에서 차단 정책을 먼저 검증했는가?

总结

AWS Network Firewall 是一种托管式防火墙服务,旨在集中检查和控制 VPC 环境中的网络流量。

如果安全组是资源级别的基本访问控制,那么 AWS Network Firewall 就是一个检查 VPC 流量流本身的安全层。

特别是在生产环境中,如果需要限制流向外部互联网的流量,或者需要集中检查多个 VPC 的流量,AWS Network Firewall 是一个非常有用的选择。

然而,比创建防火墙更重要的是路由设计。您必须准确配置路由表以确保流量通过防火墙端点,并且在使用有状态检查时必须考虑对称路由。

总而言之,AWS Network Firewall 可以理解为:

Security Group       = 리소스 단위 접근 제어
Network ACL          = 서브넷 단위 보조 통제
AWS Network Firewall = VPC 트래픽 검사 및 차단

如果 Web 应用程序防火墙检查 Web 请求,那么 AWS Network Firewall 检查 VPC 网络流。理解这一区别可以帮助您更清晰地设计 AWS 安全架构。



Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注