本文介绍结合使用Red Hat Ansible Automation、Red Hat Satellite、Red Hat CloudForms和OpenSCAP,以可控的方式自动检测和修复安全性和合规性问题,从而实现大规模的自动安全性合规性。
安全合规性管理是定义安全策略,审核与这些策略的合规性以及解决不合规实例的持续过程。定义安全策略后,将进行审核以验证是否符合该策略。根据组织的配置管理政策来管理任何不符合项。安全策略的范围各不相同,从特定于主机的范围到整个行业的范围,因此需要灵活定义。
通过安全内容自动化协议(SCAP),可以定义安全配置策略。例如,安全策略可能指定对于运行Red Hat Enterprise Linux的主机,root帐户不允许通过SSH登录。OpenSCAP是Red Hat Enterprise Linux和Red Hat Satellite中的集成安全扫描,审核和补救工具。
https://baike.baidu.com/item/SCAP%E4%B8%AD%E6%96%87%E7%A4%BE%E5%8C%BA/2734075?fr=aladdin
SCAP(Security Content Automation Protocol:安全内容自动化协议)由NIST(National Institute of Standards and Technology:美国国家标准与技术研究院)提出,NIST期望利用SCAP解决三个棘手的问题:一是实现高层政策法规(如FISMA,ISO27000系列)等到底层实施的落地,二是将信息安全所涉及的各个要素标准化(如统一漏洞的命名及严重性度量),三是将复杂的系统配置核查工作自动化。SCAP是当前美国比较成熟的一套信息安全评估标准体系,其标准化、自动化的思想对信息安全行业产生了深远的影响。NIST将SCAP 分为两个方面进行解释:Protocol(协议)与Content(内容)。Protocol是指SCAP由一系列现有的公开标准构成,这些公开标准被称为SCAP Element(SCAP元素)。Protocol规范了这些Element之间如何协同工作,Content指按照Protocol的约定,利用Element描述生成的应用于实际检查工作的数据。例如,FDCC(Federal Desktop CoreConfiguration:联邦桌面核心配置)、USGCB(United States Government ConfigurationBaseline:美国政府配置基线)等官方的检查单数据格式均为SCAP Content。
在Red Hat Satellite中,OpenSCAP项目提供的工具用于实施安全合规性审核。有关OpenSCAP的更多信息,请参见《 Red Hat Enterprise Linux 7安全指南》和《 Red Hat Enterprise Linux 8安全指南》。通过Satellite Web UI,可以在Red Hat Satellite管理的所有主机上进行计划的合规性审计和报告。
Red Hat Ansible Automation是由Red Hat Ansible Engine驱动的自动化软件,Red Hat Ansible Engine是具有数百个模块的执行引擎,可以使IT环境和流程的各个方面实现自动化,而Red Hat Ansible Tower则可以与其他服务集成。在本实验练习中,您将使用Red Hat Ansible Tower进行集中式自动化。
红帽CloudForms是基础架构管理平台,允许IT部门控制用户的自助服务能力,以在虚拟机和私有云之间进行配置,管理和确保合规性。在本实验练习中,您将使用Red Hat CloudForms通过自定义按钮启动Red Hat Ansible Automation安全合规性扫描和修复自动化任务。
实验1.1 Red Hat Satellite中提供的SCAP内容简介
在为主机创建SCAP遵从策略之前,您需要SCAP内容。
SCAP内容是一种数据流格式,包含用于检查主机的配置和安全性基准。清单以可扩展清单配置描述格式(XCCDF)以及开放漏洞和评估语言(OVAL)中的漏洞进行描述。清单项目,也称为规则,表示系统项目的所需配置。例如,您可以指定没有人可以使用root用户帐户通过SSH登录到主机。规则可以分为一个或多个配置文件,从而允许多个配置文件共享一个规则。SCAP内容包括规则和配置文件。
您可以创建SCAP内容,也可以从供应商那里获取。scap-security-guide软件包中提供了Red Hat Enterprise Linux支持的配置文件。SCAP内容的创建不在本实验的范围之内,但是有关如何下载,部署,修改和创建自己的内容的信息,请参阅《 Red Hat Enterprise Linux 7安全指南》或《 Red Hat Enterprise Linux 8安全指南》。红帽企业版Linux随附的SCAP内容符合SCAP规范1.2。
Red Hat Satellite的OpenSCAP组件随附的默认SCAP内容取决于Red Hat Enterprise Linux的版本:
在Red Hat Enterprise Linux 7上,已安装Red Hat Enterprise Linux 6和Red Hat Enterprise Linux 7的内容。
在Red Hat Enterprise Linux 6上,已安装Red Hat Enterprise Linux 6的内容。
当您按照《管理红帽卫星指南》中的定义在Satellite中安装SCAP组件时,所有Red Hat默认内容都将显示在Satellite中,因此无需其他步骤即可将SCAP内容添加到Satellite中。但是,如果您拥有自己编写的自定义内容,或者您有修改的策略,并且想上传该修改的版本,则可以在Satellite UI的Hosts→SCAP content下进行。
在Red Hat Satellite服务器(https://sat64-GUID.rhpds.opentlc.com)上,以admin作为用户登录.
通过导航到主机→SCAP内容,查看Satellite 6的OpenSCAP组件随附的默认SCAP内容。
下载Red Hat rhel7 default content
我们看到,文件的格式都是XML的。那么这些文件如何使用呢?
通过这些文件创建policy。
在“主机组”标签中,
合规性策略将适用于您选择的主机组。
注意
主机组是构建和配置相同的系统的分组。您可以使用主机组将某些合规性策略推广到系统的某些子集。
实验1.2查看已创建的SCAP遵从策略
现在,您已经在Satellite中定义了SCAP内容,让我们看一下已经为您创建的SCAP遵从策略。通过导航到主机→策略来查看SCAP策略。
SCAP遵从策略采用SCAP内容中可用的安全配置文件之一,并将其应用到一组系统(在主机组中定义)。您还可以使用定制文件覆盖SCAP内容。在本实验练习的后面,您将了解有关如何使用定制文件的更多信息。
单击并查看各个选项卡,包括“常规”,“ SCAP内容”,“日程表”,“位置”,“组织”和“主机组”。
在“ SCAP内容”选项卡中,
注意,“裁缝文件”未选择任何内容。稍后我们将添加一个定制文件。
红帽卫星6.3引入了“定制文件”功能。定制文件允许定制或定制现有的OpenSCAP策略,而无需分叉或重写策略。重要的是要注意,“定制文件”功能不具备创建定制文件的能力。可以使用SCAP Workbench(包含在Red Hat Enterprise Linux中)创建定制文件。拥有定制文件后,您可以上传它,并将定制文件分配给策略。
实验1.3从Red Hat Ansible Tower大规模对主机执行安全合规性策略扫描
现在,您已经在Red Hat Satellite中定义了SCAP遵从策略,现在让我们使用Red Hat Ansible Tower在几台主机上运行SCAP遵从策略扫描。
在Red Hat Ansible Tower(https://tower-GUID.rhpds.opentlc.com)上,以admin作为用户名
导航到“清单”,然后单击“卫星清单”。
接下来,单击GROUPS,然后单击foreman_lifecycle_environment_rhel7_qa组。我们将在该组的主机上运行SCAP合规策略扫描。
现在,让我们看一下foreman_lifecycle_environment_rhel7_qa组中的主机。单击主机。请注意,foreman_lifecycle_environment_rhel7_qa组中有两台主机:rhel7-vm1.hosts.example.com和rhel7-vm2.hosts.example.com。
导航到模板,然后单击名为LINUX / SCAP Scan的作业模板旁边的火箭飞船。
现在,对于主机,请复制/粘贴或键入foreman_lifecycle_environment_rhel7_qa组名称,然后从“选择配置文件”下拉列表中选择RHEL7_PCI配置文件。点击下一步。
查看我们将要运行的Red Hat Ansible Tower作业的预览。
在此作业中,我们将在foreman_lifecycle_environment_rhel7_qa组中的主机上从Red Hat Satellite服务器(sat64.example.com)运行RHEL7_PCI SCAP遵从策略扫描。
RHEL7_PCI SCAP遵从策略是已经在我们的Red Hat Satellite服务器中配置的SCAP遵从策略之一。
单击启动以启动此扫描。
扫描大约需要4分钟才能完成。
练习1.4在Red Hat Satellite中查看OpenSCAP扫描报告
现在,根据上一个实验练习,针对RHEL_PCI遵从性策略的SCAP遵从性扫描已在我们指定的主机上运行完毕,现在让我们查看针对Red Hat Satellite中主机的生成的SCAP扫描报告。
在Red Hat Satellite服务器(https://sat64-GUID.rhpds.opentlc.com)上,以admin作为用户名
在此报告中,您可以高层查看已通过和失败的安全规则,从而可以根据分配的审核策略查看系统的安全状态。
浏览此完整报告,以查看通过/失败的规则,规则的严重性等。请注意,您可以单击每个规则以获取更多详细信息。
练习1.5使用Red Hat Ansible Tower大规模修复主机上的SCAP合规策略扫描失败
现在,从上一个实验练习的主机上,通过RHEL7_PCI遵从策略修复OpenSCAP扫描失败。
在Red Hat Ansible Tower(https://tower-GUID.rhpds.opentlc.com)上,以admin作为用户名
导航到模板,然后单击名为LINUX / SCAP Remediate PCI的作业模板旁边的火箭飞船。 该作业模板将启动Red Hat提供的Ansible角色,该角色将对应用该角色的主机进行所有配置更改和修复,以使主机符合RHEL 7 PCI-DSS遵从性配置文件 。
在等待上一个修复步骤完成时,我们通过查看Red Hat Ansible Tower中显示的日志来更深入地了解后台发生的情况。首先,请注意正在运行的剧本是pci.yml剧本。这本剧本可以在这里找到。请注意,该剧本称为redhatofficial.rhel7_pci_dss角色,这就是为什么您在日志中看到的所有任务都来自该redhatofficial.rhel7_pci_dss角色的原因。这个Ansible角色是Red Hat提供并支持的Ansible角色,您可以在此处从Ansible星系获得该角色。您还可以通过Red Hat Enterprise Linux中提供的SCAP工作台GUI工具自动生成此角色。有关SCAP工作台的更多详细信息,请参见此处。该Red Hat提供的redhatofficial.rhel7_pci_dss Ansible角色将自动进行所有必要的配置更改,以补救该角色所应用的主机,以使其符合RHEL 7 PCI-DSS遵从性配置文件。
查看执行日志:
ok: [rhel7-vm2.hosts.example.com]
TASK [redhatofficial.rhel7_pci_dss : Stage AIDE Database] **********************
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ medium_severity | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ low_complexity | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ low_disruption | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ aide_build_database | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ restrict_strategy | bool }}
changed: [rhel7-vm2.hosts.example.com]
TASK [redhatofficial.rhel7_pci_dss : Ensure aide is installed] *****************
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ enable_strategy | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ package_aide_installed | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ medium_severity | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ low_disruption | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ low_complexity | bool }}
ok: [rhel7-vm2.hosts.example.com]
TASK [redhatofficial.rhel7_pci_dss : Read list of files with incorrect permissions] ***
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ high_complexity | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ rpm_verify_permissions | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ medium_disruption | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ restrict_strategy | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ high_severity | bool }}
ok: [rhel7-vm2.hosts.example.com]
TASK [redhatofficial.rhel7_pci_dss : Correct file permissions with RPM] ********
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ high_complexity | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ rpm_verify_permissions | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ medium_disruption | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ restrict_strategy | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ high_severity | bool }}
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/.exp.sed)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/.fallback.json)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/.fallback.json.asc)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/cert-api.access.redhat.com.pem)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/insights-client.conf)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/redhattools.pub.gpg)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/rpm.egg)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/insights-client/rpm.egg.asc)
changed: [rhel7-vm2.hosts.example.com] => (item=/boot/initramfs-3.10.0-957.el7.x86_64.img)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/pki/ca-trust/extracted/java/cacerts)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem)
changed: [rhel7-vm2.hosts.example.com] => (item=/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem)
changed: [rhel7-vm2.hosts.example.com] => (item=/boot/initramfs-3.10.0-957.5.1.el7.x86_64.img)
changed: [rhel7-vm2.hosts.example.com] => (item=/var/log/dmesg)
changed: [rhel7-vm2.hosts.example.com] => (item=/var/log/dmesg.old)
skipping: [rhel7-vm2.hosts.example.com]
TASK [redhatofficial.rhel7_pci_dss : Set fact: Package manager reinstall command (yum)] ***
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ high_complexity | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ high_severity | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ rpm_verify_hashes | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ unknown_strategy | bool }}
[WARNING]: when statements should not include jinja2 templating delimiters
such as {{ }} or {% %}. Found: {{ high_severity | bool }}
1.5修复后从Red Hat Ansible Tower大规模对主机重新执行安全合规性策略扫描,并从Red Hat Satellite中查看生成的扫描报告
在Red Hat Ansible Tower(https://tower-GUID.rhpds.opentlc.com)上,以admin作为用户名
导航到模板,然后单击名为LINUX / SCAP Scan的作业模板旁边的火箭飞船。
查看Red Hat Satellite中的合规性报告列表,现在注意,对于我们运行RHEL7_PCI合规性扫描的主机(rhel7-vm1-hosts.example.com和rhel7-vm2),现在有68个通过和23个失败。 hosts.example.com)。通过使用Redhat提供和支持的redhatofficial.rhel7_pci_dss Ansible角色,我们将通过规则检查的次数增加了30次,因为我们自动进行了所有必要的配置更改以补救这些主机,以使该角色符合RHEL 7 PCI -DSS合规性概要文件。
实验1.6使用裁缝文件定制(定制)现有的OpenSCAP遵从策略
红帽卫星6.3引入了剪裁文件功能。定制文件允许定制或定制现有的OpenSCAP策略,而无需分叉或重写策略。换句话说,通过定制文件,您可以在默认策略内容文件中添加或忽略规则。因此,如果在默认内容和定制文件中均启用了规则,则将启用该规则。如果规则在裁剪文件中被禁用,但是在默认内容中被启用,则该规则被禁用。如果该规则在默认策略内容文件中被禁用,而在定制文件中被启用,则该规则被启用。
重要的是要注意,剪裁文件功能不提供创建剪裁文件的功能。可以使用SCAP Workbench(包含在Red Hat Enterprise Linux中)创建定制文件。拥有定制文件后,您可以上载定制文件并将其分配给策略。
在本实验练习中,我们将使用预先创建的定制文件,该文件将禁用RHEL7_PCI遵从性配置文件中的失败规则和其他规则。其他规则是合规性规则,不会作为合规性概要文件的一部分进行检查。很多时候,如果法规遵从性概要文件中存在与组织的安全法规遵从策略不相关或不适用的规则,则企业将使用定制文件。
注意,在Red Hat Satellite中有两个预配置的定制文件。让我们看一下预先配置的PCI DSS Tailoring文件。单击“操作”下的“ PCI DSS定制文件”的“编辑”。
此ssg-rhel7-ds-tailoring-pcidss.xml定制文件是使用Red Hat Enterprise Linux中随附的SCAP Workbench GUI工具创建的。在此工具中,用户可以取消选中不适用于其组织的合规性检查规则,并导出结果的定制文件。SCAP Workbench工具用于根据先前的实验练习进行补救后,根据最新的RHEL_PCI遵从性扫描结果来取消检查失败和其他遵从性检查规则。
在“位置”选项卡中,设置了“默认位置”,在“组织”选项卡中,设置了“默认组织”。这会将此定制文件与此默认位置和默认组织相关联。按取消。
现在,让我们将此定制文件分配给合规性政策。导航到主机→策略。
在“ SCAP内容”选项卡下,选择“定制文件”部分中预先配置的PCI DSS定制文件。请注意,选择剪裁文件后,“剪裁文件”部分中的“ XCCDF概要文件”将自动填写。按提交。
定制文件能够包含多个XCCDF配置文件。同样,Satellite也不强制裁缝文件与XCCDF配置文件匹配。但是,您需要确保它们匹配,以避免在使用定制的合规性策略时遇到错误。
练习1.7使用红帽Ansible Tower中的主机上的定制文件重新执行合规性策略扫描,并查看Red Hat Satellite中报告中的OpenSCAP扫描结果
在前面的实验室练习步骤中,我们将PCI DSS定制文件分配给RHEL7_PCI合规性策略。现在,让我们在Red Hat Ansible Tower中对主机重新执行合规性策略扫描,并从Red Hat Satellite中查看生成的OpenSCAP合规性扫描报告。
导航到模板,然后单击名为LINUX / SCAP Scan的作业模板旁边的火箭飞船。
查看Red Hat Satellite中的合规性报告列表,现在注意,我们现在有68个通行证,并且在“其他”列中未列出任何失败或未经检查的合规性规则。这是因为我们预先配置的PCI DSS Tailoring文件在RHEL7_PCI合规性配置文件中禁用了失败规则和其他规则。
练习1.7通过Red Hat CloudForms中的自定义按钮在主机上执行SCAP合规性扫描和修复
在本实验练习中,您将使用Red Hat CloudForms通过自定义按钮启动Red Hat Ansible Automation安全合规性扫描和修复自动化任务。具体来说,您将通过在Red Hat CloudForms中的VM上按下自定义按钮来启动OpenSCAP安全合规性扫描和补救措施。这些按钮将在Red Hat Ansible Tower中启动自动化作业,并将生成的OpenSCAP合规性扫描报告上载到Red Hat Satellite。
使用admin作为用户名
导航到“计算”→“基础结构”→“虚拟机”。
然后,单击顶部带有Sat6的SCAP按钮,然后单击OpenSCAP Scan。这将自动在Red Hat Ansible Tower中启动一个作业,以对此rhel7-vm3.hosts.example.com上的几个不同的安全合规性配置文件执行OpenSCAP安全合规性扫描。扫描大约需要3分钟。
让我们看看在Red Hat Ansible Tower中进行的这项工作。转到Red Hat Ansible Tower(https://tower-GUID.rhpds.opentlc.com),并以admin作为用户名
导航到Jobs,然后单击顶部正在运行的作业,即CLOUDFORMS / SCAP SCAN。这项工作大约需要3分钟才能完成。
现在,所有SCAP合规性扫描都已在此rhel7-vm3.hosts.example.com主机上运行,现在让我们在Red Hat Satellite中查看该主机的合规性报告。
在Red Hat Satellite服务器(https://sat64-GUID.rhpds.opentlc.com)上,以admin作为用户名
导航到主机→报告。
请注意,与此主机的RHEL7_Custom符合性报告相关联的一个故障。让我们更深入地研究这个错误。单击“报告于”列中的rhel7-vm3.hosts.example.com主机的RHEL7_Custom符合性报告的链接。“报告于”列表示报告是多久以前创建的
我们来看一下在Red Hat Ansible Tower中运行的这项工作。转到Red Hat Ansible Tower(https://tower-GUID.rhpds.opentlc.com),并以admin作为用户名
导航到作业,然后单击顶部正在运行的作业,即CLOUDFORMS / SCAP Remediate。请注意,正在此作业模板中运行的剧本是openscap_remediate.yml。如果您想仔细看一下这本剧本,可以在这里找到。在此剧本中,您会注意到,在完成修复之后,将自动运行OpenSCAP扫描,并且将生成的合规性报告自动上载到Red Hat Satellite。
请注意,该主机的RHEL7_Custom遵从性报告中不再列出任何故障。单击“报告于”列中的rhel7-vm3.hosts.example.com主机的RHEL7_Custom符合性报告的链接。请注意,我们现在已100%通过了RHEL7_Custom遵从性策略。