跳到主要内容

安全性最佳实践

OpenClaw 是一个功能强大的 AI Agent 平台,但强大的能力也意味着巨大的安全风险。本篇提供完整的安全防护指南,涵盖从基础配置到高级防御的所有层面。

安全性不是可选的

截至 2026 年 3 月,已有超过 30,000 个 OpenClaw 实例因安全配置不当而遭到入侵。Bitdefender 安全审计发现 135,000 个暴露的实例ClawHavoc 事件中有 2,400+ 个恶意技能被植入 ClawHub。这些都是真实发生的安全事件。


安全事件回顾

在深入最佳实践之前,让我们先回顾已经发生的安全事件,理解为什么每一条建议都如此重要:

事件时间影响状态
CVE-2026-252532026 年初Gateway 远程代码执行(RCE),影响 v3.x 之前版本已修补
ClawHavoc2025 年底2,400+ 个恶意技能植入 ClawHub,窃取 API key 和个人数据已清除
18789 端口大规模入侵持续中30,000+ 个实例因暴露 Gateway 端口而被黑持续发生
Bitdefender 审计2026 年初发现 135,000 个可从公网访问的 OpenClaw 实例报告已公开

第一防线:Gateway 安全

Gateway(port 18789)是 OpenClaw 最大的攻击面。这是你必须优先处理的安全配置。

1. 绑定到 localhost

# ~/.openclaw/gateway.yaml
gateway:
port: 18789
bind: "127.0.0.1" # 只接受本机连接
致命错误

永远不要设置 bind: "0.0.0.0"。这会将你的 Gateway 暴露给整个网络,任何人都可以发送指令给你的 Agent。CVE-2026-25253 正是利用暴露的 Gateway 实现远程代码执行。

2. 启用 Gateway 认证

# ~/.openclaw/gateway.yaml
gateway:
port: 18789
bind: "127.0.0.1"
auth:
enabled: true
token: "your-secure-random-token-here"
# 使用 openssl rand -hex 32 生成

生成安全的 token:

# 生成 64 字符的随机 token
openssl rand -hex 32

# 或使用 Python
python3 -c "import secrets; print(secrets.token_hex(32))"

3. 防火墙规则

即使已绑定到 localhost,多一层防护永远不会多余:

# Linux (ufw)
sudo ufw deny 18789/tcp
sudo ufw reload

# Linux (iptables)
sudo iptables -A INPUT -p tcp --dport 18789 -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 18789 -j DROP

# macOS (pf)
echo "block in proto tcp from any to any port 18789" | sudo pfctl -ef -

4. 安全的远程访问

如果你需要从其他设备访问 OpenClaw,永远使用加密通道

# 方法一:SSH 隧道(推荐)
ssh -L 18789:127.0.0.1:18789 user@your-server

# 方法二:WireGuard VPN
# 在服务器上只允许 VPN 子网访问 18789

# 方法三:反向代理 + TLS(高级)
# 使用 Caddy 或 nginx 加上 mTLS 双向认证
不要使用以下方法
  • ngrok / Cloudflare Tunnel:直接暴露 Gateway,除非你加上了额外的认证层
  • 端口转发:路由器上的端口转发等同于暴露到公网
  • HTTP(无 TLS):中间人攻击可以拦截你的 token 和消息

第二防线:容器与沙箱安全

使用 Podman Rootless(强烈建议)

# 确认 Podman 以 rootless 模式运行
podman info | grep rootless
# rootless: true

# 配置 OpenClaw 使用 Podman
# ~/.openclaw/gateway.yaml
execution:
engine: podman
rootless: true

Docker vs Podman 安全比较

方面Docker(默认)Podman Rootless
Daemon 权限root用户级别
沙箱逃逸风险可获得 root只有用户权限
攻击面Docker daemon socket无 daemon
网络隔离需要额外配置默认较严格
推荐程度可用但不建议强烈建议

容器安全配置

# ~/.openclaw/gateway.yaml
execution:
engine: podman
rootless: true
sandbox:
# 内存限制
memory_limit: "512m"
# CPU 限制
cpu_limit: "1.0"
# 网络访问
network: "restricted" # none / restricted / full
# 文件系统访问
filesystem:
read_only: true
allowed_paths:
- "/tmp/openclaw-work"
# 停用不必要的 Linux capabilities
drop_capabilities:
- "ALL"
add_capabilities:
- "NET_RAW" # 只在需要网络时

第三防线:技能(Skill)安全

ClawHavoc 事件证明,技能是 OpenClaw 最大的供应链攻击向量。

技能安装前的审查流程

# 步骤 1:查看技能详细信息
openclaw skill info skill-name

# 步骤 2:查看技能源代码
openclaw skill inspect skill-name

# 步骤 3:检查 VirusTotal 扫描结果(ClawHavoc 后新增)
openclaw skill virustotal skill-name

# 步骤 4:查看社区评价与安装数
openclaw skill reviews skill-name

技能安全分级

风险等级说明示例
只读操作,不访问网络或文件文本处理、计算、格式转换
访问网络但不访问文件系统Web 搜索、API 查询、天气
访问文件系统或系统命令文件管理、shell 执行、系统监控
极高同时访问网络和文件系统browser-use、自动化脚本

技能权限最小化

# ~/.openclaw/skills/skill-name/permissions.yaml
permissions:
network:
enabled: true
allowed_domains:
- "api.example.com"
- "*.googleapis.com"
denied_domains:
- "*" # 默认拒绝所有
filesystem:
enabled: false
shell:
enabled: false
environment_variables:
allowed:
- "HOME"
- "PATH"
denied:
- "OPENAI_API_KEY" # 防止技能读取 API key
- "ANTHROPIC_API_KEY"
技能审计清单

完整的技能安装前审查步骤,请参考 技能审计清单


第四防线:API Key 与 Secrets 管理

不要做的事

# ❌ 不要在 gateway.yaml 中硬编码 API key
providers:
openai:
api_key: "sk-aBcDeFgHiJkLmNoPqRsTuVwXyZ"

# ❌ 不要在 SOUL.md 中包含 API key
# ❌ 不要在 Reddit / Discord 上分享完整配置
# ❌ 不要将 ~/.openclaw/ 加入公开的 Git 仓库

正确的做法

# 方法一:环境变量(基本)
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."

# 方法二:dotenv 文件(建议)
# ~/.openclaw/.env(确保此文件不被 Git 追踪)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...

# 方法三:密码管理器(最佳)
# 使用 1Password CLI
eval $(op signin)
export OPENAI_API_KEY=$(op item get "OpenAI" --fields api_key)

# 方法四:系统 Keychain(macOS)
security add-generic-password -s "openclaw-openai" -a "api_key" -w "sk-..."
# ~/.openclaw/gateway.yaml — 引用环境变量
providers:
openai:
api_key: "${OPENAI_API_KEY}"
anthropic:
api_key: "${ANTHROPIC_API_KEY}"

API Key 轮换策略

频率适用场景
每 90 天一般使用
立即怀疑泄露时
每 30 天高安全需求环境
安装新技能后如果新技能有网络和环境变量访问权

第五防线:记忆系统安全

记忆系统包含你与 Agent 的所有对话记录和个人数据。

记忆文件加密

# 方法一:磁盘级加密
# macOS:FileVault(系统设置 → 隐私与安全 → FileVault)
# Linux:LUKS
sudo cryptsetup luksFormat /dev/sdX
sudo cryptsetup luksOpen /dev/sdX openclaw-memory

# 方法二:目录级加密(Linux)
# 使用 gocryptfs
gocryptfs -init ~/.openclaw/memory-encrypted
gocryptfs ~/.openclaw/memory-encrypted ~/.openclaw/memory
记忆中的敏感信息

Agent 可能在对话中收集到你的银行账号、地址、密码等敏感信息,并存储在记忆系统中。定期审查记忆内容,确保没有不该保存的敏感数据。


安全配置检查清单

使用以下检查清单确保你的 OpenClaw 安装是安全的:

必须完成(Critical)

  • Gateway 绑定到 127.0.0.1(而非 0.0.0.0
  • Gateway 认证已启用
  • 使用 Podman rootless(而非 Docker)
  • API key 使用环境变量(而非硬编码)
  • 已更新到最新版本(修补 CVE-2026-25253)
  • 通讯平台已设置白名单用户

强烈建议(High)

  • 防火墙封堵 18789 端口的外部访问
  • 已启用磁盘加密
  • 技能安装前已完成安全审查
  • 远程访问使用 SSH 隧道或 VPN
  • API key 定期轮换

建议完成(Medium)

  • 启用 seccomp profile
  • 配置记忆清理策略
  • 监控网络活动
  • 记忆系统加密
  • 定期审查已安装技能的更新

安全事件应急流程

如果你怀疑你的 OpenClaw 实例已被入侵:

立即移动

# 1. 停止 OpenClaw
openclaw stop --force

# 2. 保留证据(先备份再清理)
cp -r ~/.openclaw/ ~/openclaw-incident-backup-$(date +%Y%m%d)

# 3. 检查可疑活动
grep -i "error\|unauthorized\|unknown\|suspicious" ~/.openclaw/logs/*.log

# 4. 检查已安装的技能
ls -la ~/.openclaw/skills/

# 5. 检查网络连接
netstat -an | grep 18789

恢复步骤

# 1. 轮换所有 API key(立即!)
# - OpenAI、Anthropic、Google 等所有 LLM 提供商
# - Telegram、Discord 等所有通讯平台 token

# 2. 重新安装 OpenClaw(干净安装)
npm uninstall -g @openclaw/cli
rm -rf ~/.openclaw/
npm install -g @openclaw/cli
openclaw init

# 3. 只重新安装已验证的技能

# 4. 恢复记忆数据(如果确认未被篡改)

# 5. 强化安全配置(参考本文档的所有建议)

延伸阅读