barbacana-waf/barbacana
GitHub: barbacana-waf/barbacana
一个默认安全、配置简洁的 WAF 与 API 安全网关,解决 Web 入口的常见攻击拦截问题。
Stars: 2 | Forks: 0
Barbacana WAF:默认安全网关,设计简洁。
# Barbacana
[](LICENSE)
[](https://github.com/barbacana-waf/barbacana/releases)
[](go.mod)
[](https://github.com/barbacana-waf/barbacana/actions/workflows/ci.yml)
[](https://goreportcard.com/report/github.com/barbacana-waf/barbacana)
[](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 注入、跨站脚本、命令注入、路径遍历以及数百种其他攻击 — 并在恶意请求到达你的代码之前将其拦截。
## 快速开始
编写一个最小配置:
```
# 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, 云计算, 入侵防护, 反向代理, 命令注入, 安全中间件, 安全网关, 安全防御评估, 应用防护, 日志审计, 极简设计, 流量过滤, 漏洞情报, 程序破解, 网络安全, 规则引擎, 请求拦截, 路径遍历, 隐私保护, 默认安全