barbacana-waf/barbacana

GitHub: barbacana-waf/barbacana

一个默认安全、配置简洁的 WAF 与 API 安全网关,解决 Web 入口的常见攻击拦截问题。

Stars: 2 | Forks: 0

Barbacana

Barbacana WAF:默认安全网关,设计简洁。

# Barbacana [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![Release](https://img.shields.io/github/v/release/barbacana-waf/barbacana)](https://github.com/barbacana-waf/barbacana/releases) [![Go](https://img.shields.io/github/go-mod/go-version/barbacana-waf/barbacana)](go.mod) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c0e61951b3094638.svg)](https://github.com/barbacana-waf/barbacana/actions/workflows/ci.yml) [![Go Report Card](https://goreportcard.com/badge/github.com/barbacana-waf/barbacana)](https://goreportcard.com/report/github.com/barbacana-waf/barbacana) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/barbacana-waf/barbacana/badge)](https://securityscorecards.dev/viewer/?uri=github.com/barbacana-waf/barbacana) Barbacana 是一个开源的 WAF 和 API 安全网关。它轻松保护你的 Web 应用程序和 API。 Web 应用程序防火墙([WAF](https://en.wikipedia.org/wiki/Web_application_firewall))位于互联网和你的应用程序之间。它检查每个 HTTP 请求是否存在已知攻击模式 — SQL 注入、跨站脚本、命令注入、路径遍历以及数百种其他攻击 — 并在恶意请求到达你的代码之前将其拦截。

How Barbacana sits between clients and your application

## 快速开始 编写一个最小配置: ``` # waf.yaml version: v1alpha1 routes: - upstream: http://app:8000 ``` 使用 Docker 运行: ``` docker run --rm -p 8080:8080 \ -v $(pwd)/waf.yaml:/etc/barbacana/waf.yaml:ro \ ghcr.io/barbacana-waf/barbacana:latest serve ``` Barbacana 监听 `:8080`,针对 OWASP CRS(500+ 条规则)检查传入请求,并仅将安全流量转发到运行在 `app:8000` 的应用程序。SQL 注入、XSS、远程代码执行、路径遍历和协议攻击默认全部拦截。 ## 为什么要使用 Barbacana? **部署即安全。** 从第一个请求开始,所有保护即生效。无需下载规则、无需编写策略、无需安全专业知识。 **使用人类可读的文件配置,无需 UI。** 路由、内容类型和例外情况全部为可读文本。你可以在某条路由上因误报禁用 `sql-injection-union` — 而不是使用 `SecRuleRemoveById 942100`。 **单一容器,无其他依赖。** 无数据库、无仪表板、无支付、无云账号。拉取镜像,指向你的应用程序,完成。 **内置自动 HTTPS。** 添加主机名后,Barbacana 会自动配置 [Let's Encrypt 证书](https://caddyserver.com/docs/automatic-https)。HTTPS、HTTP 到 HTTPS 重定向、证书续期 — 零配置。再也没有理由让应用程序以明文 HTTP 暴露在外。 ## 配置 真实应用需要不止一个路由。以下是包含三个路由的部署示例: ``` # waf.yaml version: v1alpha1 host: example.com # auto-TLS for this fully qualified domain name (FQDN) routes: - id: api match: paths: ["/api/*"] upstream: http://api:8000 accept: content_types: [application/json] methods: [GET, POST] rewrite: strip_prefix: /api openapi: spec: /specs/api.yaml disable: - sql-injection-union # exception to prevent false positives - id: uploads match: paths: ["/upload/*"] upstream: http://uploads:8000 accept: content_types: [multipart/form-data] multipart: file_limit: 20 file_size: 2MB allowed_types: [image/png, image/jpeg, application/pdf] - id: everything-else upstream: http://app:8000 ``` 路由按从上到下的顺序匹配: - **`api`** — 路径匹配 `/api/*` 的请求转发到 API 服务。仅接受 JSON 格式的 `GET`/`POST` 请求,转发前移除 `/api` 前缀,验证请求是否符合 OpenAPI 规范,并且仅为此路由启用一个例外(`sql-injection-union`)。 - **`uploads`** — 路径匹配 `/upload/*` 的请求仅接受 multipart 表单数据,限制每请求最多 20 个文件,且仅允许 2MB 的图片和 PDF 文件。 - **`everything-else`** — 其余流量的兜底路由。 对 `/api/users/123` 发起 `DELETE` 请求?拦截!尝试利用 SQL 注入上传恶意 XML 载荷?拦截!上传扩展名为 `evil.php.pdf` 的 PHP 文件?拦截!请求包含无效的 `Content-Type`?拦截! ## 没有任何应用是 100% 安全的 新的攻击技术不断涌现,某些威胁 — 比如体积型 DDoS、窃取凭证或应用程序逻辑漏洞 — 发生在 WAF 无法拦截的层面。 Barbacana 的作用是应用一套由 [OWASP Core Rule Set](https://coreruleset.org) 社区维护的 500+ 条检测规则 — 这些安全研究人员在过去二十年的真实攻击中不断完善这些模式。 Barbacana 确保这些规则始终开启、始终更新,并且始终位于你的应用程序与互联网之间。 ## 基于以下技术构建 - [Caddy](https://caddyserver.com) — HTTP 服务器、TLS、HTTP/2、HTTP/3、反向代理 - [Coraza](https://coraza.io) — WAF 引擎(纯 Go 实现,无 CGO) - [OWASP CRS v4](https://coreruleset.org) — 攻击检测规则 Barbacana 将这三者封装好,你无需学习其中任何一个。 ## 许可证 Apache 2.0
标签:API安全, AppImage, Docker, EVTX分析, Go语言, HTTP防护, JSON输出, WAF, Web应用防火墙, XSS, 云计算, 入侵防护, 反向代理, 命令注入, 安全中间件, 安全网关, 安全防御评估, 应用防护, 日志审计, 极简设计, 流量过滤, 漏洞情报, 程序破解, 网络安全, 规则引擎, 请求拦截, 路径遍历, 隐私保护, 默认安全