2026 AWS WAF实战教程:从零搭建Web应用防火墙防护

📅 · AWS 国际版实战教程 - ChengziCloud

一句话结论

Meta Description: AWS WAF实战教程,从零创建Web应用防火墙,防SQL注入/XSS/DDoS攻击,关联ALB/CloudFront/API Gateway,含定价对比表与常见问题解答。

本文要点
  • 为什么你的云服务器需要WAF?
  • AWS WAF定价:免费额度+按量计费详解
  • 控制台实战:5步创建你的第一个Web ACL
  • 高级防护策略:5个实战场景
  • CLI命令速查表
  • WAF规则管理最佳实践
  • AWS WAF vs 其他WAF方案横评

Meta Description: AWS WAF实战教程,从零创建Web应用防火墙,防SQL注入/XSS/DDoS攻击,关联ALB/CloudFront/API Gateway,含定价对比表与常见问题解答。

关键词: AWS WAF、Web应用防火墙、SQL注入防护、XSS防护、ALB WAF、CloudFront WAF、API Gateway WAF、AWS安全防护

一、为什么你的云服务器需要WAF?

AWS WAF(Web Application Firewall)是AWS官方提供的Web应用防火墙服务,可以过滤和监控HTTP/HTTPS请求,阻止恶意流量到达你的应用。它工作在OSI模型的第7层(应用层),专门针对SQL注入、XSS跨站脚本、路径遍历等常见Web攻击进行防护。

与传统防火墙只看端口和IP不同,WAF深入分析每个HTTP请求的内容——检查URL路径、查询参数、请求头和请求体,判断是否包含攻击特征。这使它成为保护Web应用的最后一道关键防线。

决策口诀:有Web应用就开WAF,没有例外。 3分钟能开,能挡80%的自动化扫描攻击。

AWS WAF有三种部署模式,根据你的架构选择:

部署模式适用场景关联服务特点
WAF on CloudFrontCDN加速的静态/动态网站CloudFront全球边缘节点防护,延迟最低
WAF on ALB后端应用服务器负载均衡Application Load Balancer覆盖所有后端实例,统一策略
WAF on API GatewayREST/HTTP API接口API Gateway保护API端点,防滥用

二、AWS WAF定价:免费额度+按量计费详解

AWS WAF的定价模式相对透明,核心费用由三部分组成:Web ACL规则数、Web ACL请求处理费、以及托管规则费用。

2.1 基础费用结构

费用项价格(us-east-1)说明
每个Web ACL$5.00/月固定费用,每个ACL含100条规则
每条自定义规则$1.00/月超过100条后每条加收
请求处理费$0.60/百万次每个Web ACL单独计费
AWS托管规则(基础)$0(免费)基础规则集免费
AWS托管规则(高级)$0.30-0.75/百万次基于使用量
第三方规则(如F5)$1.50+/百万次按供应商定价

2.2 与其他方案价格对比

方案月费(1000万请求)优势劣势
AWS WAF(自定义规则)≈$11与AWS生态无缝集成,3分钟部署规则数限制
AWS WAF(托管规则)≈$14-16开箱即用,持续更新额外费用
Cloudflare Pro$20免费DDoS防护,易用非AWS原生
Cloudflare Business$200高级WAF,SLA费用高
自建ModSecurity≈$0完全控制,免费运维成本高,需专业人员

💡 省钱建议: 如果你的流量在1000万请求/月以内,AWS WAF自定义规则的月费仅$11左右,加上CloudFront免费套餐100万请求/月,性价比极高。超过1亿请求/月才需要考虑更高级的方案。

三、控制台实战:5步创建你的第一个Web ACL

3.1 进入WAF控制台

登录AWS管理控制台,搜索"AWS WAF"或直接访问 https://console.aws.amazon.com/wafv2/。选择区域:如果保护CloudFront,选择"Global(CloudFront)";如果保护ALB,选择你的ALB所在区域。

3.2 创建Web ACL

点击"Web ACLs" → "Create web ACL",填写以下信息:


Name: my-web-acl
Description: Protection for my web application
Resource type: 选择你要保护的资源类型
  - Application Load Balancer
  - Amazon API Gateway REST API
  - Amazon CloudFront distribution
  - AWS App Runner service
  - Amazon Cognito user pool
  - AWS AppSync GraphQL API

3.3 添加默认动作

  • Block(阻止):默认阻止所有请求,只有明确允许的才能通过(白名单模式)
  • Allow(允许):默认放行所有请求,只阻止已知恶意的(黑名单模式)

💡 建议: 大多数场景选择"Allow"作为默认动作,然后添加规则阻止特定攻击。白名单模式误杀率高,只适合内部系统。

3.4 添加规则

点击"Add rules",你可以选择:

AWS托管规则(推荐新手):


规则名: AWS-AWSManagedRulesCommonRuleSet
类型: AWS managed rule group
动作: Block

常用托管规则集:

规则集名称防护内容推荐场景
AWSManagedRulesCommonRuleSetSQL注入/XSS/路径遍历所有网站必装
AWSManagedRulesKnownBadInputsRuleSetLog4j/Shellshock等已知漏洞所有应用必装
AWSManagedRulesSQLiRuleSetSQL注入专项数据库驱动的应用
AWSManagedRulesBotControlRuleSet机器人/爬虫管控有反爬需求的网站
AWSManagedRulesPHPRuleSetPHP特定攻击PHP应用
AWSManagedRulesWordPressRuleSetWordPress攻击WordPress站点

自定义规则(高级用户):


规则名: block-specific-country
类型: IP set
条件: Country = CN (或你需要阻止的国家)
动作: Block

3.5 关联到资源

创建完成后,在Web ACL详情页点击"Resources" → "Add AWS resources",选择你要保护的ALB/CloudFront/API Gateway,关联即可生效。

四、高级防护策略:5个实战场景

4.1 场景一:防SQL注入和XSS

在Web ACL中添加以下规则组合:


{
  "Name": "SQLi-XSS-Protection",
  "Priority": 1,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesSQLiRuleSet"
    }
  },
  "Action": { "Block": {} },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "SQLi-Metrics"
  }
}

4.2 场景二:速率限制防DDoS

创建自定义速率规则,限制单个IP的请求频率:


规则名: rate-limit-per-ip
类型: Rate-based rule
速率限制: 2000次/5分钟
动作: Block
适用范围: 单个IP地址

当某个IP在5分钟内发送超过2000个请求,AWS WAF会自动阻止该IP的后续请求,直到冷却期结束。

4.3 场景三:地理位置限制

如果你的应用只服务特定国家/地区,可以设置地理过滤:


规则名: geo-restriction
类型: Geo match
允许的国家: US, JP, SG, HK
默认动作: Block

4.4 场景四:保护API端点

对于REST API,添加针对API滥用的规则:


规则名: api-abuse-protection
类型: Rate-based rule
速率限制: 500次/分钟
适用范围: 单个API key
动作: Block

4.5 场景五:日志记录和监控

启用WAF日志记录到S3或CloudWatch Logs,便于事后分析:


// 使用CLI启用日志记录到CloudWatch
aws wafv2 put-logging-configuration \
  --logging-configuration \
    ResourceArn="arn:aws:wafv2:us-east-1:ACCOUNT:regional/webacl/my-web-acl/ID" \
    RedactedFields=[] \
    LogDestinationConfigs=["arn:aws:logs:us-east-1:ACCOUNT:log-group:aws-waf-logs-my-web-acl"]

五、CLI命令速查表

操作CLI命令
列出所有Web ACLaws wafv2 list-web-acls --scope REGIONAL
创建Web ACLaws wafv2 create-web-acl --name my-acl --scope REGIONAL --default-action Block={}
添加规则aws wafv2 update-web-acl --web-acl-id ID --rules file://rules.json
关联资源aws wafv2 associate-web-acl --web-acl-arn ARN --resource-arn ALB_ARN
查看请求日志aws wafv2 get-sampled-requests --web-acl-arn ARN --rule-metric-name METRIC --time-window StartTime=...,EndTime=... --max-items 100

六、WAF规则管理最佳实践

6.1 规则优先级策略

AWS WAF按照规则优先级从低到高依次匹配,一旦某个规则触发了Block或Allow动作,后续规则不再执行。因此,规则的排列顺序直接影响防护效果。建议按照以下优先级排列规则:


优先级1: 白名单规则(允许信任的IP段)
优先级2: 托管规则集(通用防护)
优先级3: 自定义规则(业务特定防护)
优先级4: 速率限制规则(防DDoS)
优先级5: 默认动作(Allow或Block)

6.2 监控与调优

部署WAF后的前两周是关键调优期。你需要持续关注以下指标:

  1. 被阻止的合法请求:如果有正常用户反馈访问异常,检查WAF日志中是否有误拦截
  2. 攻击拦截统计:通过CloudWatch仪表板查看各类攻击的拦截数量,了解你面临的威胁类型
  3. 规则命中率:低命中率的规则可能是冗余的,可以考虑移除以减少处理开销

使用以下命令可以查看规则命中情况:


// 查看特定规则的采样请求记录
aws wafv2 get-sampled-requests \
  --web-acl-arn "arn:aws:wafv2:us-east-1:ACCOUNT:regional/webacl/my-acl/ID" \
  --rule-metric-name "SQLi-Metrics" \
  --time-window StartTime=$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ),EndTime=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
  --max-items 100

6.3 费用优化技巧

WAF的费用主要来自三部分,每一部分都有优化空间:

  1. Web ACL数量:尽量将多个资源合并到同一个Web ACL管理,减少每个$5/月的固定支出
  2. 规则数量:每条自定义规则$1/月,用规则组合(Rule Groups)将多个逻辑规则打包,减少单条计费
  3. 请求处理费:通过CloudFront缓存减少回源请求,从而降低到达WAF的请求数量

一个典型的优化方案:将静态资源通过CloudFront缓存(缓存命中不计WAF请求费),只对动态API请求计费。如果静态资源占比70%,WAF费用可以降低约70%。

七、AWS WAF vs 其他WAF方案横评

维度AWS WAFCloudflare WAFAkamai WAF自建ModSecurity
部署速度5分钟10分钟1-2天数小时
月费(1000万请求)$11$20-200$500+$0
托管规则✅ 免费基础✅ Pro含✅ 企业级❌ 需自行维护
自定义规则✅ 50条/ACL✅ 有限✅ 完全✅ 完全
AWS集成✅ 原生⚠️ 需配置⚠️ 需配置❌ 无
学习曲线中等低高高
适合场景AWS用户首选多云/混合大型企业预算极低

八、常见问题 FAQ

Q: AWS WAF能防住DDoS攻击吗? A: AWS WAF可以防护L7层(应用层)DDoS攻击,如HTTP flood、慢速攻击等。但对于L3/L4层的网络流量DDoS,你需要配合AWS Shield Standard(免费)或Shield Advanced($3000/月)。建议WAF + Shield组合使用,覆盖所有层级的DDoS防护。

Q: 启用WAF后网站变慢了怎么办? A: 正常情况下WAF引入的延迟在1-3ms以内。如果明显变慢,可能是规则匹配导致的。检查是否有过于复杂的正则表达式规则,或者使用了太多检查点(同时检查header+body+URL)。优化建议:减少规则数量,使用托管规则代替自定义正则,启用CloudFront边缘缓存减少回源请求。

Q: AWS WAF和AWS Shield有什么区别? A: AWS WAF主要防护Web应用层攻击(SQL注入、XSS等),工作在HTTP/HTTPS层面。AWS Shield防护DDoS攻击,分为Standard(免费,L3/L4层)和Advanced($3000/月,L7层+响应团队)。对于大多数Web应用,WAF + Shield Standard就足够了。

Q: WAF规则数有限制吗? A: 每个Web ACL最多50条自定义规则,每个Web ACL最多包含5个托管规则组。如果你需要更多规则,可以创建多个Web ACL分别保护不同的资源,或者使用规则组来合并规则。

Q: 可以测试WAF规则效果吗? A: 可以。AWS WAF提供三种测试方式:(1) 在控制台使用"Rule groups"测试页面模拟攻击请求;(2) 使用aws wafv2 get-sampled-requests查看被拦截的真实请求;(3) 使用AWS Firewall Manager在测试环境中先验证规则再推送到生产环境。

Q: WAF日志会影响性能吗? A: WAF日志记录对性能的影响极小(<1ms),但会产生存储费用。建议:(1) 只记录被阻止的请求(减少日志量);(2) 使用CloudWatch Logs设置日志保留策略(如保留30天);(3) 定期分析日志,识别攻击模式并优化规则。

⚠️ 文中价格为 2026 年参考价,实际费用随区域和官方调价变动,请以 AWS 官网为准。

🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。

📖 延伸阅读:AWS IAM权限实战指南 | AWS VPC网络实战指南 | AWS CloudWatch监控告警指南

本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多