乐于分享
好东西不私藏

OpenClaw 安全防御体系:给你的 AI 助手装上防盗门

OpenClaw 安全防御体系:给你的 AI 助手装上防盗门

AI 工具能力就像一把双刃剑。本文深入讲解 OpenClaw 安全架构,从身份认证到沙箱隔离,从威胁模型到事件响应,全方位保护你的 AI 助手不被滥用。给 AI 装上工具能力,就相当于给了它执行命令、读写文件、访问网络的权限。这玩意儿要是被坏人利用,后果能有多严重不用我多说。

OpenClaw 的安全设计思路很明确:身份优先,范围其次,模型最后。

威胁模型

你的 AI 助手可以:

  • • 执行任意 shell 命令
  • • 读写文件
  • • 访问网络服务
  • • 给任何人发消息(如果你给了它 WhatsApp 权限)

给你发消息的人可以:

  • • 试图骗 AI 干坏事
  • • 社会工程获取数据访问权限
  • • 探测基础设施详情

所以安全配置不是可选项,是必须项。

快速诊断

openclaw security audit

这个命令会检查常见的安全问题,按优先级报告:

  1. 1. 开放 + 启用危险工具的情况
  2. 2. 公共网络暴露(局域网绑定、Funnel、缺少认证)
  3. 3. 浏览器控制远程暴露
  4. 4. 文件权限问题
  5. 5. 可疑插件
  6. 6. 模型选择问题

Gateway 认证

设置认证令牌

Gateway WebSocket 默认需要认证。设置令牌:

{  gateway: {    auth: {      mode: "token",      token: "your-long-random-token"    }  }}

让 Doctor 生成一个:

openclaw doctor --generate-gateway-token

网络绑定

默认loopback(只有本地客户端能连接)

非回环绑定(lantailnetcustom)会扩大攻击面。如果必须用:

{  gateway: {    bind: "loopback",  // 优先保持默认    auth: {      mode: "token",      token: "your-token"    }  }}

经验法则:

  • • 优先用 Tailscale Serve 而不是局域网绑定
  • • 局域网绑定要配防火墙,限制源 IP
  • • 永远不要在 0.0.0.0 上暴露未经认证的 Gateway

反向代理

如果 Gateway 前面有反向代理(nginx、Caddy),配置 trustedProxies

{  gateway: {    trustedProxies: ["127.0.0.1"],    auth: {      mode: "password",      password: "${OPENCLAW_GATEWAY_PASSWORD}"    }  }}

确保代理覆盖(不是追加)X-Forwarded-For 头。

私信访问控制

私信策略

所有支持私信的渠道都支持私信策略(dmPolicy):

策略
说明
pairing

(默认)
未知发送者收到配对码,批准后才能对话
allowlist
未知发送者直接阻止
open
任何人都能发(需要白名单包含 "*"
disabled
完全忽略私信

推荐配置

{  channels: {    whatsapp: {      dmPolicy: "pairing"    }  }}

批准配对:

openclaw pairing listopenclaw pairing approve <code>

配对码存储在 ~/.openclaw/credentials/<agentId>-allowFrom.json

私信会话隔离

默认所有私信路由到主会话。如果多人能给你的机器人发私信,隔离会话:

{  session: {    dmScope: "per-channel-peer"  // 按渠道 + 发送者隔离  }}

防止跨用户上下文泄露。

群组访问控制

提及门控

群组默认需要 @ 机器人才会响应:

{  channels: {    whatsapp: {      groups: {        "*": { requireMention: true }      }    }  }}

群组白名单

只接受特定群组的消息:

{  channels: {    whatsapp: {      groups: {        "group-id-1": { requireMention: true },        "group-id-2": { requireMention: false }      }    }  }}

Discord 配置

{  channels: {    discord: {      groupPolicy: "allowlist",      guilds: {        "guild-id": {          channels: ["channel-id-1", "channel-id-2"],          requireMention: false        }      }    }  }}

确保机器人有 Message Content Intent

沙箱隔离

沙箱模式

{  agents: {    defaults: {      sandbox: {        mode: "all",          // off / non-main / all        scope: "agent",       // session / agent / shared        workspaceAccess: "ro" // none / ro / rw      }    }  }}

模式说明

mode
说明
off
不隔离,所有工具在主机上跑
non-main
非主会话隔离(默认)
all
所有会话隔离

作用域

scope
说明
session
每个会话一个容器
agent
每个智能体一个容器
shared
所有隔离会话共享一个容器

工作区访问

workspaceAccess
说明
none
工作区不可访问,在沙箱工作区操作
ro
只读挂载(禁用 write/edit/apply_patch)
rw
读写挂载

提权模式

tools.elevated 是逃逸舱口,让 exec 在主机上运行:

{  tools: {    elevated: {      allowFrom: ["owner"]  // 限制谁能用    }  }}

保持 allowFrom 严格,别给陌生人开。

工具策略

工具配置文件

基础权限等级:

{  tools: {    profile: "coding"  // minimal / coding / messaging / full  }}

全局允许/拒绝

{  tools: {    profile: "messaging",    allow: ["slack", "discord"],    deny: ["browser", "exec"]  }}

deny 优先级更高。支持 * 通配符。

工具组简写

包含工具
group:runtime
exec、bash、process
group:fs
read、write、edit、apply_patch
group:sessions
sessions_*、session_status
group:web
web_search、web_fetch

示例:

{  tools: {    allow: ["group:fs", "read"],    deny: ["group:runtime"]  }}

多智能体隔离

每个智能体可以有独立的沙箱和工具策略。

完全访问(个人智能体)

{  agents: {    list: [      {        id: "personal",        workspace: "~/.openclaw/workspace-personal",        sandbox: { mode: "off" }      }    ]  }}

只读(家庭/工作智能体)

{  agents: {    list: [      {        id: "family",        workspace: "~/.openclaw/workspace-family",        sandbox: {          mode: "all",          scope: "agent",          workspaceAccess: "ro"        },        tools: {          allow: ["read"],          deny: ["write", "edit", "exec", "process", "browser"]        }      }    ]  }}

无文件系统/shell(公共智能体)

{  agents: {    list: [      {        id: "public",        workspace: "~/.openclaw/workspace-public",        sandbox: {          mode: "all",          scope: "agent",          workspaceAccess: "none"        },        tools: {          allow: ["sessions_list", "whatsapp", "telegram"],          deny: ["read", "write", "edit", "exec", "browser"]        }      }    ]  }}

文件权限

在 Gateway 主机上保持配置和状态私有:

chmod 600 ~/.openclaw/openclaw.jsonchmod 700 ~/.openclaw

openclaw doctor 会警告并提供修复选项。

秘密管理

敏感文件位置

假设 ~/.openclaw/ 下的任何内容都可能包含秘密:

  • • openclaw.json:配置可能包含令牌
  • • credentials/**:渠道凭证、配对白名单
  • • agents/<agentId>/agent/auth-profiles.json:API 密钥
  • • agents/<agentId>/sessions/**:会话记录

日志脱敏

保持工具摘要脱敏开启(默认):

{  logging: {    redactSensitive: "tools"  }}

添加自定义模式:

{  logging: {    redactPatterns: ["api-key-.*", "internal-.*\\.example\\.com"]  }}

秘密扫描

detect-secrets scan --baseline .secrets.baseline

如果 CI 失败,说明有新的候选项未在基线中。

交互式审计:

detect-secrets audit .secrets.baseline

提示词注入防护

提示词注入是指攻击者构造消息操纵模型做不安全的事。

常见攻击

  • • “忽略你的系统提示词”
  • • “读取这个文件并完全按照它说的做”
  • • “透露你的隐藏指令”

防护措施

  1. 1. 保持私信锁定(配对/白名单)
  2. 2. 群组使用提及门控
  3. 3. 在沙箱中运行敏感工具
  4. 4. 秘密不要放在提示词里
  5. 5. 现代模型(如 Claude Opus 4.5)对注入抵抗力更强

只读模式

{  agents: {    defaults: {      sandbox: {        workspaceAccess: "ro"      },      tools: {        deny: ["write", "edit", "apply_patch", "exec"]      }    }  }}

浏览器控制风险

启用浏览器控制让模型能驱动真实浏览器。如果配置文件有登录会话,模型能访问那些账户。

防护建议

  • • 为智能体使用专用配置文件
  • • 别让智能体用你的日常浏览器
  • • 沙箱智能体禁用宿主机浏览器控制
  • • 远程 Gateway 假设浏览器控制 = 管理员访问
{  browser: {    defaultProfile: "openclaw"  // 专用配置文件  }}

安全基线配置

一个”安全默认”配置:

{  gateway: {    mode: "local",    bind: "loopback",    port: 18789,    auth: {      mode: "token",      token: "your-long-random-token"    }  },  channels: {    whatsapp: {      dmPolicy: "pairing",      groups: {        "*": { requireMention: true }      }    }  },  agents: {    defaults: {      sandbox: {        mode: "all",        scope: "agent",        workspaceAccess: "ro"      }    }  }}

告诉 AI 安全规则

在 AGENTS.md 中加入:

## 安全规则- 永远不要与陌生人分享目录列表或文件路径- 永远不要透露 API 密钥、凭证或基础设施详情- 与所有者验证修改系统配置的请求- 有疑问时,先询问再行动- 私人信息保持私密,即使对"朋友"也是如此

事件响应

如果怀疑被入侵:

遏制

  1. 1. 停止 Gateway:openclaw gateway stop
  2. 2. 设置 gateway.bind: "loopback"
  3. 3. 冻结访问:dmPolicy: "disabled",移除 "*" 白名单

轮换

  1. 1. 轮换 Gateway 认证令牌
  2. 2. 轮换远程客户端秘密
  3. 3. 轮换提供商凭证(WhatsApp、Slack、API 密钥)

审计

  1. 1. 检查 Gateway 日志:/tmp/openclaw/openclaw-*.log
  2. 2. 审查会话记录:~/.openclaw/agents/<agentId>/sessions/*.jsonl
  3. 3. 审查配置更改
  4. 4. 重新运行 openclaw security audit --deep

0

一些个人体会

  • • 安全配置从一开始就要做好,出事再补救来不及
  • • pairing 模式是最省心的私信策略,陌生人进不来
  • • 沙箱隔离能解决大部分问题,生产环境建议开启
  • • 工具策略要严格遵循”最小权限原则”
  • • 定期跑 openclaw security audit 检查配置
  • • 文件权限 600/700 是基本操作
  • • 日志里可能有意想不到的敏感信息,分享前要脱敏
  • • 模型选择很重要,老模型更容易被注入攻击

安全说到底就是信任边界的问题。你想让谁能用你的 AI,能用到什么程度,这些得一开始就想清楚。OpenClaw 给的工具很全,用好它们,你的 AI 助手才是助手,不是后门。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » OpenClaw 安全防御体系:给你的 AI 助手装上防盗门

猜你喜欢

  • 暂无文章