WAF、Shield 与 Network Firewall
使用 AWS WAF 阻止 OWASP 前十类攻击,使用 Shield Standard 和 Advanced 防护 DDoS,并在 VPC 中部署有状态 Network Firewall
WAF、Shield 与 Network Firewall 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。
网络安全纵深防御
要保护应用程序免受基于网络的攻击,需要采用多层防御。AWS 提供三项互补服务:AWS WAF(Web Application Firewall)根据规则过滤第 7 层 HTTP 流量,以阻止应用层攻击。AWS Shield 防御第 3 层和第 4 层的 DDoS(分布式拒绝服务)攻击。AWS Network Firewall 是一种有状态网络防火墙,用于 VPC 级流量检查和过滤。三者结合后可以应对不同的威胁向量,通常会一起部署以提供全面保护。
# Layer coverage:
# Network Firewall: Layer 3-7 VPC traffic (stateful)
# Shield Standard: Layer 3-4 DDoS (automatic, free)
# Shield Advanced: Layer 3-7 DDoS + response team
# WAF: Layer 7 HTTP/HTTPS (application attacks)
# Typical deployment:
# Internet -> CloudFront+WAF -> ALB+WAF -> EC2/ECS
# Network Firewall in VPC for egress/lateral inspection
# Shield protects all traffic automaticallyAWS WAF:Web Application Firewall
AWS WAF 根据您定义的规则过滤 HTTP/HTTPS 请求。WAF 可与 CloudFront、ALB、API Gateway、AppSync 和 Cognito 集成。规则可以匹配:IP 地址集(阻止或允许特定 IP)、地理位置匹配(阻止来自特定国家/地区的请求)、基于速率的规则(阻止超过请求速率的 IP——防洪水攻击)、托管规则组(针对 OWASP 前 10 大风险、AWS Threat Intel 和 Bot Control 的预构建规则)以及自定义规则(匹配任意 HTTP 组件)。WAF ACL(Web ACL)包含规则,并应用于一个或多个资源。
# Create WAF Web ACL
aws wafv2 create-web-acl \
--name 'prod-web-acl' \
--scope CLOUDFRONT \
--region us-east-1 \
--default-action Allow={} \
--rules '[{
"Name": "AWSManagedRulesCommonRuleSet",
"Priority": 1,
"OverrideAction": {"None": {}},
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "CommonRuleSet"
}
}]' \
--visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=web-acl-metricsWAF 托管规则组
AWS 托管规则组是由 AWS 维护的预构建 WAF 规则集,无需您编写单独规则即可防御常见威胁。主要规则组包括:AWSManagedRulesCommonRuleSet——防御 OWASP 前 10 大风险(SQL 注入、XSS、RFI、LFI);AWSManagedRulesKnownBadInputsRuleSet——阻止已知的恶意输入模式;AWSManagedRulesAmazonIpReputationList——阻止信誉不良的 IP(僵尸网络、遭入侵的 IP);AWSManagedRulesBotControlRuleSet——检测并阻止抓取机器人和自动化浏览器。大多数 WAF 部署都会先启用这些托管规则组,再添加自定义规则。
# Add IP reputation list managed rule group
aws wafv2 update-web-acl \
--name 'prod-web-acl' \
--scope CLOUDFRONT \
--id <acl-id> \
--lock-token <lock-token> \
--rules '[{
"Name": "AWSManagedRulesAmazonIpReputationList",
"Priority": 0,
"OverrideAction": {"None": {}},
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesAmazonIpReputationList"
}
}
}, ...existing_rules...]'WAF 基于速率的规则
AWS WAF 中的基于速率的规则会在 5 分钟时间窗口内,自动阻止超过可配置请求速率阈值的 IP 地址。它可以防御:HTTP 洪水攻击(通过大量请求压垮服务器)、暴力破解攻击(发起大量登录尝试)和API 滥用(抓取或枚举)。您可以按 IP、按 IP + 请求路径(对 /login 等特定端点进行速率限制)或按自定义标头进行聚合。当被阻止 IP 的速率降至阈值以下时,系统会自动解除阻止——无需手动干预。
# Create rate-based rule for login endpoint
aws wafv2 update-web-acl \
--rules '[{
"Name": "RateLimitLogin",
"Priority": 2,
"Action": {"Block": {}},
"Statement": {
"RateBasedStatement": {
"Limit": 100,
"AggregateKeyType": "IP",
"ScopeDownStatement": {
"ByteMatchStatement": {
"SearchString": "/api/login",
"FieldToMatch": {"UriPath": {}},
"TextTransformations": [{"Priority": 0, "Type": "LOWERCASE"}],
"PositionalConstraint": "STARTS_WITH"
}
}
}
}
}]'AWS Shield Standard 与 Advanced
AWS Shield Standard 为所有 AWS 客户自动提供 DDoS 防护,且不收取额外费用。它可以防御最常见的第 3 层(网络层)和第 4 层(传输层)DDoS 攻击,包括 SYN 洪水、UDP 洪水和反射攻击。AWS Shield Advanced 为 EC2、ALB、CloudFront、Global Accelerator 和 Route 53 提供增强的第 3、4 和 7 层攻击防护。Shield Advanced 包括:AWS DDoS Response Team (DRT) 支持、成本保护(退还 DDoS 相关的扩展费用)、实时指标和高级攻击取证。Shield Advanced 的费用为每月 3,000 美元,另加数据传输费。
# Enable Shield Advanced protection on ALB
aws shield create-protection \
--name 'prod-alb-protection' \
--resource-arn arn:aws:elasticloadbalancing:us-east-1:123:loadbalancer/app/prod-alb/abc
# Associate with a WAF Web ACL for layer-7 protection
aws shield associate-drt-log-bucket \
--log-bucket my-shield-logs
# With Shield Advanced:
# - DDoS events detected and mitigated automatically
# - DRT can tune WAF rules during active attacks
# - Real-time CloudWatch dashboard
# - AWS will refund EC2/ELB/CloudFront scaling costs from DDoSAWS Network Firewall
AWS Network Firewall 是一种有状态的托管网络防火墙服务,部署在您的 VPC 中,用于检查和过滤流量。与 Security Groups(有状态、资源级)和 NACLs(无状态、子网级)不同,Network Firewall 提供:深度数据包检测(DPI)、有状态连接跟踪、域名过滤(按域名或模式阻止)、使用兼容 Suricata 的规则格式编写的 IPS(入侵防御系统)规则,以及出站过滤(控制 EC2 实例可以访问互联网中的哪些目标)。请在每个 AZ 的专用防火墙子网中部署 Network Firewall。
# Create Network Firewall
aws network-firewall create-firewall \
--firewall-name prod-vpc-firewall \
--firewall-policy-arn arn:aws:network-firewall:us-east-1:123:firewall-policy/my-policy \
--vpc-id vpc-12345 \
--subnet-mappings '[{"SubnetId":"subnet-firewall-AZ1"},{"SubnetId":"subnet-firewall-AZ2"}]'
# Network Firewall topology:
# Internet -> IGW -> Firewall subnet (Network FW) -> App subnet
# Egress: App subnet -> Firewall subnet (Network FW) -> IGW -> InternetNetwork Firewall 规则组
Network Firewall 使用规则组定义过滤逻辑。无状态规则组在不跟踪连接的情况下处理数据包——与 NACL 类似,但更加灵活。有状态规则组跟踪 TCP 连接状态,并检查完整的 HTTP/TLS 会话。您可以通过三种方式编写规则:五元组规则(源 IP、目标 IP、协议、源端口、目标端口)、域名列表规则(按 FQDN 允许或拒绝)以及兼容 Suricata 的 IPS 规则(功能最强大,支持模式匹配和协议检查)。AWS 为常见威胁提供托管规则组。
# Create domain list rule group (egress filtering)
aws network-firewall create-rule-group \
--rule-group-name 'allow-egress-domains' \
--type STATEFUL \
--capacity 100 \
--rules-source '{
"RulesSourceList": {
"Targets": [
"amazonaws.com",
"example.com",
"*.npmjs.com"
],
"TargetTypes": ["HTTP_HOST","TLS_SNI"],
"GeneratedRulesType": "ALLOWLIST"
}
}'
# Block all other egress traffic by default
# Prevents EC2 from calling malicious external domains比较 WAF、Shield 和 Network Firewall
这三项服务面向不同的使用场景,彼此互补而非相互替代:WAF——第 7 层 HTTP 检查,阻止应用攻击(SQLi、XSS)、执行速率限制和机器人控制。部署在 CloudFront 或 ALB 上。Shield——缓解 DDoS,保护基础设施免受大流量攻击。Shield Standard 始终启用;Advanced 还提供团队支持。Network Firewall——第 3 至第 7 层的 VPC 流量控制、有状态检查、域名过滤以及 IPS/IDS。部署在 VPC 子网中。三者应结合使用:Network Firewall 控制 VPC 级流量,WAF 过滤应用请求,Shield 缓解 DDoS。
# Comparison table:
# Service Scope Layer Use Case
# AWS WAF Edge/ALB 7 App attacks, rate limits, bots
# Shield Standard All 3-4 Auto DDoS mitigation (free)
# Shield Advanced All 3-7 Enhanced DDoS + DRT support
# Network Firewall VPC 3-7 Stateful inspection, IPS, egress
# SAA-C03 exam keywords:
# 'SQL injection protection' -> WAF
# 'DDoS protection' -> Shield
# 'Block EC2 from calling external IPs' -> Network Firewall
# 'Block requests from country X' -> WAF geo-matchWAF 日志记录与分析
WAF 可以将所有抽样请求(每 5 个请求抽取 1 个)或所有请求记录到 CloudWatch Logs、S3 或 Kinesis Data Firehose。日志包含完整的请求标头、IP 地址、国家/地区、匹配的规则以及采取的操作(ALLOW/BLOCK/COUNT)。您可以使用 WAF 日志来:调查攻击——准确查看被阻止的请求;调整规则——识别误报(将合法请求误阻止)并添加例外;检测新威胁——被阻止请求中的模式可能揭示新的攻击向量。在新规则上启用 COUNT 模式,确认不会阻止合法流量后,再切换到 BLOCK。
# Enable WAF logging to Kinesis Firehose
aws wafv2 put-logging-configuration \
--logging-configuration '{
"ResourceArn": "arn:aws:wafv2:us-east-1:123:global/webacl/prod-web-acl/abc",
"LogDestinationConfigs": [
"arn:aws:firehose:us-east-1:123:deliverystream/waf-logs"
],
"LoggingFilter": {
"DefaultBehavior": "KEEP",
"Filters": [{
"Behavior": "KEEP",
"Conditions": [{"ActionCondition":{"Action":"BLOCK"}}],
"Requirement": "MEETS_ANY"
}]
}
}'WAF 部署架构模式
正确部署 AWS WAF 需要了解应在架构中的哪个位置挂载它。对于面向互联网的应用,请将 WAF 挂载到 CloudFront,这样就能在边缘位置、流量到达源站之前进行检查——攻击会在消耗源站带宽之前被拦截。对于内部 API,或不使用 CloudFront 的情况,请将 WAF 挂载到 ALB。对于通过 API 网关公开的 API,可以在 API 网关级别挂载 WAF。您可以同时将 WAF 挂载到多个资源上——例如 CloudFront 分配和其后端的 ALB——以实现纵深防御,但检查成本也会翻倍。
# WAF attachment points:
# 1. CloudFront distribution (global edge, CLOUDFRONT scope)
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123:global/webacl/my-acl/abc \
--resource-arn arn:aws:cloudfront::123:distribution/EXAMPLEID
# 2. ALB (regional, REGIONAL scope)
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123:regional/webacl/my-acl/xyz \
--resource-arn arn:aws:elasticloadbalancing:us-east-1:123:loadbalancer/app/my-alb/abc
# 3. API Gateway REST API
# 4. AppSync GraphQL API
# 5. Amazon Cognito User Pool适用于多账户 WAF 的 Firewall Manager
AWS 防火墙管理器可在 AWS Organization 的所有账户中集中管理 WAF、Shield Advanced、Network Firewall 和安全组策略。您只需在 Firewall Manager 中定义一次 WAF 规则,这些规则就会自动应用到所有成员账户中的 ALB、CloudFront 分配和 API 网关,包括新创建的资源。如果某个成员账户部署了新的 ALB,Firewall Manager 会自动关联 WAF Web ACL。这样无需依赖各团队分别正确配置 WAF,即可确保整个组织统一执行安全策略。
# Create Firewall Manager WAF policy
aws fms put-policy \
--policy '{
"PolicyName": "org-wide-waf-policy",
"SecurityServicePolicyData": {
"Type": "WAFV2",
"ManagedServiceData": "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"managedRuleGroupIdentifier\":{\"vendorName\":\"AWS\",\"managedRuleGroupName\":\"AWSManagedRulesCommonRuleSet\"},\"ruleGroupArn\":null,\"overrideAction\":{\"type\":\"NONE\"},\"excludeRules\":[],\"ruleGroupType\":\"ManagedRuleGroup\"}]}"
},
"ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer",
"IncludeMap": {"ACCOUNT": []},
"ExcludeResourceTags": false,
"RemediationEnabled": true
}'快速检查
测试您对本课 AWS Solutions Architect (SAA-C03) 相关概念的理解。
课程回顾
本课您学到了:AWS WAF 会过滤第 7 层 HTTP 流量,以拦截 SQL 注入、XSS、机器人并限制滥用 IP 的请求速率;Shield Standard 提供自动的第 3/4 层 DDoS 防护,而 Shield Advanced 还提供响应团队支持和成本保护;以及 Network Firewall 提供 VPC 级别的有状态流量检查,并支持域名过滤和 IPS 规则。Firewall Manager 会在所有账户中强制执行策略。恭喜您完成安全架构部分的学习!
常见问题解答
「WAF、Shield 与 Network Firewall」课时是免费的吗?
是的 — 「WAF、Shield 与 Network Firewall」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。
「WAF、Shield 与 Network Firewall」这节课中我会学到什么?
使用 AWS WAF 阻止 OWASP 前十类攻击,使用 Shield Standard 和 Advanced 防护 DDoS,并在 VPC 中部署有状态 Network Firewall 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Solutions Architect 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「WAF、Shield 与 Network Firewall」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Solutions Architect 课中编写并运行代码吗?
能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- KMS、ACM 与加密模式
- GuardDuty、Inspector 与 Macie
- Secrets Manager 与 Parameter Store
- WAF、Shield 与 Network Firewall