今天给大伙儿推荐一个开源项目 —— 推荐一个 warden:Go 写的轻量级反向代理 WAF,单文件部署、内嵌管理后台。沃盾(warden)是一个用 Go 写的轻量级反向代理 WAF。它把自己放在业务服务前面,在 TCP / HTTP 两个 想深入了解的同学,建议收藏这篇。
项目地址:https://gitee.com/jxw1111/warden
📦 6 Parts + Conclusion
👉 滑动
PART 01
项目是什么
项目是什么
PART 02
核心功能
核心功能
PART 03
技术栈
TECH STACK · 技术选型
PART 04
架构设计
架构设计
PART 05
快速开始
QUICK START · 快速上手
PART 06
适用场景
适用场景
PART ///
写在最后
SUMMARY · 个人观点
01
PART
项目是什么
项目是什么
沃盾(warden)是一个用 Go 写的轻量级反向代理 WAF。它把自己放在业务服务前面,在 TCP / HTTP 两个层面完成连接限流、频率限制、CC 防护、IP 归属拦截与 WAF 规则检测,并内置一个无需额外部署前端的管理后台。
它主要解决小站(企业官网、学校站点、内网业务系统)常年被两类流量困扰的问题:一类是 CC / 爬虫高频刷量把后端打满;另一类是 /wp-admin、.env 这类扫描器探测。相比商业 WAF 的高成本和云 WAF 的 DNS 改造,warden 只需一个二进制文件,把 Nginx(或直接对外)的流量指向它即可。
其核心设计取向有三点:宁可多一次验证码也不要误杀真实用户;快路径优先,静态资源与可信会话直接放行;有状态但不失控,所有内存状态都有 TTL 与后台清扫协程。

架构图
02
PART
核心功能
核心功能
•WAF 检测(Coraza):基于 OWASP Coraza v3,兼容 ModSecurity / OWASP CRS 规则语法;内置脚本 UA 拦截、扫描器路径 / UA 拦截,支持 DetectionOnly 观察模式与 On 拦截模式。
•CC 防护(核心能力):可信 IP 快路、可信会话快路、新 IP 泛洪检测、行为检测、每 IP 限速、共享令牌桶;采用自研轻量点选数字验证码,验证通过即签发可信凭证。
•IP 归属拦截:基于离线 xdb 库识别 IP 地理与云厂商 / IDC 归属,可分别开关"国外 IP 拦截"与"云厂商 / IDC IP 拦截",无外部请求。
•频率限制与连接限制:热点路径限流、整站限流、/24 子网限流,以及在 TCP accept 阶段用令牌桶丢弃过量连接的 L4 连接限流。
•黑白名单:IP 白名单(CIDR)直通、IP 黑名单拦截,URL 白名单 / 黑名单支持正则。
•多站点反向代理:按 Host 头路由到不同上游,自动注入 X-Real-IP / X-Forwarded-For,后端可拿到真实客户端 IP。
•内嵌管理后台:Vue3 + Element Plus + ECharts 全部本地化,通过 go:embed 打进二进制,提供实时拦截指标、QPS / 拦截率趋势图与攻击日志查询。
•告警通知:SMTP 邮件 + 通用 Webhook + 钉钉 / 企业微信 / 飞书机器人,支持冷却时间避免告警风暴。

沃盾管理后台 - 仪表盘

沃盾管理后台 - WAF 规则
03
PART
技术栈
TECH STACK · 技术选型
•语言:Go 1.23+,编译产物为单个可执行文件;
•WAF 引擎:OWASP Coraza v3(兼容 ModSecurity / OWASP CRS);
•数据库:modernc.org/sqlite(纯 Go 实现,无需 cgo);
•管理前端:Vue3 + Element Plus + ECharts,经 go:embed 内嵌;
•验证码:自研轻量点选数字图形验证码;
•IP 归属:离线 xdb 库(IP 地理 + 云厂商 / IDC 归属)。
04
PART
架构设计
架构设计
warden 在请求进入业务后端之前,先经过一条由外到内的 HTTP 中间件链:先做 IP 黑名单、URL 白黑名单、IP 白名单的粗筛,再进入 CC 防护做泛洪 / 行为 / 限速挑战,接着是频率限制(热点 / 整站 / 子网 → 429),然后交由 Coraza WAF 做 OWASP CRS 规则检测,最后由多站点 Router 按 Host 反代到上游。
在 TCP 层,它在 accept 阶段就用令牌桶丢弃过量连接,根本不进入 HTTP 处理,从源头扛住连接泛洪。所有运行配置、攻击日志、可信 IP、防火墙封禁记录统一写入 SQLite(busy_timeout + WAL + 自动重试),重启后可恢复,既不会丢数据,内存状态也不会无界增长。
05
PART
快速开始
QUICK START · 快速上手
启动后用 curl http://127.0.0.1:81/healthz 做健康检查,管理后台默认在 http://127.0.0.1:9090(建议只监听本机)。
06
PART
适用场景
适用场景
•常年被 CC 刷量、扫描器探测困扰的企业官网、学校站点、内网业务系统;
•想用低成本自托管方案替代商业 / 云 WAF,又不愿改动现有 DNS 的中小团队;
•需要可视化拦截指标、攻击日志与在线配置,但不想额外部署前端的运维场景。
warden 把 L4~L7 防护、CC 挑战与可观测性一次性解决,部署时只需把流量指向它,是抵御脚本化 CC 与恶意探测的轻量首选。
评论