AWS上提供了丰富的网络防护服务,例如:
Security Group和Network ACL用于控制哪些IP能访问哪些端口。Security Group作用于ENI上,默认阻止所有入方向的流量,允许所有出方向的流量;NACL作用在子网级别,默认阻止所有入方向和出方向的流量WAF用于保护Web应用,自定义规则防止SQL、XSS等攻击AWS Shield用于防止DDoS攻击
在2020年,推出了AWS Network Firewall产品,它部署在VPC的子网中,用于清洗流量:

和上面提到的一些网络防护服务比起来,它具有以下特点:
| Security Group | Network ACL | WAF | AWS Network Firewall | |
|---|---|---|---|---|
| 工作级别 | EC2实例 | 子网 | CloudFront、ALB | VPC级别,所有流经VPC的流量 |
| 是否是无状态防火墙 | Stateful | Stateless | Stateless | 两者都有 |
| OSI | 3/4层 | 3/4层 | 7层 | 3-7层 |
| 特性 | IP+端口过滤 | IP+端口过滤 | 应用层过滤 | 3-7层都能过滤 |
AWS Network Firewall 的 Stateful 引擎底层就是 Suricata https://github.com/OISF/suricata
AWS Network Firewall
├── Stateless 引擎:AWS 自研(类似 NACL)
└── Stateful 引擎:基于 Suricata 开源项目
Suricata:
| 特性 | 说明 |
|---|---|
| 类型 | 开源 IDS/IPS 引擎 |
| 维护者 | Open Information Security Foundation (OISF) |
| 功能 | 入侵检测、入侵防御、网络监控 |
| 规则格式 | Suricata 规则语法 |
NFW 如何使用 Suricata:
流量进入 NFW
│
▼
┌─────────────────────────────────────────┐
│ Stateless Rules │
│ (AWS 自研,先处理,类似 NACL) │
│ - 5-tuple 匹配 │
│ - Pass / Drop / Forward to Stateful │
└─────────────────────────────────────────┘
│
│ Forward to Stateful
▼
┌─────────────────────────────────────────┐
│ Stateful Rules │
│ (基于 Suricata 引擎) │
│ - 深度包检测 (DPI) │
│ - 应用层协议识别 │
│ - IDS/IPS 规则 │
│ - 域名过滤 │
└─────────────────────────────────────────┘
NFW可以直接使用 Suricata 规则语法:
# 阻止特定 User-Agent
drop http any any -> any any (msg:"Block bad UA"; http.user_agent; content:"badbot"; sid:1000001;)
# 检测 SSH 暴力破解
alert ssh any any -> any 22 (msg:"SSH brute force"; threshold:type both,track by_src,count 5,seconds 60; sid:1000002;)
# 阻止访问特定域名
drop tls any any -> any any (msg:"Block malware domain"; tls.sni; content:"malware.com"; sid:1000003;)
NFW 支持的 Suricata 功能:
| 功能 | 支持情况 |
|---|---|
| 标准规则语法 | 支持 |
| 协议检测(HTTP/TLS/DNS等) | 支持 |
| 内容匹配 | 支持 |
| PCRE 正则 | 支持 |
| 流量方向 | 支持 |
| 阈值/限速 | 支持 |
| 文件提取 | 不支持 |
| Lua 脚本 | 不支持 |
| 完整日志格式 | 部分支持 |
NFW 提供简化方式(不用写完整 Suricata 语法):
| NFW 简化规则类型 | 说明 |
|---|---|
| Domain List | 直接填域名列表 |
| 5-Tuple | 源/目标 IP、端口、协议 |
| Suricata Compatible | 完整 Suricata 语法 |
简化方式(Domain List):
.malware.com
.phishing.net
等价的 Suricata 规则:
drop tls any any -> any any (tls.sni; content:".malware.com"; endswith; sid:1;)
drop tls any any -> any any (tls.sni; content:".phishing.net"; endswith; sid:2;)
| 原因 | 说明 |
|---|---|
| 成熟稳定 | 10+ 年发展,广泛使用 |
| 高性能 | 多线程,支持大流量 |
| 规则生态 | 大量现成规则(ET、Snort 兼容) |
| 开源 | 可定制和集成 |
| 协议支持 | HTTP、TLS、DNS、SSH 等深度解析 |