网络安全学习笔记工具篇 ——使用OpenSCAP 命令行进行基线扫描与修复

少年乘勇气,百战过乌孙。这篇文章主要讲述网络安全学习笔记工具篇 ——使用OpenSCAP 命令行进行基线扫描与修复相关的知识,希望能为你提供帮助。
一、前言
在??《OpenSCAP简介》??及??《使用OpenSCAP Workbench进行基线扫描与修复》??两篇中分别对OpenSCAP相关的术语、策略及使用图形化的工具OpenSCAP Workbench进行扫描、修复及基线裁剪的内容进行了相关介绍说明。在本篇中将介绍如何使用OpenSCAP命令行工具OpenSCAP Base及OpenSCAP Daemon进行基线扫描与修复。
二、测试环境说明
安装OpenSCAP的服务器:CentOS Linux release 7.5.1804 (Core)桌面版
其他机器:CentOS Linux release 7.5.1804 (Core)
三、使用OpenSCAP Base进行扫描与修复
(一)、工具安装
1、安装扫描工具
# yum install -y openscap-scanner
2、安装SCAP content
# yum install -y scap-security-guide
3、查看安装的相关文件
# rpm -ql openscap-scanner
# rpm -ql scap-security-guide
注意观察所有的SCAP content都存放在/usr/share/xml/scap/ssg/content目录
4、导入CentOS相关的content或者策略到/usr/share/xml/scap/ssg/content目录
5、导入修复的脚本到/usr/share/scap-security-guide/目录
这里我只将SHELL脚本拷贝过去备用。


(二)、相关的命令介绍
1、查看oscap版本信息及支持的content规格说明
[root@localhost ~]# oscap -V
OpenSCAP command line tool (oscap) 1.2.17
Copyright 2009--2017 Red Hat Inc., Durham, North Carolina.


==== Supported specifications ====
XCCDF Version: 1.2
【网络安全学习笔记工具篇 ——使用OpenSCAP 命令行进行基线扫描与修复】OVAL Version: 5.11.1
CPE Version: 2.3
CVSS Version: 2.0
CVE Version: 2.0
Asset Identification Version: 1.1
Asset Reporting Format Version: 1.1
CVRF Version: 1.1
……
2、查看帮助信息
# oscap -h 命令执行结果如下:

可以在oscap后面加上Commands然后再进一步查看相应的帮助信息,如下:

3、查看SCAP content的内容

在这里有如下几个内容需要关注注意,在后续操作中可能要用到:
1)、Document type:文件类型,该文件类型为Source Data Stream,从文件名后缀为-ds.xml即可看出。
2)、Stream:流的名称。
3)、Checklists:列举了流中可用的检查清单,通过列举的清单的Ref-Id进行区分。
4)、Porfiles:检查清单中包括的Porfile,可以在命令行中进行引用,通过Id进行区分。
5)、注意中间的提示信息:WARNING,由于该流中有依赖外部的资源,因此提示使用—fetch-remote-resources参数下载。
(三)、基线扫描及修复
1、使用数据流ssg-centos7-ds.xml中的profile xccdf_org.ssgproject.content_profile_standard进行扫描,并且以ARF文件格式及html格式保存,命令如下:
[root@localhost ~]# oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results-arf centos7_results.xml --report centos7_results.html /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
可以看到oscap逐项进行测试,每一项均显示执行结果,执行如下:

找到当前目录下生成的centos7_results.xml文件,在浏览器中打开:

2、扫描后生成修复脚本,再手工执行修复脚本
1)、执行命令,使用—results参数生成XCCDF的结果文件
# oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --results centos7_results.xml --fetch-remote-resources /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
生成的文件为centos7_results.xml。
2)、获取结果文件中的results ID
#oscap info centos7_results.xml
获取到的Results ID为:
xccdf_org.open-scap_testresult_xccdf_org.ssgproject.content_profile_standard

3)、基于扫描结果生成修复脚本
[root@localhost ~]# oscap xccdf generate fix --fix-type bash --output my-remediation-script.sh --result-id xccdf_org.open-scap_testresult_xccdf_org.ssgproject.content_profile_standard centos7_results.xml
生成的脚本名称为my-remediation-script.sh

4)、执行修复脚本
./my-remediation-script.sh
3、在扫描过程中自动修复
使用参数—remediate在扫描过程中进行修复
#oscap-ssh root@192.168.2.14 22 xccdf eval --remediate --profile xccdf_org.ssgproject.content_profile_standard --results-arf results.xml --report report.html /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
截图如下:

4、使用oscap-ssh进行远程扫描
进行远程扫描时,需要提前在被扫描的机器上安装openscap-scanner.
#oscap-ssh root@192.168.2.14 22 xccdf eval --profile xccdf_org.ssgproject.content_profile_standard --report report.html /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
根据提示信息输入被扫描主机的password,截图如下:

提示:这里也可以配置免密登录,然后就不用手工输入password了。
5、使用OSCAP Daemon持续扫描
关于OSCAP Daemon在第一篇简介中有简要的说明,这里再稍加补充,OSCAP Daemon由两部组成,一部分是运行在后台的Daemon程序,另外一部分是使命行工具oscapd-cli,工具去调用Daemon,通常会比原始的oscap命令简单,oscapd-cli命令真正调用的是NIST认证的oscap工具。Oscapd-cli工作可以在??https://github.com/OpenSCAP/openscap-daemon??进行下载。
1)、下载oscapd-cli工具openscap-daemon-master.zip,并且解压。
2)、安装服务
进入到openscap-daemon-master目录,找到setup.p文件

python setup.py install
注意观察在安装过程中将一系列的文件拷贝到了对应的目录,其中Daemon程序如下:
copying org.oscapd.conf -> /etc/dbus-1/system.d
copying oscapd.service -> /usr/lib/systemd/system
3)、Daemon服务管理
# systemctl status oscapd//查看服务的状态
# systemctl start oscapd//启动服务
# systemctl stop oscapd//关闭服务
4)、使用交互式命令创建扫描任务
使用oscapd-cli task-create –i创建任务,过程如下图所示:

然后根据提示使用oscapd-cli task 6 enable命令启动该任务。
几点说明:
Title: 设置本次扫描的名称,可以自行设置
Target (empty for localhost): 设置扫描的目标,默认为本地服务器,也可以对远程服务器进行扫描,目标的书写方式为ssh://root@192.168.2.6,此时需要确保本地机器可以免密登录目标服务器,这一点尤为重要,我这里演示是使用的root账户。
5)、运行结果:
使用oscapd-cli task 命令查看结果

6)、相关命令
oscapd-cli eval//进入交互模式
oscapd-cli task 3 enable//使能前一步创建的扫描服务
oscapd-cli result 3//查看扫描结果
oscapd-cli task 3 guide > guide.html//获取html格式的结果
oscapd-cli task 2//展示任务简要信息及调度情况
四、总结
        本篇作为OpenSCAP工具使用系列的最后一篇,主要介绍了使用命令行工具进行本地主机的扫描及修复、主机远程扫描入修复,使用OpenSCAP Daemon工具进行持续扫描。在第一篇《OpenSCAP简介》中主要对相关的术语及工具进行了简要的介绍说明,在第二篇《使用OpenSCAP workbench进行基线扫描与修复》中介绍了图形化工具的使用,个人认为使用图形化的工具已经可以满足日常的工作需要了,如果是大量的服务器需要进行批量的基线扫描,可能还需要使用脚本配合命令行进行扫描,前面测试远程扫描可以采用免密登录,所以使用脚本进行批量扫描应该也是一个比较简单的工作,这里就没有再进一步研究了。
由于在互联网上可以找到的资料较少,主要是笔者查看官网说明,然后摸索进行实际测试完成几篇说明,其中难免存在遗漏错误之外,敬请指正。



    推荐阅读