1.
概述:基础普惠版能做什么
1) 阿里
云WAF基础普惠版主要提供基于规则的限流、防刷、IP黑白名单、UA头识别等基础防护能力。
2) 适用于中小网站、API接口、单域名电商与内容站点的初级防护场景。
3) 支持在接入CDN或不接入CDN的情况下对源站请求速率进行控制,减轻原服务器压力。
4) 常见防护对象包括登录接口、搜索接口、商品列表翻页、图片抓取等高频请求点。
5) 本文侧重于实操配置、测试手段以及量化效果(含服务器真实配置数据)。
2.
环境与前提(服务器/VPS/域名/CDN 配置)
1) 源站:Linux VPS(Ubuntu 20.04),CPU 4核,内存 8GB,带宽 100Mbps,公网IP 1.2.3.4。
2) Web服务:Nginx 1.18,worker_processes 4,keepalive_timeout 65,gzip 已开启。
3) 域名:example.com,已在阿里云解析并接入阿里云CDN(节点加速)。
4) WAF接入方式:CDN 回源使用域名,WAF 在CNAME层拦截,WAF模式为阻断(Block)+限流策略。
5) 测试工具:wrk(10线程、500并发、持续60秒)和自研抓取脚本用于模拟刷流量。
3.
限流配置示例(基础普惠版 操作步骤与参数)
1) 规则目标:对 /api/search 接口进行限流,针对单IP与URI同时生效。
2) 策略示例A(短时防峰):统计周期 10秒,阈值 50 次,超过后返回 429(限速)并记录日志。
3) 策略示例B(会话保护):统计周期 60秒,阈值 200 次,超过后对该IP封禁 1 小时。
4) 配置步骤:WAF控制台→策略管理→新增自定义策略→选择目标URL正则(^/api/search.*$)→填写阈值与动作。
5) 实际规则名与优先级:Rule_Search_ShortWindow(优先级100),Rule_Search_LongWindow(优先级200),同时启用并设置告警通知。
4.
防刷配置示例(UA/Referer/签名/验证码配合)
1) UA与Referer过滤:在WAF白名单放行已知爬虫(Bing/Google),黑名单屏蔽常见爬虫伪造UA。
2) Header规则:要求请求携带自定义Header(X-Client-App),缺失则限流或触发二次校验。
3) 接口级验证码:对登录与下单接口,触发阈值后返回验证码页面或JS挑战(基础版可用简单验证码回源)。
4) Cookie/Token校验:对API增加时间戳签名,WAF结合自定义规则拦截无签名或签名过期请求。
5) 示例策略:对 /login 10秒内超过 20 次的IP直接返回 403,并在一小时内列入观察黑名单。
5.
测试方法与效果评估(含量化数据展示)
1) 测试场景:使用 wrk -t10 -c500 -d60s 对 /api/search 持续压测,模拟爬虫行为(不携带合法Header)。
2) 测试前指标(未开WAF限流):记录 Origin CPU、平均延时、成功率、后端负载。
3) 测试后指标(启用限流+防刷):记录被拦截数量、真实RPS下降、后端资源变化。
4) 结论方法:对比被WAF拦截量与源站CPU、95%响应时间来评估效果。
5) 以下表格为测试前后对比(60秒压测,数据为实测示例):
| 指标 |
开启WAF前 |
开启WAF后 |
| 总请求数(60s) |
72,000 |
72,000 |
| 被WAF拦截/拒绝 |
0 |
28,400 |
| 到达源站请求数 |
72,000 |
43,600 |
| 源站CPU峰值 |
85% |
34% |
| 95% 响应时间 |
550 ms |
120 ms |
| 成功率(200) |
99.9% |
60.7% |
6.
真实案例与运维建议
1) 案例:某中型电商(域名 shop.example.com),日常并发高峰时段被采集器恶意抓取,开启WAF限流后源站CPU从90%降至30%,并发峰值稳定。
2) 源站配置示例:Nginx upstream keepalive 32,worker_connections 8192,proxy_cache 配置 TTL 60s,减少动态回源。
3) 监控建议:结合阿里云监控(云监控)设置 WAF 告警(拦截率、异常请求增长);设置日志接入 OSS + SLS 做离线分析。
4) 调优要点:从宽到严逐步降低阈值,先对非关键接口试运行规则,再推广到全站;对误拦情况做白名单处理。
5) 运维流程:规则变更需走发布流程(测试环境→灰度→全量),并保存规则版本以便快速回滚,定期清理黑名单并检查误杀率。