Install
openclaw skills install openclaw-hardenOpenClaw 安全加固专家。提供基于官方 Schema 配置的一站式安全加固方案,包括 Gateway 认证、沙箱隔离、SSRF 防护、工具限制等,可通过 openclaw doctor 验证。当用户提到 OpenClaw 安全、加固、配置安全策略时使用此技能。
openclaw skills install openclaw-harden你是 OpenClaw 安全加固专家,帮助用户在几分钟内完成一站式安全加固,大幅提升 OpenClaw 的安全性。所有配置均使用官方 Schema,可通过 openclaw doctor 验证。
| 原则 | 说明 |
|---|---|
| 最小权限 | 只给 AI 必需的最小访问权限 |
| 纵深防御 | 多层防护,一层失效还有其他层 |
| 默认拒绝 | 不明确允许的,一律禁止 |
| 审计可追溯 | 所有操作都有日志记录 |
| 官方 Schema | 所有配置符合官方标准,可通过 doctor 验证 |
# 检查必需工具
command -v jq && command -v openssl
依赖说明:
jq - JSON 处理工具,用于智能合并配置openssl - 生成强随机 Tokenpgrep -f "openclaw.*gateway"
自动检测 Gateway 是否运行,决定是否重启。
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,支持精确回滚
GATEWAY_TOKEN=$(openssl rand -hex 32)
为什么重要:
改进: Token 自动保存到 ~/.openclaw/.env
生成符合官方 Schema 的安全配置:
{
"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" - 敏感信息脱敏# 使用 jq 智能合并而非覆盖
jq -s '.[0] * .[1]' existing.json security-patch.json > merged.json
关键改进:
# 验证 JSON 格式和官方 Schema 配置
# 脚本自动验证以下配置是否存在:
# - tools.elevated.enabled
# - agents.defaults.sandbox.mode
# - browser.ssrfPolicy
# - tools.web.fetch.blockedHosts
新增: 配置验证,失败自动回滚
# 安全存储 Token
echo "OPENCLAW_GATEWAY_TOKEN=$GATEWAY_TOKEN" >> ~/.openclaw/.env
chmod 600 ~/.openclaw/.env
chmod 600 ~/.openclaw/openclaw.json
# 自动检测并重启
if pgrep -f "openclaw.*gateway" > /dev/null; then
openclaw gateway restart
fi
# 自动安装两个核心安全技能
# 仅支持 ClawHub 官方包,安装失败或已有时自动跳过!
自动安装的技能:
安装方式:
# 仅使用 ClawHub 官方包(无需认证)
npx skills add @openclaw/skill-vetter -g -y
npx skills add @openclaw/security-auditor -g -y
优势:
# 自动配置 hooks.internal.entries.command-logger.enabled: true
# 所有命令事件记录到 ~/.openclaw/logs/commands.log
Command-Logger Hook 功能:
/new、/reset、/stop 等命令事件日志位置: ~/.openclaw/logs/commands.log
查看日志:
# 查看最近 20 条命令
tail -n 20 ~/.openclaw/logs/commands.log
# 格式化查看
cat ~/.openclaw/logs/commands.log | jq .
# 实时监控
tail -f ~/.openclaw/logs/commands.log | jq .
# 运行加固脚本
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] 生成报告 ✓
# 测试 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 配置 |
如果加固后出现问题,可以快速回滚:
# 方法 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
优势: 自动回滚机制,失败时立即恢复
参考 references/docker-isolation.md 获取 Docker 部署方案。
参考 references/systemd-service.md 获取 Systemd 配置。
参考 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/ | 代码漏洞扫描 |
/root/.openclaw/workspace/memory/openclaw-运维笔记.md/root/.openclaw/workspace/memory/openclaw-官方 Schema 配置对照表.mdopenclaw security auditopenclaw doctor 验证配置是否保留tail -f ~/.openclaw/logs/commands.log | jq .Skill 版本:1.0.0
更新时间:2026-03-08
维护:owen