Repolode
fabriziosalmi

fabriziosalmi/caddy-waf

面向 Caddy Web 服务器的 Web 应用防火墙中间件,支持正则规则、IP/DNS/GeoIP 过滤和速率限制。

可替代:Cloudflare WAF

Star
876
Fork
37
未关闭 Issue
1
最近提交
3天前

这是什么?

caddy-waf 是一个用 Go 编写的 Caddy HTTP 处理器模块,用正则规则检查请求和响应内容。每条规则带有分值,当请求的累计分数达到可配置的异常阈值时即被拦截。检查覆盖请求头、请求体、响应头和响应体四个阶段。

除规则匹配外,它还支持 IP 与 CIDR 黑名单、DNS 黑名单、基于 MaxMind GeoLite2 的国家和 ASN 封锁,以及定期更新的 Tor 出口节点列表。它提供按 IP 统计的滑动窗口限流(可按路径匹配),支持自定义拦截响应和 JSON 格式的指标接口。规则与黑名单文件变更后会自动热加载。

该模块可通过 Caddyfile 或 JSON 配置,可用 xcaddy 构建、通过 caddy add-package 安装,也可以使用 Docker 镜像运行。项目采用 AGPL-3.0 许可证。

核心功能

  • 01基于 Go RE2 正则引擎的规则匹配,并为每条规则设置异常分值。
  • 02覆盖请求头、请求体、响应头和响应体的四阶段检查。
  • 03支持 IP 与 CIDR 黑名单以及 DNS 黑名单。
  • 04基于 MaxMind GeoLite2 数据库的国家和 ASN 封锁。
  • 05按 IP 的滑动窗口限流,可配置路径匹配。
  • 06支持 Tor 出口节点封锁,规则和黑名单文件支持热加载。

适用场景

  • 为 Caddy 站点配置规则集,防御常见 Web 攻击。
  • 按国家、ASN、IP 段或 Tor 出口节点封禁访问。
  • 在 Caddy 反向代理上对 API 接口进行限流。
  • 将 WAF 指标接入 Prometheus 或 Grafana 监控面板。

快速上手

  1. 1

    使用 xcaddy 安装模块

    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
  2. 2

    构建包含 caddy-waf 模块的 Caddy

    xcaddy build --with github.com/fabriziosalmi/caddy-waf
  3. 3

    验证 WAF 模块已可用

    ./caddy list-modules | grep waf

使用前须知

  • 采用 AGPL-3.0 许可证,这是一种 Copyleft 许可证,未必适合所有部署场景。
  • 需要 Go 1.26.0 或更新版本以及 Caddy v2.11.x 或更新版本。
  • 可选的 GeoIP 功能需要 MaxMind GeoLite2 数据库文件。

标签

常见问题

caddy-waf 是什么?
面向 Caddy Web 服务器的 Web 应用防火墙中间件,支持正则规则、IP/DNS/GeoIP 过滤和速率限制。 caddy-waf 是一个用 Go 编写的 Caddy HTTP 处理器模块,用正则规则检查请求和响应内容。每条规则带有分值,当请求的累计分数达到可配置的异常阈值时即被拦截。检查覆盖请求头、请求体、响应头和响应体四个阶段。
caddy-waf 可以免费使用吗?用的什么许可证?
caddy-waf 以 AGPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
caddy-waf 还在维护吗?
活跃维护中。caddy-waf 最近一次提交是在 2026年10月17日。
caddy-waf 适合用来做什么?
为 Caddy 站点配置规则集,防御常见 Web 攻击。 按国家、ASN、IP 段或 Tor 出口节点封禁访问。 在 Caddy 反向代理上对 API 接口进行限流。 将 WAF 指标接入 Prometheus 或 Grafana 监控面板。
caddy-waf 怎么安装和运行?
使用 xcaddy 安装模块: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest 构建包含 caddy-waf 模块的 Caddy: xcaddy build --with github.com/fabriziosalmi/caddy-waf 验证 WAF 模块已可用: ./caddy list-modules | grep waf
在哪里获取 caddy-waf?
源代码和安装说明在 GitHub 上:https://github.com/fabriziosalmi/caddy-waf

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目