前言

在前面的系列文章中,我们完成了入门篇和进阶篇的学习。但当你想把 OpenClaw 真正用到企业场景时,安全问题就变得至关重要:

  • 如何防止服务器被攻击?
  • 如何保证数据不丢失?
  • 如何让服务保持高可用?

这篇文章将带你完成企业级安全部署的全流程,建议先收藏再慢慢看。


目录

  1. 服务器安全加固
  2. OpenClaw 安全配置
  3. HTTPS 与域名配置
  4. 数据备份与容灾
  5. 定时维护与监控
  6. 总结

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 + 安全协议配置
数据层 自动备份 + 云端容灾 + 恢复演练
运维层 健康检查 + 监控告警 + 定时维护

遇到问题欢迎留言,一起讨论!

如果对你有帮助,点个在看支持一下~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐