1. 开始之前
1.1 这是几件东西
很多人把「WAF」当成一个东西,实际部署后你会接触到四个组成部分。分清它们,后面所有的配置和排障才有落点:
| 组成 | 在哪里 | 干什么 |
|---|---|---|
引擎 waf | 你的服务器 | 反向代理主进程。接管站点流量,依次跑白名单 → 攻击规则 → 爬虫库 → 自定义规则 → 人机验证 → CC/等候室,放行的请求回源转发 |
定时任务 cron | 你的服务器 | 日志清理、统计聚合、等候室与人机验证记录维护 |
本地后台 admin | 你的服务器 | 管理界面(站点、规则、日志、统计),监听 49463 |
| 云平台 | 官网 | 注册账号、购买授权码、云规则库、共享爬虫库、技术论坛 |
关键设计:你的业务数据不出你的服务器。 MySQL 和 Redis 都是你自己的资产,引擎和云平台之间只传递授权信息与爬虫 IP 数据,通过签名接口(HMAC-SHA256 + 时间戳 + nonce 防重放)通信。你源站上有什么、用户请求了什么,云平台一概不知道。这也是 畅来WAF 和 SaaS 型 WAF 的根本区别——后者要求你把全部流量交给它的节点。
1.2 一个请求进来会发生什么
理解这条链路,后面「为什么被拦」「为什么没拦」的排查才不会乱:
TCP 连接 → 引擎按首字节识别 HTTP/HTTPS(同端口自动分流,HTTPS 按 SNI 选证书)
↓
按 Host 头匹配站点,按站点配置解析真实客户端 IP
↓
白名单:命中则按配置跳过「规则 / 人机验证 / CC」中的一项或多项
↓
URI 过长拦截(原始 >6KB 或解码后 >16KB)
↓
攻击防护:9 类 114 条内置规则,命中即拦
↓
爬虫 IP 库:命中即拦
↓
自定义规则:block / challenge / redirect / observe(observe 只记录不拦截)
↓
人机验证:没有有效凭证的请求进入挑战流程
↓
CC 限频 / 等候室排队
↓
反向代理回源(多源站按权重,Pro)
命中任何一层拦截都会渲染拦截页、不再往下走,并写一条攻击日志。所以看「攻击日志」里这条记录的命中规则,就能知道它死在哪一层。
1.3 核心概念速查
| 概念 | 一句话解释 | 详见 |
|---|---|---|
| 凭证(Cookie) | 人机验证通过后签发,之后凭它免验证 | 第 5 章 |
js_delay | JS 挑战档位,0/1/3/5 秒,0 秒档是透明注入 | 第 4 章 |
| 白名单 skip | 三种开关:跳规则 / 跳验证 / 跳 CC,可以只开其中一种 | 第 5 章 |
| observe | 只记录不拦截,用于新规则上线前灰度观察 | 第 6 章 |
| 爬虫 IP 库 | 被判定为脚本/破解工具的 IP 黑名单,命中即拦且不会自动解除 | 第 7 章 |
| 等候室 | 流量洪峰时让访客排队,排到队首放行,代替直接 503 | 第 5 章 |
client_ip_mode | WAF 如何识别真实访客 IP(直连 / CDN 场景),配错会全站误拦 | 第 4 章 |
1.4 免费版和 Pro 什么关系
同一套代码,编译期分叉(免费版二进制里不含 Pro 代码)。界面几乎一样,差异只有少数几处:Pro 多了「授权管理 / 指标分析 / 防线运营」三个菜单、条件组与更多匹配算子、四种人机验证形态、多源站负载均衡。完整对照见第 10 章。
本文档所有截图和操作步骤均以免费版为准,Pro 专属内容标 [Pro]。
1.5 阅读路径
- 只想跑起来:第 2 章 → 第 3 章 → 第 4 章,30 分钟内完成
- 站长/运维:加读第 5 章(防护配置)和第 8 章(排障)
- 精细运营:第 6、7 章,以及第 9 章的授权机制
下一步:2. 安装