6.4. 使用 oscap

oscap 命令行工具允许用户扫描本地系统, 验证安全合规内容,生成基于这些系统扫描与评估的报告和指南。该工具作为一个 OpenSCAP 库的前端,基于它处理的一种类型的 SCAP 内容,将其功能分组模块化(子命令)。
以下各节解释了如何安装 oscap,执行最常见的操作,并且显示与这些工作相关的例子。要了解更多与特定的子命令有关的内容,请使用 --help 选项加上oscap 命令:
oscap [options] module module_operation [module_operation_options_and_arguments] --help
module 代表一种正在被处理的 SCAP 内容类型, module_operation 是一种对 SCAP 内容进行特定操作的子命令。

例 6.4. 获取有关具体 oscap 操作的帮助

~]$ oscap ds sds-split --help
oscap -> ds -> sds-split

Split given SourceDataStream into separate files

Usage: oscap [options] ds sds-split [options] SDS TARGET_DIRECTORY

SDS - Source data stream that will be split into multiple files.
TARGET_DIRECTORY - Directory of the resulting files.

Options:
   --datastream-id <id>          - ID of the datastream in the collection to use.
   --xccdf-id <id>               - ID of XCCDF in the datastream that should be evaluated.
要了解所有 oscap 特性及其设置的完整列表,请参阅 oscap(8) 手册页。

6.4.1. 安装 oscap

为了安装 oscap 到您的系统中,需要以 root 用户身份运行以下命令:
~]# yum install openscap-utils
此命令允许您安装保证 oscap 正常运行所需的所有安装包,包括提供实用工具自身的 openscap 软件包。如果您想编写您自己的安全内容,您也应该安装 openscap-engine-sce 包,这个安装包提供了脚本检查引擎(SCE)。SCE 是 SCAP 的一个扩展协议,允许内容作者使用脚本语言去编写自己的安全内容,例如 Bash 语言,Python 语言或者 Ruby 语言。该安装包可以以和 openscap-utils 软件包同样的方式进行安装。
根据需要,在安装完 oscap 后,您可以检查您所安装 oscap 版本的功能,比如它支持什么样的规格,某个 oscap 文件储存在什么位置,能使用什么样的 SCAP 对象,以及其他有用的信息。要显示此信息,请输入以下命令:
~]$ oscap -V
OpenSCAP command line tool (oscap) 1.0.4
Copyright 2009--2014 Red Hat Inc., Durham, North Carolina.

==== Supported specifications ====
XCCDF Version: 1.2
OVAL Version: 5.10.1
CPE Version: 2.3
CVSS Version: 2.0
CVE Version: 2.0
Asset Identification Version: 1.1
Asset Reporting Format Version: 1.1

==== Capabilities added by auto-loaded plugins ====
SCE Version: 1.0 (from libopenscap_sce.so.8)

==== Paths ====
Schema files: /usr/share/openscap/schemas
Schematron files: /usr/share/openscap/xsl
Default CPE files: /usr/share/openscap/cpe
Probes: /usr/libexec/openscap

==== Inbuilt CPE names ====
Red Hat Enterprise Linux - cpe:/o:redhat:enterprise_linux
Red Hat Enterprise Linux 5 - cpe:/o:redhat:enterprise_linux:5
Red Hat Enterprise Linux 6 - cpe:/o:redhat:enterprise_linux:6
Red Hat Enterprise Linux 7 - cpe:/o:redhat:enterprise_linux:7
Fedora 16 - cpe:/o:fedoraproject:fedora:16
Fedora 17 - cpe:/o:fedoraproject:fedora:17
Fedora 18 - cpe:/o:fedoraproject:fedora:18
Fedora 19 - cpe:/o:fedoraproject:fedora:19
Fedora 20 - cpe:/o:fedoraproject:fedora:20
Fedora 21 - cpe:/o:fedoraproject:fedora:21
Red Hat Enterprise Linux Optional Productivity Applications - cpe:/a:redhat:rhel_productivity
Red Hat Enterprise Linux Optional Productivity Applications 5 - cpe:/a:redhat:rhel_productivity:5

==== Supported OVAL objects and associated OpenSCAP probes ====
system_info                  probe_system_info           
family                       probe_family                
filehash                     probe_filehash              
environmentvariable          probe_environmentvariable   
textfilecontent54            probe_textfilecontent54     
textfilecontent              probe_textfilecontent       
variable                     probe_variable              
xmlfilecontent               probe_xmlfilecontent        
environmentvariable58        probe_environmentvariable58 
filehash58                   probe_filehash58            
inetlisteningservers         probe_inetlisteningservers  
rpminfo                      probe_rpminfo               
partition                    probe_partition             
iflisteners                  probe_iflisteners           
rpmverify                    probe_rpmverify             
rpmverifyfile                probe_rpmverifyfile         
rpmverifypackage             probe_rpmverifypackage      
selinuxboolean               probe_selinuxboolean        
selinuxsecuritycontext       probe_selinuxsecuritycontext
file                         probe_file                  
interface                    probe_interface             
password                     probe_password              
process                      probe_process               
runlevel                     probe_runlevel              
shadow                       probe_shadow                
uname                        probe_uname                 
xinetd                       probe_xinetd                
sysctl                       probe_sysctl                
process58                    probe_process58             
fileextendedattribute        probe_fileextendedattribute 
routingtable                 probe_routingtable
在可以开始有效率地使用 oscap 实用工具之前,您还必须安装或者导入一些安全内容到您的系统中。您可以从相应的网站中下载 SCAP 内容,或者,如果指定为 RPM 文件或者软件包,您可以使用 Yum 安装包管理器从指定位置或者资料库进行安装。
例如,您可以安装《 SCAP 安全指南》 (SSG) 软件包, scap-security-guide,该软件包包含了 Linux 系统最新的一套安全策略。请参阅 SSG project 页,了解在您的系统中部署该软件包的具体步骤。
当您在系统中安装完 scap-security-guide 以后,除非另有指明,否则 SSG 安全内容可以在 /usr/share/xml/scap/ssg/rhel7/ 目录下找到,而且您可以继续进行其他安全合规操作。
为了找到其他可能符合您需求的现有 SCAP 内容来源,请参阅 〈第 6.7 节 “附加资源”〉。
在您的系统中安装好 SCAP 内容以后, oscap 可以通过指定文件路径到内容的方式处理这些内容。 oscap 工具支持 SCAP 1.2 版本,同时它向下兼容 SCAP 1.1和1.0版本,这样它就可以直接处理 SCAP 内容的早期版本而无需任何特殊的需求。

6.4.2. 显示 SCAP 内容

SCAP 标准定义了众多文件格式。 oscap 工具可以处理或者创建符合许多格式的文件。为了进一步处理与 SCAP 内容相关的给定文件,您需要了解如何根据给定的文件类型来运用 oscap 。如果不确定如何使用一个特定的文件,您既可以打开这个文件,也可以读取这个文件,或者您也可以使用 oscapinfo 模块,解析文件,并以可读的格式提取相关信息。
运行下列命令来检查 SCAP 文档的内部结构,并显示有用的信息,例如文档类型、规范版本、文档的状态、文档的发布日期,以及文档被复制到系统中的日期:
oscap info file
其中 file 是正在被检查的安全内容的完整路径。下面的示例更能说明 oscap info 命令的用法:

例 6.5. 显示 SCAP 内容信息

~]$ oscap info /usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xmal
Document type: Source Data Stream
Imported: 2014-03-14T12:22:01

Stream: scap_org.open-scap_datastream_from_xccdf_ssg-rhel7-xccdf-1.2.xml
Generated: (null)
Version: 1.2
Checklists:
        Ref-Id: scap_org.open-scap_cref_ssg-rhel7-xccdf-1.2.xml
                Profiles:
                        xccdf_org.ssgproject.content_profile_test
                        xccdf_org.ssgproject.content_profile_rht-ccp
                        xccdf_org.ssgproject.content_profile_common
                        xccdf_org.ssgproject.content_profile_stig-rhel7-server-upstream
                Referenced check files:
                        ssg-rhel7-oval.xml
                                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_output--ssg-rhel7-cpe-oval.xml
        Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-oval.xml
Dictionaries:
        Ref-Id: scap_org.open-scap_cref_output--ssg-rhel7-cpe-dictionary.xml

6.4.3. 扫描系统

oscap 最重要的功能是在本地系统上执行配置与漏洞扫描。以下是各个命令的一般语法:
oscap [options] module eval [module_operation_options_and_arguments]
oscap 工具可以针对由两方代表的 SCAP 内容扫描系统,这两方包括XCCDF (可扩展的配置检查清单描述格式)基准和 OVAL (开放弱点评估语言)定义。安全策略可以以单独的OVAL文件或者XCCDF文件的形式存在,也可以以多个单独的 XML 文件的形式存在 ,这里每个 XML 文件代表了不同的组件(XCCDF, OVAL, CPE, CVE, 还有其他)。扫描结果可以打印为两种,标准输出和 XML 文件。结果文件可以经由 oscap 做进一步处理以便生成可读的报告。下面的例子说明了该命令最常见的用法。

例 6.6. 使用SSG OVAL 定义扫描系统

要针对 SSG OVAL 定义文件扫描您的系统,同时评估所有的定义,请运行以下命令:
~]$ oscap oval eval --results scan-oval-results.xml /usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xml
扫描结果将会以 scan-oval-results.xml 文件的方式保存在当前目录中。

例 6.7. 使用SSG OVAL 定义扫描系统

为了评估来自由 SSG 数据流文件代表的安全策略中的特别的 OVAL 定义,请运行以下命令:
~]$ oscap oval eval --id oval:ssg:def:100 --results scan-oval-results.xml /usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xml
扫描结果将会以 scan-oval-results.xml 文件的方式保存在当前目录中。

例 6.8. 使用 SSG XCCDF 基准扫描系统

要在系统中为 xccdf_org.ssgproject.content_profile_rht-ccp 配置文件执行 SSG XCCDF 基准测试,请运行以下命令:
~]$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_rht-ccp --results scan-xccdf-results.xml scan-xccdf-results.xml /usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xml
扫描结果将会以 scan-xccdf-results.xml 文件的方式保存在当前目录中。

注意

--profile 命令行参数从给定的 XCCDF 或者数据流文件中选择安全配置文件。可用的配置文件列表可以通过运行 oscap info 命令来获取。如果 --profile 命令行参数被省略了,默认的 XCCDF 配置文件将根据 SCAP 标准的要求被使用。需要注意的是默认的 XCCDF 配置文件可能是,也可能不是一个合适的安全策略。

6.4.4. 生成报告和指南

oscap 的另一个有用的功能是能够生成可读的 SCAP 内容。oscap 实用工具允许您将一个XML文件转换成 HTML 或者纯文本格式。该功能被用于生成安全指南或者清单,这些指南或清单可以作为信息的来源,同样也可以用于指导安全系统配置。系统扫描结果也可以被转换成高可读性的结果报告。一般的命令语法如下:
oscap module generate sub-module [specific_module/sub-module_options_and_arguments] file
这里 modulexccdfoval 两者之一, sub-module 是一种生成的文档,并且 file 代表一个 XCCDF 或者 OVAL 文件。
下面展示的是该命令在使用过程中最常见的例子:

例 6.9. 生成一份包含清单的指南

要为 xccdf_org.ssgproject.content_profile_rht-ccp 配置文件生成一份包含清单的指南,请运行以下命令:
~]$ oscap xccdf generate guide --profile xccdf_org.ssgproject.content_profile_rht-ccp /usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xml > ssg-guide-checklist.html
这份指南将会以 ssg-guide-checklist.html 文件的方式储存在当前目录下。

例 6.10. 将 SSG OVAL 扫描结果转换为报告

要将一份SSG OVAL 扫描结果转换为 HTML 文件,请运行以下命令:
~]$ oscap oval generate report scan-oval-results.xml > ssg-scan-oval-report.html
这份结果报告将会以 ssg-scan-oval-report.html 文件的方式储存在当前目录下。此示例假定您从与 scan-oval-results.xml 文件存放的相同位置运行该命令。否则,您需要指定该文件及包含其扫描结果的完整路径。

例 6.11. 将SSG XCCDF 扫描结果转换为报告

要将一份 SSG XCCDF 扫描结果转换为 HTML 文件,请运行以下命令:
~]$ oscap xccdf generate report scan-xccdf-results.xml > scan-xccdf-report.html
这份结果报告将会以 ssg-scan-xccdf-report.html 文件为名储存在当前目录下。 或者,您可以使用 --report 命令行参数在扫描过程中生成此报告。
~]$ oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_rht-ccp --resultsscan-xccdf-results.xml --report scan-xccdf-report.html/usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xml

6.4.5. 验证 SCAP 内容

在系统中使用安全策略之前,您应该首先验证所使用的策略,以避免该策略可能包含的任何语法或者语意上的错误。 oscap 实用工具可被用于验证针对标准 SCAP XML 架构的安全内容。验证结果会被打印到标准错误流 (stderr) 中。该验证命令的一般语法如下:
oscap module validate [module_options_and_arguments] file
这里 file 被验证是该文件的完整路径。唯一例外的是数据流模块 (ds),这里使用的是 ds-validate 操作来代替 validate。需要注意的是,所有给定数据流中的 SCAP 组件都会被自动验证,而且没有任何组件会被单独指定,这点从下面的例子中就可以看出:
~]$ oscap ds sds-validate /usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xml
对于某些 SCAP 内容,比如 OVAL 规范,您也可以执行 Schematron 验证。 Schematron 验证比标准验证慢,但是提供了更深入的分析,并因此能够检测出更多的错误。下面的 SSG 示例显示了该命令的典型用法:
~]$ oscap oval validate --schematron /usr/share/xml/scap/ssg/rhel7/ssg-rhel7-ds.xml