
1. OpenClaw 默认配置到底有多危险自托管用户最容易忽略的安全审计盲区OpenClaw 是一个可自托管的 AI Agent 网关能接模型、跑技能、开浏览器、执行主机命令国内开发者习惯叫它“龙虾”。它适合想把 Agent 能力握在自己手里的人本地跑、接自己的模型、按需装技能。但问题也恰恰出在“自己托管”这四个字上——默认配置是给快速上手用的不是给长期在线用的。我见过太多实例装完就跑网关绑在 0.0.0.0、Token 用 123456、技能装了一堆没审过权限、YOLO 模式开着直接执行主机命令。这不是危言耸听CNCERT 已经公开警示过 OpenClaw 存在默认配置脆弱、插件投毒、提示词注入、权限过高和漏洞利用等风险。截至 2026 年 4 月已公开的高危问题包括CVE-2026-25253 WebSocket 劫持可一步 RCE影响 v2026.1.29、CVE-2026-32922 权限提升 CVSS 9.9 v2026.3.11、CVE-2026-34511 Gemini OAuth PKCE 泄露 v2026.4.2、CVE-2026-32029 代理信任绕过 v2026.2.21以及 ClawHavoc 供应链投毒事件1200 恶意技能不限版本。9.9 分的 CVSS 在漏洞评分里基本到顶。如果你还跑着 v2026.3.11 之前的版本现在就该停下来处理。安全审计不是可选项是基线。下面这份 18 步加固清单覆盖网关鉴权、密钥轮换、日志审计与漏洞排查每一步都给出可复制的配置、验证命令和回滚思路。时间不够可以分档走15 分钟紧急档先堵 RCE 和公网暴露Step 0、1、2、8、11、171 小时基线档再加权限、插件、代理信任Step 3、4、7、12、14、16完整加固走全部 18 步。在开始之前先确认几件事备份~/.openclaw/openclaw.json、~/.openclaw/workspace/、~/.openclaw/credentials/改出问题至少能回滚确认版本不低于 v2026.3.11最好升到当前稳定版 v2026.4.9弄清楚你是原生安装、WSL2 还是 Docker确认你有改配置、重启 Gateway、调文件权限的权限先跑一次openclaw security audit --deep记下当前状态做基线。通用规则是每一步先看警告再跑命令再做验证。每次升级、改配置、加插件或开新通道后都重跑一次审计。2. TaoToken 前置准备模型接入与密钥管理怎么配合 OpenClaw 加固OpenClaw 本身是网关和 Agent 运行时它需要接模型才能干活。很多自托管用户在这一步图省事把模型 API Key 直接写进openclaw.json明文里结果 Step 4 的密钥审计一跑就一堆告警。正确的做法是把模型接入和密钥管理分开模型侧用统一的 API 入口密钥侧用环境变量或 SecretRef 注入配置文件里不落明文。TaoToken 在这里的角色是模型接入层。它提供 OpenAI 兼容的 API 入口OpenClaw 的模型配置里把 Base URL 指向https://taotoken.net/apiKey 用你在控制台生成的令牌Model ID 填你实际要用的模型名。这样 OpenClaw 侧只需要维护一个环境变量轮换密钥时改一处、重启 Gateway 即可不用满配置文件找明文。具体操作路径先到控制台创建 API Key地址https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content拿到 Key 后不要直接写进openclaw.json而是写进 shell 环境或.env文件再用${VAR_NAME}引用。模型对话调试可以用https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content先验证模型通不通再回 OpenClaw 配。如果你跑的是长期编码或 Agent 任务Coding Plan 的额度模型更适合持续调用https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。这里要强调一个安全边界TaoToken 是模型接入层不是 OpenClaw 的替代品也不承担你本地网关的鉴权职责。网关鉴权、技能白名单、文件权限这些仍然要在 OpenClaw 侧做。两边配合的逻辑是模型侧统一入口 密钥轮换网关侧最小暴露 审计留痕。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content配置字段和 OpenClaw 的模型段能对上。如果你用 Claude Code 或 Anthropic 兼容通道接入点单独走https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。不管走哪条通道Key 都不应该出现在openclaw.json的明文里。Step 4 的openclaw secrets audit会直接扫出来到时候再改不如一开始就做对。3. 可复制配置18 步加固清单的 JSON 与命令片段这一节是全文的核心所有配置都可以直接复制。路径以原生安装为例Docker 用户把~/.openclaw换成挂载卷路径即可。Step 0先看版本号openclaw --version openclaw update最低要求 v2026.3.11当前稳定版 v2026.4.9。版本不对后面全白做。Docker 用户不要自己发明镜像更新流程用官方 Docker 安装/设置流程。Step 1网关只绑 loopback{ gateway: { bind: loopback } }验证ss -tlnp | grep 18789看到127.0.0.1:18789才算对看到0.0.0.0:18789说明还在对公网敞着。注意配置文件里写 bind mode不是127.0.0.1/0.0.0.0这种别名。Step 2开网关认证export OPENCLAW_GATEWAY_TOKEN$(openssl rand -hex 32){ gateway: { auth: { mode: token } } }Token 别用 123456。凡是 bind 不在 loopback 的场景lan/tailnet/custom/auto认证是必须的。Step 3锁状态目录和凭证chmod 700 ~/.openclaw chmod 600 ~/.openclaw/openclaw.json chmod -R 600 ~/.openclaw/credentials/别忘了~/.openclaw/agents/agentId/agent/auth-profiles.json也在保护范围内。配置文件权限松了等于把密钥亮给同机其他进程。Step 4清明文密钥换 SecretRefgrep -i -E (token|secret|key|password) ~/.openclaw/openclaw.json openclaw secrets auditgrep 有输出就说明还有明文密钥。两种替代方式${VAR_NAME}字符串替换或 SecretRef 对象{ source: env, provider: default, id: VAR_NAME }。能迁的全迁掉。Step 5隔离私信会话{ session: { dmScope: per-channel-peer } }dmPolicy控制陌生人能不能触发机器人session.dmScope控制不同发送方是否共用上下文。不隔离的话不同会话之间可能互相看到内容。Step 6加防火墙sudo ufw default deny incoming sudo ufw allow 22/tcp sudo ufw enable跑在云上的用户还要在安全组里同时封锁网关端口。双栈主机注意确认 IPv6 没有暴露同一个服务。Step 7审查已装技能openclaw skills list openclaw skills check三种高风险权限组合filesystem:write child_process→ RCE 风险filesystem:write network:outbound→ 数据外传credentials:read network:outbound→ 密钥泄露。看到这些组合就该删或者收权限。Step 8关掉 YOLO 模式{ tools: { exec: { security: allowlist, ask: always } } }v2026.4.2 开始tools.exec默认变成 YOLO 模式exec.security full不做命令过滤exec.ask off不弹审批。很多人升级后根本没意识到 host exec 从“先问再跑”变成了“直接跑”。完全不需要 host exec 的话最严格做法是直接 deny。Step 9日志脱敏{ logging: { level: info, redactSensitive: tools } }Step 10保护记忆文件chmod 444 ~/.openclaw/SOUL.md chmod 444 ~/.openclaw/MEMORY.md检查有没有你不认识的系统规则、外链、下载地址或者“忽略安全规则”“自动批准执行”之类的指令。Step 11关浏览器高危执行面{ browser: { evaluateEnabled: false } }sandbox browser 用户还应限制 CDP 来源。Step 12插件白名单{ plugins: { allow: [browser] } }只留你真正用的不在白名单里的自动拒绝。Step 13关 mDNS 发现{ discovery: { mdns: { mode: off } } }需要最小发现能力可以用minimal。Step 14远程 UI 别直接暴露非 loopback 的 Control UI 没设allowedOrigins、allowedOrigins: [*]全放开、Funnel 当远程访问用都会被官方审计标记为高风险。安全默认值是 loopback SSH 隧道或 Tailscale Serve。必须非 loopback 暴露的至少配合 token/password/identity-aware proxy。Step 15Cron 任务最小权限除非任务确实需要 exec 或 browser否则不给。Step 16只信任显式代理来源{ gateway: { allowRealIpFallback: false } }相关漏洞 CVE-2026-32029 影响 v2026.2.21 之前版本。正确做法是用trustedProxies明确信任代理 IP。Step 17SSRF 防护{ browser: { ssrfPolicy: { dangerouslyAllowPrivateNetwork: false } } }字段名里都写着 dangerously别打开。Step 18最终验证openclaw security audit --deep目标0 个 CRITICAL 发现。这个命令会检查入站访问策略、工具爆炸半径、执行审批漂移、网络暴露、浏览器控制暴露、本地磁盘卫生和插件策略漂移。4. 验证请求与成功结果怎么确认加固真的生效配置改完不等于生效必须逐项验证。这一节给出每类加固的验证方法和预期输出。网关绑定验证ss -tlnp | grep 18789输出里监听地址必须是127.0.0.1:18789。如果看到0.0.0.0或[::]说明 bind 没生效检查配置文件路径是不是被环境变量覆盖了。认证验证不带 Token 请求网关应该被拒。用 curl 测curl -s -o /dev/null -w %{http_code} http://127.0.0.1:18789/health预期 401 或 403。带上正确 Token 再测一次预期 200。如果无 Token 也返回 200说明gateway.auth.mode没生效。密钥审计验证openclaw secrets audit输出里不应该有明文密钥条目。如果还有回到 Step 4 把对应字段换成${VAR_NAME}或 SecretRef。改完重启 Gateway 再跑一次。技能权限验证openclaw skills check会列出每个技能的权限组合。高风险组合应该为 0。如果有用openclaw skills remove name删掉或者改技能配置收权限。YOLO 模式验证改完tools.exec后触发一次需要 exec 的操作应该弹出审批而不是直接执行。如果直接跑了检查配置有没有被 agent 级配置覆盖。日志脱敏验证触发一次带敏感参数的调用然后看日志文件里对应字段是不是被替换成[REDACTED]。没脱敏说明redactSensitive没生效。最终审计验证openclaw security audit --deep输出末尾会汇总发现数量。目标是 CRITICAL 为 0。HIGH 和 MEDIUM 也要看能修就修。这个命令建议每次改配置、升级版本、增加插件或启用新通道后都重跑。模型接入验证如果你用 TaoToken 接模型先在模型对话页确认模型能正常返回https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content再回 OpenClaw 触发一次对话。如果 OpenClaw 报模型不可用检查 Base URL 是不是https://taotoken.net/apiKey 环境变量有没有被 Gateway 进程读到。Gateway 是独立进程的话export的变量要在启动 Gateway 的 shell 里生效或者写进 systemd unit 的Environment。回滚思路每一步改之前备份对应文件。改坏了用备份覆盖重启 Gateway再跑一次审计确认回到基线。不要在没有备份的情况下批量改配置。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth 报错怎么处理加固过程中最容易撞的几类报错这里逐个拆。401 Unauthorized网关认证开了但请求没带 Token或者 Token 不匹配。先确认OPENCLAW_GATEWAY_TOKEN在启动 Gateway 的进程环境里可见。systemd 用户检查 unit 文件有没有EnvironmentDocker 用户检查-e或 compose 的environment。然后确认请求头带的是Authorization: Bearer token。如果 Token 对但还是 401检查gateway.auth.mode是不是token有没有被其他配置文件覆盖。local proxy failed通常是 Gateway 绑了 loopback但客户端从外部访问中间没有隧道。这不是 bug是 Step 1 的预期行为。正确做法是走 SSH 隧道ssh -L 18789:127.0.0.1:18789 userhost或者用 Tailscale Serve。不要为了图方便把 bind 改回 0.0.0.0。reading choices 报错模型返回格式不符合预期常见于 Base URL 或 Model ID 配错。检查 OpenClaw 模型配置里的 Base URL 是不是https://taotoken.net/apiModel ID 是不是控制台里实际可用的模型名。如果用的是 Anthropic 兼容通道接入点走https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content不要和 OpenAI 兼容通道混用。改完重启 Gateway 再试。OAuth 报错PKCE 相关CVE-2026-34511 影响 v2026.4.2 之前版本Gemini OAuth PKCE 泄露。先升级到 v2026.4.9 或更高。升级后如果还报 OAuth 错检查凭证文件权限是不是 600以及~/.openclaw/credentials/下有没有旧版本残留的 token 文件需要清理。secrets audit 一直报明文grep 能扫到但你没找到位置可能是嵌套在数组或深层对象里。用openclaw secrets audit --verbose看具体路径或者用jq递归找jq paths(scalars) as $p | select(getpath($p) | tostring | test(token|secret|key|password; i)) | $p ~/.openclaw/openclaw.json。security audit 报 CRITICAL 但不知道改哪openclaw security audit --deep --json输出结构化结果每条发现带rule和path字段按 path 回对应配置段改。改完重跑直到 CRITICAL 为 0。CC Switch / Cline MCP / Codex auth.json 相关如果你在这些工具里配 OpenClaw 或模型接入三件套必须写全Base URL、Key、Model ID。缺一个就会报连接失败或模型不可用。Base URL 统一用https://taotoken.net/apiKey 用控制台生成的令牌Model ID 填实际模型名。Codex 的auth.json里不要写明文 Key用环境变量引用。6. 长期编码与 Agent 场景的接入建议加固做完只是基线长期跑 Agent 任务还要考虑密钥轮换和额度管理。模型侧建议用 Coding Plan 的额度模型适合持续调用场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。密钥轮换的节奏看你的暴露面公网有入口的实例建议 30 天轮换一次纯内网可以放宽到 90 天。轮换时先在控制台生成新 Key更新环境变量重启 Gateway确认模型调用正常后再吊销旧 Key。API Key 管理入口在https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。模型对话调试用https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。Claude Code 和 Anthropic 兼容通道走https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。最后提醒一句这份清单没覆盖 Hook ingress token 设计问题、全量 trusted-proxy 部署细节、多租户共享 Gateway 隔离架构、全部 plugin migration 边界条件、企业级日志和取证流程。手动走完 18 步大概 60-90 分钟每次升级完还得重新过一遍。把openclaw security audit --deep加进你的升级 checklist比出事之后再补要省事得多。