能力总览
边缘 WAF 该有的能力,且不会替你做任何决定
PingWAF 的防护按站点默认关闭。你需要什么就开什么,按自己的节奏推进,每一次变更都会被版本化。
检测
语义级引擎,而不是一长串正则
请求先被归一化,再经过签名、启发式与表达式评分,最后产出一个判决。
- 任何规则执行前先做归一化,编码技巧无法隐藏 payload。
- libinjection 负责 SQLi 与 XSS 启发式,其余交给 Aho-Corasick 多模式匹配。
- 支持 Cloudflare 风格表达式,例如 http.request.uri.path contains "/admin" 与 ip.src in {10.0.0.0/8}。
- 异常评分汇总所有命中,为每个请求给出唯一判决。
归一化 → 签名 → 表达式 → 异常评分
可用性
吸收洪峰,让真人继续访问
分层挑战可以挡住请求洪峰,而不必在用户面前竖起 CAPTCHA 墙。
- JavaScript 5 秒盾、工作量证明与交互式挑战。
- 放行 Cookie 使用 HMAC 签名,无法伪造,也无法跨站复用。
- 已验证 Bot 白名单与已知浏览器直通,保证爬虫与监控正常工作。
- 挑战策略按站点生效,某个域名的严格策略不会影响其他站点。
TLS 指纹与行为分析在路线图中。
访问
决定谁能到达源站
按地址与地域放行、拦截或挑战,并按请求维度限制滥用。
- IP 规则支持 block、allow、challenge 与 js_challenge,支持 CIDR、CSV 批量导入与命名规则。
- 全局 IP 组可由纯文本、JSON 或 Cloudflare IP 段订阅同步,按计划执行并上报错误。
- 按国家与 ASN 的地域限制,可选「未知国家一律拦截」。
- 按 IP、主机、路径、ASN、国家、请求头、Cookie 或查询参数限流。
流量
在边缘完成路由、负载均衡与缓存
源站池、路由与缓存和安全策略放在一起,规则与路由可以同步演进。
- 源站池支持轮询、最少连接、随机,以及按 IP、URL、路径、请求头、Cookie 或查询参数的一致性哈希。
- 路由支持前缀、精确匹配与正则,并可限定 IP 组,让同一路径对内网与合作伙伴呈现不同后端。
- 边缘缓存支持按站点磁盘配额、LRU 淘汰、stale-while-revalidate 与浏览器 TTL 控制。
- 支持请求头/路径/查询/响应体重写、Tera 自定义错误页,以及站点暂停(返回 503,证书继续可用)。
TLS
证书在边缘签发与轮转
ACME 运行在数据面,而控制面始终掌握每个 Agent 当前持有什么证书。
- 通过 HTTP-01 与 DNS-01 自动签发并续期 ACME / Let's Encrypt 证书。
- DNS-01 支持阿里云、Cloudflare、腾讯云 DNSPod、华为云与手工 DNS。
- 站点证书状态(有效、即将过期、已过期)通过心跳上报,并提供可搜索的 ACME 事件日志。
- 边缘强制 HSTS 与 HTTPS,双向 TLS 支持控制台签发客户端证书并即时吊销。
源站证书校验是一个显式开关,可按部署或按源站池设置。
可观测性
每个判决都留下痕迹
日志存放在你现有工具能查询的地方,被拦截的请求还可以重放为 curl 命令。
- 完整请求日志写入 Elasticsearch,支持请求体截断与 WAL 缓冲。
- 原始请求与响应保存在 PostgreSQL:请求头原样保留、请求体前缀、真实大小与截断标记。
- 基于 Agent 心跳上报的指标构建流量与攻击分析面板。
- 在控制面即可查看 Agent 健康度、缓存命中率与淘汰计数。
运维
一个控制台管理整个集群
配置有版本、Agent 可观测,控制台本身也被编译进二进制。
- JWT + bcrypt 认证、多租户隔离,并支持 Passkey(WebAuthn)登录。
- 配置版本化:可按条件列出快照、逐表对比与上一版本的差异,并在二次确认后回滚。
- 通过 rust-embed 内嵌英文、简体中文与日文控制台,无需单独部署前端。
- Agent 集群视图展示实时状态,系统接口可查看进程级 CPU 与内存归属。
评分
从异常评分到唯一判决
每个请求离开流水线时只带一个判决,日志记录的也正是这个判决。
| 判决 | 含义 | 边缘行为 |
|---|---|---|
| Pass | 没有规则越过阈值。 | 原样转发到源站。 |
| Monitor | 可疑,但低于拦截阈值。 | 继续转发并记录,便于在正式拦截前调优规则。 |
| Block | 评分越过拦截阈值。 | 返回 WAF 拦截页,并记录命中的规则。 |
| Challenge | 请求必须证明自己是浏览器。 | 下发 JS 或工作量证明挑战;通过后携带放行 Cookie 继续访问。 |
看看判决是怎么产生的
架构与 WAF 引擎文档完整描述了请求生命周期、规则求值与评分过程。