用途
WAF Setup 用于部署和调优 Web 应用防火墙(Web Application Firewall),为面向公网的 Web 应用提供攻击防护。它适合以下场景:部署需要攻击防护的公网 Web 应用;满足 PCI-DSS、SOC2 等 Web 应用安全合规要求;拦截 OWASP Top 10 攻击类别(SQL 注入、XSS、CSRF 等);保护 API 免受滥用、注入和基于速率的攻击;在应用代码修复期间增加虚拟补丁层。
前置条件
- Web 应用位于负载均衡器或反向代理之后
- 使用 AWS WAF 需要 AWS 账户,使用 Cloudflare WAF 需要 Cloudflare 账户
- 自托管 WAF 需要编译了 ModSecurity 模块的 Nginx
- 可访问应用日志以调优规则并识别误报
- 理解 HTTP 请求/响应结构
主要能力
AWS WAF
可通过 AWS CLI 创建带托管规则的 Web ACL,示例命令使用 aws wafv2 create-web-acl,并配合 waf-rules.json 规则文件。规则配置示例包含:AWSManagedRulesCommonRuleSet、AWSManagedRulesSQLiRuleSet、AWSManagedRulesKnownBadInputsRuleSet 三个托管规则组,以及基于 IP 的速率限制规则(Limit 2000)、地理封锁规则(CountryCodes 为 KP、IR、SY)和拦截恶意 User-Agent(如 sqlmap)的规则。
创建后可将 WAF 关联到 Application Load Balancer 或 API Gateway,示例使用 aws wafv2 associate-web-acl 命令。同时提供 Terraform 配置示例,定义 aws_wafv2_web_acl 和 aws_wafv2_web_acl_association 资源,其中包含对 SizeRestrictions_BODY 规则的 count 覆盖以及速率限制规则。
Cloudflare WAF
通过 Cloudflare API 可列出可用 WAF 规则集、创建自定义 WAF 规则和配置速率限制。自定义规则示例包括:拦截查询字符串中的 SQL 注入模式(如 union select、1=1)、拦截路径遍历尝试(如 ..%2f、..%5c)、对高威胁评分访客发起质询(cf.threat_score gt 30)、拦截已知攻击工具(如 sqlmap、nikto)。速率限制示例针对 /api/ 路径,按 ip.src 特征,周期 60 秒、每周期 100 次请求、缓解超时 600 秒。同时提供 cloudflare_ruleset 的 Terraform 配置示例。
ModSecurity with Nginx
提供在 Ubuntu 上安装 ModSecurity 的 apt 命令,以及从源码编译的步骤。Nginx 配置示例展示通过 load_module 加载模块、在 http 和 location 级别启用 modsecurity 并指定规则文件。ModSecurity 主配置示例包含 SecRuleEngine、请求体/响应体处理、审计日志等设置,并引入 OWASP Core Rule Set。
OWASP CRS 部分提供下载安装命令、crs-setup.conf 定制(设置 paranoia_level、异常分数阈值、排除已知误报),以及创建排除规则文件的方法。还给出自定义 ModSecurity 规则示例:拦截攻击工具 User-Agent、拦截敏感路径访问(如 .git、.env、wp-admin)、按 IP 速率限制、拦截超大 Cookie、虚拟补丁拦截路径遍历、要求 POST 请求带 Content-Type。
WAF 调优工作流
提供一个 bash 脚本示例 waf-tune.sh,用于分析 ModSecurity 审计日志中的误报,输出触发最多的规则、被拦截最多的 URI、被拦截最多的 IP,以及高频拦截的误报候选规则。
使用方式
按所选方案执行对应命令或配置:AWS WAF 使用 AWS CLI 或 Terraform;Cloudflare WAF 使用 API 或 Terraform;自托管使用 Nginx + ModSecurity + OWASP CRS。建议先在检测/日志模式运行,调优后再切换为拦截模式。
适用场景
- 公网 Web 应用攻击防护
- 合规要求(PCI-DSS、SOC2)
- 拦截 OWASP Top 10 攻击
- API 滥用与注入防护
- 应用代码修复期间的虚拟补丁
限制与注意事项
资料中提供的故障排查表列出常见问题及原因:合法请求被拦截(CRS 规则误报)、WAF 未拦截攻击(规则处于仅检测模式)、启用 WAF 后延迟高(响应体检查开销)、AWS WAF 规则不匹配(规则优先级顺序错误)、ModSecurity 导致 nginx 崩溃(大请求内存耗尽)、Cloudflare WAF 拦截 API 调用(表达式过宽)、CRS 更新破坏应用(新规则触发既有流量)。
最佳实践包括:从检测/日志模式开始,调优后再切换为拦截;执行前至少调优 1-2 周;调优期间每日监控被拦截请求;定期更新托管规则集和 CRS;为应用特定攻击模式创建自定义规则;使用虚拟补丁防护已知 CVE;为每个端点设置合适的速率限制;维护带理由的排除规则文档;部署前用已知攻击载荷测试 WAF 规则;审计日志至少保留 90 天用于取证分析。
相关技能:dast-scanning(Web 安全测试)、ssl-tls-management(HTTPS 配置)、firewall-config(网络层防火墙)。
具体收费、价格、平台支持范围等资料暂未提供。