文/王珩 诸葛建伟
对于主机安全,我们通常关注的主要有两个方面:一是主机上安装的操作系统、应用软件所存在的安全漏洞;二是主机操作系统、应用软件的配置缺陷。配置缺陷指的是操作系统或应用软件不安全的配置,如Windows系统未启用登录口令策略便是典型的配置缺陷。以往我们对安全漏洞的关注比较集中,实际上,配置缺陷的危害不比漏洞小。
对于信息系统的管理运维人员,维护主机安全是一项很大的挑战:成百上千的Windows操作系统、应用软件要进行检查和配置;每天都有新的安全漏洞公布出来,很难针对这些新的威胁做出快速的反应。特别是对主机进行配置检查时没有很好用的工具,找到工具也无法按照自己的需求自定义检查规则,对成百上千台计算机进行检查更不是简单的事。
本文将向大家介绍SCAP,它能够帮助管理人员很好的解决上述这些问题。本期将向大家介绍什么是SCAP,如何利用SCAP执行安全检查,下一期将更加深入地介绍SCAP的技术细节,以及如何根据需要开发自定义的SCAP安全检查项目。
图1 SCAP Element关系示意图
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 Core Configuration:联邦桌面核心配置)、USGCB(United States Government Configuration Baseline:美国政府配置基线)等官方的检查单数据格式均为SCAP Content。
SCAP Element(SCAP元素)
SCAP版本1.0包含以下六个SCAP元素:XCCDF、OVAL、CVE、CCE、CPE、CVSS。这些标准在SCAP产生之前都已经存在,并在各自的领域发挥着重要作用。其中一些标准我们可能之前有所了解,如CVE、CVSS。当SCAP将它们整合后,其整体标准化的优势变得十分明显。SCAP为安全工具实现标准化提供了解决方案:标准的输入数据格式、标准的处理方法和标准的输出数据格式,这非常有利于安全工具之间实现数据交换。
SCAP Element可以分为以下三种类型:语言类,用来描述评估内容和评估方法的标准,包括了XCCDF和OVAL(1.2版SCAP添加了OCIL);枚举类,描述对评估对象或配置项命名格式,并提供遵循这些命名的库,包括了CVE、CCE、CPE;度量类,提供了对评估结果进行量化评分的度量方法,对应的元素是CVSS(1.2版SCAP添加了CCSS)。SCAP各个元素之间的关系如图1所示。
XCCDF与OVAL
XCCDF是由NSA(National Security Agency:美国国家安全局)与NIST共同开发,是一种用来定义安全检查单、安全基线、以及其他类似文档的一种描述语言。XCCDF使用标准的XML语言格式按照一定的格式(Schema)对其内容进行描述。在SCAP中,XCCDF完成两件工作:一是描述自动化的配置检查单(Checkilist),二是描述安全配置指南和安全扫描报告。一个XCCDF文档包含一个或多个Profile,每个Profile可以理解为一个检查单。
使用XCCDF无疑有许多好处,通过标准化能够让工具间的数据交换变得更加容易,能够很方便地根据目标系统的不同情况对检查项进行裁剪,而且无论是检查单还是检查结果能够很容易地转换成机器或人工能够读取的格式。
OVAL由MITRE公司开发,是一种用来定义检查项、脆弱点等技术细节的一种描述语言。OVAL同样使用标准的XML格式来组织其内容。OVAL语言提供了足够的灵活性,可以用于分析Windows、Linux等各种操作系统的系统状态、漏洞、配置、补丁等情况,而且还能用于描述测试报告。OVAL使用简洁的XML格式清晰地对与安全相关的系统检查点作出描述,并且这种描述是机器可读的,能够直接应用到自动化的安全扫描中。OVAL的本质是Open(公开),这就意味着任何人都可以为OVAL的发展作出自己的贡献,共享知识和经验,避免重复劳动。
XCCDF设计的目标是能够支持与多种基础配置检查技术交互。其中推荐的、默认的检查技术是MITRE公司的OVAL。在实际的SCAP应用中,XCCDF和OVAL往往是成对出现,如图1所示,XCCDF定义检查单,而OVAL定义每个检查项的具体实施细节。
其他SCAP元素
CVE(Common Vulnerabilities and Exposures:通用漏洞及披露)是包含了公众已知的信息安全漏洞的信息和披露的集合。CCE(Common Configuration Enumeration:通用配置枚举)是用于描述计算机及设备配置的标准化语言。CPE(Common Platform Enumeration:通用平台枚举)是一种对应用程序、操作系统以及硬件设备进行描述和标识的标准化方案。CVSS(Common Vulnerability Scoring System:通用漏洞评分系统)是一个行业公开标准,其被设计用来评测漏洞的严重程度,并帮助确定其紧急度和重要度。在SCAP版本1.2中,引入了另外两个新标准:OCIL(Open Checklist Interactive Language:开放检查单交互语言)和CCSS(Common Configuration Scoring System:通用配置评分系统)。OCIL能够用来处理安全检查中需要人工交互反馈才能完成的检查项,CCSS作用与CVSS类似,不过CCSS关注的是系统配置缺陷的严重程度。
SCAP Content(SCAP内容)
SCAP Content指的是遵照SCAP Protocol标准设计制作的用于自动化评估的数据,其实体是一个或多个XML文件。一般来说正式发布的SCAP Content至少包含两个XML文件,一个是XCCDF,另一个是OVAL,这些文件能够直接输入到各类安全工具中执行实际的系统扫描。Content中也可以包含描述其他SCAP Element的XML文件。按照SCAP Protocol标准组织的多个XML文件也被称为SCAP Data Stream(SCAP数据流)。
当前,无论是厂商、官方还是开源社区均提供了大量的SCAP Content。由于SCAP的开放性,这些资源为我们进行系统管理提供了很有价值的参考和极大的便利。
厂商提供的SCAP Content
Redhat在与SCAP整合方面做出了很多的努力,Redhat公司会定期发布针对其企业版本的Linux(RHEL)进行补丁及配置检查的OVAL文件,这些文件能够在http://www.redhat.com/security/data/oval下载。Fedora是基于Redhat Linux的一个免费的桌面发行版,它同样继承了Redhat在与SCAP整合方面的优势,大部分用于RHEL的SCAP内容能够很好地使用在Fedora系统上。Microsoft在其Security Compliance Manager(安全合规性管理器)中提供了大量用于检测Microsoft产品安全性的SCAP Content。
NVD及其他官方提供的SCAP Content
由NIST主导的NCP(National Checklist Program:美国国家检查单项目)现已积累了大量的用于系统安全性检查的SCAP Content,这些内容可以从NCP的官方网站http://web.nvd.nist.gov/view/ncp/repository处得到。NVD(National Vulnerability Database:美国国家漏洞库)中所有的漏洞均使用SCAP标准中的OVAL、CVE与CCE描述,可以从其官方网站http://nvd.nist.gov获取这些资源。此外,NIST还提供了FDCC、USGCB等项目的SCAP内容。
NIST建立了信息安全类产品的SCAP兼容性认证机制。安全配置管理、漏洞测试和其他安全审计工具的开发商,如果希望把其产品售往美国政府市场,需要遵照相关要求对其产品进行认证。当前美国各大安全厂商在其企业级系统安全管理工具中均集成了对于SCAP的支持,如Symantec的SRAS(Symantec Risk Automation Suite)以及eEye的Retina等。因此,使用商业化的工具能够很方便地配合SCAP进行系统配置管理。
在开源领域亦有很多与SCAP相关的项目,其中比较重要的有OpenSCAP、OVALDi以及eSCAPe等,这些项目形成了对SCAP的一套完整的开发和利用体系,eSCAPe用于SCAP Content的生成,而OpenSCAP、OVALDi用于执行基于SCAP的扫描。下面结合一些实例,着重对这些免费的SCAP开源工具进行介绍。
OpenSCAP
OpenSCAP由Redhat主导开发,是一个整合了SCAP中各标准的开源框架,其为SCAP的使用者提供了一套简单易用的接口。OpenSCAP实现了对SCAP数据格式的解析以及执行检查操作所使用的系统信息探针,它能够让SCAP的采纳者专注于业务实现,而不是处理一些繁琐的底层技术。目前OpenSCAP最新版本完全支持SCAP 1.0规范中的全部标准。
Fedora下安装OpenSCAP非常简单,只需要输入如下命令:
#yum install openscap openscap-utils openscap-content
其他的Linux发行版需要从源码编译安装OpenSCAP,下面以Ubuntu为例进行介绍:
#安装支持库
$sudo apt-get update
$sudo apt-get install gcc swig pkg-config xml2 libxml2-dev xsltproc libxslt-dev libgcrypt11-dev libpcre3-dev python-dev
$cd ~
#从OpenSCAP官方网站下载最新源代码
$wget https://fedorahosted.org/releases/o/p/openscap/openscap-0.8.2.tar.gz
$tar -zxvf openscap-0.8.2.tar.gz#编译并安装
$cd ~/openscap-0.8.2
$./configure && make
$sudo make install
$sudo ldconfig
安装成功后,我们便能够使用OpenSCAP项目中自带的oscap工具对系统进行安全扫描。oscap调用OpenSCAP库对SCAP内容文件进行解析,自动进行系统安全扫描。oscap还具有文档格式转换的功能,可以利用它将XCCDF文档转换成为易读的HTML格式,这在生成系统配置指南文件或扫描报告时非常有用。下面对其主要的使用方法进行简要的说明:
#将scap-xccdf.xml转成易读的guild.html
$oscap xccdf generate guide scap-xccdf.xml > guide.html#将scap-xccdf.xml中的Desktop profile中的内容转为html$oscap xccdf generate guide --profile Desktop scap-xccdf.xml > guide.html
#将扫描完成后生成的xccdf-results.xml结果文件转为易读的report.html
$oscap xccdf generate report xccdf-results.xml > report.html
#对scap-xccdf.xml文档进行语法验证
$oscap xccdf validate-xml scap-xccdf.xml
#使用scap-xccdf.xml中的Desktop Profile对当前系统进行扫描,并将结果输出到xccdf-results.xml中
$oscap xccdf eval --profile Desktop --results xccdf-results.xml scap-xccdf.xml
#对scap-oval.xml中的所有检测项进行扫描,并将结果输出到oval-results.xml中
$oscap oval eval --results oval-results.xml scap-oval.xml#对scap-oval.xml中的某个检查项进行扫描
$oscap oval eval --id oval:rhel:def:1000 --results ovalresults.xml scap-oval.xml
图2 oscap扫描结果
图3 SCAP-Workbech Scanner主界面
图4 SCAP-Workbench Scanner的XCCDF裁剪功能
oscap扫描完成后生成的HTML格式的报告如图2所示。结果中包含了对系统整体安全性的评分、每个检测项的扫描结果以及每个扫描项的详细技术说明和参考,这些信息对于安全管理人员非常具有参考价值。
SCAP-Workbench
基于OpenSCAP框架有很多优秀的SCAP应用,SCAP-Workbench就是其中之一。SCAP-Workbench在OpenSCAP框架上实现了简单易用的图形界面,具有配置检查、检查单剪裁、SCAP内容编辑和报表生成等非常实用的功能。SCAP-Workbench使用起来非常方便,非常适合普通的桌面版Linux用户。SCAP-Workbench使用Python语言开发,安装很简单,Fedora用户可以直接使用yum命令安装,其他Linux发行版可在其网站(https://fedorahosted.org/scap-workbench/)上下载最新的源码,解压后运行make install命令即可。需要注意的是在安装使用SCAP-Workbench之前需要先安装OpenSCAP,而且你的Linux系统需要支持图形界面。
在Fedora下以root身份输入yum install scap-workbench即可完成安装。在Ubuntu下请按照如下步骤安装:
$wget https://fedorahosted.org/released/scapworkbench/scap-workbench-0.5.3.tar.bz2
$tar -jxvf scap-workbench-0.5.3.tar.bz2
$cd scap-workbench-0.5.3
$sudo make install
SCAP-Workbench分为Scanner和Editor两个部分,Scanner用于执行系统安全性扫描,Editor用于编辑XCCDF文件。
SCAP-Workbench Scanner
为了完成本例中的扫描操作,读者可以可以在http://usgcb.nist.gov/usgcb/rhel/download_rhel5.html下载适用于Redhat Enterprise Linux 5以及Fedora的USCGB SCAP Content。解压后,该Content包含以下5个文件:
usgcb-rhel5desktop-cpe-dictionary.xml
#描述RHEL平台的CPE定义
usgcb-rhel5desktop-cpe-oval.xml
#描述OVAL中使用CPE定义
usgcb-rhel5desktop-oval.xml
#描述RHEL Desktop配置合规性的OVAL文档usgcb-rhel5desktop-xccdf.xml
#XCCDF格式的检查单
在命令行中输入scap-workbench启动Scanner,如果你使用的是桌面版Linux,亦可在桌面的“应用程序”菜单的“系统工具”中找到这个程序。下面我们启动Scanner程序,并点击Load载入usgcb-rhel5desktop-xccdf.xml文件后,界面如图3所示。
Tailoring(裁剪)可以对XCCDF中所定义的检查单进行剪裁和调整,Scan(扫描)功能可以执行扫描、导出报表等一系列操作。图4演示了如何根据实际需求使用SCAP-Workbench对现有的SCAP Content中的检查项进行裁剪,只需要点击检查项前方的复选框,即可禁用或启用一个检查项。XCCDF文件中会预定义一个或多个检查单轮廓(Profile),应当先在(No Profile)处选择相应的Profile,然后再执行裁剪操作。
裁剪完毕后,可以点击Scan选项卡,点击Scan按钮后开始扫描,扫描的结果会在界面上直观地显示出来,扫描完成后可以将结果导出为报告文件。
SCAP-Workbench Editor
Editor是一个简单易用的XCCDF编辑器,使用它可以很方便地编辑或生成XCCDF Benchmark文件。在命令行中输入scap-workbencheditor启动Editor,载入一个XCCDF文档后界面如图5所示。
在Benchmark页可以对XCCDF文档的基本属性进行修改,如版本号、语言等。Profiles页可以编辑或增加Profile,在Items页可以对检查项进行编辑,如图6所示。编辑Item需要对XCCDF文档格式细节的了解,关于XCCDF文档的细节将在下期详细向读者介绍。
OVALDi
OVALDi由Mitre公司(OVAL语言的始创者)提供,因此它在OVAL标准的兼容性方面具有先天的优势。OVALDi根据OVAL Definition(OVAL定义)收集主机的相关信息生成OVAL SC(OVAL System Characteristics:OVAL系统概要)文件,通过对OVAL SC文件和标准的OVAL Definition进行对比得到检测结果。OVALDi是跨平台的,能够较好的支持各种操作系统,而且它能够紧跟OVAL技术的发展,但它无法解析SCAP中除OVAL以外的其他元素。
由于大部分Linux发行版的软件源中均内置了OVALDi工具,因此OVALDi在Linux下的的安装非常简单。Ubuntu下输入sudo apt-get install ovaldi,Fedora下输入yum install ovaldi即可完成安装。Windows用户可直接从http://sourceforge.net/projects/ovaldi/下载最新版的Windows安装包(如ovaldi-5.10.1.2-setup.exe),安装后即可使用它来执行OVAL扫描。下面演示如何使用OVALDi对Windows主机执行USGCB检查。
为了完成本节的示例,请读者首先从USGCB的官方网站http://usgcb.nist.gov上下载最新的SCAP Content,USGCB的Content有Windows 7和Windows XP等多个版本,请注意选择和你本机操作系统匹配的版本,本例中我们使用Windows 7版本。下载解压后,得到如下文件:
USGCB-Windows-7-cpe-dictionary.xml#Windows7的CPE定义
USGCB-Windows-7-cpe-oval.xml
#OVAL中使用的CPE定义
USGCB-Windows-7-oval.xml
#描述Windows7配置合规性的OVAL文档USGCB-Windows-7-patches.xml
#描述Windows7补丁(漏洞)的OVAL文档USGCB-Windows-7-xccdf.xml
#描述检查单的XCCDF文档
打开Windows的命令提示符窗口,进入OVALDi的安装目录,执行ovaldi-mo USGCB-Windows-7-oval.xml即可开始对Windows的进行配置合规性扫描。注意Windows 7最好以管理员身份打开命令提示符窗口,否则一些特定的检查项可能因为缺少权限无法执行。扫描完成后,默认会生成两个报告文件,一个名为results.xml,可用于和其他工具之间进行数据交换;另一份为results.html格式,可供管理人员阅读使用。扫描报告如图7所示,其中包含了详细的系统信息、OVAL文档的信息和每一个检查项的扫描结果。
OVAL扫描报告中扫描结果有以下几种状态,分别是True:如果是执行漏洞扫描,表示漏洞存在,如果执行配置合规扫描,则表示该项检查合规;False:如果执行漏洞扫描,表示漏洞不存在,如果执行配置合规扫描,表示检查不合规;Error:检查过程中出错;Unkown:未得到期望的结果。
上面例子我们使用了ovaldi-m-o参数,-m指定不对OVAL文档进行MD5校验,-o指定输入的OVAL文档的文件名。此外,OVALDi还有以下常用的参数:
-h:显示使用帮助
-v
-e
-f
-i
-r
-z:计算当前oval文档的MD5值
图5 SCAP-Workbench Editor主界面
图6 使用SCAP-Workbench Editor编辑XCCDF检查项
本文介绍了什么是SCAP、SCAP的组成元素、SCAP元素之间的关系、SCAP相关的开源工具,以及如何利用SCAP和开源工具对系统进行配置合规性扫描。可以看到使用SCAP能够非常方便地对系统配置合规性进行自动化评估。本文中我们使用了USCGB的SCAP Content作为例子,如果想要更灵活地利用SCAP为自己的信息系统服务,那么我们需要进一步了解SCAP的具体技术细节,开发适用于自己的系统的SCAP Content,这些内容我们将在下一期向读者呈现。