OpenClaw 是把 AI 大模型直接接入真实消息平台和工具的系统,安全配置至关重要。本文从官方安全文档整理出最实用的加固指南。
核心信任模型:个人助手,不是多租户系统
OpenClaw 的设计前提是单一可信操作员边界——一个用户、一个 Gateway、一个或多个 Agent。
支持的部署模式:
- 一个用户 / 一台机器(或 VPS)/ 一个 Gateway
- 个人助手场景:可信用户控制整个系统
不支持的部署模式:
- 多个互不信任/敌对用户共用一个 Agent/Gateway
- 需要隔离多个敌对用户时,必须分开信任边界(独立 Gateway + 独立凭证,最好独立 OS 用户/主机)
如果多个人可以给同一个 Bot 发消息,他们实际上共享了同一套工具权限。
快速安全检查:openclaw security audit
这是 OpenClaw 内置的安全扫描命令,定期运行(尤其是更改配置或暴露网络后):
bash
# 标准扫描
openclaw security audit
# 深度扫描(包含实时 Gateway 探测)
openclaw security audit --deep
# 自动修复可修复的问题
openclaw security audit --fix
# JSON 格式输出(适合自动化)
openclaw security audit --json扫描内容覆盖:
- 入站访问:DM 策略、群组策略、白名单
- 工具爆炸半径:提权工具 + 开放群组的组合风险
- 网络暴露:Gateway bind/auth、Tailscale Serve/Funnel、弱认证令牌
- 浏览器控制暴露:远程节点、CDP 端点
- 本地磁盘权限:状态/配置/凭证文件权限
- 插件:无显式白名单的扩展插件
- 策略漂移/错配:沙箱配置但沙箱模式未开启等
60 秒安全基线配置
从这个最严格的基线开始,按需逐步放开:
json
{
"gateway": {
"mode": "local",
"bind": "loopback",
"auth": {
"mode": "token",
"token": "replace-with-long-random-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 仅监听本地回环,不暴露网络
- 每个频道每个 peer 有独立会话(防止 DM 间上下文泄漏)
- 工具限于消息相关,禁用文件系统/运行时/控制面工具
- Exec 完全禁止(或始终需要确认)
- 提权工具禁用
- WhatsApp 使用配对策略,群组需要 @提及
高优先级告警处理
security audit 返回告警时,按此优先级处理:
| 优先级 | 问题类型 | 修复方向 |
|---|---|---|
| 1 | 开放 + 工具启用 | 先锁定 DM/群组(配对/白名单),再收紧工具策略 |
| 2 | 公网暴露(LAN bind、Funnel、缺少认证) | 立即修复 |
| 3 | 浏览器控制远程暴露 | 限仅 Tailnet,刻意配对节点,避免公网暴露 |
| 4 | 文件权限 | 确保状态/配置/凭证不可被其他用户读写 |
| 5 | 插件/扩展 | 只加载显式信任的插件 |
| 6 | 模型选择 | 有工具的 Bot 优先使用现代、指令强化的模型 |
关键 checkId 速查
| checkId | 严重性 | 原因 | 配置键 |
|---|---|---|---|
fs.state_dir.perms_world_writable | critical | 其他用户可修改 OpenClaw 全部状态 | ~/.openclaw 文件权限 |
gateway.bind_no_auth | critical | 远程 bind 无认证 | gateway.bind, gateway.auth.* |
gateway.tailscale_funnel | critical | 公网暴露 | gateway.tailscale.mode |
security.exposure.open_groups_with_elevated | critical | 开放群组 + 提权工具 = 高危提示注入路径 | channels.*.groupPolicy, tools.elevated.* |
security.exposure.open_groups_with_runtime_or_fs | critical | 开放群组可访问命令/文件工具 | channels.*.groupPolicy, tools.profile/deny |
sandbox.dangerous_network_mode | critical | 沙箱 Docker 使用 host 网络 | agents.*.sandbox.docker.network |
gateway.control_ui.device_auth_disabled | critical | 设备身份验证被禁用 | gateway.controlUi.dangerouslyDisableDeviceAuth |
logging.redact_off | warn | 敏感值泄漏到日志 | logging.redactSensitive |
tools.exec.host_sandbox_no_sandbox_defaults | warn | exec host=sandbox 但沙箱未开,实际在宿主机执行 | tools.exec.host, 沙箱配置 |
凭证存储位置
审计或备份时的关键路径:
| 凭证类型 | 存储路径 |
|---|---|
| WhatsApp 凭证 | ~/.openclaw/credentials/whatsapp/<accountId>/creds.json |
| Telegram Bot Token | 配置文件或 channels.telegram.tokenFile |
| Discord Bot Token | 配置文件或 SecretRef |
| Slack Tokens | 配置文件 channels.slack.* |
| DM 配对白名单(默认账号) | ~/.openclaw/credentials/<channel>-allowFrom.json |
| DM 配对白名单(非默认账号) | ~/.openclaw/credentials/<channel>-<accountId>-allowFrom.json |
| 模型认证配置 | ~/.openclaw/agents/<agentId>/agent/auth-profiles.json |
⚠️ 这些文件控制谁可以访问你的 AI 助手、以及可以执行哪些操作,请视为高敏感文件妥善保管。
多用户/团队场景的注意事项
Slack 工作区共享 Bot:如果「所有 Slack 成员都可以给 Bot 发消息」,核心风险是委托工具权限——任何允许的发送者都可以触发工具调用(exec、浏览器、文件工具)。
建议:
- 团队工作流使用独立 Agent/Gateway + 最小工具集
- 含个人数据的 Agent 保持私有
- 团队共享 Agent 运行在专用机器/VM/容器上,使用专用 OS 用户
- 不要在运行环境中登录个人 Apple/Google 账号或个人浏览器配置文件
不属于漏洞的设计行为
以下是常见的「误报」场景,OpenClaw 通常将其关闭为「按设计」:
- 纯提示注入链(无策略/认证/沙箱绕过)
- 仅在单一宿主配置场景下的 localhost 部署问题
- 将
sessionKey当做认证令牌的「IDOR」声明 - 将
sessions.list/sessions.preview/chat.history视为共享 Gateway 中的越权访问
原文:Security - OpenClaw | 来源:OpenClaw 官方文档