OpenSCAP部署、使用与原理分析

news2024/11/19 19:44:42

文章目录

  • 前言
  • 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、获取源代码

  1. 在这一部分,我们要获取OpenSCAP的源代码。在获取OpenSCAP的源代码之前,我们需要下载安装git,这会帮助我们OpenSCAP的源代码:
$ sudo apt-get update
$ sudo apt-get install git -y
  1. 然后来到当前用户的根目录,在此目录中clone我们需要的关于OpenSCAP的源代码并进入源代码目录中:
$ cd /home/iie-iisd/
$ git clone --recurse-submodules https://github.com/OpenSCAP/openscap.git
$ cd openscap

2.1.2、获取构建依赖项

  1. 执行如下命令来下载安装构建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、构建库

  1. 首先进入之前下载的OpenSCAP的源代码目录中:
$ cd /home/iie-iisd/openscap/
  1. 然后顺序执行如下三条命令来构件库:
$ cd build/
$ cmake ../
$ make
  1. 出现如下图所示的内容即代表库构建成功:
    在这里插入图片描述

2.1.4、构建HTML文档

  1. 首先下载安装构建HTML文档所需要的依赖项:
$ sudo apt-get update
$ sudo apt-get install asciidoc -y
$ sudo apt-get install doxygen -y
  1. 然后进入如下目录中(就是前两节一直使用的构建目录):
$ cd /home/iie-iisd/openscap/build/
  1. 然后顺序执行如下两条命令来构建文档:
$ cmake -DENABLE_DOCS=TRUE ../
$ make docs
  1. 出现如下图所示的内容即代表构建HTML文档成功:
    在这里插入图片描述

  2. 当做完以上操作后,我们就可以生成完整的API文档、用户手册、开发人员手册和HTML格式的贡献文档。生成的文档位于“/openscap/build/docs/”目录中的以下子目录中:

    • html:包含Doxygen生成的API文档
    • manual:包含OpenSCAP用户手册
    • developer:包含OpenSCAP开发人员手册
    • contribute:包含贡献文档

2.1.5、运行测试

  1. 在构件库之后(即做完以上操作后),我们可以运行库自检。为此,我们需要下载安装以下依赖项:
$ sudo apt-get update
$ sudo apt-get install wget lua5.1 procps sendmail bzip2 strace rpm-common -y
  1. 然后执行如下命令来启动sendmail.service服务:
$ systemctl start sendmail.service
  1. 执行上面的命令后,会出现如下图所示的界面,我们只需要输入当前用户的密码即可成功认证:
    在这里插入图片描述

  2. 然后执行如下命令进入本章一直使用的构建目录来运行库自检:

$ cd /home/iie-iisd/openscap/build/
$ ctest
  1. 如下图所示的内容即代表库自检成功:
    在这里插入图片描述

  2. 当然,也可以使用ctest命令来测试系统中存在的任何其它oscap二进制文件。各位读者只需要将目标二进制文件的路径设置为CUSTOM_OSCAP变量即可。其中,xx就是想使用ctest命令测试的在系统中的任何其它oscap二进制文件。:

$ export CUSTOM_OSCAP=/usr/bin/xx; ctest
  1. 一些使用所谓的离线探测模式的测试需要在测试执行期间进行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
  1. 执行完上面的命令后,出现如下图所示的内容即代表oscap-chrootable目标构建成功:
    在这里插入图片描述

  2. 需要注意的是,并不是每个检查都会测试oscap工具,但是,当CUSTOM_OSCAP变量被设置时,只有执行的检查才会被执行。如果需要启动MITRE测试,使用如下命令来使用ENABLE_MITRE标志:

$ cmake -DENABLE_MITRE=TRUE ..
  1. 此外,这些测试需要特定的环境特征才能正常工作,最值得注意的是,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的具体步骤:

  1. 首先下载安装Docker的相关依赖项:
$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  1. 然后来到当前用户的根目录中,添加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
  1. 然后设置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
  1. 然后顺序执行如下两条命令来下载安装Docker:
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io -y
  1. 然后执行如下命令来验证Docker是否下载安装成功:
$ sudo docker run hello-world
  1. 执行完上面的命令后,出现如下图所示的界面即代表Docker安装成功:
    在这里插入图片描述

   注2:实际执行中遇到的问题及解决方法
   A 问题1:

  1. 在步骤4进行库自检的时候,可能会出现类似如下图所示的问题:
    在这里插入图片描述

  2. 目前我们也没办法定位如上图所示的问题究竟出现在哪里,不过根据它的提示,我们可以运行如下命令来重新运行错误案例,说不定可以获取到有用的信息:

$ ctest --rerun-failed --output-on-failure
  1. 果然,当我们重新运行错误案例后,它提示我们缺少pytest这个库:
    在这里插入图片描述

  2. 既然缺少pytest这个库,那我们就安装这个库就可以,不过在安装这个库之前,我们需要先安装pip:

$ sudo apt-get update
$ sudo apt-get install python3-pip -y
$ pip install pytest
  1. 然后我们重新测试刚才的失败案例:
$ ctest --rerun-failed --output-on-failure
  1. 可以发现刚刚测试的失败案例,现在已经通过测试了:
    在这里插入图片描述

  2. 那么此时我们就解决了这个问题,我们现在只需要回到步骤4重新继续向下操作即可

2.1.6、安装OpenSCAP

  1. 首先执行如下命令进入本章一直使用的构建目录:
$ cd /home/iie-iisd/openscap/build/
  1. 然后执行如下命令来正式安装OpenSCAP:
$ sudo make install
  1. 那么到此,我们就完成了OpenSCAP的源码安装。我们可以使用如下命令来查看当前安装的OpenSCAP各个组件的详细版本信息:
$ oscap --version
  1. 执行完上面的命令后,会在命令行终端打印关于当前安装的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内容)的具体方法。

  1. 下载安装相关依赖:
$ sudo apt update
$ sudo apt install git
$ sudo apt install python3-jinja2 -y
  1. 来到当前用户的根目录中,并下载SCAP content源代码:
$ cd /home/iie-iisd/
$ git clone https://github.com/ComplianceAsCode/content.git
  1. 然后进入下载好的SCAP content源代码目录中,并进行安装:
$ cd content/
$ cd build/
$ cmake ../
$ make -j8
$ sudo make install
  1. 当我们做完以上操作后,就完成了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基准的状态。常见的值包括accepteddraftdeprecatedincomplete。请参阅XCCDF规范了解详情。
  • Generated是文件创建或生成的日期。这个日期显示在XCCDF文件和检查表上,并来自XCCDF Status元素。
  • Profiles列出了可用配置文件、它们的标题和ID,我们可以在--profile命令行属性中使用。
  • ChecksDictionaries列出了给定数据流中的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配置文件的ID
  • ARF_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>元素的ID
  • XCCDF_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规范定义。下表列出了单个规则的可能结果:

ResultDescriptionExample Situation
passThe target system or system component satisfied all the conditions of the rule.
failThe target system or system component did not satisfy all the conditions of the rule.
errorThe 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.
unknownThe 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).
notapplicableThe 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.
notcheckedThe 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.
notselectedThe 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.
informationalThe 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.
fixedThe 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.aspxhttps://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”文件。此数据流文件满足规则提到的上述的两个先决条件。

  1. 使用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 
  1. 顺序执行上面的命令后,使用ls命令查看在当前目录中生成的结果文件:
    在这里插入图片描述

  2. 下载我们选择的STIG文件,例如,从STIGs文档库中下载,并进行解压。STIG 的版本必须符合xccdf_org.ssgproject.content_profile_stig配置文件的版本。

  3. 在STIG Viewer中,点击File,然后选择Import STIG。接着,在左侧的STIGs 面板中选择相应的STIG。点击Checklists,然后选择Create Checklists-Check Marked STIG(s)

  4. 通过点击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源数据流包含带有修复脚本的规则。

  系统修复包括以下步骤:

  1. oscap命令执行常规的XCCDF评估。
  2. 通过评估OVAL定义进行结果的评估。每个失败的规则都被标记为修复的候选项。
  3. oscap程序搜索适当的xccdf:fix元素,解析它,准备环境,并执行修复脚本。
  4. 修复脚本的任何输出都被oscap捕获,并存储在xccdf:rule-result元素内。修复脚本的返回值也被存储。
  5. 每当oscap执行修复脚本时,它立即再次评估OVAL定义(以验证修复脚本是否已正确应用)。在第二次运行期间,如果OVAL评估返回成功,则规则的结果已修复,否则将出现错误。
  6. 修复的详细结果存储在输出的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脚本形式的修复说明,请运行:

  1. 首先运行扫描并使用--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
  1. 然后获取结果ID。
$ oscap info results.xml
  1. 执行上面的命令后,将会得到如下所示的命令行终端的输出:
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)  
  1. 然后根据扫描结果生成修复程序
$ 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
  1. 然后使用如下命令查看我们生成的所有内容:
$ ls -l
  1. 可以发现,我们本次测试生成的全部内容如下所示:
    在这里插入图片描述

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安全指南审核系统设置的具体操作内容。

  1. 安装SSG(仅限Red Had系列操作系统的用户操作):
$ sudo yum install -y scap-security-guide
  1. 要检查安全内容,请使用oscap信息模块:
$ oscap info /home/iie-iisd/content/build/ssg-rhel7-ds.xml
  1. 以上命令的输出包含可用的配置文件。要审核系统设置,请选择“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
  1. 执行完上面的命令后,可以使用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

  1. 下载内容。需要注意的是,我们需要下载的文件已经在官网找不到了,所以本章节后面的操作仅是示例操作,这一点需要注意。如果后面我们需要下载文件可以在网上找到了,我会将对其具体的使用方法更新到下一版文档中:
$ 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
  1. 运行扫描:
$ oscap xccdf eval --results results.xml --report report.html com.redhat.rhsa-all.xccdf.xml
  1. 以下内容是示例输出。它报告了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

  1. 下载内容。需要注意的是,我们需要下载的文件已经在官网找不到了,所以本章节后面的操作仅是示例操作,这一点需要注意。如果后面我们需要下载文件可以在网上找到了,我会将对其具体的使用方法更新到下一版文档中:
$ mkdir -p /home/iie-iisd/test11
$ cd /home/iie-iisd/test11/
$ wget https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
  1. 运行扫描:
$ oscap oval eval --results results.xml --report report.html com.redhat.rhsa-all.xml
  1. 以下内容是示例输出。报告称,已发布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非常相似。唯一的区别是,我们不必下载两个单独的文件。

  1. 下载内容。需要注意的是,我们需要下载的文件已经在官网找不到了,所以本章节后面的操作仅是示例操作,这一点需要注意。如果后面我们需要下载文件可以在网上找到了,我会将对其具体的使用方法更新到下一版文档中:
$ 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
  1. 运行扫描:
$ 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)。

  1. 安装提供PCI-DSS SCAP内容的SSG。(仅限Red Had系列操作系统的用户操作):
$ sudo yum install -y scap-security-guide
  1. 验证PCI-DSS配置文件是否存在:
$ oscap info /home/iie-iisd/content/build/ssg-rhel7-ds.xml
  1. 执行上面的命令后,将会在命令行终端中打印如下所示的信息:
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  
  1. 然后使用如下命令来评估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 
  1. 执行完上面的命令后,可以使用ls命令查看生成的结果文件:
    在这里插入图片描述

  2. 然后使用如下命令生成可在web浏览器中读取的报告:

$ oscap xccdf generate report --output report.html results.xml
  1. 然后执行如下命令来使用firefox浏览器打开检测报告:
$ firefox report.html
  1. 最终我们可以的得到如下图所示的检测报告:
    在这里插入图片描述

  2. 然后关闭浏览器,并在刚刚使用的命令行终端中按一下“Ctrl+C”退出程序即可

3.4、如何评估DISA STIG

  本节介绍如何在Red Hat Enterprise Linux 7上评估国防信息系统局(DISA)安全技术实施指南(STIG)。

  1. 下载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
  1. 解压DISA STIG内容:
$ unzip U_RHEL_7_V3R2_STIG_SCAP_1-2_Benchmark.zip
  1. 显示可用配置文件的列表:
$ oscap info U_RHEL_7_V3R2_STIG_SCAP_1-2_Benchmark.xml
  1. 评估我们喜欢的配置文件,例如“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、参考文献

  1. openscap/docs/developer/developer.adoc
  2. OpenSCAP/openscap: NIST Certified SCAP 1.2 toolkit
  3. OpenSCAP User Manual
  4. 如何在 Ubuntu 22.04 LTS 上安装 OpenSCAP
  5. OpenSCAP的基础使用方法
  6. 网络安全学习笔记工具篇(三)——OpenSCAP简介
  7. Releases · ComplianceAsCode/content
  8. Building ComplianceAsCode — ComplianceAsCode/content documentation
  9. ComplianceAsCode/content — ComplianceAsCode/content documentation
  10. nistir-7275r4_updated-march-2012_clean.pdf
  11. SRG/STIG
  12. STIGs文档库
  13. Security Data - /oval/v2/
  14. Security Data - /metrics/ds/v2/
  15. Security Data - metrics
  16. Security Data - Red Hat Customer Portal

总结

  以上就是本篇博文的全部内容,可以发现,OpenSCAP的部署与使用过程并不复杂,我们本篇博客对其进行了详细的分析。相信读完本篇博客,各位读者一定对OpenSCAP有了更深的了解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WITS核心价值观【创新】篇|系统进化论 解锁新纪元

「客尊」、「诚信」、「创新」 与「卓越」 是纬创软件的核心价值观。我们秉持诚信态度&#xff0c;致力于成为客户长期且值得信赖的合作伙伴。持续提升服务厚度&#xff0c;透过数字创新实践多市场的跨境交付&#xff0c;助客户保持市场领先地位。以追求卓越的不懈精神&#xf…

【Python报错已解决】 WARNING: Ignoring invalid distribution

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

【JavaSE】反射、枚举、lambda表达式

目录 反射反射相关类获取类中属性相关方法常用获得类相关的方法示例常用获得类中属性相关的方法示例获得类中注解相关的方法 反射优缺点 枚举常用方法优缺点 枚举与反射lambda表达式语法函数式接口简化规则使用示例变量捕获集合中的应用优缺点 反射 Java的反射&#xff08;refl…

数据分析-30-电影死亡笔记中的数据分析思维

文章目录 1 死亡笔记简介2 推理过程中的数据分析2.1 第一个问题2.2 第二个问题2.3 第三个问题3 数据分析的发展4 参考附录1 死亡笔记简介 《死亡笔记》改编自小畑健同名日本人气漫画《Death note》,故事描述拥有一本写上姓名就能将人置于死地笔记本的高中生夜神月与天才警部搜…

人工智能迭代产品有哪些

人工智能迭代产品有很多&#xff0c;以下是一些例子&#xff1a; Ai 智能办公利器 - Ai-321.com 人工智能 - Ai工具集 - 集合全球ai人工智能软件的工具箱网站 Midjourney&#xff1a;这是一款基于AI技术的文生图产品&#xff0c;可以通过简单的prompt生成独具艺术感的 Midjo…

工具按钮 QToolButton

工具按钮常常用来显示图标&#xff0c;然后添加到工具栏中 常用属性和方法 文本 设置和获取文本 //设置和获取文本 QString text() const void setText(const QString &text)图片 设置和获取图片 //设置和获取图片 QIcon icon() const void setIcon(const QIcon &…

【STM32单片机_(HAL库)】4-0【定时器TIM】定时器中断配置步骤

定时器工作原理 定时器计数模式 定时器溢出时间计算 定时器中断实验配置步骤 msp 函数是对 MCU 相关的硬件进行初始化设置&#xff0c;通常被设计用于处理特定硬件外设或功能的底层初始化工作。

Spring Boot驱动的足球青训俱乐部管理解决方案

1 绪论 1.1研究背景 随着科技的发展&#xff0c;计算机的应用&#xff0c;人们的生活方方面面都和互联网密不可分。计算机的普及使得人们的生活更加方便快捷&#xff0c;网络也遍及到我们生活的每个角落&#xff0c;二十一世纪信息化时代的到来&#xff0c;随着社会科技的不断…

Python地理数据处理 27:基于Arcpy批量处理已矫正的worldclim2.1未来气候数据——投影、重采样、多波段拆分以及裁剪

Arcpy批量处理已矫正的worldclim2.1未来气候数据 1. 写在前面2.实现代码 1. 写在前面 前面我写了一篇关于如何使用ArcGIS自带的Python工具处理worldclim数据的多波段数据的文章&#xff0c;而这只是处理该数据的其中一步。要想得到满足要求的数据&#xff0c;还需要其他操作&am…

自闭症寄宿学校 vs. 日常教育:为孩子提供更多可能

在探索自闭症儿童的教育路径时&#xff0c;家长们往往面临一个重大的选择&#xff1a;是选择传统的日常教育环境&#xff0c;还是寻找专为自闭症儿童设计的寄宿学校&#xff1f;广州的星贝育园自闭症儿童寄宿制学校&#xff0c;以其独特的教育模式和全方位的关怀体系&#xff0…

大数据毕业设计选题推荐-个性化图书推荐系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

python中的find函数怎么用

Python find() 方法检测字符串中是否包含子字符串 str &#xff0c;如果指定 beg&#xff08;开始&#xff09; 和 end&#xff08;结束&#xff09; 范围&#xff0c;则检查是否包含在指定范围内&#xff0c;如果包含子字符串返回开始的索引值&#xff0c;否则返回-1。 语法 …

Netty系列-6 Netty消息处理流程

背景 前文介绍了Netty服务端的启动流程&#xff0c;服务端启动后可以处理客户端发送的请求&#xff0c;包括连接请求和普通消息。 1.处理连接 当客户端有连接请求到达时&#xff0c;服务器会创建通道并将通道注册到选择器上&#xff0c;处理逻辑与NIO中实现完全一致。 详细流…

虚拟机、ubantu不能连接网络,解决办法

虚拟机、ubantu不能连接网络&#xff0c;解决办法 物理机OS&#xff1a; [Windows10 专业版](https://so.csdn.net/so/search?qWindows10 专业版&spm1001.2101.3001.7020) 虚拟机平台&#xff1a; VMware Workstation 16 Pro 虚拟机OS&#xff1a; Ubuntu 18.04 自动配…

英语音标与重弱读

英语中&#xff0c;比较重要的是音标。但事实上&#xff0c;我们对音标的学习还是比较少的&#xff0c;对它的理解也是比较少的。 一、音标 2个半元音 [w][j] 5个长元音&#xff1a;[i:] [ə:] [ɔ:] [u:] [ɑ:] 7个短元音&#xff1a;[i] [ə] [ɔ] [u] [] [e] [ʌ] 8个双元音…

车辆重识别(2020NIPS去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者&#xff1a;Jonathan Ho Ajay Jain Pieter Abbeel 单位&#xff1a;加州大学伯克利分校 摘要&#xff1a; 我们提出了高质量的图像合成结果使用扩散概率模型&#xff0c;一类潜变量模型从非平衡热力学的考虑启发。我们的最…

【mmengine】配置器(config)(入门)读取与使用

一、 介绍 MMEngine 实现了抽象的配置类&#xff08;Config&#xff09;&#xff0c;为用户提供统一的配置访问接口。 配置类能够支持不同格式的配置文件&#xff0c;包括 python&#xff0c;json&#xff0c;yaml&#xff0c;用户可以根据需求选择自己偏好的格式。 配置类提供…

leetcode力扣刷题系列——【座位预约管理系统】

题目 请你设计一个管理 n 个座位预约的系统&#xff0c;座位编号从 1 到 n 。 请你实现 SeatManager 类&#xff1a; SeatManager(int n) 初始化一个 SeatManager 对象&#xff0c;它管理从 1 到 n 编号的 n 个座位。所有座位初始都是可预约的。 int reserve() 返回可以预约座…

单调队列应用介绍

单调队列应用介绍 定义应用场景实现模板具体示例滑动窗口最大值问题描述问题分析代码实现带限制的子序列和问题描述问题分析代码实现跳跃游戏问题描述问题分析代码实现定义 队列(Queue)是另一种操作受限的线性表,只允许元素从队列的一端进,另一端出,具有先进先出(FIFO)的特…

系统信息规划-系统架构师(七十四)

1前驱图 解析&#xff1a; 当S1执行完&#xff0c;C1S2并行执行&#xff0c;C1和S2执行完&#xff0c;P1,C2,S3并行执行&#xff0c;同理&#xff0c;P2C3并行执行。 直接制约则表示C1和P1受S1制约。 间接则代表S2和S3受S1制约。 2系统移植也是系统构建的一种实现方…