OpenSCAP 是干什么的
OpenSCAP 用 SCAP 内容包(常见的是 SCAP Security Guide)对主机做机器可读的合规体检,输出 XCCDF 结果文件和 HTML 报告。它只核查、不改配置,价值在于给出可对比的两份快照:整改前的现状报告与整改后的验证报告,构成完整的闭环证据。
基本信息
| 适用平台 | RHEL/CentOS 等 RPM 系发行版 |
|---|---|
| 客户端包 | openscap-scanner |
| 内容包 | scap-security-guide(按发行版本命名 ds 文件) |
| 常用 profile | CIS、PCI-DSS、STIG 等,以内容包实际提供为准 |
| 输出物 | XCCDF XML 结果 + HTML 报告 |
| 性质 | 只读核查,不做修复 |
典型使用场景
- 整改立项:先出一份现状报告,量化差距项分布
- 闭环验证:整改后复扫,两份报告对比作为完成证据
- 新系统上线前的一次性体检,避免带着已知问题交付
- 批量巡检:脚本对多台主机顺序扫描并集中收集报告
- 向审计方交付:XML 供机器比对,HTML 供人工阅读
扫描与出报告
扫描与出报告
rpm -q openscap-scanner || yum install -y openscap-scanner scap-security-guide
# 确认内容包文件名与系统发行版本匹配
ls /usr/share/xml/scap/ssg/content/ | head
# 按 profile 扫描,同时产出结果与报告
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis \
--results /tmp/oscap-results.xml --report /tmp/oscap-report.html \
/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
# 从已有结果重新生成报告(便于分发)
oscap xccdf generate report /tmp/oscap-results.xml > /tmp/oscap-report2.html结果状态判读
| 状态 | 含义 | 处理方式 |
|---|---|---|
| pass | 满足该规则要求 | 归档,作为合规证据 |
| fail | 不满足规则要求 | 按 severity 排优先级,纳入整改清单 |
| notapplicable | 规则不适用于本系统 | 记录原因,避免复扫时反复误判 |
| unknown | 条件不足无法判定 | 补齐依赖或权限后重跑,不能算通过 |
| error | 扫描过程本身出错 | 查内容包版本、权限与运行环境 |
内容包版本必须与系统发行版本匹配,用 rhel8 的内容包去扫 rhel7 会产出一大批没有意义的失败项。
报告篇幅很大,先看 HTML 里的概览与高危项分布,需要机器比对时再回到 XML 结果文件。
扫描结果包含账户、服务、内核参数等系统信息,按敏感数据处理并限制文件访问权限。
机器判定与人工核查要互补:参数、文件权限这类检查适合自动化,服务配置的合理性与业务例外仍需人工确认。
同一台机器换 profile 会得到完全不同的通过率,报告里必须写明使用的 profile 与内容包版本,否则跨期对比没有意义。