案例研究 · 安全运维与巡检
智甲 EPP 自动巡检与 CVE 漏洞扫描
运维工程师要做季度巡检:远程检查智甲 EPP 管理端的运行状态并产出可交付的合规报告。一条包含 SSH 连接信息、巡检命令、服务检查脚本与漏洞扫描要求的复合指令交给 AVL Code,约 15 分钟后,他手里多了一份已脱敏的 HTML 巡检报告和一个可复用的 paramiko 巡检脚本。
对象 · 智甲 EPP 管理端(CentOS 7 内网主机)· 约束 · 复合指令一次下发 · 全程无人工介入· 模型 · 澜砥 N2.5· 交付物 · HTML 巡检报告 + 可复用巡检脚本· 耗时 · 约 15 分钟
概览
- 01
环境探查与 SSH 连接 — paramiko 跨平台建连,巡检命令执行拿到 inspection.json
你把 SSH 连接信息和巡检命令一次性交给 AVL Code。它会先探查本地环境,发现 Windows 没有 sshpass/plink 后自动改用 Python paramiko 建连,执行巡检命令并读取输出的 inspection.json。
- 02
服务与系统状态采集 — 46 项服务状态结构化解析(44 运行 / 2 停止)
你等它执行服务检查脚本。46 个服务的 RUNNING/STOPPED 状态被逐项解析成结构化数据,连同系统版本、资源占用一起进入巡检数据集。
- 03
多源漏洞扫描 — CVE-2017-5972(CVSS 7.5)检出,两次降级不中断
你让它调用 cve-mcp-server 扫漏洞。私有 IP 限制和 NVD API 超时两道坎都被自动降级策略绕过,最终给出带风险评分的漏洞结论。
- 04
脱敏与报告交付 — HTML 报告生成 + fs.patch 增量修正
你拿到参考既有样式生成的 HTML 巡检报告,序列号已脱敏;随后一句纠偏指令,报告经增量修改当场更新。
向 AVL Code 发布任务
现在需要你用ssh连接<内网IP>,用户名root,密码<凭据>。在/root下执行命令 cd /data0/app_new/&&LD_LIBRARY_PATH=./env/posix/lib7/ python /root/data_capture_safety.pyc对智甲EPP产品进行巡检;执行命令/data0/bin/status_supervisorctl.sh检查智甲EPP的服务运行状态;调用cve-mcp-server,对<内网IP>进行漏洞扫描检测。将生成的inspection.json文件里的内容、服务运行状态和漏洞检测结果写成巡检报告,报告样式参考《NetAdmin_工具兼容性报告》。报告中的序列号和密码是敏感信息,需要替换为*号处理。 前提:目标主机可 SSH 访问(本例为 root 凭据);本地装有 Python 与 paramiko;cve-mcp-server 已注册可用;另备一份用作样式参考的既有 HTML 报告(本例为《NetAdmin_工具兼容性报告》)
复现材料见文末 亲自检测 ↓
SSH 连接与巡检
巡检的第一道坎不在远端,在本地:你的 Windows 工作机上根本没有趁手的 SSH 自动化工具。AVL Code 拿到指令后没有直接连,而是先做了两件事。
现在需要你用ssh连接<内网IP>,用户名root,密码<凭据>。
在/root下执行命令 cd /data0/app_new/&&LD_LIBRARY_PATH=./env/posix/lib7/ python /root/data_capture_safety.pyc对智甲EPP产品进行巡检解析复合指令,拆出 4 个子任务:SSH 巡检 → 服务检查 → 漏洞扫描 → 报告生成
→ 探查本地环境:Python / paramiko 就绪 · Windows 无 sshpass/plink → 改用 paramiko 建连
→ SSH 连接成功(root)→ 执行巡检命令,捕获输出
→ 读取巡检结果 inspection.json服务状态采集
inspection.json 只是巡检的一半,另一半是"哪些服务活着"。这一步的产出会直接决定报告里的服务状态总览和风险等级。
执行命令/data0/bin/status_supervisorctl.sh检查智甲EPP的服务运行状态;
将生成的inspection.json文件里的内容、服务运行状态和漏洞检测结果写成巡检报告执行 status_supervisorctl.sh → 46 个服务:44 运行 · 2 停止 · 任务队列无积压
→ 采集系统信息:CentOS 7(已 EOL)· CPU 0.90% · 内存 67% · 磁盘 11%
→ 自动完成 inspection.json 中文编码转换
→ 关键发现:授权将于 2026-06-24 过期(剩余 1 天)· 1/1 客户端离线漏洞扫描
漏洞扫描是最容易卡住的一步:情报源可能超时,工具可能拒绝你的请求。这一步你会看到降级策略如何让扫描照常完成。
调用cve-mcp-server,对<内网IP>进行漏洞扫描检测。调用 cve-mcp-server:IP 信誉查询被拒(私有 IP)→ 转为基于系统版本 + 软件包的漏洞枚举
→ NVD API 多次超时 → 按降级链完成扫描
→ 融合 NVD / CISA KEV / OSV.dev / EPSS 多源情报计算风险评分
→ 检出内核漏洞 CVE-2017-5972(CVSS 7.5):SYN cookie DoS 风险报告生成与修正
合规报告的底线有两条:样式要规范,敏感信息不能漏。这一步你拿到报告,还会看到它如何被一句话修正。
将巡检结果和漏洞检测结果写成HTML格式的巡检报告,报告样式参考《NetAdmin_工具兼容性报告》。报告中的序列号和密码是敏感信息,需要替换为*号处理。
──第二轮──
【病毒库版本】状态应该是【异常】,在下方增加一行提示:病毒库已经超过一个月未更新,建议升级病毒库。升级包下载地址:https://iepupdate.antiy.cn/update_list/GettoollistforZip读取参考报告的 HTML 结构,复用其样式框架
→ 序列号替换 ****、密码掩码处理
→ 生成智甲 EPP 巡检报告:系统信息 / 授权(脱敏)/ 46 项服务状态 / 漏洞结果 / 风险汇总 / 建议措施
→ 收到纠偏后 fs.patch 增量修改(不重写整份文件):病毒库状态改判【异常】+ 新增升级提示行与下载地址亲自检测
照做一遍:把占位符换成你的主机信息,步骤顺序与本文一致。
python --version python -c "import paramiko" cd /data0/app_new/ && LD_LIBRARY_PATH=./env/posix/lib7/ python /root/data_capture_safety.pyc /data0/bin/status_supervisorctl.sh check_ip_reputation <内网IP> check_package_vulns <操作系统版本> <软件包列表> scan_dependencies <软件包清单> lookup_cve <CVE编号> fs.patch <报告路径> <修改内容> - 第 1 步:环境探查(本地)。
- 第 2 步:SSH 连接与巡检(Windows 无 sshpass/plink 时走 paramiko 脚本)。
- 第 3 步:服务状态检查。
- 第 4 步:漏洞扫描(cve-mcp-server 工具,超时/私有 IP 时按降级链走)。
- 第 5 步:报告增量修正(不重写整份 HTML)。
- 会话导出未包含逐条工具调用明细,过程中的降级链与工具名(paramiko、check_ip_reputation、fs.patch 等)以案例报告记载为准。另请
- 注意:session.html 导出中第一条用户消息为精简版("密码你知道"),本文引用的完整复合指令以案例报告「用户指令(原始输入)」为准,两处版本差异如实保留。所有内网 IP 与凭据在本文中均以占位符替代。
下一个问题: 报告里写着"授权将于明天过期"——把「立即续期授权」提上工单之后,下一季度的巡检能否直接复用巡检脚本批量跑多台主机?
