第2章 - 安全加固
嗨,朋友!安全是运行 OpenClaw 最重要的事情之一。毕竟,OpenClaw 拥有执行 Shell 命令、读写文件的能力——如果配置不当,后果可能很严重。这一章我来帮你把安全做到位。
🤔 为什么安全这么重要?
OpenClaw 连接的是真实的消息平台。这意味着:
- 陌生人可能通过聊天应用给你的 Bot 发消息
- AI 有能力在你的服务器上执行任何命令
- 不当配置可能导致 API Key 被滥用
核心原则
将所有入站 DM 视为不可信输入。
🔐 DM 安全策略
默认策略:Pairing(配对)
OpenClaw 默认使用 pairing 策略,这是最安全的方式:
陌生人发消息 → Bot 返回配对码 → 你手动批准 → 用户加入白名单
{
"channels": {
"telegram": {
"dmPolicy": "pairing"
},
"discord": {
"dmPolicy": "pairing"
},
"whatsapp": {
"dmPolicy": "pairing"
}
}
}
管理配对请求
# 查看所有配对请求
openclaw pairing list
# 批准特定请求
openclaw pairing approve telegram <配对码>
# 拒绝请求
openclaw pairing reject telegram <配对码>
策略对比
| 策略 | 行为 | 安全性 | 适用场景 |
|---|---|---|---|
pairing | 需配对码确认 | 🔒🔒🔒 | 个人使用(默认) |
open | 允许所有人 | ⚠️ | 公共服务(谨慎使用) |
重要
永远不要在没有其他安全措施的情况下使用 open 策略。如果必须使用,至少要配合白名单:
{
"channels": {
"telegram": {
"dmPolicy": "open",
"allowFrom": ["特定用户ID"]
}
}
}
🏖️ 沙箱隔离
OpenClaw 支持 Docker 沙箱,可以限制非主会话的权限。
为什么需要沙箱?
- 主会话(你自己):完整权限,可以执行任何操作
- 非主会话(群组、其他渠道):应该限制权限,防止滥用
配置沙箱
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main"
}
}
}
}
mode: "non-main" 表示非主会话的 bash 命令会在 Docker 容器中运行。
沙箱权限
| 工具 | 沙箱内 | 说明 |
|---|---|---|
bash | ✅ 允许(Docker 内) | 命令在容器中执行 |
read / write / edit | ✅ 允许 | 文件操作 |
sessions_* | ✅ 允许 | 会话管理 |
browser | ❌ 禁止 | 浏览器控制 |
canvas | ❌ 禁止 | 画布操作 |
cron | ❌ 禁止 | 定时任务 |
nodes | ❌ 禁止 | 设备节点 |
安装 Docker(沙箱依赖)
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 将 openclaw 用户添加到 docker 组
sudo usermod -aG docker openclaw
# 重新登录使生效
su - openclaw
# 验证
docker run hello-world
🔒 Gateway 安全配置
1. 绑定地址
永远保持 Gateway 绑定在本地:
{
"gateway": {
"bind": "127.0.0.1"
}
}
绝对不要
{
"gateway": {
"bind": "0.0.0.0"
}
}
这会把 Gateway 暴露到公网!
2. 认证模式
如果使用 Tailscale Funnel 或其他公开访问方式,必须设置密码:
{
"gateway": {
"auth": {
"mode": "password"
}
}
}
3. Tailscale 安全
{
"gateway": {
"tailscale": {
"mode": "serve",
"resetOnExit": true
}
}
}
serve模式仅 Tailnet 内部可访问,使用 Tailscale 身份认证resetOnExit在 Gateway 关闭时撤销 Tailscale 配置
🛡️ 系统级安全
1. 防火墙配置
# 安装 ufw(如果没有)
sudo apt install -y ufw
# 允许 SSH
sudo ufw allow ssh
# 不要开放 Gateway 端口(18789)到外网
# Gateway 只应通过 SSH 隧道或 Tailscale 访问
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status
2. SSH 安全加固
# 禁用密码登录,只允许密钥认证
sudo tee -a /etc/ssh/sshd_config << 'EOF'
PasswordAuthentication no
PermitRootLogin no
EOF
# 重启 SSH
sudo systemctl restart sshd
3. 自动安全更新
# 安装自动更新
sudo apt install -y unattended-upgrades
# 启用
sudo dpkg-reconfigure -plow unattended-upgrades
🔍 安全检查清单
定期运行以下检查:
# OpenClaw 安全检查
openclaw doctor
# 检查 DM 策略是否安全
# doctor 会警告不安全的配置
# 检查 Gateway 是否只监听本地
ss -tlnp | grep 18789
# 应该只看到 127.0.0.1:18789
# 检查防火墙状态
sudo ufw status
# 检查异常登录
last -10
📋 安全最佳实践总结
- DM 策略:保持
pairing模式,不要用open - Gateway 绑定:只绑定
127.0.0.1,不要0.0.0.0 - 远程访问:使用 SSH 隧道或 Tailscale,不要直接暴露端口
- 沙箱:非主会话启用 Docker 沙箱
- 用户隔离:用普通用户运行 OpenClaw,不要用 root
- API Key:妥善保管,不要泄露
- 系统更新:定期更新系统和 OpenClaw
- 防火墙:只开放必要端口(SSH)
- SSH 加固:禁用密码登录,使用密钥认证
- 定期检查:运行
openclaw doctor和安全审计
💪 练习题
- OpenClaw 的默认 DM 策略是什么?为什么这是最安全的选择?
- 什么是沙箱模式?它保护了什么?
- 列举 5 条你认为最重要的安全措施。
答案提示
- 默认是
pairing,因为它要求每个新用户都经过你的手动批准才能使用 Bot - 沙箱将非主会话的 bash 命令在 Docker 容器中执行,防止群组/渠道中的陌生人在你的主机上执行危险命令
- 参考安全最佳实践总结中的任意 5 条
下一步: 第3章 - 多 Agent 路由 →
