1.
概述:目标与防护思路
- 目标:在不影响正常用户体验的前提下,有效缓解CC(HTTP Flood / Slowloris等)与常见应用层攻击(XSS、SQL注入、恶意爬虫)。
- 思路小分段:先识别(日志+阈值),再防护(限速、挑战、封禁),最后优化(白名单、灰度放行与回放测试)。
2.
准备工作:开通与环境检查
- 控制台路径:登录阿里云控制台 → 产品与服务 → Web 应用防火墙(WAF)。
- 检查项小分段:确认已绑定域名与证书,流量已通过 WAF(CNAME或负载均衡接入),开启访问日志(日志服务或SLS)。
3.
开启基础防护策略
- 控制台操作小分段:WAF 控制台 → 网站防护 → 防护设置 → 打开“自动策略”和“常规策略”。
- 建议:先启用“恶意请求拦截”和“CC 防护模板(默认)”作为基础层。
4.
配置CC防护:速率与阈值设计
- 步骤1:WAF → 网站防护 → CC 防护 → 添加自定义规则。
- 步骤2小分段:设置粒度(全站/域名/某路径),选择统计维度(单IP、IP段、UA),设置阈值(如60次/60秒)。建议从高阈值开始逐步降到无误报点。
5.
行为验证:JS挑战与验证码
- 开启位置:WAF → 网站防护 → 行为挑战 → 启用 JS 验证或滑动/图形验证码。
- 小分段:针对疑似机器人触发 JS 验证;对更高风险触发验证码。配置返回页面与重定向策略,避免破坏 API 接口。
6.
自定义规则:示例与表达式
- 示例1:限速规则(按 IP):条件:请求路径=/login,统计周期=60s,阈值=30,动作=验证码或直接封禁1小时。
- 示例2:请求特征拦截:条件:User-Agent为空 或 URI 包含 ../ 或 SQL 关键字,动作=拦截并记录。
7.
Bot 与爬虫管理
- 步骤小分段:启用 Bot 管理模块,设置爬虫指纹库与未知UA的降级策略。
- 建议:对抓取型流量采用速率限制+JS挑战,对明显的暴力爬虫直接加入黑名单。
8.
白名单与灰度放行
- 操作小分段:WAF → 网站防护 → 白名单管理。将可信CDN、搜索引擎IP、合作方IP加入白名单。
- 灰度策略:对易误判API路径启用“只告警不拦截”模式,观察7-14天后再正式启拦。
9.
日志、监控与告警配置
- 日志步骤:在WAF控制台开启“访问日志”并接入日志服务(SLS);创建索引与实时查询。
- 告警小分段:基于 SLS/云监控设置阈值告警(如QPS突增、拦截率异常),邮件/短信/钉钉通知。
10.
联动抗D和流量清洗
- 配置小分段:如遇大规模流量峰值,联动阿里云 Anti-DDoS Pro,将WAF后的流量切入清洗链路。
- 实操提示:提前在防护计划中设置压力测试白名单与应急清洗联系人。
11.
接口化管理:API 示例(curl)
- 示例小分段:使用阿里云SDK或API设置规则。示例(伪命令):curl -X POST "https://waf.aliyuncs.com/?Action=AddCcRule" -d "Domain=example.com&Threshold=60&Period=60&Action=block"(需签名认证)。
- 建议:用SDK(Python/Java)封装规则变更并记录版本与变更审批。
12.
测试与验证步骤
- 测试小分段:使用ab、wrk或自建脚本进行压力测试,先在灰度域或测试环境执行。常用命令示例:wrk -t4 -c200 -d30s http://test.example.com/login。
- 验证点:观察 WAF 控制台的实时 QPS、命中规则和日志,确认误挡情况并回滚或调整阈值。
13.
细化规则与运维流程
- 小分段:建立规则库文档(规则ID、触发条件、创建者、测试结果)。定期复盘并清理无效规则。
- 自动化:通过 CI/CD 管理规则变更,生产变更需先在预发验证72小时再上线。
14.
常见问题与排查方法
- 小分段:如果误挡正常用户:检查UA、Referer与Cookie匹配条件,临时放行或白名单。
- 另:若日志缺失,确认域名是否正确走WAF并开启访问日志权限。
15.
优化建议与性能考量
- 小分段:尽量在 WAF 中做粗粒度拦截(IP/路径),对业务关键接口使用应用层精细规则;避免过多正则规则造成性能下降。
- 缓存与CDN:配合CDN做静态资源缓存,减轻 WAF 负载。
16.
常用规则模板示例汇总
- 小分段:登录限速(/login:60s内50次)、表单防刷(同一IP对同表单1分钟内5次)、热点页面防刷(全站QPS阈值)。
- 存档:制定每类规则的默认动作与建议阈值,便于快速启用。
17.
扩展:与应用安全团队协同
- 小分段:WAF是防线之一,建议与代码安全扫描、RASP、WAF日志结合建立闭环。
- 流程:发现攻击样本后,安全团队提取样本并推动开发修复根因后再从WAF放宽临时规则。
18.
问:在阿里云 WAF 上,如何设置一个对 /login 路径的 CC 限速规则?
- 答:步骤:WAF控制台→网站防护→CC防护→新建规则;选择生效域名和生效路径填写 /login;统计维度选“单IP”,周期选择60秒,阈值填写30;动作选择“验证码”或“直接屏蔽”;保存并先启用“仅告警”观察24小时,确认后改为“拦截”。
19.
问:误报较多时该如何排查并快速恢复正常访问?
- 答:先将相关路径切换为“仅告警”模式,查看 SLS 日志定位误判条件(UA、Referer、Cookie、特定参数);把误判IP或IP段临时加入白名单;优化或放宽该规则阈值并在预发环境验证,最后逐步恢复拦截。
20.
问:如何在API场景中避免 WAF 验证影响接口调用?
- 答:对API路径(如 /api/*)使用白名单(可信调用方IP或签名验证);若无法白名单,则用签名鉴权+自定义Header作为识别条件,在WAF规则中将带有特定Header视为可信请求并放行。