安全

安全 🔒

快速检查:openclaw security audit

另见:形式验证(安全模型)

定期运行(特别是在更改配置或暴露网络接口后):

# 基础安全审计
openclaw security audit
# 深度审计
openclaw security audit --deep
# 自动修复安全问题
openclaw security audit --fix

它会标记常见的陷阱(Gateway 认证暴露、浏览器控制暴露、提升权限白名单、文件系统权限)。

--fix 应用安全护栏:

在你的机器上运行具有 shell 访问权限的 AI Agent 是……刺激的。以下是如何避免被攻击。

OpenClaw 既是产品也是实验:你将前沿模型行为接入真实消息界面和真实工具。没有"完美安全"的设置。 目标是慎重考虑:

从仍然有效的最小访问开始,然后在获得信心后逐步放宽。

审计检查什么(高层次)

如果你运行 --deep,OpenClaw 还会尝试尽力实时的 Gateway 探测。

凭据存储地图

审计访问或决定备份什么时使用:

安全审计检查清单

当审计打印发现时,按此优先顺序处理:

  1. 任何"开放" + 启用的工具:首先锁定私聊/群组(配对/白名单),然后收紧工具策略/沙盒。
  2. 公共网络暴露(LAN 绑定、Funnel、缺失认证):立即修复。
  3. 浏览器控制远程暴露:像操作员访问一样对待(仅限 tailnet、慎重配对节点、避免公共暴露)。
  4. 权限:确保状态/配置/凭据/认证不是组/世界可读的。
  5. 插件/扩展:只加载你明确信任的。
  6. 模型选择:对于任何带工具的 Bot,优先选择现代、指令加固的模型。

Control UI over HTTP

Control UI 需要安全上下文(HTTPS 或 localhost)来生成设备
身份。如果你启用 gateway.controlUi.allowInsecureAuth,UI 回退到
仅 token 认证 并在设备身份被省略时跳过设备配对。这是安全
降级——优先选择 HTTPS(Tailscale Serve)或在 127.0.0.1 上打开 UI。

仅用于紧急情况的 gateway.controlUi.dangerouslyDisableDeviceAuth
完全禁用设备身份检查。这是严重的安全降级;
保持关闭,除非你正在积极调试并能快速恢复。

openclaw security audit 在启用此设置时发出警告。

反向代理配置

如果你在反向代理(nginx、Caddy、Traefik 等)后运行 Gateway,你应该配置 gateway.trustedProxies 以进行正确的客户端 IP 检测。

当 Gateway 检测到来自不在 trustedProxies 中的地址的代理头(X-Forwarded-ForX-Real-IP)时,它不会将连接视为本地客户端。如果 Gateway 认证被禁用,这些连接会被拒绝。这防止了代理连接否则会显示为来自 localhost 并获得自动信任的认证绕过。

gateway:
  trustedProxies:
    - "127.0.0.1"  # 如果你的代理在 localhost 上运行
  auth:
    mode: password
    password: ${OPENCLAW_GATEWAY_PASSWORD}

配置 trustedProxies 时,Gateway 将使用 X-Forwarded-For 头来确定本地客户端检测的真实客户端 IP。确保你的代理覆盖(而不是追加到)传入的 X-Forwarded-For 头以防止欺骗。

本地会话日志存储在磁盘上

OpenClaw 将会话记录存储在磁盘上 ~/.openclaw/agents/<agentId>/sessions/*.jsonl
这是会话连续性和(可选)会话记忆索引所必需的,但也意味着
任何具有文件系统访问权限的进程/用户都可以读取这些日志。将磁盘访问视为信任
边界并锁定 ~/.openclaw 的权限(见下面的审计部分)。如果你需要
Agent 之间的更强隔离,在单独的 OS 用户或单独的主机上运行它们。

节点执行(system.run)

如果 macOS 节点已配对,Gateway 可以在该节点上调用 system.run。这是 Mac 上的远程代码执行

动态 Skills(监视器 / 远程节点)

OpenClaw 可以在会话中途刷新 Skills 列表:

将 Skills 文件夹视为受信任代码并限制谁可以修改它们。

威胁模型

你的 AI 助手可以:

给你发消息的人可以:

核心概念:访问控制优先于智能

这里的大多数失败不是花哨的利用——它们是"有人给 Bot 发消息,Bot 就照做了"。

OpenClaw 的立场:

命令授权模型

斜杠命令和指令只对授权发送者有效。授权来自
频道白名单/配对加上 commands.useAccessGroups(参见 [配置(../gateway/configuration.html)