doxiebuilds/openclaw-secure-deploy
GitHub: doxiebuilds/openclaw-secure-deploy
该项目是一个零信任 Docker 沙箱,通过多层容器隔离机制限制自主 AI agent 对宿主系统的访问权限。
Stars: 2 | Forks: 0
# OpenClaw 安全部署
一个零信任 Docker 设置,用于在隔离的沙箱中运行 [OpenClaw](https://github.com/openclaw)。核心思想很简单:自主 agent 可以自行其是,即使它偏离了预期,也无法触及宿主系统。
这是一个个人项目,旨在学习如何在 reasonably safe 的环境中使用 OpenClaw。
一切都在一个锁定权限的 Docker container 中运行。它无法逃脱,无法修改宿主文件,也无法提升权限。
## ⚠️ 免责声明
该项目尚未经过专业的安全审计——完全由我个人独立构建以供个人使用。预期它可以缩小被入侵或行为异常 agent 的影响范围,但它并非无懈可击——请将其视为纵深防御,而非绝对的安全保证。
**它无法防范 prompt injection。** 这种隔离机制仅限制了 *container* 对你的宿主系统能做些什么,而无法阻止 agent 被诱导执行操作。如果它处理了恶意的网页、邮件或文件,它依然可能滥用其持有的凭证(API keys、Slack tokens)或破坏其可写 `workspace` 内的任何内容——为了允许进行网络搜索等操作,出站网络访问是默认开启的。
**关于局域网暴露:** 在默认配置下,网关(端口 `18789`)仅绑定到 `127.0.0.1`,且内部的 Docker 网络不应被宿主机或局域网访问。因此,在默认情况下,不会有任何端口暴露给您的本地网络。但如果您重新绑定了端口(例如绑定为 `0.0.0.0`)或通过其他方式将其暴露,情况就会发生变化——如果您进行了任何非标准的操作,请务必检查您的配置并进行适当的测试,以确认局域网的暴露情况。
**这不是银弹。** 它无法防范 OpenClaw 本身、操作系统、Docker 或其依赖项中存在的未知漏洞,也不能替代真正的安全审计。如果您打算将其部署在生产系统或真实资产附近,请务必对其进行独立评估并进行适当的测试。
**版本说明。** 这些防护措施与构建本仓库时所使用的 OpenClaw 和 Docker 版本息息相关。未来的版本可能会改变所需的防护要求,或者引入与此配置重叠或冲突的原生安全机制——请根据您实际运行的版本检查其兼容性。
**AI 模型。** 本个人项目无法防范由所使用的 LLM 模型、skills、tools 及其他组件引发的广泛不可控行为,这些行为可能会导致安全漏洞。
本仓库的贡献者对因使用本项目,或因 AI agent 误解、误用此项目而造成的直接或间接损失概不负责——无论是数据丢失、服务中断、配置损坏、安全暴露、凭证泄露,还是其他任何情况。如果您选择使用它,即表示您接受运行自主 agent 所伴随的风险。
在使用真实凭证信任此配置之前,请务必自行审查配置和代码。不要在您无法承受损失的环境中运行它。使用风险由您自行承担,同时欢迎进行独立审查——请参阅 [SECURITY.md](SECURITY.md) 来报告问题。本项目不隶属于 OpenClaw 的维护者,也未获得其认可支持。
## 零信任模型的工作原理
这里通过几层隔离机制叠加实现:
1. 在宿主机上会创建一个专用的 `openclaw-enclave` 目录。
2. OpenClaw container 以只读的根文件系统(`read_only: true`)运行。
3. 丢弃所有 Linux capabilities(`CapDrop: ALL`),并阻止权限提升(`no-new-privileges:true`)。
4. Container 永远不会直接接触 Docker socket——而是由 `docker-socket-proxy` 代理每一个请求。
5. 该 proxy 会拦截危险操作(如 exec、volume/network 操作),同时依然允许 OpenClaw 管理属于它自己的沙箱 container。
6. 只有一个名为 `workspace` 的文件夹被挂载为读写模式。其他所有内容均被禁止访问。
综合来看,设计这些控制措施的目的是确保 container 在常规运行中无法修改宿主系统,也无法触及敏感的宿主配置——这不仅是出于防范建议,而是由内核和 container runtime 强制执行的安全底线。(未修补的 container 逃逸漏洞可能会绕过这些限制——请参阅上方的免责声明。)
## 安全细节
| 参数 | 值 |
|-----------|-------|
| 根文件系统 | 只读 (`read_only: true`) |
| 权限提升 | 已阻止 (`no-new-privileges:true`) |
| Linux Capabilities | 全部丢弃 (`CapDrop: ALL`) |
| Docker API 访问 | 通过 `docker-socket-proxy` 代理 |
| Proxy 限制 | 阻止 Exec、Volumes、Networks、System、Auth 操作 |
| 可写范围 | 仅限于 `openclaw-enclave/workspace` |
| 网络 | 隔离的 `openclaw-internal` |
请参阅 [SECURITY.md](SECURITY.md) 了解完整的安全策略以及如何报告问题。
## 快速开始
### 前置条件
- [Docker Desktop](https://www.docker.com/products/docker-desktop/)(或 Docker Engine),已安装并正在运行。
- **LMStudio**:此设置默认使用在本地运行的 [LMStudio](https://lmstudio.ai/) 以及 **Qwen 3.6 35B (a3b)** 模型。您可以随时进行替换——只需编辑 `openclaw.json`,将其指向其他的模型或提供商即可。
### 设置并运行
1. 运行 bootstrap 脚本,以创建具有正确权限的所需目录:
```
./setup.sh
```
2. 编辑生成的 `.env` 文件,并填入您的 API keys 和 tokens。
3. 启动安全环境——此过程也会自动拉取并安装 OpenClaw:
```
cd openclaw-docker-config
docker-compose up -d --build
```
无需使用 `sudo`。在它启动的那一刻起,安全边界就已经生效。
### 文档
日常的生命周期管理请参考:
- [启动与更新](docs/launch_and_update.md)
- [关闭说明](docs/shutdown.md)
- [安全验证](docs/security_verification.md)
标签:AI代理, Cutter, Docker, GitHub Advanced Security, JSONLines, Web截图, 安全加固, 安全防御评估, 容器安全, 沙箱, 版权保护, 请求拦截, 零信任