是的,阿里云 Web 应用防火墙(WAF)完全支持自定义规则。这是 WAF 的核心功能之一,允许您根据业务场景、攻击特征或特定需求,灵活地定义防护策略,以弥补默认防护规则的不足。
以下是关于如何配置自定义规则的详细说明:
1. 核心概念
在阿里云 WAF 中,自定义规则通常通过访问控制策略(Access Control Policy)来实现。您可以基于多种条件(如 IP 地址、URL 路径、HTTP 方法、请求参数、User-Agent 等)组合匹配,并设定相应的动作(如拦截、放行、验证码挑战、记录日志等)。
2. 配置步骤
您可以通过阿里云控制台进行图形化配置,具体流程如下:
第一步:进入 WAF 控制台
登录阿里云官网,进入 Web 应用防火墙 (WAF) 控制台。选择您需要配置的域名实例。
第二步:导航至访问控制
在左侧导航栏中,找到 安全设置 或 访问控制 模块(不同版本界面可能略有差异,通常在“防护配置”下),点击 自定义规则 或 访问控制策略。
第三步:创建新规则
点击 新增规则 或 添加策略,开始配置:
- 规则名称:为规则起一个易于识别的名称(例如:
Block-Scrapy-Crawler或Allow-Specific-Admin-IP)。 - 匹配条件:这是规则的核心,支持以下维度的组合:
- 来源 IP:指定单个或多个 IP 段(支持 CIDR 格式)。
- URL 路径:支持前缀匹配、精确匹配或正则表达式。
- HTTP 方法:如 GET, POST, PUT 等。
- 请求参数:指定特定的 Query String 或 Form Data 参数名/值。
- Header 信息:如 User-Agent、Referer 等。
- Cookie:针对特定 Cookie 的值进行匹配。
- 逻辑关系:支持 AND(同时满足)和 OR(满足其一)的逻辑组合,构建复杂的匹配逻辑。
- 执行动作:当流量命中规则时,采取的操作:
- 拦截:直接阻断请求,返回 403 状态码。
- 放行:跳过后续所有检测,直接放行(慎用,通常用于白名单)。
- 人机验证:弹出滑块或点选验证码,常用于疑似爬虫但未确认的场景。
- 仅记录:不阻断,仅将流量写入日志供分析。
- 优先级:如果多条规则同时命中,系统会根据优先级顺序执行(数值越小优先级越高,具体视版本而定)。
第四步:保存与生效
配置完成后,点击 保存。阿里云 WAF 的自定义规则通常是秒级生效的,无需重启服务。
3. 高级应用场景示例
- 屏蔽恶意爬虫:
- 条件:User-Agent 包含 "python-requests" 且 URL 路径包含 "/api/v1/data"。
- 动作:拦截。
- 保护后台管理入口:
- 条件:URL 路径以 "/admin/" 开头。
- 子条件:来源 IP 不在 公司办公网段(排除非信任 IP)。
- 动作:人机验证。
- API 接口限流:
- 条件:来源 IP 相同 且 单位时间内请求次数超过阈值(需结合 WAF 的频控规则使用)。
- 动作:拦截。
4. 注意事项与建议
- 测试模式:在正式开启“拦截”动作前,建议先设置为“仅记录”或“观察模式”,运行一段时间查看日志,确认误报率后再切换为拦截,避免影响正常业务。
- 性能影响:虽然 WAF 规则引擎经过优化,但过于复杂的正则表达式或过多的嵌套条件可能会轻微增加解析延迟。建议尽量使用简单的字符串匹配代替复杂正则。
- 规则冲突:注意规则之间的优先级。通常“放行”类规则应放在高优先级,确保白名单用户不受干扰;而“拦截”类敏感规则也需合理排序。
- CC 防护联动:自定义规则常与 WAF 自带的 CC 防护(频率限制)配合使用,形成多维度的防御体系。
如果您需要针对特定业务场景(如防止 SQL 注入变种、屏蔽特定地区流量等)的详细规则编写指导,可以提供更多细节,我可以为您生成具体的配置模板。
云小栈