wallarm/api-firewall

GitHub: wallarm/api-firewall

基于OpenAPI和GraphQL规范的高性能API防火墙,通过正向安全模型验证请求响应并发现Shadow API。

Stars: 652 | Forks: 61

# Wallarm 开源 API 防火墙 [![Black Hat Arsenal USA 2022](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a0cec37aa2134316.svg)](https://www.blackhat.com/us-22/arsenal/schedule/index.html#open-source-api-firewall-new-features--functionalities-28038) API Firewall 是一款高性能代理,基于 [OpenAPI](https://wallarm.github.io/api-firewall/installation-guides/docker-container/) 和 [GraphQL](https://wallarm.github.io/api-firewall/installation-guides/graphql/docker-container/) 架构进行 API 请求和响应验证。它旨在保护云原生环境中的 REST 和 GraphQL API 端点。API Firewall 通过使用正向安全模型提供 API 加固,仅允许符合预定义 API 规范的请求和响应调用,同时拒绝其他所有内容。 API Firewall 的**关键特性**包括: * 通过拦截恶意请求保护 REST 和 GraphQL API 端点 * 通过拦截格式错误的 API 响应阻止 API 数据泄露 * 发现 Shadow API 端点 * 验证基于 OAuth 2.0 协议认证的 JWT access token * 将受损的 API token、密钥和 Cookies 加入黑名单 * AllowIPList - 通过定义允许的 IP 地址列表来限制对端点的访问 * 广泛的攻击防护:API Firewall 支持 ModSecurity 规则和 OWASP ModSecurity 核心规则集 该产品是**开源**的,可在 DockerHub 获取,并已获得 10 亿次(!!!)下载。为了支持该项目,您可以给该[代码库](https://hub.docker.com/r/wallarm/api-firewall)加星标。 ## 运行模式 Wallarm API Firewall 提供多种运行模式: * [`PROXY`](https://wallarm.github.io/api-firewall/installation-guides/docker-container/):根据 OpenAPI 3.0 验证 HTTP 请求和响应,并将匹配的请求代理到后端。 * [`API`](https://wallarm.github.io/api-firewall/installation-guides/api-mode/):根据 OpenAPI 3.0 验证单个请求,无需进一步代理。 * [`graphql`](https://wallarm.github.io/api-firewall/installation-guides/graphql/docker-container/):根据 GraphQL 架构验证 HTTP 和 WebSocket 请求,并将匹配的请求代理到后端。 ## 使用案例 ### 在拦截模式下运行 * 拦截不符合规范的可疑请求 * 拦截格式错误的 API 响应以阻止数据泄露和敏感信息暴露 ### 在监控模式下运行 * 发现 Shadow API 和未记录的 API 端点 * 记录不符合规范的可疑请求和响应 ## API 架构验证与正向安全模型 启动 API Firewall 时,您应提供受 API Firewall 保护的应用程序的 REST 或 GraphQL API 规范。启动后的 API Firewall 将作为反向代理运行,并验证请求和响应是否符合规范中定义的架构。 不符合架构的流量将通过 [`STDOUT` 和 `STDERR` Docker 服务](https://docs.docker.com/config/containers/logging/)进行记录或拦截(取决于配置的 API Firewall 运行模式)。在 REST API 上以日志记录模式运行时,API Firewall 还会记录所谓的 Shadow API 端点,即那些未包含在 API 规范中但会响应请求的端点(返回代码 `404` 的端点除外)。 ![API Firewall scheme](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/243fed09d0134319.gif) 通过允许您使用 API 规范设置流量要求,API Firewall 采用了正向安全模型。 ## 技术数据 [API Firewall 作为](https://www.wallarm.com/what/the-concept-of-a-firewall)带有内置 OpenAPI 3.0 或 GraphQL 请求和响应验证器的反向代理运行。它使用 Golang 编写,并采用 fasthttp 代理。该项目针对极致性能和接近零的额外延迟进行了优化。 在处理传入请求期间,API Firewall 能识别多种 `Content-Type` 标头值,包括: * `application/json` * `application/xml` * `application/octet-stream` * `application/x-www-form-urlencoded` * `application/x-yaml` * `application/yaml` * `application/zip` * `multipart/form-data` * `text/csv` * `text/plain` * `+json` 结构化语法后缀 * `+xml` 结构化语法后缀 * `+yaml` 结构化语法后缀 * `+csv` 结构化语法后缀 ## 启动 API Firewall 要在 Docker 上下下载、安装并启动 API Firewall,请参考: * [REST API 指南](https://wallarm.github.io/api-firewall/installation-guides/docker-container/) * [GraphQL API 指南](https://wallarm.github.io/api-firewall/installation-guides/graphql/docker-container/) ## 演示 您可以通过运行部署了受 API Firewall 保护的应用程序示例的演示环境来试用 API Firewall。有两个可用的演示环境: * [使用 Docker Compose 的 API Firewall 演示](https://github.com/wallarm/api-firewall/tree/main/demo/docker-compose) * [使用 Kubernetes 的 API Firewall 演示](https://github.com/wallarm/api-firewall/tree/main/demo/kubernetes) ## 与 API Firewall 相关的 Wallarm 博客文章 * [使用 API Firewall 发现 Shadow API](https://lab.wallarm.com/discovering-shadow-apis-with-a-api-firewall/) * [Wallarm API Firewall 在生产环境中性能优于 NGINX](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/) * [使用开源 APIFW 免费保护 REST API](https://lab.wallarm.com/securing-rest-with-free-api-firewall-how-to-guide/) ## 性能 在创建 API Firewall 时,我们优先考虑速度和效率,以确保我们的客户拥有最快的 API。我们最新的测试表明,API Firewall 处理一个请求的平均时间为 1.339 毫秒,比 Nginx 快 66%: ``` API Firewall 0.6.2 with JSON validation $ ab -c 200 -n 10000 -p ./large.json -T application/json http://127.0.0.1:8282/test/signup Requests per second: 13005.81 [#/sec] (mean) Time per request: 15.378 [ms] (mean) Time per request: 0.077 [ms] (mean, across all concurrent requests) NGINX 1.18.0 without JSON validation $ ab -c 200 -n 10000 -p ./large.json -T application/json http://127.0.0.1/test/signup Requests per second: 7887.76 [#/sec] (mean) Time per request: 25.356 [ms] (mean) Time per request: 0.127 [ms] (mean, across all concurrent requests) ``` 这些性能结果并不是我们在 API Firewall 测试中获得的唯一结果。其他结果以及用于提高 API Firewall 性能的方法在这篇 [Wallarm 博客文章](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/)中进行了描述。
标签:API加固, API安全, API网关, API防火墙, CISA项目, Docker, EVTX分析, GraphQL, IP白名单, JSON输出, JWT验证, ModSecurity, OAuth 2.0, OpenAPI, WAF, 代理, 响应验证, 子域名突变, 安全防御评估, 开源安全工具, 影子API, 微服务安全, 数据防泄露, 无文件攻击, 日志审计, 正向安全模型, 网络安全, 请求拦截, 请求验证, 逆向工程平台, 隐私保护