安全加固
你的 AI 助手装好了,现在让它变安全 -- 5 项必做配置
你将学到:
- 为什么 OpenClaw 的安全配置不能跳过
- 如何绑定本地网络、启用认证、配置白名单
- 如何审查 Skill 安全性,避免中招
- API Key 的安全存放与轮换
- 沙箱模式的开启方法
前置条件: 已完成 OpenClaw 从零到一 的安装
预计时间: 5-10 分钟
一、为什么安全很重要
OpenClaw 不是普通的聊天机器人。它能:
- 执行终端命令 --
rm -rf也不在话下 - 读写你的文件 -- 包括
~/.ssh/、~/.env、浏览器数据 - 代你发送消息 -- Telegram、Webhook、API 调用
- 安装和运行 Skills -- 第三方代码直接在你机器上跑
换句话说,OpenClaw 拥有的权限约等于你本人。
ClawHavoc 事件:这不是假设
2026 年 1 月 27-29 日,安全研究人员在 ClawHub(OpenClaw 的官方 Skill 仓库)中发现了 341 个恶意 Skills。在被审计的 2,857 个 Skills 中,约 12% 是恶意的。
这次攻击被命名为 ClawHavoc,核心手法:
用户在 ClawHub 搜索 "solana-wallet-tracker"
|
v
找到一个看起来很正规的 Skill(有文档、有截图)
|
v
SKILL.md 里写着 "Prerequisites: 请先安装 openclaw-agent 工具"
|
v
用户按指示运行安装命令
|
v
实际安装的是 Atomic Stealer (AMOS) -- macOS 信息窃取木马
|
v
你的 API Key、钱包私钥、SSH 密钥、浏览器密码全部被上传到 91.92.242[.]30
335 个恶意 Skill 来自同一个攻击组织,伪装成 crypto 工具、YouTube 工具、天气查询、Google Workspace 集成等多个类别。其中部分 Skill 还会修改你的 SOUL.md 和 MEMORY.md,植入持久化指令 -- 即使你删除了恶意 Skill,被篡改的配置文件仍会在后续对话中触发恶意行为。
不做安全配置 = 裸奔。 下面 5 项配置,每一项都必做。
二、Gateway 绑定本地(必做第一步)
问题
OpenClaw Gateway 默认可能绑定 0.0.0.0(所有网络接口)。这意味着你局域网内的任何设备 -- 同事的电脑、公共 WiFi 上的陌生人 -- 都能直接访问你的 AI 助手。
修复
打开 OpenClaw 配置文件:
# 配置文件位置
~/.openclaw/openclaw.json找到 gateway 部分,确保 bind 设置为 127.0.0.1:
{
"gateway": {
"bind": "127.0.0.1:18789"
}
}127.0.0.1 表示只有本机可以访问。外部设备无论如何都连不上。
验证
# 重启 Gateway 使配置生效
openclaw gateway restart
# 确认绑定地址
lsof -i :18789
# 应该看到 LISTEN 地址是 127.0.0.1:18789
# 如果看到 *:18789 则说明仍在监听所有接口,需要检查配置从另一台设备尝试访问(替换为你的 Mac IP):
curl http://192.168.1.xxx:18789/api/health
# 应该连接超时或被拒绝如果你需要远程访问怎么办? 不要把 Gateway 暴露到公网。使用 SSH 隧道或 Tailscale 等方案,在加密通道内访问本地端口。
三、启用认证
问题
没有认证的 Gateway 就像一扇没上锁的门。任何能访问该端口的程序都可以向你的 AI 助手发指令。
更严重的是:从 2026.1.29 版本开始,未配置认证的 Gateway 会每 11 秒自动重启,这是官方强制推动安全配置的手段。如果你发现 Gateway 反复重启,大概率是因为没配认证。
修复
# 设置认证模式为 token
openclaw config set gateway.auth.mode token
# 生成一个安全的随机 token(48 个十六进制字符)
openclaw config set gateway.auth.token "$(openssl rand -hex 24)"注意: 新版本的配置键是
gateway.auth.token,不是旧版的gateway.token。如果你从旧版升级,务必更新键名。
查看生成的 token:
openclaw config get gateway.auth.token把这个 token 记下来。连接 Telegram Bot、Web UI 或其他客户端时需要用到它。
验证
# 不带 token 访问 -- 应该被拒绝 (401)
curl http://127.0.0.1:18789/api/health
# → 401 Unauthorized
# 带 token 访问 -- 应该正常返回
curl -H "Authorization: Bearer YOUR_TOKEN_HERE" http://127.0.0.1:18789/api/health
# → {"status":"ok", ...}四、用户白名单
问题
即使你绑定了本地、启用了认证,你的 Telegram Bot 仍然是公开的 -- 任何知道 Bot 用户名的人都能给它发消息。如果你没有配置白名单,陌生人可以通过你的 Bot 操控你的 AI 助手。
修复方式一:配置允许的用户列表
首先获取你自己的 Telegram User ID(给 @userinfobot↗ 发任意消息即可获取)。
然后在配置文件中添加白名单:
{
"telegram": {
"allowed_users": [123456789]
}
}只有列表中的 User ID 才能与 Bot 交互。其他人发消息会被直接忽略。
修复方式二:配对模式(推荐)
配对模式更灵活 -- 新用户必须经过你的审批才能使用 Bot:
{
"dm": {
"strategy": "pairing"
}
}当有新用户尝试与 Bot 对话时,Bot 会生成一个配对码。你需要在终端确认:
openclaw pairing approve telegram <PAIRING_CODE>未经审批的用户完全无法使用 Bot。
两种方式可以同时使用。
allowed_users作为硬白名单,pairing作为新用户的审批机制。建议至少启用一种。
五、Skill 安全审查
ClawHavoc 事件的核心教训:ClawHub 上的 Skill 不等于安全的 Skill。
安装前必做的 4 件事
1. 查看源码
每个 Skill 都有 GitHub 仓库链接。安装前打开仓库,重点检查:
# 查看 Skill 描述文件
cat SKILL.md
# 搜索可疑命令
grep -r "curl\|wget\|eval\|exec\|base64\|/dev/tcp" .
# 搜索敏感路径访问
grep -r "\.ssh\|\.env\|\.openclaw\|wallet\|keychain" .如果一个 "YouTube 字幕工具" 要读取你的 ~/.ssh/ 目录,那一定有问题。
2. 检查发布者信息
openclaw skills info <skill-name>- 发布者是否有 GitHub 主页?主页是否活跃?
- 同一发布者的其他 Skill 质量如何?
- 账号是不是刚注册的?
3. 检查社区评价
- ClawHub 星标数量 < 2 的 Skill 不要安装
- 查看 Issues 和讨论区是否有安全相关的报告
- "quality indicators"(下载量、星标)不等于安全保证 -- ClawHavoc 的恶意 Skill 部分也有不错的星标
4. 检查权限声明
Skill 在 SKILL.md 中会声明它需要的权限。遵循最小权限原则:
| Skill 功能 | 合理权限 | 危险信号 |
|---|---|---|
| 天气查询 | 网络访问 | 要求读写文件系统 |
| 文件格式转换 | 读写指定目录 | 要求网络访问 |
| 代码分析 | 读取项目目录 | 要求执行 shell 命令 |
| Crypto 价格 | 网络访问 | 要求读取 ~/.ssh/ |
如果一个 Skill 要求的权限超出其功能所需,不要安装。
六、API Key 安全
你的 API Key 在哪里
OpenClaw 的所有 API Key 存储在:
~/.openclaw/env # 环境变量文件(API Key 在这里)
~/.openclaw/openclaw.json # 主配置文件
必做的 3 件事
1. 确保 env 文件不被提交到 Git
# 检查 .gitignore
echo ".openclaw/" >> ~/.gitignore
# 如果你的项目目录下有 .env 文件
echo ".env" >> /path/to/your/project/.gitignore2. 设置正确的文件权限
# 只有你自己可以读写
chmod 600 ~/.openclaw/env
chmod 600 ~/.openclaw/openclaw.json
# 验证
ls -la ~/.openclaw/env
# 应该显示 -rw------- (只有 owner 可读写)3. 定期轮换 Token
# 轮换 Gateway auth token
openclaw config set gateway.auth.token "$(openssl rand -hex 24)"
openclaw gateway restart
# 轮换 OAuth token(如果使用了 OAuth 认证)
openclaw auth refresh建议每 90 天轮换一次,或在怀疑泄露时立即轮换。
绝对不要做的事: 不要在 Telegram 聊天中发送 API Key。不要把 Key 贴到 GitHub Issue 里。不要在截图中暴露 Key。一旦泄露,立即在对应服务的控制台撤销旧 Key 并生成新 Key。
七、沙箱模式(可选但推荐)
什么是沙箱模式
沙箱模式限制 OpenClaw 可以访问的文件系统范围。启用后,AI 助手只能在你指定的目录内操作,无法触及系统文件或其他敏感目录。
启用方法
在配置文件中添加:
{
"security": {
"sandbox_mode": true,
"allowed_paths": [
"~/Projects",
"~/Documents/work"
],
"denied_paths": [
"~/.ssh",
"~/.gnupg",
"~/.openclaw/env"
]
}
}工具权限最小化
除了文件系统沙箱,还可以对工具(Tools)做权限控制:
{
"security": {
"tool_permissions": {
"shell": "confirm",
"file_write": "confirm",
"network": "allow",
"file_read": "allow"
}
}
}| 权限级别 | 含义 |
|---|---|
allow | 静默执行,不需要确认 |
confirm | 每次执行前弹窗确认 |
deny | 完全禁止 |
推荐设置: shell 和 file_write 设为 confirm,file_read 和 network 设为 allow。这样 AI 可以自由读取信息和联网,但写入文件或执行命令时需要你确认。
八、安全检查清单
完成上面所有步骤后,用这个清单做最终确认:
网络层
- Gateway 绑定
127.0.0.1(不是0.0.0.0) -
lsof -i :18789确认监听地址正确 - 从外部设备无法访问 Gateway 端口
认证层
-
gateway.auth.mode设为token -
gateway.auth.token已生成(48+ 字符随机值) - 不带 token 的请求返回 401
- Gateway 不再每 11 秒重启
用户层
-
allowed_users只包含你自己的 Telegram User ID - 或
dm.strategy设为pairing - 已测试:陌生人无法与 Bot 交互
Skill 层
- 已安装的 Skill 全部检查过源码
- 没有安装星标 < 2 的 Skill
- 没有 Skill 请求超出其功能的权限
凭证层
-
~/.openclaw/env权限为 600 -
~/.openclaw/openclaw.json权限为 600 -
.openclaw/已加入.gitignore - 没有在聊天或代码中硬编码 API Key
运行时层(可选)
-
sandbox_mode已启用 -
allowed_paths只包含必要目录 -
shell和file_write设为confirm
总结
5 分钟,5 项配置,从裸奔到安全:
| 步骤 | 配置项 | 防护目标 |
|---|---|---|
| 1 | Gateway 绑定本地 | 阻止局域网入侵 |
| 2 | 启用认证 Token | 阻止未授权访问 |
| 3 | 用户白名单/配对 | 阻止 Telegram 陌生人 |
| 4 | Skill 安全审查 | 阻止供应链攻击 |
| 5 | API Key 安全存放 | 阻止凭证泄露 |
加上可选的沙箱模式,你的 OpenClaw 就从"任何人可用、任何操作可执行"变成了"只有你可用、敏感操作需确认"。
延伸阅读
- SlowMist OpenClaw 安全实践指南↗ -- 面向 Agent 的零信任安全框架,含三层防御矩阵
- OpenClaw 官方安全文档↗ -- Gateway 安全配置参考
- ClawHavoc 事件详细报告 (The Hacker News)↗ -- 341 个恶意 Skill 的完整分析
- From SKILL.md to Shell Access (Snyk)↗ -- Skill 威胁建模深度分析
下一步
安全配置到此完成。你的 AI 助手现在已经有了基本的防护。
接下来进入进阶篇,学习更强大的工具: