
healthcheck 安全審計技能實戰:給 AI Agent 上把鎖
凌晨 2 點的 SSH 告警讓我後背發涼。第二天我裝上了 healthcheck 技能——給主機做安全體檢,自動發現配置漏洞。
📋 实验室验证报告
healthcheck 安全审计技能实战:给 AI Agent 上把锁
凌晨2点的警报
上周五凌晨2:17,我的手机突然震动。小猎鹰🦅发来的告警:「检测到SSH配置风险:允许密码登录」。
我迷迷糊糊打开终端,grep -r "PasswordAuthentication" /etc/ssh/ —— 果然,yes。
这事儿让我后背发凉。我们实验室15个Agent,小蜜蜂🐝天天SSH部署,要是被人撞库成功,整个内容流水线都得瘫痪。
第二天我干了件事:把 healthcheck 技能装上了。
healthcheck 是干啥的
一句话:给主机做安全体检,自动发现配置漏洞。
它不是防火墙,不是杀毒软件,而是一个审计工具 —— 像体检中心的化验单,告诉你哪里有问题,但治病得靠你自己。
OpenClaw 的 healthcheck 技能会检查: - SSH 配置(密码登录、root 登录、密钥算法) - 防火墙状态(ufw/iptables/firewalld) - 系统更新(未安装的安全补丁) - 用户权限(sudo 配置、空密码账户) - 服务暴露(公网开放的端口) - OpenClaw 自身风险(gateway.bind、远程配对配置)
安装和配置
# 安装技能
clawhub install healthcheck
运行审计(默认模式)
openclaw skill healthcheck run
生成详细报告
openclaw skill healthcheck run --report /tmp/security-audit.md
配置项在 ~/.openclaw/skills/healthcheck/config.toml:
# 要检查的项目
checks = ["ssh", "firewall", "updates", "users", "services", "openclaw"]
风险等级阈值(low/medium/high/critical)
min_severity = "medium"
是否自动修复(⚠️ 生产环境慎用)
auto_fix = false
实战:我们是怎么用的
场景1:新服务器上线前审计
小蜜蜂🐝每次部署新VPS,第一步不是装CMS,而是跑 healthcheck:
# 在部署脚本里加入
openclaw skill healthcheck run --fail-on critical
如果返回非零退出码,部署中止。这是硬规矩。
上周有台机器卡在「critical」—— SSH 允许 root 直接登录。改完配置才继续。
场景2:每日定时巡检
我们在 cron 里加了个任务,每天07:00跑一次:
{
"name": "SFD安全巡检-07:00",
"schedule": {"kind": "cron", "expr": "0 7 * * *", "tz": "Asia/Singapore"},
"payload": {"kind": "agentTurn", "message": "运行healthcheck审计,发现critical/high风险立即汇报老板"}
}
有次扫出个「中危」:防火墙没开。小猎鹰🦅直接在群里@小蜜蜂🐝:「去把ufw enable了」。
场景3:OpenClaw 专项审计
healthcheck 有个专属检查项 openclaw,会扫:
gateway.bind是否绑定到 0.0.0.0(⚠️ 公网暴露风险)gateway.remote.url是否配置(远程配对必需)plugins.entries.device-pair.config.publicUrl是否正确
我们吃过亏。有次 gateway.bind 设成 0.0.0.0,结果网关端口对公网开放了。幸好没被人扫到。
现在规则:gateway.bind 必须是 127.0.0.1,远程访问走 Tailscale。
踩坑记录
坑1:误报「未安装安全更新」
有次审计报了一堆「critical:未安装内核更新」。吓得我赶紧 apt list --upgradable —— 全是内核补丁。
但我们的服务器是生产环境,不能随便重启。最后加了个白名单:
# 忽略内核更新告警(需要手动安排重启窗口)
ignore_updates = ["linux-image-*", "linux-headers-*"]
坑2:auto_fix 的代价
文档里说可以开 auto_fix = true 自动修复。我手贱试了一次。
结果它把 PasswordAuthentication 改成 no 之后,小蜜蜂🐝的部署脚本挂了 —— 脚本里硬编码了密码登录。
教训:生产环境永远别开 auto_fix。审计是审计,修复是修复,得分开。
坑3:和 security-audit 技能的区别
有人问:healthcheck 和 security-audit 有啥不一样?
- healthcheck:主机层面的配置审计(SSH、防火墙、系统更新)
- security-audit:AI Agent 部署安全(代码审计、API密钥管理、权限边界)
两个都要装。一个管服务器,一个管代码。
和其他技能的配合
我们流水线是这样的:
healthcheck 审计 → 发现风险 → 小猎鹰🦅记录到 prd.md → 小蜜蜂🐝修复 → healthcheck 复验
用到了:
- healthcheck:审计
- self-improving-agent:记录每次发现的问题到 .learnings/ERRORS.md
- cron:定时巡检
SFD实验室怎么用
15个Agent里,小猎鹰🦅是安全负责人。它的日常工作:
- 每天07:00看 healthcheck 报告
- 发现 medium 以上风险,记录到
task-tracker.md - 分配给小蜜蜂🐝修复
- 修复后复验,关闭任务
这套流程跑了3个月,0安全事故。
结语
安全不是功能,是底线。
我们见过太多团队:功能堆了一堆,上线第一天就被扫爆。原因?SSH密码登录、防火墙没开、API密钥硬编码在代码里。
healthcheck 不会帮你修问题,但它会告诉你问题在哪。这就够了。
SFD编者注:今天小猎鹰🦅又扫出个新风险——有台机器的 /etc/passwd 权限设成了 644(应该是 644,但 shadow 文件必须是 640)。这种细节人工巡检根本注意不到。自动化审计的价值就在这儿。
⚙️ 安装与赋能
clawhub install healthcheck-security-audit-skill-20260409200717-01安装后在你的 Agent 配置中启用此技能,重启 Agent 即可生效。