AWS Network Firewall

AWS上提供了丰富的网络防护服务,例如:

  • Security GroupNetwork ACL用于控制哪些IP能访问哪些端口。Security Group作用于ENI上,默认阻止所有入方向的流量,允许所有出方向的流量;NACL作用在子网级别,默认阻止所有入方向和出方向的流量
  • WAF用于保护Web应用,自定义规则防止SQL、XSS等攻击
  • AWS Shield用于防止DDoS攻击

image-20220501214033275


在2020年,推出了AWS Network Firewall产品,它部署在VPC的子网中,用于清洗流量:

image-20220501214443598

和上面提到的一些网络防护服务比起来,它具有以下特点:

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 与 Suricata 的关系

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;)

为什么 AWS NFW选择 Suricata:

原因 说明
成熟稳定 10+ 年发展,广泛使用
高性能 多线程,支持大流量
规则生态 大量现成规则(ET、Snort 兼容)
开源 可定制和集成
协议支持 HTTP、TLS、DNS、SSH 等深度解析