本文目录导读:

配置WAF(Web应用防火墙)规则的核心目标是拦截恶意流量(如SQL注入、XSS、CC攻击),同时放行正常用户,不同的WAF产品界面略有差异,但底层逻辑是相通的。
以下是通用的WAF规则配置方法论和一个典型的配置步骤示例。
核心配置原则(方法论)
在动手配置前,请记住这3个原则:
- 先观察,后拦截:不要一开始就开启严格的拦截模式,建议先用“仅记录”模式运行1-3天,观察误报情况。
- 白名单优先:对信任的IP、CDN回源IP、内部管理后台IP,优先配置白名单,避免被误封。
- 分层次防御:不要只用一条规则解决所有问题,通常从:全局规则 (\to) 路径规则 (\to) 速率限制 (\to) 自定义规则,层层递进。
典型配置步骤(以云WAF/反向代理WAF为例)
假设你刚接入WAF,准备上线一个网站(www.example.com)。
第1步:添加防护域名并完成接入
- 操作:在WAF控制台添加
www.example.com。 - 配置:源站IP/域名(你的真实服务器地址)、端口(80/443)、HTTPS证书。
- 完成标志:把DNS解析切换到WAF分配的CNAME,等待生效。
第2步:配置基础防护规则(OWASP Top 10)
这是WAF的核心功能,通常为开箱即用。
- SQL注入防护:开启,通常设置模式为“拦截”,初期可设为“告警”。
- XSS跨站脚本:开启,可以拦截反射型XSS或存储型XSS。
- 命令执行/文件包含:开启。
- 非法请求方法(如PUT/DELETE):开启(除非你的API需要使用这些方法)。
- 处理方式:大部分云WAF提供“宽松”、“标准”、“严格”三档,建议从“标准”开始。
第3步:配置自定义规则(针对特定业务或攻击)
当基础规则无法满足需求时,需要手写自定义规则,语法通常是:匹配条件 + 执行动作。
示例场景1:拦截某个恶意IP段(如 - )
- 条件:来源IP 属于 172.16.0.0/24。
- 动作:拦截,返回403或443。
示例场景2:仅允许特定国家来源访问(防海外扫描)
- 条件:GeoIP 不等于 “中国”。
- 动作:拦截(API类业务常用此招)。
示例场景3:保护登录接口(防撞库/刷接口)
- 条件:URI 包含
/api/login且 参数中连续5秒内出现超过10次不同IP。 - 动作:限速或滑块验证(Caprcha)。
第4步:配置CC攻击防护(速率限制)
这是防止正常网页被刷爆的关键。
- 总开关:开启。
- 全局限速:单个IP每秒访问总次数(如:常规页面100次/秒,超过则返回503)。
- 路径级限速:对敏感路径单独设置。
/api/query:限制 5次/秒(高频查询可能是爬虫或攻击)。/login:限制 3次/分钟(防止暴力破解)。
第5步:配置白名单(最重要的防误封操作)
在规则生效前,先放行“自己人”。
- IP白名单:公司出口IP、运维IP、第三方支付回调IP。
- URL白名单:不需要安全检查的路径(如:
.well-known/acme-challenge/用于SSL验证)。 - User-Agent白名单:特殊的爬虫(如:百度蜘蛛、Googlebot),或者你公司内部软件。
- 位置:通常位于规则列表的最上方(优先级最高)。
第6步:观察与调优
配置完成后,不要直接上线。
- 查看日志:进入WAF的“攻击日志”或“访问日志”。
- 重点关注:是否有“误拦截”?比如用户正常提交文章被SQL注入规则拦截(因内容含“
or 1=1”)。 - 处理误报:
- 方式1:将该URL加入白名单(最简单粗暴)。
- 方式2:创建排除规则(精细调整,如:对该参数
body关闭SQL注入检测)。
高频场景配置案例
| 场景 | 核心配置动作 | 备注 |
|---|---|---|
| 防WordPress暴力破解 | 限速 /wp-login.php 2. 拦截非 wp-login路径的POST请求 |
配合插件更佳 |
| 防API被刷 | 自定义规则:限制 X-Api-Key 缺失的请求 2. 限速: /api/v1/ 路径 3. 版本限制 |
后端也要做鉴权 |
| 防恶意爬虫 | 限制高频访问IP 2. 验证UA头 3. 开启JavaScript挑战(人机验证) |
对SEO友好很重要 |
| 防HTTP慢速攻击 | 开启WAF内置的“连接保护”或“协议完整性检测” | 通常默认开启 |
常见踩坑点提醒
- 忘记配TLS/SSL证书:WAF回源使用HTTP会导致安全问题。
- 白名单优先级过高:如果你把整个路径加入了白名单,那么所有防护规则对此路径都失效了。
- 忽略WebSocket:某些基于WebSocket的实时应用(如在线客服),需在WAF中单独配置放行。
- CDN/WAF/服务器三层叠加:如果在源站Nginx也配置了IP黑名单,同时WAF也配置了,容易混淆排查。
总结建议
- 第一次使用:开启 基础Web防护=标准模式,CC防护=使用系统默认阈值,上线后观察24小时。
- 遇到误报:不要直接关掉整个规则,而是创建例外规则(针对特定路径或参数)。
- 遇到漏报(攻击未拦截):使用自定义规则补充,或者开启更严格的防护模式(如严格模式)。
如果你用的是具体某款产品(如阿里云WAF、Cloudflare、AWS WAF),请告诉我名字,我可以给你更具体的操作界面指引。