安全背景​

OpenClaw 采用一个可信操作者 → 一个 Gateway → 多个 Agent的安全模型。Gateway 是唯一的入口,所有外部请求必须经过 Gateway 鉴权后才能到达 Agent。​

已知风险:​

  • •ClawHub 恶意技能:ClawHub 生态中存在恶意技能包,ClawHavoc 事件已被 Koi Security、The Hacker News 等多方报道证实。​
  • •ClawJacked 漏洞:被 Dark Reading 等安全媒体报道,涉及技能劫持攻击链。​

这些事件表明:安装后不做安全加固,OpenClaw 可能暴露在已知攻击面中。​


官方 60 秒安全基线​

​为什么需要这个基线?OpenClaw 默认配置优先考虑"开箱即用",而非安全。这意味着 Gateway 可能无鉴权、工具权限全开、DM 通道不设限。下面这段配置一次性覆盖最关键的攻击面——Gateway 鉴权、工具最小权限、消息通道管控,是投入产出比最高的单次操作。​​

如果只做一件事,直接把这段hardened baseline 写入~/.openclaw/openclaw.json:​

{
  gateway: {
    mode: "local",
    bind: "loopback",
    auth: { mode: "token", token: "replace-with-long-random-token" }
  },
  session: { dmScope: "per-channel-peer" },

生成 token:​

openclaw doctor --generate-gateway-token

详细配置(4 大类)​

1.Gateway 访问控制​

​作用:Gateway 是所有外部请求进入 OpenClaw 的唯一入口。访问控制决定谁能连上你的 Gateway。​为什么:OpenClaw 默认安装后,Gateway 可能在本地端口监听但没有鉴权。同一网络的任何人都可以直接调用你的 Agent,发送消息、执行工具。​解决什么:bind: "loopback"限制只有本机能连;auth.mode: "token"要求每次请求携带密钥,防止未授权访问。不设置 = 裸奔。​​

本地部署(默认):
{
  gateway: {
    mode: "local",
    bind: "loopback",
    auth: { mode: "token", token: "replace-with-long-random-token" }
  }
}
云端部署:
{
  gateway: {
    mode: "gateway",
    bind: "0.0.0.0",
    auth: { mode: "token", token: "replace-with-long-random-token" }
  }
}

要点:​

  • •环境变量:OPENCLAW_GATEWAY_TOKEN或OPENCLAW_GATEWAY_PASSWORD​
  • •gateway.bind可选值:loopback(默认)、lan、tailnet、custom​
  • •远程访问推荐 SSH 隧道或 Tailscale Serve,不要暴露公网端口​
  • •云端部署必须使用lan或0.0.0.0,loopback仅限本机​

2.工具权限控制​

​作用:控制 Agent 能调用哪些工具。工具是 Agent 与外部世界交互的手脚——文件读写、命令执行、消息发送都是工具。​为什么:ClawHub 上的第三方技能可能包含恶意指令(ClawHavoc 事件已证实)。如果 Agent 拥有文件系统和命令执行权限,恶意技能可以读取敏感文件、执行任意命令。​解决什么:deny列表禁用高危工具组;exec.security: "deny"禁止命令执行;fs.workspaceOnly: true限制文件访问范围;elevated: false禁止提权。最小权限原则:只给 Agent 它真正需要的能力。​​

{
  tools: {
    profile: "messaging",  // messaging / minimal / default / full
    deny: ["group:automation", "group:runtime", "group:fs",
           "sessions_spawn", "sessions_send"],
    fs: { workspaceOnly: true },
    exec: { security: "deny", ask: "always" },  // deny / ask / ask-dangerous / allow
    elevated: { enabled: false }
  }
}

要点:​

  • •tools.exec.host:"sandbox"(推荐)或"gateway"​
  • •危险工具组:group:automation、group:runtime、group:fs​
  • •elevated: { enabled: false }禁用提权操作​

3.Docker 沙箱隔离​

​作用:让每个 Agent 运行在独立的 Docker 容器中,与宿主机隔离。​为什么:即使工具权限控制到位,Agent 执行的代码仍可能通过漏洞逃逸。沙箱提供第二道防线——容器内的恶意操作无法影响宿主机。​解决什么:network: "none"防止容器内发起网络请求(数据外泄);readOnlyRoot: true防止篡改容器文件系统植入后门;capDrop: ["ALL"]移除所有 Linux capabilities 防止提权;user: "1000:1000"非 root 运行减少攻击面。不挂载 Docker socket 防止容器逃逸控制宿主机。​​

{
  agents: {
    defaults: {
      sandbox: {

要点:​

  • •永远不挂载 Docker socket​
  • •readOnlyRoot: true防止运行时篡改​
  • •网络默认"none",需要网络时用"bridge",永远不用"host"​

4.密钥管理 SecretRef​

​作用:将 API Key 等敏感凭据从配置文件中分离,通过引用方式按需获取。​为什么:配置文件可能被提交到 Git、被日志记录、被其他进程读取。明文存储 API Key 是最常见的凭据泄露原因。​解决什么:SecretRef 让配置文件中只存"去哪里取密钥"的指针,不存密钥本身。支持环境变量、加密文件、外部密钥管理器(1Password/Vault/SOPS),确保密钥不落盘、不入库。​​

{
  secrets: {
    providers: {
      default: { source: "env" },
      filemain: {
        source: "file",
        path: "~/.openclaw/secrets.json",
        mode: "json"
      }
    }
  },
  models: {
    providers: {
      openai: {
        apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" }
      }
    }
  }
}

要点:​

  • •支持env/file/exec三种 source​
  • •exec可对接 1Password CLI、HashiCorp Vault、SOPS​
  • •绝不在配置文件中明文存储 API Key​
  • •检查明文泄露:openclaw secrets audit --check​

其他安全设置​

DM/群组策略​

​作用:控制谁能通过消息渠道(WhatsApp 等)与 Agent 对话。​为什么:如果设为open,任何人都能私聊你的 Agent 并触发操作。ClawJacked 攻击链的一个入口就是通过未限制的 DM 通道向 Agent 注入恶意指令。​解决什么:dmPolicy: "pairing"要求配对确认才能建立对话;requireMention: true在群组中必须 @提及才响应,防止 Agent 被群消息意外触发。​​

{
  channels: {
    whatsapp: {
      dmPolicy: "pairing",  // pairing / allowlist / open / disabled
      groups: { "*": { requireMention: true } }
    }
  },
  session: { dmScope: "per-channel-peer" }
}

日志脱敏​

​作用:自动从日志中移除敏感信息。​为什么:调试日志中经常包含 API 请求/响应的完整内容,可能包含密钥、用户数据。日志被收集到集中平台后,访问权限通常比生产系统宽松。​解决什么:redactSensitive: "tools"自动遮盖工具调用中的敏感字段;自定义redactPatterns可匹配项目特有的敏感格式。​​

{
  logging: {
    redactSensitive: "tools",  // tools / all / false
    redactPatterns: ["api_key=.*", "secret=.*"]
  }
}

mDNS 发现​

​作用:控制 OpenClaw 是否通过 mDNS(Bonjour)在局域网广播自身存在。​为什么:默认的 mDNS 广播会让同一网络的所有设备发现你的 OpenClaw 实例,暴露服务信息。​解决什么:mode: "minimal"或OPENCLAW_DISABLE_BONJOUR=1减少或关闭广播,降低被局域网内攻击者发现的概率。​​

代码块Plain Text

或设置环境变量OPENCLAW_DISABLE_BONJOUR=1。​

浏览器 SSRF 防护​

​作用:控制 Agent 的浏览器工具能否访问内网地址。​为什么:如果 Agent 能浏览任意 URL,恶意技能可以构造请求访问localhost、192.168.x.x、云元数据 API 等内网资源,这就是 SSRF(服务端请求伪造)攻击。​解决什么:dangerouslyAllowPrivateNetwork: false阻止浏览器工具访问私有网络地址,切断 SSRF 攻击路径。​​

代码块Plain Text

文件权限​

​作用:限制 OpenClaw 配置文件和凭据文件的系统访问权限。​为什么:~/.openclaw/下存储了 Gateway token、WhatsApp 凭据、Agent 认证信息。默认文件权限可能允许同机器其他用户读取。​​

chmod 700 ~/.openclaw
chmod 600 ~/.openclaw/openclaw.json
chmod 600 ~/.openclaw/secrets.json

敏感文件位置(官方文档列出):​

  • •~/.openclaw/credentials/whatsapp/<accountId>/creds.json​
  • •~/.openclaw/credentials/<channel>-allowFrom.json​
  • •~/.openclaw/agents/<agentId>/agent/auth-profiles.json​

CLI 安全命令​

# 安全审计
openclaw security audit           # 基础审计
openclaw security audit --deep    # 深度审计
openclaw security audit --fix     # 自动修复
openclaw security audit --json    # JSON 输出
# 密钥管理
openclaw secrets audit --check    # 检查明文密钥
openclaw secrets configure        # 配置密钥管理
# Gateway
openclaw doctor --generate-gateway-token  # 生成 token

参考资源​

学员须知(小白基础答疑手册)​

作业提交步骤指导:​☎️AI训练营 - 学员须知(持续更新)

OpenClaw主文档(含所有回放):​​第五期:OpenClaw小龙虾训练营

AI训练营数据中心(含证书获取、找搭子):​​🌈AI训练营​第1课:​​第1课:认知破局——认识OpenClaw小龙虾​第2课:​​第2课:基建搭建——小龙虾云端部署+技能初始化​第3课:​​第3课:数据中枢——小龙虾协同多维表格​第4课:​​第4课:社媒引流——小红书自动化运营​第5课:​​第5课:私域沉淀-微信公众号一键排版​第6课:​​第6课:主动出击——让小龙虾给你打电话

第7课:​​第7课:赋予声带——让小龙虾开口说话​第8课:​​第8课:顶峰相见,谁的龙虾会运营​课程在线回答汇总:​🥠课程在线回答问题汇总​优秀笔记:​​优秀笔记分享​自习室:​​自习室

​✨从训练营出发,你与AI的故事我们想听 | WaytoAGI AI训练营老学员专属回访​https://waytoagi.feishu.cn/share/base/form/shrcnvP68KwlHihAAi7UQ2Dzw2g​​

从训练营出发,你与AI的故事我们想听 | WaytoAGI AI训练营老学员专属回访​https://waytoagi.feishu.cn/share/base/form/shrcnvP68KwlHihAAi7UQ2Dzw2g

@版权归WaytoAGI及课程讲师所有,未经许可不得传播售卖。如有侵权将依法追究法律责任。​