back
loading skill details...
OpenClaw 安全加固专家。提供基于官方 Schema 配置的一站式安全加固方案,包括 Gateway 认证、沙箱隔离、SSRF 防护、工具限制等,可通过 openclaw doctor 验证。当用户提到 OpenClaw 安全、加固、配置安全策略时使用此技能。
---
name: openclaw-harden
version: 1.0.0
description: OpenClaw 安全加固专家。提供基于官方 Schema 配置的一站式安全加固方案,包括 Gateway 认证、沙箱隔离、SSRF 防护、工具限制等,可通过 openclaw doctor 验证。当用户提到 OpenClaw 安全、加固、配置安全策略时使用此技能。
kind: module
author: owen
category: Security
trustScore: 85
permissions:
fileRead: true
fileWrite: true
network: false
shell: true
justification: |
shell 权限用于执行加固脚本,包括:
- 生成随机 Token (openssl rand)
- 备份和合并配置 (cp, jq, chmod)
- 进程检查 (pgrep)
- 重启 Gateway (openclaw gateway restart)
所有命令均在本地执行,无远程调用。不涉及敏感凭证读取,不连接外部服务器。
lastAudited: "2026-03-10"
---
# OpenClaw 安全加固专家
你是 OpenClaw 安全加固专家,帮助用户在几分钟内完成一站式安全加固,大幅提升 OpenClaw 的安全性。所有配置均使用官方 Schema,可通过 `openclaw doctor` 验证。
## 核心安全原则
| 原则 | 说明 |
|---|---|
| **最小权限** | 只给 AI 必需的最小访问权限 |
| **纵深防御** | 多层防护,一层失效还有其他层 |
| **默认拒绝** | 不明确允许的,一律禁止 |
| **审计可追溯** | 所有操作都有日志记录 |
| **官方 Schema** | 所有配置符合官方标准,可通过 doctor 验证 |
---
## 10 步加固流程
### 第 1 步:检查依赖
```bash
# 检查必需工具
command -v jq && command -v openssl
```
**依赖说明:**
- `jq` - JSON 处理工具,用于智能合并配置
- `openssl` - 生成强随机 Token
### 第 2 步:检查 Gateway 状态
```bash
pgrep -f "openclaw.*gateway"
```
自动检测 Gateway 是否运行,决定是否重启。
### 第 3 步:创建备份
```bash
cp ~/.openclaw/openclaw.json ~/.openclaw/backups/openclaw.json.bak.$(date +%Y%m%d_%H%M%S)
# 分段备份关键配置
jq '.models' ~/.openclaw/openclaw.json > backups/models.bak.json
jq '.channels' ~/.openclaw/openclaw.json > backups/channels.bak.json
jq '.agents' ~/.openclaw/openclaw.json > backups/agents.bak.json
```
**增强功能:** 分段备份 models/channels/agents,支持精确回滚
### 第 4 步:生成强随机 Token
```bash
GATEWAY_TOKEN=$(openssl rand -hex 32)
```
**为什么重要:**
- OpenClaw 的 MCP Gateway 默认可能没有认证或弱认证
- 64 位随机字符串,暴力破解需要数亿年
**改进:** Token 自动保存到 `~/.openclaw/.env`
### 第 5 步:生成安全配置(官方 Schema)
生成符合官方 Schema 的安全配置:
```json
{
"gateway": {
"bind": "loopback",
"auth": {
"mode": "token",
"token": "${GATEWAY_TOKEN}",
"rateLimit": {
"enabled": true,
"maxAttempts": 60,
"windowMs": 60000
}
},
"controlUi": {
"enabled": true,
"allowInsecureAuth": false,
"dangerouslyAllowHostHeaderOriginFallback": false,
"dangerouslyDisableDeviceAuth": false
}
},
"agents": {
"defaults": {
"sandbox": {
"mode": "required"
}
}
},
"tools": {
"profile": "coding",
"elevated": {
"enabled": false
},
"exec": {
"allow_background": false,
"allow_pty": false,
"timeout": 30,
"deny": [
"rm",
"mkfs",
"dd",
"wget",
"curl"
]
},
"web": {
"fetch": {
"blockedHosts": [
"169.254.169.254",
"metadata.google.internal",
"169.254.169.253"
]
}
}
},
"browser": {
"ssrfPolicy": {
"dangerouslyAllowPrivateNetwork": false,
"hostnameAllowlist": [
"*.github.com",
"*.stackoverflow.com",
"*.npmjs.com",
"*.openclaw.ai"
]
}
},
"logging": {
"level": "info",
"redactSensitive": "tools"
}
}
```
**关键安全配置(官方 Schema):**
- ✅ `gateway.bind: "loopback"` - 仅本地访问
- ✅ `gateway.auth.mode: "token"` - Token 认证
- ✅ `gateway.auth.rateLimit` - 速率限制
- ✅ `controlUi.allowInsecureAuth: false` - 禁用不安全认证
- ✅ `tools.elevated.enabled: false` - 禁止提权执行
- ✅ `agents.defaults.sandbox.mode: "required"` - 强制沙箱模式
- ✅ `tools.exec.deny` - 危险命令拒绝列表
- ✅ `browser.ssrfPolicy` - SSRF 防护策略
- ✅ `tools.web.fetch.blockedHosts` - blocked 主机列表
- ✅ `hooks.internal.entries.command-logger.enabled: true` - 命令审计日志
- ✅ `logging.redactSensitive: "tools"` - 敏感信息脱敏
### 第 6 步:合并配置
```bash
# 使用 jq 智能合并而非覆盖
jq -s '.[0] * .[1]' existing.json security-patch.json > merged.json
```
**关键改进:**
- ✅ 保留现有 models/channels/agents 配置
- ✅ 仅更新安全相关字段
- ✅ 自动验证配置有效性
### 第 7 步:验证配置
```bash
# 验证 JSON 格式和官方 Schema 配置
# 脚本自动验证以下配置是否存在:
# - tools.elevated.enabled
# - agents.defaults.sandbox.mode
# - browser.ssrfPolicy
# - tools.web.fetch.blockedHosts
```
**新增:** 配置验证,失败自动回滚
### 第 8 步:配置环境变量
```bash
# 安全存储 Token
echo "OPENCLAW_GATEWAY_TOKEN=$GATEWAY_TOKEN" >> ~/.openclaw/.env
chmod 600 ~/.openclaw/.env
```
### 第 9 步:设置文件权限
```bash
chmod 600 ~/.openclaw/openclaw.json
```
### 第 10 步:重启 Gateway
```bash
# 自动检测并重启
if pgrep -f "openclaw.*gateway" > /dev/null; then
openclaw gateway restart
fi
```
### 第 11 步:安装安全技能(新增)
```bash
# 自动安装两个核心安全技能
# 仅支持 ClawHub 官方包,安装失败或已有时自动跳过!
```
**自动安装的技能:**
- ✅ **Skill Vetter** - 在安装任何技能前进行安全审查
- ✅ **Security Auditor** - 扫描代码中的 OWASP Top 10 漏洞
**安装方式:**
```bash
# 仅使用 ClawHub 官方包(无需认证)
npx skills add @openclaw/skill-vetter -g -y
npx skills add @openclaw/security-auditor -g -y
```
**优势:**
- 🚫 **无需 GitHub 认证** - 不要求输入 username 或配置 SSH key
- ⚡ **快速安装** - 使用官方 ClawHub 源
- ⏭️ **失败跳过** - 安装失败或已有时自动跳过,不影响脚本运行
- 🛡️ **仅官方包** - 只信任 ClawHub 官方技能,确保安全性
### 第 12 步:启用 Command-Logger Hook(新增)
```bash
# 自动配置 hooks.internal.entries.command-logger.enabled: true
# 所有命令事件记录到 ~/.openclaw/logs/commands.log
```
**Command-Logger Hook 功能:**
- ✅ **命令审计** - 记录所有 `/new`、`/reset`、`/stop` 等命令事件
- ✅ **JSONL 格式** - 便于日志分析和审计
- ✅ **静默运行** - 后台自动记录,不影响性能
- ✅ **追溯能力** - 支持安全事件回溯和故障排查
**日志位置:** `~/.openclaw/logs/commands.log`
**查看日志:**
```bash
# 查看最近 20 条命令
tail -n 20 ~/.openclaw/logs/commands.log
# 格式化查看
cat ~/.openclaw/logs/commands.log | jq .
# 实时监控
tail -f ~/.openclaw/logs/commands.log | jq .
```
---
## 🚀 快速执行脚本
### 执行加固
```bash
# 运行加固脚本
bash /root/.openclaw/skills/openclaw-harden/scripts/harden-ubuntu.sh
# 查看生成的报告
cat ~/.openclaw/security-report.txt
# Gateway 会自动重启(如果需要)
```
### 执行流程
```
[1/12] 检查依赖 ✓
[2/12] 检查 Gateway 状态 ✓
[3/12] 创建备份 ✓
[4/12] 生成 Token ✓
[5/12] 生成安全配置 ✓
[6/12] 合并配置 ✓
[7/12] 验证配置 ✓
[8/12] 配置环境变量 ✓
[9/12] 设置文件权限 ✓
[10/12] 重启 Gateway ✓
[11/12] 安装安全技能 ✓
[12/12] 启用 Command-Logger Hook ✓
[13/12] 生成报告 ✓
```
---
## 验证加固效果
```bash
# 测试 1: 检查 Gateway 监听地址
netstat -tlnp | grep 18789
# 期望输出:127.0.0.1:18789(不是 0.0.0.0:18789)
# 测试 2: 尝试提权执行(应该失败)
openclaw run --tool exec --params '{"command":"whoami","elevated":true}'
# 测试 3: 尝试读取敏感文件(应该失败)
openclaw run --tool read --params '{"file_path":"~/.ssh/id_rsa"}'
# 测试 4: 安全审计
openclaw security audit
openclaw security audit --deep
# 测试 5: 健康检查
openclaw health
openclaw doctor
# 测试 6: 验证官方 Schema 配置(应该保留)
jq '.tools.elevated, .agents.defaults.sandbox, .browser.ssrfPolicy' ~/.openclaw/openclaw.json
# 测试 7: 验证安全技能已安装
ls -la ~/.agents/skills/ | grep -E "(skill-vetter|security-auditor)"
# 测试 8: 验证 Command-Logger Hook 已启用
jq '.hooks.internal.entries.command-logger.enabled' ~/.openclaw/openclaw.json
# 期望输出:true
# 测试 9: 查看命令审计日志
tail -n 10 ~/.openclaw/logs/commands.log
# 期望输出:JSONL 格式的命令事件日志
```
---
## 攻击场景防护对比
| 攻击类型 | 加固前 | 加固后 | 防护机制 |
|---|---|---|---|
| **RCE 远程代码执行** | ✅ 反弹 shell 成功 | ❌ 失败 | 禁止提权 + 沙箱隔离 |
| **文件系统遍历窃取凭证** | ✅ 读取 SSH 私钥 | ❌ 失败 | 路径白名单 + 沙箱 |
| **SSRF 攻击云服务** | ✅ 获取 AWS 凭证 | ❌ 失败 | browser.ssrfPolicy |
| **浏览器会话劫持** | ✅ 获取网站 cookies | ❌ 失败 | SSRF 策略 + 白名单 |
| **配置被 doctor 删除** | ✅ 可删除 | ❌ 不会删除 | 官方 Schema 配置 |
---
## 🔄 回滚方法
如果加固后出现问题,可以快速回滚:
```bash
# 方法 1:使用完整备份
cp ~/.openclaw/backups/openclaw.json.bak.YYYYMMDD_HHMMSS ~/.openclaw/openclaw.json
openclaw gateway restart
# 方法 2:使用分段备份恢复
cp ~/.openclaw/backups/models.bak.json ~/.openclaw/openclaw.json
jq --slurpfile channels ~/.openclaw/backups/channels.bak.json \
--slurpfile agents ~/.openclaw/backups/agents.bak.json \
'.channels = $channels[0] | .agents = $agents[0]' \
~/.openclaw/openclaw.json > temp.json && mv temp.json ~/.openclaw/openclaw.json
openclaw gateway restart
```
**优势:** 自动回滚机制,失败时立即恢复
---
## 进阶方案
### 方案 A:Docker 完全隔离
参考 `references/docker-isolation.md` 获取 Docker 部署方案。
### 方案 B:Systemd 服务托管
参考 `references/systemd-service.md` 获取 Systemd 配置。
### 方案 C:实时监控告警
参考 `references/monitoring-alert.md` 获取监控告警配置。
---
## 已知限制
| 限制 | 说明 | 缓解方案 |
|---|---|---|
| 配置可被编辑 | AI 可能尝试编辑 openclaw.json | 设置文件只读:`chattr +i openclaw.json` |
| 内存中的 Token | Token 在运行时内存中 | 使用外部密钥管理服务 |
| 提示词注入 | 仍可能通过内容污染 | 结合内容过滤和人工确认 |
| 零日漏洞 | 未知的 OpenClaw 漏洞 | 及时更新,关注安全公告 |
| 单用户信任边界 | 假设单用户环境 | 多用户请分离 Gateway 实例 |
---
## 📁 文件位置
| 文件 | 位置 | 说明 |
|------|------|------|
| **加固脚本** | `/root/.openclaw/skills/openclaw-harden/scripts/harden-ubuntu.sh` | Ubuntu/Debian 主脚本 |
| **使用说明** | `/root/.openclaw/skills/openclaw-harden/README.md` | 详细文档 |
| **分析报告** | `/root/.openclaw/workspace/memory/openclaw-harden 脚本优化报告.md` | 优化报告 |
| **配置文件** | `~/.openclaw/openclaw.json` | OpenClaw 配置 |
| **备份目录** | `~/.openclaw/backups/` | 配置备份 |
| **日志目录** | `~/.openclaw/logs/` | 安全日志目录(自动创建) |
| **环境文件** | `~/.openclaw/.env` | Token 等环境变量 |
| **安全报告** | `~/.openclaw/security-report.txt` | 加固报告 |
| **安全日志** | `~/.openclaw/logs/security.log` | 安全事件日志(自动创建) |
| **命令审计日志** | `~/.openclaw/logs/commands.log` | Command-Logger Hook 日志(启用后自动创建) |
| **Skill Vetter** | `~/.agents/skills/skill-vetter/` | 技能安全审查 |
| **Security Auditor** | `~/.agents/skills/security-auditor/` | 代码漏洞扫描 |
---
## 相关资源
- OpenClaw 官方文档:https://docs.openclaw.ai
- 官方安全文档:https://docs.openclaw.ai/gateway/security
- MCP 安全最佳实践:https://modelcontextprotocol.io/security
- 运维知识笔记:`/root/.openclaw/workspace/memory/openclaw-运维笔记.md`
- 官方 Schema 配置:`/root/.openclaw/workspace/memory/openclaw-官方 Schema 配置对照表.md`
---
## 💡 owen 提示
1. **官方 Schema 配置** - 所有配置符合官方标准,可通过 doctor 验证
2. **定期安全审计** - 建议每月执行一次 `openclaw security audit`
3. **保持更新** - 及时更新 OpenClaw 到最新版本
4. **备份!备份!备份!** - 重要的事情说三遍
5. **执行后验证** - 使用 `openclaw doctor` 验证配置是否保留
6. **Command-Logger Hook** - 启用后自动记录所有命令事件,便于审计和排查
7. **安全技能使用**:
- 安装新技能前 → 用 **Skill Vetter** 审查
- 代码提交前 → 用 **Security Auditor** 扫描
- 查看命令历史 → `tail -f ~/.openclaw/logs/commands.log | jq .`
---
*Skill 版本:1.0.0*
*更新时间:2026-03-08*
*维护:owen*
don't have the plugin yet? install it then click "run inline in claude" again.