什么时候需要离线巡检
在线巡检依赖网络可达与远端执行通道,一旦目标位于物理隔离网、专网或不允许安装代理,通道就不存在。离线巡检用最笨但可靠的方式绕开限制:把脚本与目标清单带进环境,本地执行,结果写成结构化文件再带出来导入平台。它的价值不只是能查到,更在于让隔离区的检查结果和在线结果进入同一套口径与留存体系。
基本信息
| 适用场景 | 物理隔离网、专网、无代理环境、临时网络中断 |
|---|---|
| 实现方式 | 自包含脚本加参数文件,输出结构化结果文件 |
| 脚本要求 | 无外部依赖、只读执行、自带版本号与检查项标识 |
| 结果回收 | 结构化文件导入平台,与在线结果同格式 |
| 安全要求 | 介质管控、脚本校验、结果完整性校验 |
典型使用场景
- 生产隔离区巡检:网络不可达,只能在现场设备上执行检查
- 工业控制与专用网络:不允许安装代理,接入方式受严格限制
- 测评与检查现场:需在受控环境下当场采集并可核验的原始结果
- 网络割接与切换演练前后:验证切换前后状态一致性
- 交付前现场检查:把验收项固化成脚本,避免凭经验口述确认
离线巡检各环节要点
| 环节 | 要点 | 主要风险 |
|---|---|---|
| 准备 | 按目标环境生成参数与目标清单 | 脚本与环境不匹配,执行中途中断 |
| 执行 | 现场本地执行,结果写入文件 | 现场误操作,需强制只读约束 |
| 回收 | 结构化结果导入平台,而非手工录入 | 手工转录导致数据失真 |
| 校验 | 比对脚本与结果校验值 | 介质带入未知文件,污染环境 |
| 覆盖率 | 未执行目标如实登记原因 | 格式不一致使覆盖率虚高 |
离线脚本骨架
离线脚本骨架
#!/bin/bash
# 离线巡检脚本骨架:自包含、只读、结果结构化
set -u
CHECK_VERSION="baseline-linux-v4" # 检查项版本,导入平台后用于口径比对
OUT="${OUT:-./result.jsonl}" # 结果文件路径由现场参数决定
emit() { printf '{"check":"%s","target":"%s","result":"%s"}\n' "$1" "$2" "$3" >>"$OUT"; }
emit meta_script_version "$(hostname)" "$CHECK_VERSION" # 首条记录脚本版本,结果自带口径
emit disk_watermark "$(hostname)" "$(df -hP / | awk 'NR==2{print $5}')"
emit selinux_state "$(hostname)" "$(getenforce 2>/dev/null || echo unknown)"
# 每行一条 JSON 记录,便于整包带回后直接导入
# 全程不修改被检系统任何配置:现场无法回滚的改动风险最高离线结果必须落成平台能直接解析的结构化格式。现场手抄或截图汇总会引入人工误差,也让结果无法纳入趋势统计与留存体系。
离线通道通常也是防护最薄弱的一环:脚本与介质要校验来源与完整性,禁用未登记的移动介质,避免巡检过程把恶意文件带进隔离环境。