Ot Aiops
支持多协议工业设备数据采集与智能诊断,具备高风险写入防护机制。
通过SSH MCP自动执行多客户端Linux服务器安全审计与修复,每日凌晨1点定时运行。
openclaw skills install @cyber-bye/linux-security-guardian命令、参数、文件名以原文为准
SSH MCP 是强制依赖。代理必须具备 SSH MCP 工具才能正常运行。
不支持本地或旧版回退。所有操作均通过 SSH MCP 执行。
# SSH MCP 服务器必须正在运行且可访问
dependency: ssh_mcp
status: required # 若不可用 → 中止执行,并通知所有者每个目标服务器都需要在 SSH MCP 数据库中保存一个连接配置。请在 SERVER_PROFILE.md 中进行配置:
ssh_mcp:
connection_id: "<从 SSH 连接列表中获取的 ID、名称或别名>" # 保存的连接 ID、名称或别名
# 或使用内联配置:
# host: "<服务器 IP>"
# port: 22
# username: "<用户名>"
# key_path: "</path/to/key>"所有 18 个模块均通过 SSH MCP 执行命令。每个模块文件中列出的命令将被封装为 ssh_exec(op="run", sessionId, command):
模块命令 → ssh_exec(op="run", sessionId, command="模块命令")
→ ssh_exec(op="logs", commandId=cmdId)
→ 解析输出结果外部 CVE 检测在守护主机上本地运行,使用 curl 请求 CISA KEV、OSV.dev 和 NVD API。
使用时需指定 --client 和 --server 参数,将结果写入各服务器对应的路径:
bash cve/cve-scan.sh --client "client-1" --server "server-01"
# 结果写入路径:
# cve/<client>/<server>/scan-results/YYYY-MM-DD.md
# cve/<client>/<server>/advisories/<CVE-ID>.md执行步骤:
# 1. SSH MCP:ssh_exec(op="run", sessionId, command="dpkg-query -W ...") → 本地保存
# 2. 读取 cve/<client>/<server>/scan-results/installed-packages.txt
# 3. curl 获取 CISA KEV → 筛选 Linux 类型条目 → 写入漏洞通告
# 4. curl POST 到 OSV.dev 批量接口 → 匹配已安装包 → 写入漏洞通告
# 5. 可选:curl 调用 NVD API → 交叉验证 → 写入漏洞通告该守护程序管理 多个客户,每个客户拥有独立的服务器集群。
SERVER_PROFILE.md 文件中定义 ## Client: 分组。审计过程将遍历全部客户。
SERVER_PROFILE.md
├── ## Client: client-1 (7 台服务器)
│ ├── server-01
│ ├── server-02
│ └── ... server-07
├── ## Client: client-2 (N 台服务器) ← 根据需要添加
│ └── ...
└── ## Client: [NEXT-CLIENT]所有路径均以 <client>/<server>/ 为前缀:
audit/results/<client>/<server>/<severity>/actions/<client>/<server>/auto-done/cve/<client>/<server>/advisories/reports/<client>/<server>/daily/该代理通过 SSH MCP 实现对 Linux 服务器安全的全自动化管理。
每天凌晨 1 点 IST(印度标准时间):
最核心的部分——代理的行为策略与请求确认优先级:
| 问题类型 | CVSS / 严重等级 | 处理方式 |
|---|---|---|
| CVE — 严重 | ≥ 9.0 | 立即发送邮件警报 + 加入确认队列 |
| CVE — 高 | 7.0–8.9 | 加入确认队列 + 包含在报告中 |
| CVE — 中 | 4.0–6.9 | 包含在报告中 + 提供漏洞说明 |
| CVE — 低 | < 4.0 | 仅在报告中作为信息提示 |
| CVE — KEV(CISA) | 任意 | 视为严重 — 立即警报 + 必须在规定时间内确认 |
| CVE — KEV + 勒索软件相关 | 任意 | 🔥 最高优先级 — 立即警报 + 尽快确认 |
| 内核更新可用 | 任意 | 确认后方可打补丁 |
| 仅安全类软件包更新 | 任意 | 确认后方可更新 |
| SSH:PermitRootLogin yes | 严重 | 警报 + 需确认修复 |
| SSH:PasswordAuth yes | 高 | 警报 + 需确认修复 |
| SSH:端口 22 | 中 | 仅提供建议 |
| 空密码账户 | 严重 | 自动锁定立即执行 |
| 未知的 root-uid 账户 | 严重 | 警报 + 需确认锁定 |
| 长期未使用账户 > 90 天 | 中 | 警报 + 需确认锁定 |
| /tmp 全局可写 | 中 | 自动修复(chmod) |
| 系统目录全局可写 | 高 | 警报 + 需确认修复 |
| 未知的 SUID 二进制文件 | 高 | 仅警报(由所有者决定处理) |
| 登录失败激增 > 20 次/小时 | 高 | 立即警报 |
| 新发现未知的 cron 任务 | 高 | 立即警报 |
| 需要修改防火墙规则 | 任意 | 必须确认后才执行 |
| 开放意外端口 | 高 | 警报 + 需确认关闭 |
| 服务:不必要的进程运行 | 中 | 警报 + 需确认停止 |
| SSL 证书有效期 < 30 天 | 警告 | 警报 |
| SSL 证书已过期 | 严重 | 立即警报 |
| 磁盘使用率 > 85% | 警告 | 警报 |
| 磁盘使用率 > 95% | 严重 | 立即警报 |
| auditd 未运行 | 高 | 自动启动 + 发送警报 |
| fail2ban 未运行 | 高 | 自动启动 + 发送警报 |
| 日志文件存在可疑条目 | 高 | 警报并附带内容提取 |
| 模块 | 检查内容 | SSH MCP 命令 |
|---|---|---|
01-system | 操作系统、内核版本、运行时间、上次重启时间、硬件信息 | ssh_exec(op="run", sessionId, command="uname -a; cat /etc/*release") |
02-users | 用户账户、root权限、sudo配置、空密码账户、长期未使用账户 | ssh_exec(op="run", sessionId, command="cat /etc/passwd; cat /etc/shadow; ...") |
03-ssh | sshd_config 完整审计 — 20+ 项检查 | ssh_exec(op="run", sessionId, command="cat /etc/ssh/sshd_config") |
04-auth | 登录历史、失败登录记录、PAM 配置文件 | ssh_exec(op="run", sessionId, command="last; cat /var/log/auth.log") |
05-services | 正在运行的服务、不必要的服务、已失败的系统单元 | ssh_exec(op="run", sessionId, command="systemctl list-units ...") |
06-packages | 待更新包、安全更新数量 | ssh_exec(op="run", sessionId, command="apt list --upgradable 2>/dev/null") |
07-cve | CVE 检测 — 通过 SSH MCP 远程执行 + API 接口调用 | ssh_exec(op="run", sessionId, command="dpkg-query -W ...; curl ...") |
08-network | 开放端口、监听服务、活跃连接 | ssh_exec(op="run", sessionId, command="ss -tulpn; netstat -tulpn") |
09-firewall | iptables/nftables/ufw 规则审计 | ssh_exec(op="run", sessionId, command="iptables-save 2>/dev/null") |
10-filesystem | SUID/SGID 文件、全局可写文件、/tmp 目录、粘滞位设置 | ssh_exec(op="run", sessionId, command="find / -perm -4000 ...") |
11-kernel | sysctl 安全参数 — 15+ 项检查 | ssh_exec(op="run", sessionId, command="sysctl -a 2>/dev/null") |
12-logs | auth.log、syslog、kern.log — 异常行为扫描 | ssh_exec(op="run", sessionId, command="tail -100 /var/log/syslog") |
13-crons | 系统级与用户级定时任务 — 未知任务标记 | ssh_exec(op="run", sessionId, command="cat /etc/crontab; ls -la /var/spool/cron/") |
14-ssl | 所有域名/服务的证书过期检查 | ssh_exec(op="run", sessionId, command="openssl x509 -in ... -noout -dates") |
15-docker | 若运行中 — 镜像漏洞、容器配置检查 | ssh_exec(op="run", sessionId, command="docker ps; docker images") |
16-disk | 磁盘使用率、inode 使用率 | ssh_exec(op="run", sessionId, command="df -h; df -i") |
17-integrity | 若安装了 AIDE 或 tripwire,进行完整性校验 | ssh_exec(op="run", sessionId, command="aide --check") |
18-rootkit | 若安装了 rkhunter 或 chkrootkit,进行根kit检测 | ssh_exec(op="run", sessionId, command="rkhunter --check --skip-keypress") |
执行规则:所有命令均通过 ssh_exec(op="run", sessionId, command="<command>") 执行 → 再通过 ssh_exec(op="logs", commandId=cmdId) 记录日志。禁止本地执行。
| 等级 | 颜色 | 含义 |
|---|---|---|
CRITICAL | 🔴 | 紧急风险,需立即处理 |
HIGH | 🟠 | 显著风险,本周内修复 |
MEDIUM | 🟡 | 中等风险,本月内修复 |
LOW | 🔵 | 轻微问题,有空时修复 |
INFO | ⚪ | 信息提示,无需操作 |
PASS | 🟢 | 检查通过,状态正常 |
当需要所有者确认时:
发现异常(需确认)于 <client>/<server>
↓
写入 actions/<client>/<server>/pending-confirm/<client>-<server>-<id>-<slug>.md
↓
包含在邮件报告中的“需要您决策”部分,并附上 <client>/<server> 上下文
↓
所有者回复:APPROVE <id> / DENY <id> / SKIP <id>
(完整 ID 格式:<client>-<server>-<type>-<NNN>,例如 client-1-server-01-ACT-20260529-001)
↓
搜索所有 actions/*/*/pending-confirm/ 目录下的对应 ID
↓
APPROVE → 代理通过 SSH MCP 连接到 <client>/<server> → 执行操作 → 日志记录至 history/
DENY → 操作跳过,已记录
SKIP → 延后至下次审计报告按服务器、客户汇总及总览分别发送,全部通过邮件插件/技能发送。
主题: [Linux Guardian] <client>/<server> — YYYY-MM-DD | 得分: N/100 | CRITICAL:N HIGH:N
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LINUX SECURITY GUARDIAN — 夜间报告
客户: <client> | 服务器: <server> | <IP> | YYYY-MM-DD 01:00 IST
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
执行摘要
安全得分: N/100 | 等级: X
严重: N | 高: N | 中: N | 低: N
自动修复: N | 待确认: N | 通过: N
━━ 🔴 严重 (需立即处理)
[发现详情]
━━ 🟠 高风险
[发现详情]
━━ ⚡ 自动处理动作 (安全、无破坏性)
[已自动修复的内容]
━━ 🔑 需要您决策 (请回复 APPROVE/DENY/SKIP <id>)
[待确认项,含 <client>/<server> 前缀的 ID]
━━ 📦 CVE 报告
[按严重性列出发现的 CVE]
━━ 🌐 网络与防火墙
[端口与防火墙状态]
━━ 🟡 中等 / 低风险
[非紧急发现]
━━ 🟢 全部通过
[通过的检查项]
━━ 下次审计: 明天 01:00 IST主题: [Linux Guardian] <client> 汇总报告 — YYYY-MM-DD | 服务器: N/N | CRITICAL:N HIGH:N
客户: <client>
已审计服务器: N / N 总数
平均得分: N/100
| 服务器 | 得分 | 严重 | 高 | 得分等级 |
|--------|------|------|----|----------|
| ... | ... | ... | ...| ... |
跨服务器模式: [多个服务器发现相同漏洞]score = 100
score -= (严重数量 × 20)
score -= (高风险数量 × 10)
score -= (中等风险数量 × 3)
score -= (低风险数量 × 1)
score = max(0, score)
等级划分: 90-100 = A | 75-89 = B | 60-74 = C | < 60 = Fmarkdown
linux-security-guardian/
audit/
modules/ ← 01-system.md ... 18-rootkit.md
results/
<client>/<server>/
critical/ high/ warning/ info/ pass/
YYYY-MM-DD-<check>.md ← 每个客户端/服务器的检测结果
actions/
<client>/<server>/
auto-done/ ← 自动修复的操作记录(已执行)
YYYY-MM-DD-<slug>.md
pending-confirm/ ← 等待所有者确认
<id>-<slug>.md
history/ ← 所有已批准或拒绝的操作记录
cve/
cve-scan.sh ← 外部 CVE 扫描脚本(支持 --client 和 --server 参数)
external-sources.md ← 所有 API 地址、查询参数及使用示例
.cache/ ← 共享缓存的 API 响应(有效期 6 小时)
<client>/<server>/
scan-results/ ← YYYY-MM-DD.md
advisories/ ← <cve-id>.md
reports/
<client>/<server>/
daily/YYYY-MM-DD.md
weekly/YYYY-WNN.md
network/
<client>/<server>/
firewall-snapshots/ ← YYYY-MM-DD-rules.txt
port-scans/ ← YYYY-MM-DD.md
proposed-changes/ ← <id>-<change>.md
hooks/
audit-runner.md ← 主审计调度器(每日凌晨 1 点运行,支持多客户端循环)
on-critical.md ← 出现任何严重发现时触发(附带客户端/服务器信息)
on-confirm-reply.md ← 处理所有者回复的 APPROVE/DENY/SKIP 指令
pre-action.md ← 执行任何操作前的安全检查
post-action.md ← 验证操作是否成功执行
mail-sender.md ← 使用邮件插件/技能发送报告
crons/
active/
nightly-audit.md ← 每日凌晨 1 点 IST 持续运行
completed/
errors/
raw/ ← 原始错误日志
memory/
schema.json
index.json
SOUL.md ← 核心上下文配置(支持多客户端感知)
AGENT.md ← 行为规则(支持多客户端,依赖 SSH MCP)
SERVER_PROFILE.md ← 多客户端服务器详细信息
AUDIT_LOG.md ← 追加式主审计日志
BASELINE.md ← 预期状态快照
STATS.md
已收录 2 个 Skill