文章目录
- 前言
- 1、概述
- 2、安装与使用
- 2.1、源码安装
- 2.1.1、获取源代码
- 2.1.2、获取构建依赖项
- 2.1.3、构建库
- 2.1.4、构建HTML文档
- 2.1.5、运行测试
- 2.1.6、安装OpenSCAP
- 2.1.7、安装SCAP内容
- 2.2、使用方法
- 2.2.1、oscap的常用命令
- 2.2.2、显示有关SCAP内容的信息
- 2.2.2.1、显示有关SCAP源数据流的信息
- 2.2.2.2、显示有关SCAP结果数据流的信息
- 2.2.3、扫描
- 2.2.3.1、使用SCAP源数据流进行扫描
- 2.2.3.2、选择SCAP源数据流组件
- 2.2.3.3、评估独立的OVAL
- 2.2.3.4、评估XCCDF
- 2.2.3.5、生成与STIG Viewer兼容的结果
- 2.2.4、修复系统
- 2.2.4.1、扫描期间的修复
- 2.2.4.2、扫描后的修复
- 2.2.4.3、审查修复
- 2.2.5、定制
- 3、测试用例
- 3.1、使用SCAP安全指南审核系统设置
- 3.2、审核Red Hat产品的安全漏洞
- 3.2.1、OVAL+XCCDF
- 3.2.2、仅限OVAL
- 3.2.3、源数据流
- 3.2.4、更多专业文件
- 3.2.5、申明
- 3.3、如何在RHEL7上评估PCI-DSS
- 3.4、如何评估DISA STIG
- 3.5、如何评估美国政府配置基准(USCB)
- 4、总结
- 5、参考文献
- 总结
前言
本博客的主要内容为OpenSCAP的部署、使用与原理分析。本博文内容较长,因为涵盖了OpenSCAP的几乎全部内容,从部署的详细过程到如何使用OpenSCAP进行漏洞检测,以及对OpenSCAP进行漏洞检测的原理分析,相信认真读完本博文,各位读者一定会对OpenSCAP有更深的了解。以下就是本篇博客的全部内容了。
1、概述
OpenSCAP(Security Content Automation Protocol)是一个开源的安全合规性框架,旨在帮助组织实现系统和应用程序的安全标准和政策。它提供了一套工具和库,用于评估、监控和强化计算机系统的安全性。以下是OpenSCAP的一些关键特性和组成部分:
- SCAP标准:OpenSCAP 遵循安全合规性协议(SCAP)标准,该标准由国家标准技术研究院(NIST)开发。SCAP 提供了一种标准化的方法,用于评估、监控和报告计算机系统的安全性。
- 工具集:OpenSCAP 提供了一系列工具,其中包括SCAP Scanner、SCAP Workbench、和oscap工具。这些工具可以用于执行安全性评估、配置基准检查、生成报告以及自动化合规性检查。
- 安全配置指南:OpenSCAP包含了一系列安全配置指南,这些指南基于不同的安全标准和政策。用户可以使用这些指南来评估其系统的安全性,并采取必要的步骤来加固系统。
- 多平台支持:OpenSCAP 不仅支持Linux平台,还支持其他操作系统,如Windows。这使得它成为一个跨平台的安全合规性工具。
- 自定义性:用户可以根据自身需求定制OpenSCAP,以适应其特定的安全标准和政策要求。
总体而言,OpenSCAP是一个强大的工具集,帮助组织确保其系统和应用程序符合特定的安全标准,从而提高整体安全性。此外,OpenSCAP工具基于XSLT语言、C语言、Python语言和Roff语言开发。
2、安装与使用
软件环境 | 硬件环境 | 约束条件 |
---|---|---|
ubuntu-22.04.1-desktop-amd64(内核版本5.15.0-43-generic) | 分配2个处理器,每个处理器有4个内核,故处理器内核总数为8 | 具体的约束条件可见“2.1、源码安装”章节所示的软件版本约束 |
具体的软件环境可见“2.1、源码安装”章节所示的软件环境 | 内存8GB | |
硬盘200GB | ||
OpenSCAP部署在VMware Pro 17上的Ubuntu22.04.1系统上,主机系统为Windows11 |
2.1、源码安装
2.1.1、获取源代码
- 在这一部分,我们要获取OpenSCAP的源代码。在获取OpenSCAP的源代码之前,我们需要下载安装git,这会帮助我们OpenSCAP的源代码:
$ sudo apt-get update
$ sudo apt-get install git -y
- 然后来到当前用户的根目录,在此目录中clone我们需要的关于OpenSCAP的源代码并进入源代码目录中:
$ cd /home/iie-iisd/
$ git clone --recurse-submodules https://github.com/OpenSCAP/openscap.git
$ cd openscap
2.1.2、获取构建依赖项
- 执行如下命令来下载安装构建OpenSCAP所需要的依赖项:
$ sudo apt-get update
$ sudo apt-get install -y cmake libdbus-1-dev libdbus-glib-1-dev libcurl4-openssl-dev libgcrypt20-dev libselinux1-dev libxslt1-dev libgconf2-dev libacl1-dev libblkid-dev libcap-dev libxml2-dev libldap2-dev libpcre3-dev swig libxml-parser-perl libxml-xpath-perl libperl-dev libbz2-dev librpm-dev g++ libyaml-dev libxmlsec1-dev libxmlsec1-openssl
2.1.3、构建库
- 首先进入之前下载的OpenSCAP的源代码目录中:
$ cd /home/iie-iisd/openscap/
- 然后顺序执行如下三条命令来构件库:
$ cd build/
$ cmake ../
$ make
- 出现如下图所示的内容即代表库构建成功:
2.1.4、构建HTML文档
- 首先下载安装构建HTML文档所需要的依赖项:
$ sudo apt-get update
$ sudo apt-get install asciidoc -y
$ sudo apt-get install doxygen -y
- 然后进入如下目录中(就是前两节一直使用的构建目录):
$ cd /home/iie-iisd/openscap/build/
- 然后顺序执行如下两条命令来构建文档:
$ cmake -DENABLE_DOCS=TRUE ../
$ make docs
-
出现如下图所示的内容即代表构建HTML文档成功:
-
当做完以上操作后,我们就可以生成完整的API文档、用户手册、开发人员手册和HTML格式的贡献文档。生成的文档位于“/openscap/build/docs/”目录中的以下子目录中:
- html:包含Doxygen生成的API文档
- manual:包含OpenSCAP用户手册
- developer:包含OpenSCAP开发人员手册
- contribute:包含贡献文档
2.1.5、运行测试
- 在构件库之后(即做完以上操作后),我们可以运行库自检。为此,我们需要下载安装以下依赖项:
$ sudo apt-get update
$ sudo apt-get install wget lua5.1 procps sendmail bzip2 strace rpm-common -y
- 然后执行如下命令来启动sendmail.service服务:
$ systemctl start sendmail.service
-
执行上面的命令后,会出现如下图所示的界面,我们只需要输入当前用户的密码即可成功认证:
-
然后执行如下命令进入本章一直使用的构建目录来运行库自检:
$ cd /home/iie-iisd/openscap/build/
$ ctest
-
如下图所示的内容即代表库自检成功:
-
当然,也可以使用
ctest
命令来测试系统中存在的任何其它oscap二进制文件。各位读者只需要将目标二进制文件的路径设置为CUSTOM_OSCAP
变量即可。其中,xx
就是想使用ctest
命令测试的在系统中的任何其它oscap二进制文件。:
$ export CUSTOM_OSCAP=/usr/bin/xx; ctest
- 一些使用所谓的离线探测模式的测试需要在测试执行期间进行
chroot
。其中一些探测使用chroot
系统调用,而非特权进程不允许这样做。这在扫描过程中不是问题,因为oscap通常以root身份扫描。然而,我们不想在测试期间以root身份运行oscap,因为整个测试套件都必须使用root权限进行清理。相反,将oscap-chrootable目标构建为超级用户,或者先构建oscap-chrootable-nocap,然后手动授予该功能。此目标创建测试套件将用于某些脱机测试的二进制文件。在离线测试中,使用公共测试模块中的set_offline_test_mode [chroot directory]
和unset_offline_test_mode
函数-这些函数将设置变量,使得未引用的$OSCAP
调用将使用支持chroot
的二进制文件,或者它将退出并返回错误代码,从而终止测试。因此,建议运行以下命令:
$ sudo make oscap-chrootable
-
执行完上面的命令后,出现如下图所示的内容即代表oscap-chrootable目标构建成功:
-
需要注意的是,并不是每个检查都会测试oscap工具,但是,当
CUSTOM_OSCAP
变量被设置时,只有执行的检查才会被执行。如果需要启动MITRE测试,使用如下命令来使用ENABLE_MITRE
标志:
$ cmake -DENABLE_MITRE=TRUE ..
- 此外,这些测试需要特定的环境特征才能正常工作,最值得注意的是,MTA需要在端口25上侦听。如果可能的话,我们建议使用OpenSCAP作者的容器(即名为“mitre_tests”的容器)来测试mitre功能。不过需要先进入root用户权限并进入“/openscap/”目录后才能进行上面的操作:
$ su
# cd /home/iie-iisd/openscap/
# docker build --tag openscap_mitre_tests:latest -f Dockerfiles/mitre_tests . && docker run openscap_mitre_tests:latest
注1:不过在执行上面的所有命令之前,我们需要先下载安装Docker。下面就是下载安装Docker的具体步骤:
- 首先下载安装Docker的相关依赖项:
$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
- 然后来到当前用户的根目录中,添加Docker GPG密钥:
$ cd /home/iie-iisd/
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 然后设置Docker软件包仓库:
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 然后顺序执行如下两条命令来下载安装Docker:
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io -y
- 然后执行如下命令来验证Docker是否下载安装成功:
$ sudo docker run hello-world
- 执行完上面的命令后,出现如下图所示的界面即代表Docker安装成功:
注2:实际执行中遇到的问题及解决方法
A 问题1:
-
在步骤4进行库自检的时候,可能会出现类似如下图所示的问题:
-
目前我们也没办法定位如上图所示的问题究竟出现在哪里,不过根据它的提示,我们可以运行如下命令来重新运行错误案例,说不定可以获取到有用的信息:
$ ctest --rerun-failed --output-on-failure
-
果然,当我们重新运行错误案例后,它提示我们缺少pytest这个库:
-
既然缺少pytest这个库,那我们就安装这个库就可以,不过在安装这个库之前,我们需要先安装pip:
$ sudo apt-get update
$ sudo apt-get install python3-pip -y
$ pip install pytest
- 然后我们重新测试刚才的失败案例:
$ ctest --rerun-failed --output-on-failure
-
可以发现刚刚测试的失败案例,现在已经通过测试了:
-
那么此时我们就解决了这个问题,我们现在只需要回到步骤4重新继续向下操作即可
2.1.6、安装OpenSCAP
- 首先执行如下命令进入本章一直使用的构建目录:
$ cd /home/iie-iisd/openscap/build/
- 然后执行如下命令来正式安装OpenSCAP:
$ sudo make install
- 那么到此,我们就完成了OpenSCAP的源码安装。我们可以使用如下命令来查看当前安装的OpenSCAP各个组件的详细版本信息:
$ oscap --version
- 执行完上面的命令后,会在命令行终端打印关于当前安装的OpenSCAP各个组件的详细版本信息:
2.1.7、安装SCAP内容
需要强调的是,我们目前只是部署好了OpenSCAP工具,而 OpenSCAP工具 是一个开源的安全合规性框架,它提供了一套工具和库,用于评估、监控和强化计算机系统的安全性。它支持使用 SCAP 格式的安全数据流文件进行系统安全性评估。OpenSCAP 负责执行安全性扫描、生成报告和自动化合规性检查等任务。换句话说,我们目前只是部署好了对系统进行安全性评估的框架,而这个框架需要依赖于SCAP数据流文件来执行系统安全性评估。
而SCAP Security Guide 提供了符合 SCAP 格式的安全数据流文件,这些文件包含了安全基线和检查规则。那SCAP Security Guide具体又是什么呢?SCAP Security Guide 是一个提供SCAP数据流文件和安全配置指南的项目。它为不同的操作系统和发行版创建和维护了安全配置指南,其中包括基准安全配置、检查规则和其他与安全合规性相关的内容。SSG的目标是帮助用户通过使用SCAP数据流文件实现安全标准和政策。
本章节的内容就是介绍如何安装SCAP Security Guide(OpenSCAP的作者将其称为SCAP内容),以让OpenSCAP工具可以实现对系统的安全性评估。下面就是如何安装SCAP Security Guide(以下称SCAP内容)的具体方法。
- 下载安装相关依赖:
$ sudo apt update
$ sudo apt install git
$ sudo apt install python3-jinja2 -y
- 来到当前用户的根目录中,并下载SCAP content源代码:
$ cd /home/iie-iisd/
$ git clone https://github.com/ComplianceAsCode/content.git
- 然后进入下载好的SCAP content源代码目录中,并进行安装:
$ cd content/
$ cd build/
$ cmake ../
$ make -j8
$ sudo make install
- 当我们做完以上操作后,就完成了SCAP content的安装,同时代表OpenSCAP工具正式部署完毕,可以进行后续工作了
2.2、使用方法
2.2.1、oscap的常用命令
oscap是OpenSCAP工具的命令行界面,用于执行SCAP安全性评估和配置规范扫描。以下是一些oscap常用命令的简要介绍:
oscap info
:显示关于SCAP数据流文件的信息,如文档类型、导入日期、版本等。
oscap info /path/to/scap-datastream.xml
oscap xccdf eval
:执行XCCDF配置规范评估。
oscap xccdf eval --profile <profile_id> --results /path/to/results.xml /path/to/xccdf.xml
oscap oval eval
:执行OVAL安全检查。
oscap oval eval --results /path/to/results.xml /path/to/oval.xml
oscap remediate
:应用安全配置规范以修复违规项。
oscap remediate --results /path/to/results.xml /path/to/xccdf.xml
oscap ds sds-compose
:合并多个 SCAP 数据流文件。
oscap ds sds-compose /path/to/output.xml /path/to/input1.xml /path/to/input2.xml
oscap ds sds-validate
:验证SCAP数据流文件的结构和有效性。
oscap ds sds-validate /path/to/scap-datastream.xml
oscap oval results
:将 OVAL 评估结果转换为人类可读的格式。
oscap oval results /path/to/results.xml
oscap xccdf generate guide
:生成指南文档,描述安全配置规范的详细信息。
oscap xccdf generate guide --profile <profile_id> /path/to/xccdf.xml > /path/to/guide.html
以上命令仅是oscap提供的众多命令中的一小部分。我们可以使用oscap --help
命令查看oscap的所有可用命令和选项,以及oscap <command> --help
查看特定命令的详细信息。
2.2.2、显示有关SCAP内容的信息
可以使用oscap-info
命令显示有关SCAP文件(即SCAP Security Guide 文件或SCAP内容文件,下文不再赘述)的信息。
2.2.2.1、显示有关SCAP源数据流的信息
最常见的SCAP文件类型是SCAP源数据流。在以下示例中,我们将显示有关scap-security-guide包中的SCAP源数据流“/home/iie-iisd/content/build/ssg-rhel8-ds.xml”的信息。
$ oscap info /home/iie-iisd/content/build/ssg-rhel8-ds.xml
执行完上面的命令后,会在命令行终端中打印scap-security-guide包中的SCAP源数据流“/home/iie-iisd/content/build/ssg-rhel8-ds.xml”的信息。
Document type: Source Data Stream
Imported: 2023-12-18T13:15:59
Stream: scap_org.open-scap_datastream_from_xccdf_ssg-rhel8-xccdf.xml
Generated: (null)
Version: 1.3
Checklists:
Ref-Id: scap_org.open-scap_cref_ssg-rhel8-xccdf.xml
WARNING: Datastream component 'scap_org.open-scap_cref_security-data-oval-v2-RHEL8-rhel-8.oval.xml.bz2' points out to the remote 'https://access.redhat.com/security/data/oval/v2/RHEL8/rhel-8.oval.xml.bz2'. Use '--fetch-remote-resources' option to download it.
WARNING: Skipping 'https://access.redhat.com/security/data/oval/v2/RHEL8/rhel-8.oval.xml.bz2' file which is referenced from datastream
Status: draft
Generated: 2023-12-18
Resolved: true
Profiles:
Title: ANSSI-BP-028 (enhanced)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_enhanced
Title: ANSSI-BP-028 (high)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_high
Title: ANSSI-BP-028 (intermediary)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_intermediary
Title: ANSSI-BP-028 (minimal)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_minimal
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Server
Id: xccdf_org.ssgproject.content_profile_cis
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 1 - Server
Id: xccdf_org.ssgproject.content_profile_cis_server_l1
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 1 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l1
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l2
Title: Criminal Justice Information Services (CJIS) Security Policy
Id: xccdf_org.ssgproject.content_profile_cjis
Title: Unclassified Information in Non-federal Information Systems and Organizations (NIST 800-171)
Id: xccdf_org.ssgproject.content_profile_cui
Title: Australian Cyber Security Centre (ACSC) Essential Eight
Id: xccdf_org.ssgproject.content_profile_e8
Title: Health Insurance Portability and Accountability Act (HIPAA)
Id: xccdf_org.ssgproject.content_profile_hipaa
Title: Australian Cyber Security Centre (ACSC) ISM Official
Id: xccdf_org.ssgproject.content_profile_ism_o
Title: Protection Profile for General Purpose Operating Systems
Id: xccdf_org.ssgproject.content_profile_ospp
Title: PCI-DSS v4.0 Control Baseline for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_pci-dss
Title: Red Hat Corporate Profile for Certified Cloud Providers (RH CCP)
Id: xccdf_org.ssgproject.content_profile_rht-ccp
Title: Standard System Security Profile for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_standard
Title: DISA STIG for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_stig
Title: DISA STIG with GUI for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_stig_gui
Referenced check files:
ssg-rhel8-oval.xml
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
ssg-rhel8-ocil.xml
system: http://scap.nist.gov/schema/ocil/2
security-data-oval-v2-RHEL8-rhel-8.oval.xml.bz2
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
Checks:
Ref-Id: scap_org.open-scap_cref_ssg-rhel8-oval.xml
Ref-Id: scap_org.open-scap_cref_ssg-rhel8-ocil.xml
Ref-Id: scap_org.open-scap_cref_ssg-rhel8-cpe-oval.xml
Ref-Id: scap_org.open-scap_cref_security-data-oval-v2-RHEL8-rhel-8.oval.xml.bz2
Dictionaries:
Ref-Id: scap_org.open-scap_cref_ssg-rhel8-cpe-dictionary.xml
- Document type描述了文件的格式。常见的类型包括XCCDF、OVAL、源数据流和结果数据流。
- Imported是文件被导入以供OpenSCAP使用的日期。由于OpenSCAP使用本地文件系统且没有专有的数据库格式,导入日期与文件修改日期相同。
- Stream是数据流的ID。
- Version是SCAP标准的版本。
- Checklists列出了数据流中包含的可用检查表,我们可以在使用
oscap xccdf eval
的命令行属性--benchmark-id
中使用。此外,每个检查表都有详细的信息打印出来。 - Status是XCCDF基准的状态。常见的值包括
accepted
、draft
、deprecated
和incomplete
。请参阅XCCDF规范了解详情。 - Generated是文件创建或生成的日期。这个日期显示在XCCDF文件和检查表上,并来自XCCDF Status元素。
- Profiles列出了可用配置文件、它们的标题和ID,我们可以在
--profile
命令行属性中使用。 - Checks和Dictionaries列出了给定数据流中的OVAL检查组件和CPE字典组件。
2.2.2.2、显示有关SCAP结果数据流的信息
oscap-info
命令也有助于其它SCAP文件类型,如SCAP结果数据流(ARF)文件。当给定ARF文件时,OpenSCAP可以显示评估的开始和结束日期。
在本例中,我们将显示有关ARF文件ARF.xml的信息。
$ oscap info /home/iie-iisd/openscap/tests/DS/rds_index_simple/arf.xml
执行完上面的命令后,会在命令行终端中打印如下所示的信息:
Document type: Result Data Stream
Imported: 2023-11-21T17:31:48
Asset: asset0
ARF report: xccdf1
Report request: collection1
Result ID: xccdf_org.open-scap_testresult_default-profile
Source benchmark: (null)
Source profile: (default)
Evaluation started: 2012-07-17T15:50:44
Evaluation finished: 2012-07-17T15:50:44
Platform CPEs:
(none)
Asset: asset1
2.2.3、扫描
OpenSCAP的主要目标是执行本地系统的配置和漏洞扫描。OpenSCAP能够评估SCAP源数据流、XCCDF基准和OVAL定义,并生成适当的结果。SCAP内容可以在单个文件(作为SCAP源数据流)中提供,也可以作为多个单独的XML文件提供。
2.2.3.1、使用SCAP源数据流进行扫描
通常,所有必需的输入文件都捆绑在SCAP源数据流中。使用SCAP源数据流的扫描可以通过oscap xccdf eval
命令执行,并提供一些额外的参数。oscap xccdf eval
命令的基本语法如下:
oscap xccdf eval --profile PROFILE_ID --results-arf ARF_FILE --report REPORT_FILE SOURCE_DATA_STREAM_FILE
其中:
PROFILE_ID
是XCCDF配置文件的IDARF_FILE
是生成SCAP结果数据流格式(ARF)结果的文件路径REPORT_FILE
是生成HTML格式报告的文件路径SOURCE_DATA_STREAM_FILE
是评估的SCAP源数据流的文件路径
例如,要评估来自“/home/iie-iisd/content/build/ssg-rhel8-ds.xml”的SCAP源数据流的名为“xccdf_org.ssgproject.content_profile_ospp”的配置文件,请运行以下命令(首先创建一个测试目录,并进入此目录中,后面对于每个测试都需要进行此操作,不再赘述):
$ mkdir /home/iie-iisd/test01
$ cd /home/iie-iisd/test01/
$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_ospp --results-arf results.xml --report report.html /home/iie-iisd/content/build/ssg-rhel8-ds.xml
执行完上面的命令后,会在当前目录下生成如下图所示的两个文件,我们可以使用ls
命令来查看此目录中的具体内容:
上面命令的执行进度和结果将显示在终端中。完整结果在results.xml中生成,作为SCAP结果数据流。详细结果可在HTML格式的报告,即report.HTML中找到。我们可以查看一下report.HTML:
$ firefox report.html
执行完上面的命令后,会在浏览器中打开我们本次的测试结果:
查看完本次的测试结果之后,可以关闭浏览器。
Tip:我们可以只提供配置文件ID的后缀,而不是完整的配置文件ID。例如,我们可以只使用--profile ospp
,而不是--profile xccdf_org.ssgproject.content_profile_ospp
。
2.2.3.2、选择SCAP源数据流组件
要评估特定SCAP源数据流中的某个XCCDF基准,可以使用以下命令:
oscap xccdf eval --datastream-id DS_ID --xccdf-id CREF --results-arf ARF_FILE SOURCE_DATA_STREAM_FILE
其中:
DS_ID
是要评估的<ds:data-stream>元素的IDXCCDF_ID
是指向所需XCCDF文档的<ds:component-ref>元素的标识ARF_FILE
是以SCAP结果数据流的形式包含扫描结果的文件SOURCE_DATA_STREAM_FILE
是SCAP源数据流文件
注意:如果在命令行中省略了--datastream-id
,将使用集合中的第一个数据流。如果省略了--xccdf-id
,将使用检查表元素的第一个组件。如果两者都省略了,则将使用具有检查表元素中组件的第一个数据流——将使用其检查表元素中的第一个组件。
要评估作为SCAP源数据流一部分的特定XCCDF基准,请使用以下选项:
oscap xccdf eval --benchmark-id BENCHMARK_ID --results-arf ARF_XML SOURCE_DATA_STREAM_FILE
其中:
SOURCE_DATA_STREAM_FILE
是一个表示SCAP源数据流的文件BENCHMARK_ID
是包含组件的<xccdf:Benchmark>元素的“id”属性的值ARF_FILE
是一个包含以SCAP结果数据流形式呈现的扫描结果的文件
2.2.3.3、评估独立的OVAL
SCAP文档可以具有单个OVAL文件(OVAL定义文件)的形式。oscap工具在评估OVAL定义期间处理OVAL定义文件。它收集系统信息,对其进行评估并生成OVAL结果文件。每个OVAL定义的评估结果被打印到标准输出流。以下示例描述了涉及OVAL定义文件的最常见场景。
要评估给定OVAL定义文件中的OVAL定义,可以使用oscap oval eval
命令。其基本形式如下:
oscap oval eval --results RESULTS_FILE OVAL_FILE
其中:
OVAL_FILE
是OVAL定义文件RESULTS_FILE
是存储OVAL结果文件的路径
使用--id
选项,可以选择并评估给定的OVAL定义文件中的特定定义:
$ mkdir /home/iie-iisd/test02
$ cd /home/iie-iisd/test02/
$ oscap oval eval --id oval:ssg-sysconfig_networking_bootproto_ifcfg:def:1 --results ssg-rhel8-oval-results.xml /home/iie-iisd/content/build/ssg-rhel8-oval.xml
在评估的OVAL定义具有ID为oval:ssg-sysconfig_networking_bootproto_ifcfg:def:1
的情况下,ssg-rhel8-oval-results.xml
是OVAL定义文件,而ssg-rhel8-oval-results.xml
是OVAL结果文件。
执行上面的命令后,会在命令行终端中打印如下图所示的内容:
上图所示的内容表示这个命令执行成功,但评估的结果是false
,表示该特定的OVAL定义(oval:ssg-sysconfig_networking_bootproto_ifcfg:def:1
)的条件未满足。结果可能取决于定义中描述的系统状态是否符合定义的期望。
要评估OVAL组件中属于SCAP源数据流中特定数据流组件的所有定义,请运行以下命令(注意,这只是一个示例格式,需要根据自己测试的具体情况进行修改):
oscap oval eval --datastream-id ds.xml --oval-id xccdf.xml --results oval-results.xml scap-ds.xml
其中,ds.xml
是特定数据流的标识符,xccdf.xml
是指定OVAL组件的XCCDF文件,oval-results.xml
是OVAL结果文件,而scap-ds.xml
是SCAP源数据流集合。
当SCAP内容由多个XML文件表示时,OVAL定义文件可以与XCCDF文件一起分发。在这种情况下,OVAL定义可能取决于扫描期间从XCCDF文件导出的变量,单独评估OVAL定义会产生误导性结果。因此,任何外部变量都必须导出到OVAL定义评估过程中使用的特殊文件中。以下命令是此场景的示例:
oscap xccdf export-oval-variables \
--profile united_states_government_configuration_baseline \
usgcb-rhel5desktop-xccdf.xml
以及
oscap oval eval \
--variables usgcb-rhel5desktop-oval.xml-0.variables-0.xml \
--results usgcb-results-oval.xml
usgcb-rhel5desktop-oval.xml
其中,united_states_government_configuration_baseline
表示XCCDF文档中的一个配置文件(profile),usgcb-rhel5desktop-xccdf.xml
是指定XCCDF文档的文件,usgcb-rhel5desktop-oval.xml
是 OVAL 定义文件,usgcb-rhel5desktop-oval.xml-0.variables-0.xml
是包含从XCCDF文件导出的变量的文件,而usgcb-results-oval.xml
是OVAL结果文件。
一个OVAL指令文件可用于控制结果是“thin”(精简)还是“full”(完整)。可以通过使用--directives <file>
选项将此文件加载到OpenSCAP中。以下是一个启用“thin”结果而不是“full”结果的OVAL指令文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<oval_directives
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5"
xmlns:oval-res="http://oval.mitre.org/XMLSchema/oval-results-5"
xmlns="http://oval.mitre.org/XMLSchema/oval-directives-5"
xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-results-5
oval-results-schema.xsd http://oval.mitre.org/XMLSchema/oval-common-5
oval-common-schema.xsd http://oval.mitre.org/XMLSchema/oval-directives-5
oval-directives-schema.xsd">
<generator>
<oval:product_name>OpenSCAP</oval:product_name>
<!-- make sure the OVAL version matches your input -->
<oval:schema_version>5.8</oval:schema_version>
<oval:timestamp>2017-02-04T00:00:00</oval:timestamp>
</generator>
<directives include_source_definitions="true">
<oval-res:definition_true reported="true" content="thin"/>
<oval-res:definition_false reported="true" content="thin"/>
<oval-res:definition_unknown reported="true" content="thin"/>
<oval-res:definition_error reported="true" content="thin"/>
<oval-res:definition_not_evaluated reported="true" content="thin"/>
<oval-res:definition_not_applicable reported="true" content="thin"/>
</directives>
</oval_directives>
如果我们的用例需要精简的OVAL结果,我们很可能也想要省略系统特征。你可以使用--without-syschar
选项来实现这个目的。以下是在扫描普通的OVAL文件时使用OVAL指令文件的用法:
$ mkdir -p /home/iie-iisd/test03
$ cd /home/iie-iisd/test03/
$ oscap oval eval --directives /home/iie-iisd/openscap/tests/API/OVAL/directives.xml --without-syschar --results oval-results.xml /home/iie-iisd/content/build/ssg-ubuntu2204-oval.xml
执行完上面的命令后,使用ls
命令查看当前目录中生成的结果文件:
以下是从源数据流扫描OVAL组件时OVAL指令文件的用法:
oscap oval eval --directives directives.xml --without-syschar --datastream-id ds.xml --oval-id oval.xml --results oval-results.xml scap-ds.xml
当分布多个文件时,并不总是清楚将使用哪个OVAL文件。如果我们正在评估XCCDF文件,我们可以使用如下命令:
$ oscap info /home/iie-iisd/content/build/ssg-rhel7-xccdf.xml
执行上面的命令后,会得到如下所示的命令行终端的输出:
Document type: XCCDF Checklist
Checklist version: 1.2
Imported: 2023-12-18T13:15:30
Status: draft
Generated: 2023-12-18
Resolved: true
Profiles:
Title: C2S for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_C2S
Title: ANSSI-BP-028 (enhanced)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_enhanced
Title: ANSSI-BP-028 (high)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_high
Title: ANSSI-BP-028 (intermediary)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_intermediary
Title: ANSSI-BP-028 (minimal)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_minimal
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 2 - Server
Id: xccdf_org.ssgproject.content_profile_cis
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 1 - Server
Id: xccdf_org.ssgproject.content_profile_cis_server_l1
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 1 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l1
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 2 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l2
Title: Criminal Justice Information Services (CJIS) Security Policy
Id: xccdf_org.ssgproject.content_profile_cjis
Title: Unclassified Information in Non-federal Information Systems and Organizations (NIST 800-171)
Id: xccdf_org.ssgproject.content_profile_cui
Title: Australian Cyber Security Centre (ACSC) Essential Eight
Id: xccdf_org.ssgproject.content_profile_e8
Title: Health Insurance Portability and Accountability Act (HIPAA)
Id: xccdf_org.ssgproject.content_profile_hipaa
Title: NIST National Checklist Program Security Guide
Id: xccdf_org.ssgproject.content_profile_ncp
Title: OSPP - Protection Profile for General Purpose Operating Systems v4.2.1
Id: xccdf_org.ssgproject.content_profile_ospp
Title: PCI-DSS v4.0 Control Baseline for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_pci-dss
Title: RHV hardening based on STIG for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_rhelh-stig
Title: VPP - Protection Profile for Virtualization v. 1.0 for Red Hat Virtualization
Id: xccdf_org.ssgproject.content_profile_rhelh-vpp
Title: Red Hat Corporate Profile for Certified Cloud Providers (RH CCP)
Id: xccdf_org.ssgproject.content_profile_rht-ccp
Title: Standard System Security Profile for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_standard
Title: DISA STIG for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_stig
Title: DISA STIG with GUI for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_stig_gui
Referenced check files:
ssg-rhel7-oval.xml
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
ssg-rhel7-ocil.xml
system: http://scap.nist.gov/schema/ocil/2
https://access.redhat.com/security/data/oval/v2/RHEL7/rhel-7.oval.xml.bz2
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
在输出中,我们可以看到所有引用的检查文件。在这种情况下,我们看到引用了ssg-rhel7-oval.xml
。要查看此文件的内容,可以在文本编辑器中打开它。
我们也可以将oscap info
命令与源数据流文件一起使用。源数据流通常会引用绑定在其中的OVAL文件。也可以使用oscap ds sds-split
命令从源数据流中提取OVAL文件。
$ mkdir -p /home/iie-iisd/test04
$ cd /home/iie-iisd/test04
$ oscap ds sds-split /home/iie-iisd/content/build/ssg-rhel7-ds.xml extracted/
$ ls -l extracted/
顺序执行上面的命令后,会在命令行终端中打印如下内容,这就是我们从源数据流中提取OVAL文件:
拆分源数据流后,可以使用文本编辑器分别检查OVAL和XCCDF文件。请记住,这只是一个示例,文件名取决于要拆分的源数据流的内容,我们也可以直接检查源数据流或结果数据流中的XCCDF和OVAL内容。
2.2.3.4、评估XCCDF
在评估XCCDF基准时,oscap通常处理XCCDF文件、OVAL文件和CPE字典。它执行系统分析,并基于此分析生成XCCDF结果。扫描结果不必保存在单独的文件中,而是可以附加到XCCDF文件中。XCCDF检查表中每个XCCDF规则的评估结果打印到标准输出流中。与规则相关联的CVE和CCE标识符也被打印出来。以下是单个XCCDF规则的输出示例:
Title Verify permissions on 'group' file
Rule usgcb-rhel5desktop-rule-2.2.3.1.j
Ident CCE-3967-7
Result pass
结果的含义由XCCDF规范定义。下表列出了单个规则的可能结果:
Result | Description | Example Situation |
---|---|---|
pass | The target system or system component satisfied all the conditions of the rule. | |
fail | The target system or system component did not satisfy all the conditions of the rule. | |
error | The checking engine could not complete the evaluation, therefore the status of the target’s compliance with the rule is not certain. | OpenSCAP was run with insufficient privileges and could not gather all of the necessary information. |
unknown | The testing tool encountered some problem and the result is unknown. | OpenSCAP was unable to interpret the output of the checking engine (the output has no meaning to OpenSCAP). |
notapplicable | The rule was not applicable to the target of the test. | The rule might have been specific to a different version of the target OS, or it might have been a test against a platform feature that was not installed. |
notchecked | The rule was not evaluated by the checking engine. This status is designed for rules that have no <xccdf:check> elements or that correspond to an unsupported checking system. It may also correspond to a status returned by a checking engine if the checking engine does not support the indicated check code. | The rule does not reference any OVAL check. |
notselected | The rule was not selected in the benchmark. OpenSCAP does not display rules that were not selected. | The rule exists in the benchmark, but is not a part of selected profile. |
informational | The rule was checked, but the output from the checking engine is simply information for auditors or administrators; it is not a compliance category. This status value is designed for rules whose main purpose is to extract information from the target rather than test the target. | |
fixed | The rule had initially evaluated to “fail”, but was then fixed by automated remediation and therefore it now evaluates as “pass”. |
CPE字典用于确定内容是否适用于目标平台。任何不适用的内容都将导致每个相关的XCCDF规则被评估为“不适用”。以下示例显示了XCCDF基准评估的最常见场景:
- 要评估XCCDF文件中的特定配置文件,请运行以下命令:
oscap xccdf eval --profile Desktop --results xccdf-results.xml --cpe cpe-dictionary.xml scap-xccdf.xml
其中,scap-xccdf.xml
是XCCDF文档,Desktop
是从XCCDF文档中选择的配置文件,xccdf-results.xml
是存储扫描结果的文件,而cpe-dictionary.xml
是 CPE(Common Platform Enumeration)字典。
- 我们还可以将
--rule
选项添加到上述命令中,以评估特定规则:
oscap xccdf eval --profile Desktop --rule ensure_gpgcheck_globally_activated --results xccdf-results.xml --cpe cpe-dictionary.xml scap-xccdf.xml
其中ensure_gpgcheck_globaly_activated
是将评估的Desktop配置文件中的唯一规则。--rule
选项可以多次用于同时评估多个规则。
- 我们可以使用
--skip-rule
选项跳过某些规则。
oscap xccdf eval --benchmark-id benchmark_id --results-arf arf-results.xml scap-ds.xml
在上面的示例中,我们使用--results
命令行参数生成了XCCDF结果文件。我们可以使用--results-arf
代替,以生成SCAP结果数据流(也称为ARF–Asset报告)的XML文件。
2.2.3.5、生成与STIG Viewer兼容的结果
DISA STIG Viewer是一个图形用户界面(GUI)应用程序,它能够轻松查看符合SCAP格式的安全技术实施指南(STIG)。有关DISA STIG Viewer的更多信息,请参阅SRG/STIG工具网站。
即使在评估使用与官方DISA STIG格式不同的规则ID的SCAP内容时,OpenSCAP 也可以生成与STIG Viewer兼容的结果,例如来自scap-security-guide软件包或第三方内容。
为了生成与STIG Viewer兼容的结果,SCAP源数据流中的每个规则都必须包含对STIG规则ID的引用,href属性的值必须是http://iase.disa.mil/stigs/Pages/stig-viewing-guidance.aspx
或https://public.cyber.mil/stigs/srg-stig-tools/
。
例如:
<Rule id="rpm_verify_permissions">
...
<reference href="https://public.cyber.mil/stigs/srg-stig-tools/">SV-86473r2_rule</reference>
...
</Rule>
在以下示例中,我们使用由scap安全指南RPM包提供的“/home/iie-iisd/content/build/ssg-rhel7-ds.xml”文件。此数据流文件满足规则提到的上述的两个先决条件。
- 使用
oscap
命令对系统进行扫描,添加--stig-viewer
选项。
$ mkdir -p /home/iie-iisd/test05
$ cd /home/iie-iisd/test05/
$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_stig --stig-viewer results-stig.xml /home/iie-iisd/content/build/ssg-rhel7-ds.xml
-
顺序执行上面的命令后,使用
ls
命令查看在当前目录中生成的结果文件:
-
下载我们选择的STIG文件,例如,从STIGs文档库中下载,并进行解压。STIG 的版本必须符合
xccdf_org.ssgproject.content_profile_stig
配置文件的版本。 -
在STIG Viewer中,点击
File
,然后选择Import STIG
。接着,在左侧的STIGs 面板中选择相应的STIG。点击Checklists
,然后选择Create Checklists-Check Marked STIG(s)
。 -
通过点击
Import
,然后选择XCCDF Results File
,导入OpenSCAP扫描结果。找到在步骤1)中获取的“results-stig.xml”文件。STIG Viewer随后会显示扫描结果。
注意:--stig-viewer
选项用于评估除DISA提供的STIG外的SCAP源数据流,例如,scap-security-guide的内容,并将生成的文件加载到STIG Viewer中,以创建自DISA 提供的STIG的清单。当使用oscap评估由DISA提供的STIG时,请使用--results
选项。同样,当在STIG Viewer中基于scap-security-guide内容创建清单并使用oscap评估scap-security-guide时,请使用--results
选项而不是--stig-viewer
选项。
2.2.4、修复系统
OpenSCAP允许自动修复处于非合规状态的系统。要进行系统修复,SCAP内容中的规则需要附带修复脚本。例如,scap-security-guide软件包中的SCAP源数据流包含带有修复脚本的规则。
系统修复包括以下步骤:
oscap
命令执行常规的XCCDF评估。- 通过评估OVAL定义进行结果的评估。每个失败的规则都被标记为修复的候选项。
- oscap程序搜索适当的
xccdf:fix
元素,解析它,准备环境,并执行修复脚本。 - 修复脚本的任何输出都被oscap捕获,并存储在
xccdf:rule-result
元素内。修复脚本的返回值也被存储。 - 每当oscap执行修复脚本时,它立即再次评估OVAL定义(以验证修复脚本是否已正确应用)。在第二次运行期间,如果OVAL评估返回成功,则规则的结果已修复,否则将出现错误。
- 修复的详细结果存储在输出的XCCDF文件中。它包含两个
xccdf:TestResult
元素。第一个xccdf:TestResult
元素表示修复前的扫描结果。第二个xccdf:TestResult
元素源自第一个,包含修复结果。
oscap在修复方面有三种操作模式:在线模式、离线模式和审查模式。
2.2.4.1、扫描期间的修复
在扫描时可以执行修复脚本。评估和修复是作为单个命令的一部分执行的。要在扫描期间启用修复,请使用oscap xccdf eval
命令并添加--remediate
命令行选项。以下是在评估OSPP配置文件时执行修复的示例:
$ mkdir -p /home/iie-iisd/test06
$ cd /home/iie-iisd/test06/
$ oscap xccdf eval --remediate --profile xccdf_org.ssgproject.content_profile_ospp --results-arf results.xml /home/iie-iisd/content/build/ssg-rhel8-ds.xml
此命令的命令行终端输出由两个部分组成。第一部分显示了修正前的扫描结果,第二部分显示了应用修正后的扫描结果。第二部分只能包含固定结果和错误结果。固定的结果表示修正通过后执行的扫描。错误结果表明,即使在应用补救措施后,评估仍然没有通过。最后,可以使用ls
命令查看生成的结果文件。
2.2.4.2、扫描后的修复
此功能允许我们推迟修复的执行。在第一步中,系统仅进行评估,并将结果存储在XCCDF结果文件中的xccdf:TestResult
元素中。在第二步中,oscap 执行修复脚本并验证结果。将结果存储到输入文件是安全的,不会丢失数据。在离线修复期间,将基于输入文件创建一个新的xccdf:TestResult
元素,并继承所有数据。新创建的xccdf:TestResult
仅在已失败的xccdf:rule-result
元素上有所不同。对于这些元素,将执行修复。例如:
$ mkdir -p /home/iie-iisd/test07
$ cd /home/iie-iisd/test07/
$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_ospp --results results.xml /home/iie-iisd/content/build/ssg-rhel8-ds.xml
$ oscap xccdf remediate --results remediation-results.xml results.xml
做完以上操作后,可以执行ls
命令来查看生成的结果文件:
2.2.4.3、审查修复
审查模式允许用户将修复说明存储到文件中以供进一步审查。在此操作期间不执行修复内容。要生成以shell脚本形式的修复说明,请运行:
- 首先运行扫描并使用
--results
选项生成XCCDF结果文件。
$ mkdir -p /home/iie-iisd/test08
$ cd /home/iie-iisd/test08/
$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_ospp --results results.xml /home/iie-iisd/content/build/ssg-rhel8-ds.xml
- 然后获取结果ID。
$ oscap info results.xml
- 执行上面的命令后,将会得到如下所示的命令行终端的输出:
Document type: XCCDF Checklist
Checklist version: 1.2
Imported: 2023-12-20T13:59:38
Status: draft
Generated: 2023-12-18
Resolved: true
Profiles:
Title: ANSSI-BP-028 (enhanced)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_enhanced
Title: ANSSI-BP-028 (high)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_high
Title: ANSSI-BP-028 (intermediary)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_intermediary
Title: ANSSI-BP-028 (minimal)
Id: xccdf_org.ssgproject.content_profile_anssi_bp28_minimal
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Server
Id: xccdf_org.ssgproject.content_profile_cis
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 1 - Server
Id: xccdf_org.ssgproject.content_profile_cis_server_l1
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 1 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l1
Title: CIS Red Hat Enterprise Linux 8 Benchmark for Level 2 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l2
Title: Criminal Justice Information Services (CJIS) Security Policy
Id: xccdf_org.ssgproject.content_profile_cjis
Title: Unclassified Information in Non-federal Information Systems and Organizations (NIST 800-171)
Id: xccdf_org.ssgproject.content_profile_cui
Title: Australian Cyber Security Centre (ACSC) Essential Eight
Id: xccdf_org.ssgproject.content_profile_e8
Title: Health Insurance Portability and Accountability Act (HIPAA)
Id: xccdf_org.ssgproject.content_profile_hipaa
Title: Australian Cyber Security Centre (ACSC) ISM Official
Id: xccdf_org.ssgproject.content_profile_ism_o
Title: Protection Profile for General Purpose Operating Systems
Id: xccdf_org.ssgproject.content_profile_ospp
Title: PCI-DSS v4.0 Control Baseline for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_pci-dss
Title: Red Hat Corporate Profile for Certified Cloud Providers (RH CCP)
Id: xccdf_org.ssgproject.content_profile_rht-ccp
Title: Standard System Security Profile for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_standard
Title: DISA STIG for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_stig
Title: DISA STIG with GUI for Red Hat Enterprise Linux 8
Id: xccdf_org.ssgproject.content_profile_stig_gui
Referenced check files:
ssg-rhel8-oval.xml
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
ssg-rhel8-ocil.xml
system: http://scap.nist.gov/schema/ocil/2
security-data-oval-v2-RHEL8-rhel-8.oval.xml.bz2
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
Test Results:
Result ID: xccdf_org.open-scap_testresult_xccdf_org.ssgproject.content_profile_ospp
Source benchmark: /home/iie-iisd/content/build/ssg-rhel8-ds.xml
Source profile: xccdf_org.ssgproject.content_profile_ospp
Evaluation started: 2023-12-20T13:59:37+08:00
Evaluation finished: 2023-12-20T13:59:37+08:00
Platform CPEs:
(none)
- 然后根据扫描结果生成修复程序
$ oscap xccdf generate fix --fix-type bash --output my-remediation-script.sh --result-id xccdf_org.open-scap_testresult_xccdf_org.ssgproject.content_profile_ospp results.xml
- 然后使用如下命令查看我们生成的所有内容:
$ ls -l
- 可以发现,我们本次测试生成的全部内容如下所示:
2.2.5、定制
// TODO
3、测试用例
本章节演示为Red Hat产品提供的某些安全内容的实际用法。这些实例展示了NIST验证的行业标准检查表的使用情况。需要注意的是,我们的OpenSCAP部署在Ubuntu 22.04.1系统上,所以我们对OpenSCAP的使用和测试都是在Ubuntu 22.04.1系统上进行的。不过本章节的内容主要针对Red Hat系列的系统,所以有些针对当前系统(Ubuntu 22.04.1)的安全检查操作可能会失效,这也是情理之中,不过操作过程我们都会完整的记录下来,有任何不确定的地方或者容易混淆的地方我都会特殊标注。其实Red Hat系列系统和Ubuntu系列系统也是有很多的相似之处,也就是说并不是所有的安全检查操作都无法进行,只是有些细微的区别,而这些细微的区别我都会将其标注(比如我会标注哪些操作仅限哪类操作系统的用户执行,而其它操作系统的用户无需执行,若没有任何标注,则表明当前操作可以被使用Ubuntu 22.04.1操作系统的用户执行)。所以,本章节的全部操作都是在Ubuntu 22.04.1系统上完成的。
3.1、使用SCAP安全指南审核系统设置
SSG项目包含Red Hat Enterprise Linux 7的设置指南。以下内容就是使用SCAP安全指南审核系统设置的具体操作内容。
- 安装SSG(仅限Red Had系列操作系统的用户操作):
$ sudo yum install -y scap-security-guide
- 要检查安全内容,请使用oscap信息模块:
$ oscap info /home/iie-iisd/content/build/ssg-rhel7-ds.xml
- 以上命令的输出包含可用的配置文件。要审核系统设置,请选择“xccdf_org.ssgproject.content_profile_rht-ccp”配置文件,然后运行评估命令。例如,以下命令用于根据Red Hat Certified Cloud Providers的SCAP配置文件草案评估给定系统:
$ mkdir -p /home/iie-iisd/test09
$ cd /home/iie-iisd/test09/
$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_rht-ccp --results ssg-rhel7-xccdf-result.xml --report ssg-rhel7-report.html /home/iie-iisd/content/build/ssg-rhel7-ds.xml
- 执行完上面的命令后,可以使用
ls
命令查看生成的结果文件:
3.2、审核Red Hat产品的安全漏洞
Red Hat安全响应小组为影响Red Hat Enterprise Linux 3、4、5、6、7和8的所有漏洞(由CVE名称标识)提供OVAL定义。这使用户能够执行漏洞扫描并诊断系统是否存在漏洞。数据通过三种方式提供—— OVAL文件、OVAL+XCCDF和SCAP源数据流。
3.2.1、OVAL+XCCDF
- 下载内容。需要注意的是,我们需要下载的文件已经在官网找不到了,所以本章节后面的操作仅是示例操作,这一点需要注意。如果后面我们需要下载文件可以在网上找到了,我会将对其具体的使用方法更新到下一版文档中:
$ mkdir -p /home/iie-iisd/test10
$ cd /home/iie-iisd/test10/
$ wget https://www.redhat.com/security/data/metrics/com.redhat.rhsa-all.xccdf.xml
$ wget https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
- 运行扫描:
$ oscap xccdf eval --results results.xml --report report.html com.redhat.rhsa-all.xccdf.xml
- 以下内容是示例输出。它报告了Red Hat安全公告 (RHSA-2013:0911) 已发布,但更新未应用,因此系统受到多个CVE(CVE-2013-1935、CVE-2013-1943、CVE-2013-2017)的影响。
Title RHSA-2013:0911: kernel security, bug fix, and enhancement update (Important)
Rule oval-com.redhat.rhsa-def-20130911
Ident CVE-2013-1935
Ident CVE-2013-1943
Ident CVE-2013-2017
Result fail
生成了人类可读的报告“report.html”,以及“机器”可读的报告“results.xml”。这两个文件包含有关扫描系统的漏洞状态的信息。它们将RHSA映射到CVE,并报告未应用于扫描系统的安全公告。CVE标识符与国家漏洞数据库链接,其中存储有关CVE描述、CVSS分数、CVSS向量等的其它信息。
3.2.2、仅限OVAL
- 下载内容。需要注意的是,我们需要下载的文件已经在官网找不到了,所以本章节后面的操作仅是示例操作,这一点需要注意。如果后面我们需要下载文件可以在网上找到了,我会将对其具体的使用方法更新到下一版文档中:
$ mkdir -p /home/iie-iisd/test11
$ cd /home/iie-iisd/test11/
$ wget https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
- 运行扫描:
$ oscap oval eval --results results.xml --report report.html com.redhat.rhsa-all.xml
- 以下内容是示例输出。报告称,已发布Red Hat安全公告(RHSA-2013:0911),但未应用更新。请注意,标准输出与XCCDF+OVAL输出不同。
Definition oval:com.redhat.rhsa:def:20130911: true
与XCCDF+OVAL一样,在使用XCCDF检查表作为扫描基础时,会生成人类可读的报告report.html和“机器”可读的报告results.xml。与使用XCCDF检查表时生成的报告的外观不同,其中的信息再次包含有关扫描系统漏洞状态和RHSA到CVE的映射的信息。CVE标识符与Red Hat数据库链接,其中存储了有关CVE描述、CVSS分数、CVSS向量等的其它信息。
3.2.3、源数据流
源数据流用例与OVAL+XCCDF非常相似。唯一的区别是,我们不必下载两个单独的文件。
- 下载内容。需要注意的是,我们需要下载的文件已经在官网找不到了,所以本章节后面的操作仅是示例操作,这一点需要注意。如果后面我们需要下载文件可以在网上找到了,我会将对其具体的使用方法更新到下一版文档中:
$ mkdir -p /home/iie-iisd/test12
$ cd /home/iie-iisd/test12/
$ wget https://www.redhat.com/security/data/metrics/ds/com.redhat.rhsa-all.ds.xml
- 运行扫描:
$ oscap xccdf eval --results results.xml --report report.html com.redhat.rhsa-all.ds.xml
3.2.4、更多专业文件
我们在上面使用的文件涵盖了多个Red Hat产品。如果我们只想扫描一个产品,例如特定版本的Red Hat Enterprise Linux,我们建议下载一个较小的专门文件,仅涵盖这一版本。使用较小的文件将使用较少的带宽,并使评估更快。例如,对于Red Hat Enterprise Linux 7,普通OVAL文件位于:
$ wget https://www.redhat.com/security/data/oval/Red_Hat_Enterprise_Linux_7.xml
我们可以访问https://www.redhat.com/security/data/oval/v2/获得所有普通OVAL文件的列表。
可用数据流文件的列表可在https://www-redhat.com/security/data/metrics/ds/v2/获得。
3.2.5、申明
注意:请注意,这些OVAL定义仅适用于Red Hat发布的软件和更新。我们需要提供其它定义,以便检测第三方软件的修补程序状态。
要了解有关该项目的更多信息,请参阅https://www.redhat.com/security/data/metrics/。
3.3、如何在RHEL7上评估PCI-DSS
本章节介绍如何在Red Hat Enterprise Linux 7上评估支付卡行业数据安全标准(PCI-DSS)。
- 安装提供PCI-DSS SCAP内容的SSG。(仅限Red Had系列操作系统的用户操作):
$ sudo yum install -y scap-security-guide
- 验证PCI-DSS配置文件是否存在:
$ oscap info /home/iie-iisd/content/build/ssg-rhel7-ds.xml
- 执行上面的命令后,将会在命令行终端中打印如下所示的信息:
Document type: Source Data Stream
Imported: 2023-12-18T13:15:44
Stream: scap_org.open-scap_datastream_from_xccdf_ssg-rhel7-xccdf.xml
Generated: (null)
Version: 1.3
Checklists:
Ref-Id: scap_org.open-scap_cref_ssg-rhel7-xccdf.xml
WARNING: Datastream component 'scap_org.open-scap_cref_security-data-oval-v2-RHEL7-rhel-7.oval.xml.bz2' points out to the remote 'https://access.redhat.com/security/data/oval/v2/RHEL7/rhel-7.oval.xml.bz2'. Use '--fetch-remote-resources' option to download it.
WARNING: Skipping 'https://access.redhat.com/security/data/oval/v2/RHEL7/rhel-7.oval.xml.bz2' file which is referenced from datastream
Status: draft
Generated: 2023-12-18
Resolved: true
Profiles:
Title: C2S for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_C2S
Title: ANSSI-BP-028 (enhanced)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_enhanced
Title: ANSSI-BP-028 (high)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_high
Title: ANSSI-BP-028 (intermediary)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_intermediary
Title: ANSSI-BP-028 (minimal)
Id: xccdf_org.ssgproject.content_profile_anssi_nt28_minimal
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 2 - Server
Id: xccdf_org.ssgproject.content_profile_cis
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 1 - Server
Id: xccdf_org.ssgproject.content_profile_cis_server_l1
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 1 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l1
Title: CIS Red Hat Enterprise Linux 7 Benchmark for Level 2 - Workstation
Id: xccdf_org.ssgproject.content_profile_cis_workstation_l2
Title: Criminal Justice Information Services (CJIS) Security Policy
Id: xccdf_org.ssgproject.content_profile_cjis
Title: Unclassified Information in Non-federal Information Systems and Organizations (NIST 800-171)
Id: xccdf_org.ssgproject.content_profile_cui
Title: Australian Cyber Security Centre (ACSC) Essential Eight
Id: xccdf_org.ssgproject.content_profile_e8
Title: Health Insurance Portability and Accountability Act (HIPAA)
Id: xccdf_org.ssgproject.content_profile_hipaa
Title: NIST National Checklist Program Security Guide
Id: xccdf_org.ssgproject.content_profile_ncp
Title: OSPP - Protection Profile for General Purpose Operating Systems v4.2.1
Id: xccdf_org.ssgproject.content_profile_ospp
Title: PCI-DSS v4.0 Control Baseline for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_pci-dss
Title: RHV hardening based on STIG for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_rhelh-stig
Title: VPP - Protection Profile for Virtualization v. 1.0 for Red Hat Virtualization
Id: xccdf_org.ssgproject.content_profile_rhelh-vpp
Title: Red Hat Corporate Profile for Certified Cloud Providers (RH CCP)
Id: xccdf_org.ssgproject.content_profile_rht-ccp
Title: Standard System Security Profile for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_standard
Title: DISA STIG for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_stig
Title: DISA STIG with GUI for Red Hat Enterprise Linux 7
Id: xccdf_org.ssgproject.content_profile_stig_gui
Referenced check files:
ssg-rhel7-oval.xml
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
ssg-rhel7-ocil.xml
system: http://scap.nist.gov/schema/ocil/2
security-data-oval-v2-RHEL7-rhel-7.oval.xml.bz2
system: http://oval.mitre.org/XMLSchema/oval-definitions-5
Checks:
Ref-Id: scap_org.open-scap_cref_ssg-rhel7-oval.xml
Ref-Id: scap_org.open-scap_cref_ssg-rhel7-ocil.xml
Ref-Id: scap_org.open-scap_cref_ssg-rhel7-cpe-oval.xml
Ref-Id: scap_org.open-scap_cref_security-data-oval-v2-RHEL7-rhel-7.oval.xml.bz2
Dictionaries:
Ref-Id: scap_org.open-scap_cref_ssg-rhel7-cpe-dictionary.xml
- 然后使用如下命令来评估PCI-DSS内容:
$ mkdir -p /home/iie-iisd/test13
$ cd /home/iie-iisd/test13/
$ oscap xccdf eval --results results.xml --profile xccdf_org.ssgproject.content_profile_pci-dss /home/iie-iisd/content/build/ssg-rhel7-ds.xml
-
执行完上面的命令后,可以使用
ls
命令查看生成的结果文件:
-
然后使用如下命令生成可在web浏览器中读取的报告:
$ oscap xccdf generate report --output report.html results.xml
- 然后执行如下命令来使用firefox浏览器打开检测报告:
$ firefox report.html
-
最终我们可以的得到如下图所示的检测报告:
-
然后关闭浏览器,并在刚刚使用的命令行终端中按一下“Ctrl+C”退出程序即可
3.4、如何评估DISA STIG
本节介绍如何在Red Hat Enterprise Linux 7上评估国防信息系统局(DISA)安全技术实施指南(STIG)。
- 下载DISA STIG内容。需要注意的是,我们需要下载的文件已经在官网找不到了,所以本章节后面的操作仅是示例操作,这一点需要注意。如果后面我们需要下载文件可以在网上找到了,我会将对其具体的使用方法更新到下一版文档中:
$ mkdir -p /home/iie-iisd/test14
$ cd /home/iie-iisd/test14/
$ wget https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_RHEL_7_V3R2_STIG_SCAP_1-2_Benchmark.zip
- 解压DISA STIG内容:
$ unzip U_RHEL_7_V3R2_STIG_SCAP_1-2_Benchmark.zip
- 显示可用配置文件的列表:
$ oscap info U_RHEL_7_V3R2_STIG_SCAP_1-2_Benchmark.xml
- 评估我们喜欢的配置文件,例如“MAC-1_Public”,并将ARF结果写入“results.xml”文件:
$ oscap xccdf eval --profile xccdf_mil.disa.stig_profile_MAC-1_Public --results-arf results.xml --report report.html U_RHEL_7_V3R2_STIG_SCAP_1-2_Benchmark.xml
如果我们对DISA STIG其它系统的内容感兴趣,请参阅DoD Cyber Exchange。
3.5、如何评估美国政府配置基准(USCB)
// TODO
4、总结
学习OpenSCAP是为了掌握一种强大的安全合规性框架,该框架利用Security Content Automation Protocol (SCAP)标准,包括XCCDF和OVAL等组件,对系统进行安全评估。首先,通过安装OpenSCAP工具和获取相应的SCAP内容,我们能够执行系统安全评估,使用oscap工具运行XCCDF和OVAL检查,从而深入了解系统的安全状态。进一步,学会自定义XCCDF和OVAL定义,以适应组织的特定需求,实现个性化的安全策略。通过将OpenSCAP集成到工作流程中,我们能够自动执行安全评估,实现对系统安全合规性的持续监测。最终,通过不断执行定期评估和根据报告反馈改进安全策略,我们能够建立起一个稳健的安全合规性体系,提高系统安全性,确保其符合组织和行业的安全标准。
5、参考文献
- openscap/docs/developer/developer.adoc
- OpenSCAP/openscap: NIST Certified SCAP 1.2 toolkit
- OpenSCAP User Manual
- 如何在 Ubuntu 22.04 LTS 上安装 OpenSCAP
- OpenSCAP的基础使用方法
- 网络安全学习笔记工具篇(三)——OpenSCAP简介
- Releases · ComplianceAsCode/content
- Building ComplianceAsCode — ComplianceAsCode/content documentation
- ComplianceAsCode/content — ComplianceAsCode/content documentation
- nistir-7275r4_updated-march-2012_clean.pdf
- SRG/STIG
- STIGs文档库
- Security Data - /oval/v2/
- Security Data - /metrics/ds/v2/
- Security Data - metrics
- Security Data - Red Hat Customer Portal
总结
以上就是本篇博文的全部内容,可以发现,OpenSCAP的部署与使用过程并不复杂,我们本篇博客对其进行了详细的分析。相信读完本篇博客,各位读者一定对OpenSCAP有了更深的了解。