OpenClaw作为自托管的AI网关,存储了你的对话数据、API密钥、聊天应用凭证等敏感信息,安全配置至关重要。本文将详细介绍OpenClaw的安全配置最佳实践,帮助你加固系统,防范各种安全风险。
安全风险分析
OpenClaw可能面临的安全风险:
1. 未授权访问:攻击者通过漏洞获取网关访问权限
2. 数据泄露:对话记录、API密钥、用户凭证等敏感信息泄露
3. 权限滥用:AI被诱导执行危险的系统命令
4. 供应链攻击:恶意技能或依赖包包含后门
5. 网络攻击:网关端口暴露在公网被攻击
基础安全配置
1. 网络访问控制
不要直接暴露网关端口到公网
❌ 错误做法:直接将18789端口映射到公网,任何人都可以访问
✅ 正确做法:
– 使用Tailscale或其他VPN访问,仅允许可信设备连接
– 放在内网,通过SSH隧道访问
– 必须暴露公网时,配置Nginx反向代理+Basic Auth+HTTPS
Nginx反向代理配置示例
server {
listen 443 ssl;
server_name openclaw.yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# 基础认证
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
# 限制IP访问
allow 192.168.1.0/24; # 允许内网
allow your_public_ip; # 允许你的公网IP
deny all;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
2. 访问权限配置
配置用户白名单
默认情况下OpenClaw的DM配对机制会阻止未知用户访问,建议显式配置允许的用户列表:
{
"channels": {
"whatsapp": {
"allowFrom": ["+8613800138000", "+8613900139000"],
"dmPolicy": "pairing"
},
"telegram": {
"allowFrom": ["123456789", "987654321"],
"dmPolicy": "pairing"
},
"discord": {
"allowFrom": ["123456789012345678"],
"dmPolicy": "pairing"
}
}
}
群组安全配置
如果在群组中使用,建议配置必须@才会响应:
{
"messages": {
"groupChat": {
"requireMention": true,
"mentionPatterns": ["@openclaw"]
}
}
}
3. 沙箱配置
为了防止AI执行危险操作,建议启用非主会话的沙箱模式:
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowedTools": ["read", "write", "web_fetch"],
"deniedTools": ["exec", "process", "system"]
}
}
}
}
这样群组和未知用户的会话只能使用有限的工具,无法执行系统命令。
工具权限控制
限制exec工具权限
exec工具可以执行系统命令,权限很高,建议限制使用:
{
"tools": {
"exec": {
"enabled": true,
"allowedCommands": ["ls", "cat", "grep"], # 只允许执行指定命令
"deniedCommands": ["rm", "dd", "mkfs", "shutdown", "reboot"], # 禁止危险命令
"requireConfirmation": true # 执行前需要用户确认
}
}
}
文件系统访问限制
限制AI可以访问的目录,防止读取敏感文件:
{
"tools": {
"read": {
"allowedPaths": ["/root/.openclaw/workspace", "/tmp"],
"deniedPaths": ["/root/.ssh", "/root/.aws", "/etc", "*/secret*", "*/key*", "*/password*"]
},
"write": {
"allowedPaths": ["/root/.openclaw/workspace", "/tmp"],
"deniedPaths": ["/etc", "/usr", "/bin", "/sbin"]
}
}
}
浏览器工具安全配置
{
"tools": {
"browser": {
"enabled": true,
"allowFileAccess": false, # 禁止浏览器访问本地文件
"blockedUrls": ["*://*.internal/*", "*://192.168.*/*", "*://10.*/*"], # 禁止访问内网地址
"requireConfirmationForUrls": ["*://bank.com/*", "*://payment.*"] # 访问敏感网站需要确认
}
}
}
技能安全
只安装可信来源的技能
- 优先安装官方和经过社区验证的技能
- 安装第三方技能前要审查代码,确认没有恶意行为
- 不要安装功能不明的技能
技能权限配置
每个技能都可以配置独立的权限:
{
"skills": {
"github": {
"enabled": true,
"permissions": {
"read": true,
"write": false, # 禁止写入操作,只能查询
"delete": false
},
"allowedRepos": ["your-username/*"] # 只允许访问你的仓库
}
}
}
定期更新技能
及时更新技能修复安全漏洞:
# 列出已安装的技能
openclaw skills list
# 更新所有技能
openclaw skills update
# 更新指定技能
openclaw skills update github
数据安全
敏感信息加密存储
OpenClaw的配置文件中包含很多敏感信息,建议设置严格的权限:
# 配置文件权限设置为仅所有者可读
chmod 600 ~/.openclaw/openclaw.json
chmod 600 ~/.openclaw/credentials/*.json
# 目录权限设置
chmod 700 ~/.openclaw
定期备份
定期备份配置和数据:
# 备份脚本示例
#!/bin/bash
BACKUP_DIR="/backup/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# 备份配置文件
tar -zcvf $BACKUP_DIR/config_$DATE.tar.gz ~/.openclaw/*.json ~/.openclaw/credentials
# 备份工作区
tar -zcvf $BACKUP_DIR/workspace_$DATE.tar.gz ~/.openclaw/workspace
# 删除30天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
日志审计
启用详细日志,定期审计操作记录:
{
"logging": {
"level": "info",
"file": "/var/log/openclaw/gateway.log",
"auditLog": true, # 启用审计日志,记录所有工具调用和操作
"maxSize": "100M",
"maxFiles": 30
}
}
审计日志会记录所有工具调用、用户消息、AI响应,方便出现安全问题时溯源。
系统层面安全
运行在专用用户下
不要用root用户运行OpenClaw,创建专用用户:
# 创建专用用户
useradd -m openclaw
# 赋予必要的权限
usermod -aG docker openclaw # 如果需要使用docker
# 切换用户运行
su - openclaw -c "openclaw gateway --port 18789"
系统更新和漏洞修复
定期更新系统和依赖:
# 更新系统包
apt update && apt upgrade -y
# 更新Node.js到最新LTS版本
nvm install --lts
# 更新OpenClaw到最新版本
npm install -g openclaw@latest
主机安全加固
- 配置防火墙,只开放必要的端口
- 禁用SSH密码登录,使用密钥登录
- 安装fail2ban,防止暴力破解
- 定期扫描系统漏洞
高级安全特性
操作确认机制
对于高风险操作,开启确认机制:
{
"security": {
"requireConfirmation": [
"exec.*", # 所有exec操作
"write.*/etc/.*", # 写入/etc目录
"delete.*", # 所有删除操作
"browser.*bank.*" # 浏览器访问银行网站
]
}
}
配置后,AI执行这些操作前会先向你确认,得到同意后才会执行。
内容安全过滤
开启内容过滤,防止AI生成违法违规内容,也防止用户诱导AI做危险操作:
{
"security": {
"contentFilter": {
"enabled": true,
"blockedKeywords": ["rm -rf /", "dd if=", "mkfs", "删除系统文件", "执行危险命令"],
"blockedActions": ["获取密码", "导出密钥", "发送数据到外部"]
}
}
}
多因素认证
对于Web控制面板,开启多因素认证:
{
"web": {
"auth": {
"mode": "password+2fa",
"username": "admin",
"password_hash": "bcrypt哈希后的密码",
"2fa_secret": "TOTP密钥"
}
}
}
安全检查清单
定期进行安全检查,确认以下配置正确:
– [ ] 网关没有直接暴露在公网
– [ ] 已配置用户白名单,未知用户无法访问
– [ ] 启用了沙箱模式,限制非信任会话的权限
– [ ] 敏感系统命令已被禁止或需要确认
– [ ] 文件访问限制已配置,防止读取敏感文件
– [ ] 仅安装了必要的、可信的技能
– [ ] 配置文件权限正确,敏感信息已加密
– [ ] 定期备份机制已配置
– [ ] 审计日志已开启
– [ ] 使用非root用户运行OpenClaw
– [ ] 系统和OpenClaw已更新到最新版本
应急响应
如果发现系统可能被入侵:
1. 立即停止OpenClaw服务
2. 备份当前日志和配置,用于溯源
3. 检查是否有异常操作、未知技能或可疑进程
4. 更换所有API密钥和凭证
5. 修复漏洞后重新部署
6. 必要时报警处理
总结
安全是自托管系统的生命线,OpenClaw虽然功能强大,但如果配置不当也会带来安全风险。按照本文的最佳实践进行配置,可以防范绝大多数安全威胁。记住,安全是一个持续的过程,需要定期检查和更新配置,才能保证系统的安全稳定运行。
更多安全配置细节可以参考官方文档:https://docs.openclaw.ai/gateway/security
© 版权声明
文章版权归作者所有,未经允许请勿转载。
