OpenClaw 企业级安全部署:从防火墙到容灾的完整指南
在前面的系列文章中,我们完成了入门篇和进阶篇的学习。如何防止服务器被攻击?如何保证数据不丢失?如何让服务保持高可用?层级防护措施网络层防火墙 + SSH 加固 + fail2ban应用层环境变量 + API 限流 + 日志审计传输层HTTPS + 安全协议配置数据层自动备份 + 云端容灾 + 恢复演练运维层健康检查 + 监控告警 + 定时维护遇到问题欢迎留言,一起讨论!如果对你有帮助,点个在看支持
·
前言
在前面的系列文章中,我们完成了入门篇和进阶篇的学习。但当你想把 OpenClaw 真正用到企业场景时,安全问题就变得至关重要:
- 如何防止服务器被攻击?
- 如何保证数据不丢失?
- 如何让服务保持高可用?
这篇文章将带你完成企业级安全部署的全流程,建议先收藏再慢慢看。
目录
1. 服务器安全加固
1.1 防火墙配置
服务器暴露在公网,第一道防线就是防火墙。Ubuntu 系统用 ufw 来管理:
# 查看当前状态
sudo ufw status
# 只开放必要的端口
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw allow 6688 # OpenClaw API(如需外部访问)
# 启用防火墙
sudo ufw enable
# 查看详细规则
sudo ufw verbose
最佳实践:
- SSH 端口建议改为非默认的 2222 或更高
- 只开放业务需要的端口,其他一律拒绝
1.2 SSH 安全加固
默认的 SSH 配置很容易被暴力破解,必须加固:
# 编辑 SSH 配置
sudo vim /etc/ssh/sshd_config
# 修改以下配置
Port 2222 # 改掉默认的22端口
PermitRootLogin no # 禁止root登录
PasswordAuthentication no # 禁用密码登录
MaxAuthTries 3 # 最大重试3次
ClientAliveInterval 300 # 5分钟无活动自动断开
# 重启 SSH 服务
sudo systemctl restart sshd
然后配置密钥登录:
# 在本地生成密钥对
ssh-keygen -t ed25519 -C "openclaw-server"
# 复制公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 admin@你的服务器IP
1.3 系统更新与加固
# 自动更新安全补丁(Ubuntu/Debian)
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# 安装 fail2ban 防止暴力破解
sudo apt install fail2ban
# 配置 fail2ban
sudo vim /etc/fail2ban/jail.local
# 添加以下内容
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
# 重启 fail2ban
sudo systemctl restart fail2ban
2. OpenClaw 安全配置
2.1 环境变量安全
不要把敏感信息写在配置文件里,用环境变量:
# 创建环境变量文件
vim ~/.openclaw/env
# 添加以下内容(不要提交到 git!)
OPENCLAW_API_KEY=sk-xxxxx
OPENCLAW_ADMIN_PASSWORD=你的强密码
FEISHU_APP_SECRET=xxx
TELEGRAM_BOT_TOKEN=xxx
# 确保文件权限
chmod 600 ~/.openclaw/env
2.2 限制 API 访问
修改 ~/.openclaw/config.yaml:
server:
host: 127.0.0.1 # 只监听本地,外部通过 Nginx 代理
port: 8080
rateLimit:
enabled: true
maxRequests: 100 # 每分钟最大请求数
burst: 20
security:
# 启用 API 密钥验证
apiKeyRequired: true
allowedOrigins:
- https://your-domain.com
- https://yourcompany.com
2.3 日志与审计
开启详细日志,方便出问题追溯:
logging:
level: info
file: /var/log/openclaw/openclaw.log
maxSize: 100mb
maxFiles: 10
audit:
enabled: true
logCommands: true # 记录所有执行的命令
logSensitive: false # 不记录敏感数据
3. HTTPS 与域名配置
3.1 安装 Nginx 和 Certbot
# 安装 Nginx
sudo apt install nginx
# 安装 Certbot(自动续期 SSL 证书)
sudo apt install certbot python3-certbot-nginx
3.2 配置 Nginx 反向代理
sudo vim /etc/nginx/sites-available/openclaw
# 添加以下配置
server {
listen 80;
server_name openclaw.yourcompany.com;
# 自动跳转到 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name openclaw.yourcompany.com;
# SSL 证书(Certbot 自动配置)
ssl_certificate /etc/letsencrypt/live/openclaw.yourcompany.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/openclaw.yourcompany.com/privkey.pem;
# 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# 代理到 OpenClaw
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 限制上传大小(防DDoS)
client_max_body_size 10M;
}
# 启用配置
sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
3.3 自动续期 SSL
# 测试自动续期
sudo certbot renew --dry-run
# 添加到定时任务(每天检查)
sudo crontab -e
# 添加这一行
0 0 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"
4. 数据备份与容灾
4.1 重要数据清单
OpenClaw 需要备份的关键数据:
| 数据 | 位置 | 备份频率 |
|---|---|---|
| 配置文件 | ~/.openclaw/config.yaml | 每次修改 |
| 环境变量 | ~/.openclaw/env | 每次修改 |
| 对话历史 | ~/.openclaw/memory/ | 每天 |
| 自定义 Skill | ~/.openclaw/skills/ | 每周 |
| 日志文件 | /var/log/openclaw/ | 每周 |
4.2 自动备份脚本
#!/bin/bash
# backup-openclaw.sh
BACKUP_DIR="/backup/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份配置文件
tar -czf $BACKUP_DIR/config_$DATE.tar.gz \
~/.openclaw/config.yaml \
~/.openclaw/env \
~/.openclaw/skills/ \
~/.openclaw/memory/
# 备份日志(可选,保留30天)
find /var/log/openclaw -name "*.log" -mtime +30 -delete
# 上传到云存储(以阿里云 OSS 为例)
ossutil cp $BACKUP_DIR/config_$DATE.tar.gz oss://your-bucket/backup/
# 删除本地超过7天的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
echo "[$(date)] 备份完成: config_$DATE.tar.gz"
添加定时任务:
sudo crontab -e
# 每天凌晨 3 点自动备份
0 3 * * * /home/admin/backup-openclaw.sh >> /var/log/backup.log 2>&1
4.3 恢复演练
光有备份不够,必须定期测试恢复:
# 测试恢复(先在测试环境操作!)
cd /tmp
tar -xzf /backup/openclaw/config_20260404_030000.tar.gz
# 验证文件完整性
diff -r ~/.openclaw/config.yaml /tmp/.openclaw/config.yaml
# 如果没问题,再正式恢复
cp -r /tmp/.openclaw/* ~/.openclaw/
5. 定时维护与监控
5.1 健康检查脚本
#!/bin/bash
# health-check.sh
# 检查 OpenClaw 进程
if ! pgrep -x "openclaw" > /dev/null; then
echo "[$(date)] ❌ OpenClaw 进程不存在,正在重启..."
cd ~/.openclaw
pm2 restart openclaw
fi
# 检查 API 响应
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8080/health)
if [ "$RESPONSE" != "200" ]; then
echo "[$(date)] ❌ API 异常,HTTP状态码: $RESPONSE"
# 发送告警(可对接钉钉/飞书机器人)
curl -X POST "你的飞书机器人webhook" \
-H "Content-Type: application/json" \
-d '{"msg_type":"text","content":{"text":"[OpenClaw] 服务异常,请检查!"}}'
fi
# 检查磁盘空间
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 90 ]; then
echo "[$(date)] ⚠️ 磁盘使用率: $DISK_USAGE%"
fi
echo "[$(date)] ✅ 健康检查完成"
5.2 定时任务配置
sudo crontab -e
# 每5分钟健康检查
*/5 * * * * /home/admin/health-check.sh >> /var/log/health.log 2>&1
# 每周日凌晨重启服务(可选)
0 4 * * 0 pm2 restart openclaw
5.3 监控面板(可选)
推荐安装 Grafana + Prometheus 做可视化监控:
# 创建数据目录
mkdir -p /data/grafana /data/prometheus
# 安装 Node Exporter(采集系统指标)
docker run -d \
--name node-exporter \
-p 9100:9100 \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /:/rootfs:ro \
prom/node-exporter
# 安装 Prometheus
docker run -d \
--name prometheus \
-p 9090:9090 \
-v /data/prometheus:/prometheus \
-v /home/admin/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
# 安装 Grafana
docker run -d \
--name grafana \
-p 3000:3000 \
-v /data/grafana:/var/lib/grafana \
-e GF_SECURITY_ADMIN_PASSWORD=your_password \
grafana/grafana
然后在 Grafana 中添加 Prometheus 数据源,导入 Node Exporter 模板即可看到服务器状态。
6. 总结
本文涵盖了企业级安全部署的核心要点:
| 层级 | 防护措施 |
|---|---|
| 网络层 | 防火墙 + SSH 加固 + fail2ban |
| 应用层 | 环境变量 + API 限流 + 日志审计 |
| 传输层 | HTTPS + 安全协议配置 |
| 数据层 | 自动备份 + 云端容灾 + 恢复演练 |
| 运维层 | 健康检查 + 监控告警 + 定时维护 |
遇到问题欢迎留言,一起讨论!
如果对你有帮助,点个在看支持一下~
更多推荐
所有评论(0)