安全加固与日常运维最佳实践
本教程共 26 篇 · 第 23 篇 · 更新于 2026-07-27 · 约 6 分钟阅读
23. 安全加固与日常运维最佳实践
本节目标:掌握 OpenClaw 自托管场景下的安全与运维基线——会做安全审计、会备份、会收窄暴露面,并且出问题时能一键收回。
OpenClaw 跑在你自己的机器上,能力很强:能读文件、跑命令、连各种聊天软件。能力强意味着”被乱用”的后果也重。这一章不堆术语,只给你一套能直接落地的做法。
Note本书基于
2026.7.1-2版本。安全相关命令以官方文档为准;拿不准的配置项,先openclaw security audit看报告。
先做安全审计:security audit
OpenClaw 自带安全审计,能扫出一批配置隐患:
openclaw security audit
openclaw security audit --deep
openclaw security audit --fix
--deep 额外做实时网关探测和插件代码扫描;--fix 会自动修掉”安全且确定”的问题,比如:
- 把
groupPolicy="open"翻成groupPolicy="allowlist"。 - 收紧
~/.openclaw及其下配置文件、凭据目录的权限。
Tip审计报告里标
critical的,优先处理。常见的致命项:状态目录被其他用户可写(fs.state_dir.perms_world_writable)、非回环绑定却没鉴权(gateway.bind_no_auth)、鉴权模式是none却暴露了 HTTP API(gateway.http.no_auth)。
备份配置:最便宜的保险
你的 ~/.openclaw/openclaw.json 和 credentials/ 目录,存着网关设置和各渠道的登录态。弄丢了就得重新配一遍渠道。定期备份就两条命令的事:
cp -r ~/.openclaw/openclaw.json ~/backups/openclaw-config-$(date +%F).json
cp -r ~/.openclaw/credentials ~/backups/openclaw-creds-$(date +%F)
Note凭据目录里是登录态和令牌,备份文件别丢到网盘同步目录(iCloud / Dropbox / Drive),那会扩大暴露面。本地加密盘或不联网的位置更合适。
最小权限:该关的关掉
自托管默认是”个人助手”模型——一个人操作,不是多租户隔离。如果你要让不止一个人给机器人发消息,就得主动收窄:
- 把开放 DM 改成
dmPolicy: "pairing"或严格allowFrom名单。 - 关掉不需要的工具:
exec、elevated、cron、gateway这些高危能力,没用就别开。 - 小模型(参数 <=300B)没开沙箱却开着浏览器/网页工具时,审计会警告,建议要么换大模型,要么开沙箱。
{
"tools": {
"exec": { "security": "deny", "ask": "always" },
"elevated": { "enabled": false }
}
}
控制暴露面:别直接公网
能不暴露到公网,就别暴露。官方给的暴露模式,从窄到宽:
| 模式 | 适合 | 必要条件 |
|---|---|---|
| 回环 + SSH 隧道 | 个人用、管理、调试 | gateway.bind: "loopback",隧道到 127.0.0.1:18789 |
| 回环 + Tailscale Serve | 个人 tailnet 内访问控制台 | 网关只回环,Tailscale 只鉴控制台 |
| Tailnet / LAN 绑定 | 私有网络、已知设备 | 网关鉴权 + 防火墙白名单,不要公网转发 |
| 可信反向代理 | 组织 SSO / OIDC 前置 | trusted-proxy 鉴权 + 严格 trustedProxies |
| 公网 | 罕见、高风险 | 身份感知代理 + TLS + 限流 + 严格白名单 |
Warning避免把网关直接做公网端口转发。必须公网时,在它前面放一个身份感知代理,让代理成为唯一可达路径。
一个最小安全基线(暴露部署的起点):
{
"gateway": {
"bind": "loopback",
"auth": { "mode": "token", "token": "换成一个够长的随机串" }
},
"session": { "dmScope": "per-channel-peer" },
"agents": { "defaults": { "sandbox": { "mode": "non-main" } } },
"tools": { "profile": "messaging", "exec": { "security": "deny", "ask": "always" }, "elevated": { "enabled": false } }
}
一次只放宽一项:先加渠道白名单,再考虑放开写权限工具;先上反向代理,再接受远程控制台流量。
聊天渠道的入口要收拢
聊天渠道是不可信的输入面。开放前记住几条:
- DM 优先用
pairing或严格allowFrom,别用open。 - 群里除非环境很可控,否则要求
@提及(requireMention)。 - 多人能发私信时,设
session.dmScope: "per-channel-peer",让每个人会话不共享上下文。 - 共享频道只路由到”工具最少、没有个人凭据”的 agent。
Note配对只是”批准这个人能触发机器人”,不等于给他在主机上开了隔离边界。别把配对当成安全隔离。
工具与沙箱:远程发信人最危险
把网关暴露给远程发信人之前,确认清楚:
- 哪些会话跑在宿主机、哪些跑在沙箱。
- 主机 exec 要拒绝或要求审批。
elevated工具默认关,除非某个你信任的发信人确实需要。- 浏览器、画布、节点、cron、gateway 这些控制面工具,别对开放/半开放消息面开放。
- 绑定挂载要窄,别挂凭据、home、Docker socket、系统路径。
不同信任边界,就用不同的网关、不同的系统用户或不同的主机来分隔。光靠提示词或会话标签,挡不住不信任的用户。
回退方案:出问题能一键收
万一觉得暴露过头了,先收口:
{
"gateway": { "bind": "loopback" },
"channels": {
"whatsapp": { "dmPolicy": "disabled" },
"telegram": { "dmPolicy": "disabled" },
"discord": { "dmPolicy": "disabled" },
"slack": { "dmPolicy": "disabled" }
},
"tools": { "exec": { "security": "deny", "ask": "always" }, "elevated": { "enabled": false } }
}
然后停掉公网转发 / Tailscale Funnel / 反向代理,轮换网关令牌和受影响渠道凭据,复查近期日志与工具调用,最后再 openclaw security audit --deep 确认。
小结
安全运维四件事:定期 security audit 看报告、备份配置和凭据、暴露面能窄则窄、出事有回退。OpenClaw 能力越强,越要把”谁能动它、能动到什么程度”想清楚——这比任何单条命令都重要。