文/王珩 諸葛建偉
對于主機安全,我們通常關注的主要有兩個方面:一是主機上安裝的操作系統、應用軟件所存在的安全漏洞;二是主機操作系統、應用軟件的配置缺陷。配置缺陷指的是操作系統或應用軟件不安全的配置,如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,這些內容我們將在下一期向讀者呈現。