WAF 与安全
配置 WAF 托管规则集、自定义防火墙规则、速率限制、5秒盾以及防盗链、地区/UA 名单等访问控制。
每个 CDN 域名都有一个「防火墙」页面,用来集中管理该域名在边缘节点上的安全策略。路径:CDN管理 → 域名管理 → 点击域名 → 防火墙(控制台地址 /cdn/domains/<域名>/firewall)。
防火墙页面包含四个标签页:
| 标签页 | 用途 |
|---|---|
| 规则配置 | 自定义防火墙规则、WAF 预设规则集、自定义 WAF 评分规则 |
| 访问控制 | 防盗链、地区 / ASN 封禁、User-Agent 名单、访问鉴权、5秒盾(UAM)、连接防护 |
| WAF 分析 | 拦截与事件统计(见 日志与分析) |
| 事件日志 | 逐条查看被拦截、被质询的请求 |
配置保存后会自动下发到边缘节点,通常几秒到几十秒内生效,不需要清除缓存。
WAF 预设规则集
WAF(Web 应用防火墙)检查请求的 URI、查询参数、User-Agent、Referer、Cookie,以及表单和 JSON 格式的请求体,识别常见的攻击载荷。
打开 防火墙 → 规则配置,找到「WAF 预设规则集」卡片。
打开卡片右上角的总开关。
按类别展开,开启或关闭具体规则集:
规则集 说明 SQL注入防护 检测 SQL 注入载荷 XSS防护 检测跨站脚本载荷 路径遍历防护 检测 ../一类的目录穿越命令注入防护 检测操作系统命令注入 LFI/RFI防护 检测本地 / 远程文件包含 协议攻击防护 检测异常或畸形的 HTTP 请求 扫描器检测 识别常见漏洞扫描器 恶意机器人防护 识别已知的恶意爬虫 在「CRS 引擎设置」中选择 检测模式:
- 拦截(active):命中后直接返回
403,并记录事件。 - 仅记录(simulate):只记录、不拦截。适合上线新规则前先观察误报。
- 拦截(active):命中后直接返回
点击 保存。
「异常分阈值」用于评分类规则:每条命中的规则累加分值,请求总分达到阈值才拦截。默认值为 5,值越低越敏感。
WAF 是套餐功能。撰写本文时,CDN 专业版和企业版包含 WAF,免费版和起步版不包含;以套餐页面为准。套餐不含 WAF 时,即使打开开关也不会在边缘生效。
第一次启用时,建议先用「仅记录」模式运行一段时间,在 事件日志 中确认没有误拦正常业务请求,再切换为「拦截」。
自定义 WAF 评分规则
如果预设规则集覆盖不到你的场景,可以在「自定义 WAF 规则(评分)」卡片中补充规则:
- 检测位置:URI(含查询串)、PATH(路径)、查询参数、请求体、请求头、Cookie、User-Agent、请求方法。选择请求头或 Cookie 时可以指定名称。
- 匹配方式:正则匹配、SQL 注入(libinjection)、XSS(libinjection)。
- 动作:
- 拦截:命中即拦截,可指定状态码(默认
403)。 - 仅记录(计分):为请求累加「分值」,累计分达到上方的异常分阈值时拦截。
- 拦截:命中即拦截,可指定状态码(默认
自定义防火墙规则
自定义防火墙规则按「条件 + 动作」对请求进行处理,适合封禁 IP、按国家放行、保护登录接口等场景。
创建规则
- 在 规则配置 中点击 新增规则。
- 填写 规则名称;优先级 取值 1–9999,默认 100。
- 添加一个或多个 匹配条件。每个条件由「数据 + 键(可选)+ 运算符 + 值」组成,多个条件需 全部满足 才算命中。
- 选择 动作类型 并填写参数。
- 保存。规则列表中可以随时启用、停用或删除规则。
可用的匹配数据
| 数据 | 说明 |
|---|---|
| IP 地址 | 客户端 IP。配合「在列表中」使用时,值可以是单个 IP 或 CIDR 网段 |
| 国家代码 | ISO 3166-1 两位代码,如 CN、US |
| ASN | 自治系统号,如 13335 |
| URI 路径 / 路径 | 请求路径(不含查询串) |
| 主机名 | 请求的 Host |
| 请求方法 | GET、POST 等 |
| User-Agent / Referer | 对应的请求头 |
| 请求头 / Cookie / 查询参数 | 需要在「键」中填写名称 |
| 扩展名 | 文件扩展名,如 jpg |
运算符包括:等于、不等于、包含、不包含、以…开头、以…结尾、在列表中、不在列表中、正则匹配、大于 / 小于 / 大于等于 / 小于等于、存在、不存在。使用「在列表中」时,每行填一个值。
国家与 ASN 由客户端 IP 推断。个别 IP 无法识别时,相关条件不会命中。
动作
| 动作 | 效果 |
|---|---|
| 拦截 | 返回错误响应,状态码可设为 400–599,默认 403 |
| 放行 | 跳过 WAF 检查以及后续规则,常用于信任的 IP 或回调接口 |
| JS 质询 / 托管质询 | 向访客展示浏览器验证页(与 5秒盾相同的机制),验证通过后在有效期内不再质询 |
| 速率限制 | 按下文的参数计数,超限后执行处置 |
多条规则可能同时命中一个请求。请避免让条件重叠、动作相互冲突的规则同时生效(例如同一网段既「放行」又「拦截」),否则结果可能不符合预期。
API 示例
封禁一个网段:
curl -X POST "https://api.yeap.cloud/api/user/cdn/firewall-rules/create" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"domain_id": 123,
"name": "Block bad subnet",
"expression": {"op": "and", "conditions": [
{"collection": "IP", "op": "in", "var": ["203.0.113.0/24"]}
]},
"action": "block",
"action_config": {"status": 403},
"priority": 100,
"enabled": true
}'列出规则:GET /api/user/cdn/firewall-rules?domain_id=123;更新:POST /api/user/cdn/firewall-rules/update(带 id);删除:DELETE /api/user/cdn/firewall-rules/delete?id=<id>。
速率限制
速率限制通过动作类型为 速率限制 的防火墙规则实现。先用条件圈定要保护的请求(例如路径以 /api/login 开头),再设置:
- 请求数上限 与 窗口(秒):窗口内请求超过上限即视为超限。
- 限速维度:IP 地址、请求头、Cookie、URI 路径、国家。选择请求头或 Cookie 时需填写名称(如
X-Api-Key)。 - 作用域:「整域」表示按维度的每个取值分别计数(如每个 IP 一个计数器);「全局」表示所有命中该规则的请求共用一个计数器。
- 超限处置:拦截(返回
429)、人机质询、仅记录、延迟(tarpit,放慢响应但不拒绝)。
计数在各边缘节点上独立进行。访客的请求分散到多个节点时,全网实际放行的总量可能高于单个节点的上限。
访问控制
访问控制 标签页提供几个专用模块,各有独立开关,最后统一点击 保存访问控制。
防盗链(Referer 名单)
- 允许空 Referer、允许同域:直接访问或同站引用时放行。
- 白名单域名:每行一个,支持精确域名、通配(
*.example.com)和正则(以~开头)。白名单不为空时,Referer 必须命中其中之一。 - 黑名单域名:命中即拦截,优先于白名单。
- 仅保护后缀:只对这些扩展名生效,如
.jpg、.mp4;留空表示所有路径都生效。
地区 / ASN 封禁
分别设置国家、省 / 州(ISO 3166-2 代码)和 ASN 的黑名单与白名单,每行一个。黑名单命中即拦截;某一维度的白名单不为空时,只放行名单内的访客。多个维度之间是「且」的关系。
User-Agent 名单
设置默认动作(放行 = 黑名单模式,拦截 = 白名单模式)、空 UA 的处理方式、拦截状态码,再添加规则。规则自上而下匹配,第一条命中的规则决定结果。匹配方式支持包含、通配、正则、精确、前缀、后缀。
访问鉴权
可以设置 IP 白名单 / 黑名单(支持 CIDR),也可以要求请求通过 HTTP Basic 认证、参数 Token 或签名 URL(A/B/C/D 四种类型)校验。配置多种方法时,可选择「全部通过」或「任一通过」。
5秒盾 / 攻击模式(UAM)
| 模式 | 行为 |
|---|---|
| 关闭 | 不主动质询 |
| 自适应 | 平时不质询,仅在平台自动防护判定流量异常时质询 |
| 受攻击(5秒盾) | 所有访客先完成浏览器验证(工作量证明)再访问 |
| 强制验证码 | 所有访客先完成验证码;目前支持 captcha.la,需要填写 Site Key 和 Secret,未填写时降级为浏览器验证 |
可调参数包括 最短等待(秒)(建议 ≥5)、难度(建议 ≥15)、通行证有效期(秒);填 0 表示使用默认值。白名单中的 IP / CIDR 在任何模式下都直接放行;静态资源后缀 和 放行 Bot ASN 只在「自适应」模式下生效,在「受攻击」和「强制验证码」模式下会被忽略。
遭受 CC 攻击时,先切换到「受攻击(5秒盾)」,攻击结束后再切回「关闭」或「自适应」,以免影响 API 客户端和搜索引擎爬虫。
连接防护(Slowloris)
限制单个 IP 的最大并发连接数,并识别慢速请求攻击。可设置最低请求体速率、采样窗口、宽限期、最大空闲时间和请求体最长接收时间,0 表示不限制。