应用背景:
随着信息化建设的深入发展、设备种类不断增加,安全配置管理问题日渐突出。为了维持IT信息系统的安全并方便管理,管理员必须从入网审核、验收、运维等全生命周期各个阶段加强和落实安全要求,同时需要设立满足安全要求的基准点。
企业在实际安全运维过程中,面临着各种安全运营的问题,如
(1)安全运维人员需要面对种类繁多的设备和应用。需管理的设备分布范围广、分属不同的业务系统,如何能快捷、方便的收集和分析这些配置,成为横亘在安全运维人员面前的一个巨大难题。
(2)安全配置标准不统一。目前,由于业界还没有形成统一的配置问题审计的行业标准,因此各厂家提出的标准也是不一而足,而且这些标准也是被频繁地修改,造成维护和定位困难;一般用户很难自己去跟踪和修订标准。标准就包括了CIS、NIST、我国等保、各种行业企业及内部标准。这些标准不仅在支持的设备类型和应用类型上存在差异,就是针对几乎相同的检查点(配置项)而言,做法也不尽相同。上述的差异造成研究、开发、维护安全配置基线是一项工作量巨大的任务。
(3)安全配置相关工作自动化程度低。通常,对于设备或应用的配置审计,一般都是通过人工方式进行,仅在上线前进行一次评估(安全加固),这样做的缺点非常明显,如依赖纯人工的低效率,设备上线后的无法跟踪等。
相关概念:
SCAP:Security Content Automation Protocol,安全内容自动化协议。SCAP由NIST(National Institute of Standards and Technology:美国国家标准与技术研究院)提出,NIST期望利用SCAP解决三个棘手的问题:一是实现高层政策法规到底层实施的落地,二是将信息安全所涉及的各个要素标准化(如统一漏洞的命名及严重性度量),三是将复杂的系统配置核查工作自动化。SCAP是当前美国比较成熟的一套信息安全评估标准体系,其标准化、自动化的思想对信息安全行业产生了深远的影响。
SCAP,里“内容”可以分为两部分,一是元素,二是协议。元素可以理解为一系列现有的公开标准构成,如XCCDF、OVAL、CVE、CCE、CPE、CVSS,而协议是规范了这些元素之间如何进行工作。
OpenSCAP就NIST维护的一系列规范,OpenSCAP主要依据 XCCDF标准的文件,进系统进行安全配置检查或漏洞扫描。OpenSCAP 支持 SCAP 1.3并向下兼容 SCAP 1.2、SCAP 1.1和 SCAP 1.0。导入和处理早期版本的 SCAP 内容不需要特殊处理。
OpenSCAP主要包含以下几个工具:
OpenSCAP 基础工具,即oscap的命令行工具,在命令行下使用OpenScap。
OpenSCAP守护进程,工作在主机上,持续执行SCAP检查,以检查系统的更改。
SCAP工作台,图形界面的SCAP操作工具,支持Windows与Linux,但检查对象只能是Linux,支持远程SSH检查。
SCAPTimony集中存储SCAP检查结果。
下面我们重点介绍使用oscap命令进行扫描。
工具应用:
一、执行扫描
以管理员身份运行命令提示符
进入openscap路径
cd \
cd "Program Files (x86)\OpenSCAP 1.3.0"
查看windows server 2012 r2的扫描信息
扫描文件位于当前桌面上“U_MS_Windows_2012_and_2012_R2_MS_V3R1_STIG_SCAP_1-2_Benchmark.xml”
执行以下命令查看扫描文件包含的具体策略及策略ID
oscap info c:\users\administrator\desktop\U_MS_Windows_2012_and_2012_R2_MS_V3R1_STIG_SCAP_1-2_Benchmark.xml
通过上图可以看到,扫描文件中包含了Mission Critical Classified、Mission Critical Public、Mission Critical Sensitive等等,很多不同的扫描策略,不是的扫描策略其扫描的内容,以及目标的安全性定义都不相同。扫描策略由相应的扫描ID标识,我们在执行扫描时,需要选择一个具体的扫描ID。
执行扫描
使用xccdf_mil.disa.stig_profile_MAC-1_Classified扫描策略ID进行扫描
oscap xccdf eval --profile xccdf_mil.disa.stig_profile_MAC-1_Classified --report 123.html c:\users\administrator\desktop\U_MS_Windows_2012_and_2012_R2_MS_V3R1_STIG_SCAP_1-2_Benchmark.xml
可以看到很多检查成功与检查失败
二、查看具体的扫描结果
上面命令中,我们将扫描结果保存为123.html 位于” C:\Program Files (x86)\OpenSCAP 1.3.0”目录下
双击打开123.html文件
查看检查结果发现有32个配置项通过检查,166项没有通过检查,56项属于其他情况
其中41项属于低安全等级检查项,111项属于中安全等级,14项属于高安全等级。14项高安全等级配置是我们需要重点关注的配置项。
重点查看高等级的检查不通过配置项
如:
Solicited Remote Assistance must not be allowed.
需要关闭请求远程协助
如:
Autoplay must be turned off for non-volume devices.
不允许非卷设备的自动播放
中间还有一些检查项,不再赘述。
下面是一些检查的误报:
如:
Local accounts with blank passwords must be restricted to prevent access from the network.
账户:使用空密码的本地账户只允许控制台登录
此项需设置为已启用,但是组策略中,已经配置为已启用。所以此项为误报。
三、尝试解决误报
分析误报原因。
结合openscap扫描原理,Windows的系统配置以注册表形式体现。重点查看桌面上的扫描文件“c:\users\administrator\desktop\U_MS_Windows_2012_and_2012_R2_MS_V3R1_STIG_SCAP_1-2_Benchmark.xml”,尝试找到检查注册表的脚本位置。
双击打开扫描文件,默认打开方式为IE浏览器。
查找误报项关键字
查找“Local accounts with blank passwords must be restricted to prevent access from the network.”
向下查看,找到check-export ,value-id检查id等字段。找到关键信息为下图蓝色选中部分。
继续继续关键字
查找检查名“oval:mil.disa.fso.windows:var:454000”,发现以下两处结果
第一处,推测是定义了检查的注册表的数据类型datatype
第二处,推测是一个整体“外部”的描述
继续分析, 这两处并不是我们所期望的注册表检查。
尝试查找注册表
想在扫描文件中找到注册表相关的检查,尝试查找注册表的关键字,如“HKLM”或“LOCAL_MACHINE”。
查找HKLM后,发现HKLM多数是位于描述中,而非真正的注册表检查且HKLM只在全文出现五次。如果是检查注册表不会只出现五次。所以HKLM并不是注册表检查项。如下图
继续查找LOCAL_MACHINE,发现大量注册表配置相关,找到注册表关联的关键ID,如图中443400。
推测,注册表的检查与数字ID有关系。
查找检查项的ID
继续分析,查找前面的关键字“oval:mil.disa.fso.windows:var:454000”中的ID454000,会查找到多个454000,但发现和检查注册表相关的是下图
右键Windows图标,运行,输入regedit,打开注册表,定位到上图中的位置
观察发现,注册表中的键名为“LimitBlankPasswordUse”,而检查脚本中的键名为“Limitblankpassworduse”,推测可能是大小写不一致引起了误报。可能是因为openscap是从Linux移植到windows,而Linux系统默认是区分大小写,而Windows不区分大小写。
验证推测
备份扫描文件
用记事本打开XML扫描文件
将XML文件中的检查项,改成注册表一致的“LimitBlankPasswordUse”
保存文件
再次扫描,查看扫描结果,发现高危配置项,已经变为5个。(之前是6个)
至此解决了一个扫描误报。
继续解决其他误报,再遇到问题
解决The Debug programs user right must only be assigned to the Administrators group.误报
查找ID
继续查找检查项“oval:mil.disa.fso.windows:def:4633”
继续查找“oval:mil.disa.fso.windows:tst:463300”
继续查找“oval:mil.disa.fso.windows:obj:463300”,
继续查找“oval:mil.disa.fso.windows:obj:461700”
但不论如何关联查找,都无法找到注册表检查项。
推测结论,Windows操作系统的权限配置,并非直接通过注册表来操作,而是以其他形式存在系统中。所以此处我们找不到检查脚本,无法解决此项误报。(从扫描的文件上,无法确定oscap检查系统权限的原理,可能是通过系统其他接口读取的权限。)
总结:
开源的安全检测工具,有很强大的功能、组件、生态。但是在实际应用过程中,会出现一些兼容性问题,或其他奇怪的问题。这类问题为多数开源软件的通病。企业想要应用开源软件,需要投入人力的研究,优势是可以节省大量的商业软件的购买费用。而使用成熟的商业软件和配套服务,则可以减少软件应用及调试带来的问题。
文章作者黄浩:深信服安全服务认证专家,产业教育中心资深讲师,CISSP认证注册信息系统安全师,中国计算机学会会员;对企业网络安全框架设计、业务逻辑安全与防御体系有深刻认识;擅长DDoS攻击防御、操作系统安全防护、密码学、企业安全架构、取证溯源、应急响应等多个方向的课程。