OpenSCAP 是基于 SCAP 标准的开源安全合规评估工具,支持自动化基线检查、漏洞识别与策略比对,适用于生产服务器、CI/CD 及批量运维;安装后可用 oscap 命令执行扫描并生成 XML 与 HTML 报告,结合修复脚本或 Ansible 实现持续合规。

OpenSCAP 是一个开源的系统安全合规性评估工具,能基于 SCAP(Security Content Automation Protocol)标准对 Linux 系统执行自动化基线检查、漏洞识别与策略比对。它不依赖图形界面,适合在生产服务器、CI/CD 流水线或批量运维场景中使用。
安装与基础环境准备
大多数主流 Linux 发行版已将 OpenSCAP 打包进官方源:
- RHEL/CentOS/Fedora:运行 yum install openscap-scanner scap-security-guide 或 dnf install openscap-scanner scap-security-guide
- Debian/Ubuntu:执行 apt install openscap-utils libopenscap8 scap-security-guide
- 安装完成后,可使用 oscap --version 验证版本,用 ls /usr/share/xml/scap/ssg/content/ 查看预置的合规内容(如 ssg-rhel8-ds.xml)
执行一次标准基线扫描
以 RHEL 8 系统为例,使用 NIST SP 800-53 或 CIS Level 1 基线进行快速扫描:
- 运行命令:oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis_server_l1 --results scan-results.xml --report report.html /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
- --profile 指定合规策略(可用 oscap info /path/to/ssg-rhel8-ds.xml 查看所有可用 profile)
- 结果生成两个文件:scan-results.xml(机器可读格式,可用于后续解析或集成),report.html(带颜色标记的可视化报告,直接浏览器打开即可查看失败项详情)
解读关键结果与常见修复建议
HTML 报告中红色条目表示“fail”,黄色为“notchecked”或“unknown”,绿色为“pass”。重点关注 fail 条目中的 Rule ID(如 rule_sudo_require_tty)和说明文本:
- 例如 Ensure sudoers includes requiretty 失败,通常因 /etc/sudoers 中存在 Defaults !requiretty;修复方式是注释或删除该行,并运行 visudo -c 校验语法
- 又如 Ensure password hashing algorithm is SHA-512 失败,检查 /etc/login.defs 中 ENCRYPT_METHOD 是否为 SHA512,并确认新用户密码已按此加密(已有用户需重设密码生效)
- 部分规则需重启服务(如 SSH 配置变更后执行 systemctl restart sshd)或重载内核参数(sysctl -p)
自动化与持续集成实践
将 OpenSCAP 扫描嵌入日常运维流程可提升响应效率:
- 编写 shell 脚本定期扫描,并用 oscap xccdf generate fix 自动输出修复脚本(例:oscap xccdf generate fix --profile cis_server_l1 scan-results.xml > remediate.sh)
- 在 Ansible Playbook 中调用 community.general.oscap 模块,实现扫描+修复一体化编排
- 在 Jenkins 或 GitLab CI 中添加 stage,对镜像构建后的容器或虚拟机快照执行基线检查,失败则阻断发布


















