介绍
# Moltbot Security Guide
您的 Moltbot 网关是为本地使用而设计的。如果在没有适当安全措施的情况下暴露在互联网上,攻击者可以访问您的 API 密钥、私人消息和完整的系统访问权限。
**基于:** 真实的漏洞研究,该研究在 Shodan 上发现了 1,673 多个暴露的 OpenClaw/Moltbot 网关。
---
## 概要 - 5 个基本要素
1. **绑定到环回接口** — 永远不要将网关暴露到公共互联网 2. **设置认证令牌** — 要求所有请求都必须经过身份验证 3. **修复文件权限** — 只有您应该能读取配置文件 4. **更新 Node.js** — 使用 v22.12.0+ 以避免已知漏洞 5. **使用 Tailscale** — 安全的远程访问,无需公开暴露
---
## 暴露的内容(真实风险)
当您的网关可以被公开访问时: - 完整的对话历史记录(Telegram, WhatsApp, Signal, iMessage) - Claude、OpenAI 和其他提供商的 API 密钥 - OAuth 令牌和机器人凭证 - 对主机系统的完整 Shell 访问权限
**提示注入攻击示例:** 攻击者向您发送一封包含隐藏指令的电子邮件。您的 AI 读取它,提取您最近的电子邮件,并将摘要转发给攻击者。无需任何黑客技术。
---
## 快速安全审计
运行此命令以检查您当前的安全状况:
```bash openclaw security audit --deep ```
自动修复问题:
```bash openclaw security audit --deep --fix ```
---
## 第 1 步:仅将网关绑定到环回接口
**作用:** 防止网关接受来自其他机器的连接。
检查您的 `~/.openclaw/openclaw.json`:
```json { "gateway": { "bind": "loopback" } } ```
**选项:** - `loopback` — 仅可从本地主机访问(最安全) - `lan` — 仅可从本地网络访问 - `auto` — 绑定到所有接口(如果暴露则有危险)
---
## 第 2 步:设置身份验证
**选项 A:令牌认证(推荐)**
生成一个安全令牌:
```bash openssl rand -hex 32 ```
添加到您的配置:
```json { "gateway": { "auth": { "mode": "token", "token": "your-64-char-hex-token-here" } } } ```
或通过环境变量设置:
```bash export CLAWDBOT_GATEWAY_TOKEN="your-secure-random-token-here" ```
**选项 B:密码认证**
```json { "gateway": { "auth": { "mode": "password" } } } ```
然后:
```bash export CLAWDBOT_GATEWAY_PASSWORD="your-secure-password-here" ```
---
## 第 3 步:锁定文件权限
**作用:** 确保只有您可以读取敏感的配置文件。
```bash chmod 700 ~/.openclaw chmod 600 ~/.openclaw/openclaw.json chmod 700 ~/.openclaw/credentials ```
**权限含义:** - `700` = 只有所有者可以访问文件夹 - `600` = 只有所有者可以读/写文件
或者让 OpenClaw 修复它:
```bash openclaw security audit --fix ```
---
## 第 4 步:禁用网络广播
**作用:** 停止 OpenClaw 通过 mDNS/Bonjour 宣告自身。
添加到您的 Shell 配置(`~/.zshrc` 或 `~/.bashrc`):
```bash export CLAWDBOT_DISABLE_BONJOUR=1 ```
重新加载:
```bash source ~/.zshrc ```
---
## 第 5 步:更新 Node.js
较旧的 Node.js 版本存在安全漏洞。您需要 **v22.12.0+**。
检查版本:
```bash node --version ```
**Mac (Homebrew):** ```bash brew update && brew upgrade node ```
**Ubuntu/Debian:** ```bash curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt-get install -y nodejs ```
**Windows:** 从 [nodejs.org](https://nodejs.org/) 下载
---
## 第 6 步:设置 Tailscale(远程访问)
**作用:** 在您的设备之间创建加密隧道。无需公开暴露即可从任何地方访问 OpenClaw。
**安装 Tailscale:**
```bash # Linux curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up
# Mac brew install tailscale ```
**为 OpenClaw 配置 Tailscale:**
```json { "gateway": { "bind": "loopback", "tailscale": { "mode": "serve" } } } ```
现在仅通过您的 Tailscale 网络进行访问。
---
## 第 7 步:防火墙设置 (UFW)
**适用于云服务器(AWS, DigitalOcean, Hetzner 等)**
**安装 UFW:** ```bash sudo apt update && sudo apt install ufw -y ```
**设置默认规则:** ```bash sudo ufw default deny incoming sudo ufw default allow outgoing ```
**允许 SSH(不要跳过!):** ```bash sudo ufw allow ssh ```
**允许 Tailscale(如果使用):** ```bash sudo ufw allow in on tailscale0 ```
**启用:** ```bash sudo ufw enable ```
**验证:** ```bash sudo ufw status verbose ```
⚠️ **永远不要这样做:** ```bash # DON'T - exposes your gateway publicly sudo ufw allow 18789 ```
---
## 第 8 步:SSH 加固
**禁用密码认证(使用 SSH 密钥):**
```bash sudo nano /etc/ssh/sshd_config ```
更改: ``` PasswordAuthentication no PermitRootLogin no ```
重启: ```bash sudo systemctl restart sshd ```
---
## 安全清单
部署之前:
- [ ] 网关绑定到 `loopback` 或 `lan` - [ ] 已设置认证令牌或密码 - [ ] 文件权限已锁定 (600/700) - [ ] 已禁用 mDNS/Bonjour - [ ] Node.js v22.12.0+ - [ ] 已配置 Tailscale(如果是远程) - [ ] 防火墙阻止端口 18789 - [ ] 已禁用 SSH 密码认证
---
## 配置模板(安全默认值)
```json { "gateway": { "port": 18789, "bind": "loopback", "auth": { "mode": "token", "token": "YOUR_64_CHAR_HEX_TOKEN" }, "tailscale": { "mode": "serve" } } } ```
---
## 致谢
基于 [@NickSpisak_](https://x.com/NickSpisak_) 的安全研究,他在 Shodan 上发现了 1,673 多个暴露的网关。
原始文章:https://x.com/nickspisak_/status/2016195582180700592
---
## 安装
```bash clawdhub install NextFrontierBuilds/moltbot, openclaw-security ```
由 [@NextXFrontier](https://x.com/NextXFrontier) 构建