SCAP的定义
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。
OpenSCAP的定义
安全内容自动化协议(SCAP)是美国国家标准技术研究院(NIST)维护的美国标准。OpenSCAP项目是用于实施和实施此标准的开源工具的集合,并且在2014年获得了NIST的SCAP 1.2认证。https://www.open-scap.org/ OpenSCAP由Red Hat主导开发,是一个整合了SCAP中各标准的开源框架,其为SCAP的使用者提供了一套简单易用的接口。OpenSCAP实现了对SCAP数据格式的解析以及执行检查操作所使用的系统信息探针,它能够让SCAP的采纳者专注于业务实现,而不是处理一些繁琐的底层技术。目前OpenSCAP最新版本完全支持SCAP 1.0规范中的全部标准。OpenSCAP在红帽Linux上的应用
在红帽Linux:RHEL上实现安全内容自动化,可以借助于红帽Satellite工具。Satellite是有一系列开源组件构成。主要构成组件信息如下:
- Foreman: Forman是一个开源应用,主要用于为物理或虚拟机主机提供供给和生命周期管理的工具。Forman能使用大量的方法来自动配置管理主机,包括kickstart和puppet模块,同时也提供了历史数据采集报告,审计和错误排查。
- Katello: Katello是foreman的一个插件应用,用于订阅和repo的管理。它提供了红帽软件订阅管理和内容下载服务。你可以创建和管理不同版本的库,通过用户自定义,来进行生命周期的管理。
- Candlepin: Candlepin是katello的一个服务组件,主要用于订阅管理。
- Pulp:Pulp也是katello的一个服务组件,用于repo和内容管理。
- Hammer:Hammer是一个命令行工具,提供了等效于WEB UI的命令行操作。
- REST API:Red Hat Satellite 6 包含了RESTful API允许系统管理员和开发人员进行定制的开发。
Satellite可以用于RHEL的OpenSCAP合规检查。登录Satellite6.4进行查看:查看Policies:查看SCAP contents:查看Compliance Reports:查看Tailoring Files
看到这里,是不是对SCAP contents、Policies、Tailoring Files几个概念有点蒙圈?
别着急,请看下图也就是说,SCAP contents是规则的全量,红帽针对RHEL会提供这个文件。以RHEL7为例,会放到操作系统如下路径: /usr/share/xml/scap/ssg/content
使用命令行查看规则信息:我们观察到,在文件中,有Title:的字段定义。这个Title:,就是定义了XCCDF Profile的字段。
我们将实验环境的配置文件下载,通过文本工具打开:找到“C2S for Red Hat Enterprise Linux 7”这行内容。描述翻译成中文为:美国政府商业云服务(C2S)基准。此基准是受Internet安全中心的启发(CIS)红帽企业Linux 7基准,v2.1.1-01-31-2017。
为了使SCAP安全指南项目保持遵守CIS的条款和条件,特别是“限制”(8),请注意没有陈述或声称C2S个人资料会确保系统与CIS保持一致或一致基线。
接下来的内容,就是具体的配置参数:如果此基线中有部分条目不满足我们的需求,我们可以手工修改,然后重新上传文件,也可以通过Tailoring Files的方式,对原有文件的部分规则进行覆盖,类似打补丁(如果原有文件没有Tailoring Files中的规则,则相当于做加法,在规则中增加Tailoring Files中定义的规则)。这样做的好处是,不必轻易修改原始基线文件,使用者根据自己需求,生成自己需要的策略即可。
我们看一个Tailoring Files:
接下来,我们创建一个Policy:SCAP Content选择我们上文通过文本打开的文件,XCCDF Profile选择我们红线标注的那一行profile:
Tailoring File选择上文文本编译器打开的文件:
选择每周日执行扫描:
选择将policy附加到两个Host Group上:
Policy生成成功:
如果想手工启动扫描,有两种方法:
配置puppt模块
手工指令命令行,但这时就不能直接调用policy了,可以指定.xml文件:
检查完毕后,会生成报告。
在自动修复方面,可以通过书写puppet模块,或者通过ansible playbook来完成。后面红帽会倾向于使用后者。