OpenClaw 的安全模型基于个人助手信任模型:单一可信操作者边界,可运行多个 Agent。本文提供实用的安全加固指南。
重要前提:安全模型边界
OpenClaw 不是多租户安全边界。如果多个互不信任的用户共用一个 Gateway,应拆分为独立的 Gateway 实例(建议每用户一台 VPS)。
支持的模型:一个 Gateway 对应一个信任边界,可以有多个 Agent。
不支持的模型:多个互相不信任的用户共用一个 Gateway——这会使任意允许的发送者都能在该 Agent 的权限范围内操作。
60 秒快速加固基线
json
{
"gateway": {
"mode": "local",
"bind": "loopback",
"auth": { "mode": "token", "token": "替换为长随机 Token" }
},
"session": {
"dmScope": "per-channel-peer"
},
"tools": {
"profile": "messaging",
"deny": ["group:automation", "group:runtime", "group:fs", "sessions_spawn", "sessions_send"],
"fs": { "workspaceOnly": true },
"exec": { "security": "deny", "ask": "always" },
"elevated": { "enabled": false }
},
"channels": {
"whatsapp": {
"dmPolicy": "pairing",
"groups": { "*": { "requireMention": true } }
}
}
}效果:Gateway 仅本地访问、DM 按用户隔离、默认禁用文件系统和执行类工具。
安全审计命令
bash
# 基础审计
openclaw security audit
# 深度审计(含实时 Gateway 探测)
openclaw security audit --deep
# 自动修复可修复项
openclaw security audit --fix
# JSON 格式输出(用于自动化)
openclaw security audit --json审计检查范围:
- 入站访问(DM 策略、群组策略、白名单)
- 工具爆炸半径(elevated 工具 + 开放群组)
- 网络暴露(Gateway 绑定/认证、Tailscale Funnel、弱 Token)
- 浏览器控制暴露(远程节点、中继端口)
- 本地磁盘权限(状态目录、配置文件、凭证)
- 插件/扩展(无显式白名单时)
- 沙箱/工具策略漂移
优先级处理顺序
- 「open」+ 工具已启用:先锁定 DM/群组(pairing/白名单),再收紧工具策略/沙箱
- 公网暴露(LAN 绑定、Funnel、无认证):立即修复
- 浏览器控制暴露:像对待操作者访问一样处理(仅 tailnet)
- 文件权限:确保
~/.openclaw不是 group/world 可写 - 插件/扩展:只加载你明确信任的
- 模型选择:有工具的 Bot 优先使用有指令强化的现代模型
信任边界矩阵
| 边界/控制 | 实际含义 | 常见误解 |
|---|---|---|
gateway.auth(Token/密码/设备认证) | 验证 Gateway API 的调用者 | 「需要每帧消息签名才安全」 |
sessionKey | 上下文/Session 的路由键 | 「Session key 是用户认证边界」 |
| 提示/内容护栏 | 降低模型滥用风险 | 「仅靠提示注入就能证明认证绕过」 |
canvas.eval/浏览器执行 | 启用时的有意操作者能力 | 「任何 JS eval 都是自动漏洞」 |
| Node 配对和命令 | 已配对设备上的操作者级远程执行 | 「设备控制应视为不可信用户访问」 |
凭证存储位置
~/.openclaw/credentials/whatsapp/<accountId>/creds.json # WhatsApp
~/.openclaw/credentials/<channel>-allowFrom.json # 配对白名单(默认账号)
~/.openclaw/agents/<agentId>/agent/auth-profiles.json # 模型认证配置
~/.openclaw/secrets.json # 文件备份密钥(可选)
Telegram Bot Token:配置文件或环境变量(channels.telegram.tokenFile)
Discord Bot Token:配置文件或 SecretRef
Slack Tokens:配置文件或环境变量
多用户场景注意事项
多人可以 DM 你的 Bot
json
{
"session": { "dmScope": "per-channel-peer" },
"channels": {
"telegram": { "dmPolicy": "pairing" },
"whatsapp": { "dmPolicy": "allowlist", "allowFrom": ["+86..."] }
}
}永远不要把共享 DM 与宽泛的工具访问结合:
- 所有允许的发送者都能触发工具调用(exec、浏览器、文件工具)
- 来自一个发送者的提示注入可能影响共享状态
公司共享 Agent(可接受模式)
当所有使用者都在同一信任边界内(如同一团队)且 Agent 严格限定业务范围时可以接受:
- 运行在专用机器/VM/容器上
- 使用专用 OS 用户和专用账号
- 不要将运行时登录到个人 Apple/Google 账号
审计常见问题(checkId)
| checkId | 严重度 | 修复路径 |
|---|---|---|
fs.state_dir.perms_world_writable | 严重 | ~/.openclaw 文件权限 |
fs.config.perms_writable | 严重 | ~/.openclaw/openclaw.json 权限 |
gateway.bind_no_auth | 严重 | gateway.bind、gateway.auth.* |
gateway.loopback_no_auth | 严重 | gateway.auth.*、反向代理配置 |
gateway.http.no_auth | 警告/严重 | gateway.auth.mode |
原文:Security - OpenClaw | 来源:OpenClaw 官方文档