6 个版本 (破坏性更新)
0.6.0 | 2024 年 6 月 27 日 |
---|---|
0.5.0 | 2024 年 4 月 7 日 |
0.4.0 | 2023 年 11 月 23 日 |
0.3.0 | 2023 年 8 月 3 日 |
0.1.0 | 2023 年 5 月 19 日 |
#98 在 WebAssembly
10MB
171K SLoC
在不确定性下进行自动安全决策。
🏰 什么是 Bulwark?
Bulwark 是一个快速、现代化的开源 Web 应用程序防火墙 (WAF) 和 API 安全网关。它简化了检测性安全控制的实现,同时提供了对您的 Web 服务的全面可见性。Bulwark 的规则定义的检测即代码方法为安全团队提供了对持续性和适应性威胁的响应的更高信心。Bulwark 插件提供了一系列功能,使安全团队能够快速定义和演进检测,而无需修改底层应用程序。
- 开源。 在 Apache 2.0 许可证下免费提供。我们致力于保持这种方式。
- 可扩展。 使用 SDK 定义自定义检测逻辑,或根据您的需求自定义可重用参数化检测,而无需编写代码。
- 可观测。 使用内置的可观测性功能,全面了解您的流量和检测操作。丰富您的流量数据以改进上下文。
- 灵活。 Bulwark 的插件 API 允许检测与 Redis 状态和其他服务(包括机器学习模型)交互。插件可以协同使用 Bulwark 的集成决策进行检测。安全地解密会话 cookie 以操作应用程序级信息。
- 可测试。 检测可以具有自动化测试。防止错误分类进入生产环境。
- 准确。 Bulwark 具有内置机制,有助于调整检测以实现高精度,最小化误报,并在发生时快速解决精度问题。在满足检测性控制合规要求的同时,避免干扰操作的误报。
- 隔离。 每个检测都在安全的 WebAssembly 隔离器中运行,隔离检测逻辑,并确保访问永远不会超出其权限授予。
- 安全。 以仅观察模式部署并在启用请求阻止之前建立对系统的信心。
- 商业支持。 Bulwark 正在由 Bulwark Security PBC 活跃开发和支持。除了提供 Bulwark 云管理应用外,我们还将提供免费可用的 社区规则集、高级商业规则集、付费支持和专业服务。如果您对这些商业产品感兴趣,并希望以设计合作伙伴的身份享受折扣早期访问,请联系我们 ([email protected])。
🕵️ 应用场景
- 账户接管:检测针对账户登录页面、认证 API 或使用被盗 cookie 的凭证填充、密码喷涂、会话劫持和钓鱼等滥用模式。减少对这些威胁的响应时间。
- 网站抓取:识别并阻止忽略
robots.txt
或以异常频率抓取网站数据的机器人,而不会对行为良好的机器人和爬虫产生负面影响。这对于可能担心其网站未经授权被纳入训练数据的用户尤其相关。 - 免费层滥用:防止滥用免费层使用,使这些服务变得不可持续。将运行时侦探控制的输出发送到 Bulwark 插件,其中它可以与 CAPTCHA 和其他信号结合,以帮助尽早识别这些行为,在它们消耗有限资源之前。
- 结合欺诈信号:利用 Bulwark 访问外部服务的能力,无缝结合独立供应商的欺诈评分。保护内部服务免受可能影响可用性的高量自动化欺诈,如卡测试。
- 阻止漏洞:Bulwark 可用作 WAF 来检测和阻止针对 XSS、SQL 注入和其他常见漏洞的漏洞。
💻 安装
- 通过 rustup 安装 Rust 工具链。
- 安装构建插件所需的
wasm32-wasi
目标:rustup target add wasm32-wasi
- 安装 Bulwark:
cargo install bulwark-cli
🚀 快速入门
在 Bulwark 部署中,有几个组件协同工作。在 Bulwark 当前版本中,Envoy 负责处理初始 HTTP 请求。Bulwark 使用 Envoy 的 外部处理 API 来挂钩该处理并执行流量安全决策。在大多数配置中,将有一个内部服务来处理 Web 应用程序的实际业务逻辑,Envoy 将配置为在 Bulwark 做出决策后发送流量。建议与 Redis 服务器 一起使用 Bulwark 以在多个 Bulwark 实例之间维护状态,尽管如果只使用无状态检测插件,这并非严格必要。
提供了一个示例 Envoy 配置文件 作为上述典型部署设置的起点。使用以下命令启动 Envoy 服务器:
envoy -c envoy.yaml
Bulwark 自己的 配置文件 是一个 TOML 文件,它定义了应该使用哪些检测插件来处理请求,以及有关侦听端口和 Redis 服务器地址的详细信息。Bulwark 配置中的侦听端口必须与 Envoy 配置中对应的外部处理过滤器部分提供的端口号匹配。使用以下命令启动 Bulwark:
bulwark-cli ext-processor -c bulwark.toml
防御工事插件在使用前编译成WebAssembly。虽然建议使用GitHub Actions等工作流来完成此操作(GitHub Actions文档),但您也可以手动进行,尤其是在开发过程中。要编译一个防御工事插件
bulwark-cli build -p rules/example-plugin -o dist/plugins/
💪 贡献
查看未解决的问题列表。我们积极维护一个适合新贡献者的问题列表。或者,检测插件可以贡献给社区规则集。
我们不需要贡献者签署许可协议(CLA),因为我们希望Bulwark的用户能够确信该软件将继续在其当前许可证下提供。
🤝 许可证
本项目采用Apache 2.0许可证和LLVM例外条款。有关详细信息,请参阅LICENSE文件。
除非您明确声明,否则根据Apache 2.0许可证定义,您故意提交给本项目以供包含的贡献,应按上述方式许可,不附加任何额外条款或条件。
🛟 获取帮助
首先,检查您的问题是否可以在指南或API文档中找到答案。如果您在那里找不到答案,请检查Bulwark项目的讨论论坛。我们很高兴通过我们的社区论坛回答您的问题并提供指导。
依赖项
~73MB
~1.5M SLoC