您所在的位置: 首頁 >
新聞資訊 >
技術前沿 >
等保2.0下,強制訪問控制技術大起底
等保2.0關于強制訪問控制的規(guī)定
1.1. 強制訪問控制要求
等保2.0標準在2018年四季度提交國家標準化管理委員會報批,并已在2019年5月正式出臺。等保標準中對計算環(huán)境的訪問控制做了詳細要求,下面表格中列出了等保2.0對訪問控制的要求,黑色字體表示是針對上一安全級別增強的要求。

在等級保護體系中,級別越高,對安全性要求越高。
在三級等保系統(tǒng)中,要求對重要的主體、客體采用強制訪問控制機制。
在四級等保系統(tǒng)中,要求對所有的主體、客體采用強制訪問控制機制。
等保2.0在原來基礎上,擴展了對工控系統(tǒng)、大數(shù)據(jù)、云計算等領域的安全要求。工控系統(tǒng)中很多是涉及國計民生的關鍵基礎設施(比如:發(fā)電控制系統(tǒng)、、軌道交通控制系統(tǒng)、自來水控制系統(tǒng)、石油石化生產(chǎn)控制系統(tǒng)等),定級一般比較高,必須采用強制訪問控制機制來保證系統(tǒng)的安全性。
1.2. 強制訪問控制系統(tǒng)結構
在等保2.0的設計技術要求中,強制訪問控制機制的系統(tǒng)結構如下圖所示:
強制訪問控制系統(tǒng)的工作流程說明:
初始化:管理員根據(jù)需求確定強制訪問控制策略,對主體、客體進行安全標記。
啟動:系統(tǒng)啟動時,加載主體、客體安全標記以及訪問控制規(guī)則表,并對其進行初始化。
訪問控制:當執(zhí)行程序主體發(fā)出訪問客體的請求后,系統(tǒng)安全機制截獲該請求,并從中取出訪問控制相關的主體、客體、操作三要素信息,然后查詢主體、客體安全標記,得到安全標記信息,并依據(jù)強制訪問控制策略對該請求實施策略符合性檢查。如果該請求符合系統(tǒng)強制訪問控制策略,則系統(tǒng)將允許該主體執(zhí)行資源訪問。否則,該請求將被系統(tǒng)拒絕執(zhí)行。
級別調整:管理員可以根據(jù)需要進行級別調整,級別調整后,相關信息及時更新到訪問控制內核。
審計:所有安全配置的修改調整及主體對客體的訪問信息都支持進行日志審計。
強制訪問控制的歷史
訪問控制是一種很古老又很有效的計算機安全解決方案,也是最直觀最自然的一種方案,直到目前還是絕大多數(shù)系統(tǒng)的基礎必配策略。信息安全問題一般歸結為三大類:信息保密性(Confidentiality)、信息完整性(Integrity)和信息可用性(Availability),簡稱CIA。訪問控制主要是針對信息保密性和信息完整性問題的解決方案。
上世紀60年代末,Lampson開始對訪問控制進行正式定義并進行形式化描述工作。他提出了主體和客體這兩個基本概念,并提出需要有一個訪問矩陣來描述主體與客體之間的訪問關系。
1973年,Bell和LaPadula將軍事領域的訪問控制形式化為一套數(shù)學模型,即BLP模型,這個模型是一個類似于政府文件分級管理策略的多極安全訪問模型,側重于系統(tǒng)的保密性。
1977年,Biba對系統(tǒng)的完整性進行了研究,提出了一種與BLP模型在數(shù)學上對偶的完整性保護模型,即BIBA模型。
同期,Boebert和Kain提出了DTE模型(Domain,Type,Entity),把主體分到不同的域(Domain),客體設定不同的類型(Type),主體和客體都被稱為實體(Entity),根據(jù)域和類型綜合判斷進行訪問控制。
1983年,是訪問控制模型標準化最有紀念意義的一年。這一年美國國防部提出了《計算機系統(tǒng)可信賴性評估標準》,即TCSEC,也稱為橘皮書。該標準中詳細的定義了兩種軍事系統(tǒng)的訪問控制模式:自主訪問控制DAC(Discretionary Access Control)和強制訪問控制MAC(Mandatory Access Control)。

DAC即自主訪問控制,對象(一般指文件等)的屬主全權管理該對象的訪問控制策略,有權讀取、修改、轉移對象信息,并且可以把這種權限轉移給其他主體。通常DAC使用ACL(訪問控制列表)來控制主體對客體的訪問權限。DAC的優(yōu)點:非常簡單,在一定程度上實現(xiàn)了多用戶的權限隔離和資源保護。DAC的缺點:資源管理過于分散,給控制這個系統(tǒng)的安全造成很大不便;無法防范木馬攻擊,如果某個管理員登錄后帶進來一個木馬程序,該木馬程序將擁有該管理員的全部權限。
MAC即強制訪問控制,它可以彌補DAC在防范木馬型攻擊方面不足。在MAC系統(tǒng)中強制執(zhí)行訪問控制策略,每一個主體(包括用戶和程序)和客體都擁有固定的安全標記,主體能否對客體進行相關操作,取決于主體和客體所擁有安全標記的關系(如:安全標記同為“機密”則可以執(zhí)行操作)。MAC的優(yōu)點:可以防范木馬攻擊,木馬程序無法繼承該用戶的安全級別,必須按強制訪問控制策略進行相關訪問。MAC的缺點:適用于等級觀念明顯的行業(yè)(如軍隊等一些機要部門)或安全性要求極高的系統(tǒng),適用范圍比較小;不夠靈活,易用性比較差。
BLP、BIBA和DTE都屬于MAC模型。
在上世紀80年代到90年代初這段時期,計算機越來越普及,在企業(yè)中很多權限是和職位或角色直接綁定的。于是,一些研究人員開始將角色(Role)作為一個管理對象抽象出來,這時角色被認為是組織中的一個職位或位置。角色和用戶開始分離,通過給用戶指定角色來獲得相應的權限。
1992年,David Ferraiolo和Rick Kuhn合作提出了RBAC(Role-Based Access Control)模型,參見注【1】。在RBAC中,在用戶和訪問權限之間引入角色的概念,用戶與特定的一個或多個角色相關聯(lián),角色與一個或多個訪問許可權相關聯(lián),角色可以根據(jù)工作需要創(chuàng)建或刪除。
RBAC在2004年2月被美國國家標準委員會(ANSI)和IT國際標準委員會(INCITS)接納為ANSI INCITS 359-2004標準。RBAC在管理大型網(wǎng)絡應用時表現(xiàn)出很強的靈活性和經(jīng)濟性,迅速成為當前最具影響的高級訪問控制模型。
現(xiàn)在隨著分布式計算等新興技術的快速發(fā)展,企業(yè)應用大集成、應用邊界逐漸消失,傳統(tǒng)的面向封閉環(huán)境的RBAC模型面臨著新的難題。比如:在業(yè)務數(shù)據(jù)集成的場景,角色呈爆炸式增長,導致訪問控制的配置復雜度也呈指數(shù)式提升,RBAC要隨需求的變化不斷進行策略的變更維護,工作量巨大且很難保證及時性,也無法保證數(shù)據(jù)被安全訪問。一種新型的基于屬性的訪問控制技術ABAC(Attribute-Based Access Control)隨之誕生,這也是目前關于訪問控制方面的最新研究方向。
可以看出,訪問控制技術始終在隨著計算機技術一起發(fā)展。早期的計算機非常昂貴,主要應用于軍事、金融等特殊應用場景,當時訪問控制技術也比較嚴格,以MAC模型為主。隨著計算機在企業(yè)的廣泛應用,針對企業(yè)內按角色分配權限的場景,RBAC模型成為主流。現(xiàn)在,分布式計算、云服務、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)逐漸得到廣泛應用,對訪問控制的靈活性要求越來越高,ABAC模型成為大家研究的焦點。
強制訪問控制模型和標記技術
3.1. 基本概念
強制訪問控制機制的核心是為主體、客體做標記,根據(jù)標記的安全級別,參照策略模型決定訪問控制權限,保證數(shù)據(jù)的單向流動。
客體(Objects),是一種既包含有信息,又可以被訪問的實體(文件、目錄、記錄、程序、網(wǎng)絡節(jié)點等)。
主體(Subjects),是一種可以操作客體,使信息在客體之間流動的實體(進程或用戶)。通常,主體同時也是一個客體。因為當一個程序存放在內存或硬盤上時,那么它就與其它數(shù)據(jù)一樣被當作客體,可供其它主體訪問,但當這個程序運行起來去訪問別的客體,它就成為了主體。
安全標記,可能是安全級別或者其他用于策略判斷的標記,典型的安全級別從低到高包括:公開(Unclassified)、秘密(Confidential)、機密(Secret)、高密(Top Secret)。
3.2. BLP模型
強制訪問控制模型中最經(jīng)典的是Bell和LaPadula提出的BLP模型,主要用于保證數(shù)據(jù)的機密性。該模型的核心規(guī)則是“不上讀、不下寫”,即低級別不能讀取高級別的數(shù)據(jù),高級別不能修改低級別的數(shù)據(jù),保證數(shù)據(jù)只能從低級別往高級別流動。該模型的示意圖如下:

BLP模型的來源是軍事安全策略,也受到美國國防部的特別推崇,是一種多級安全策略模型。
BLP模型的優(yōu)缺點分析:

3.3. Biba模型
和BLP完全對應的另外一個經(jīng)典模型是Biba模型,主要用于保證數(shù)據(jù)的完整性,該模型的核心規(guī)則是“不下讀、不上寫”,即低級別不能修改高級別的數(shù)據(jù),高級別不能讀取低級別的數(shù)據(jù),保證數(shù)據(jù)只能從高級別往低級別流動。

Biba模型的優(yōu)缺點分析:

3.4. DTE模型
DTE是另外一種強制訪問控制的模型,基于訪問控制矩陣,通過增加域(Domain)和類型(Type)的概念,達到分域分類型控制的目的。
在DTE模型里,所有的控制集合為,D代表域,T代表類型,P代表訪問授權,L代表安全級別。DTE的保密性模型判斷條件類似下面表格:

在DTE模型的訪問矩陣里,每一個域是一行,每一個類型是一列,所有的主體都屬于一個域,所有的客體都關聯(lián)一種類型。當然,前面講過,主體也是客體,所有也關聯(lián)一種類型。通過規(guī)則模型判斷后生成的訪問控制矩陣類似下圖:

可以看出,DTE模型是一種更靈活的并且兼容了BLP和BIBA的MAC模型。
DTE模型的優(yōu)缺點分析:

3.5. 安全標記技術
確定了訪問控制模型后,還有一個重要的技術點就是設立安全標記。安全標記需要針對每個主體和客體分別設定,并且需要隨主體、客體在系統(tǒng)內的遷移而遷移,不能因為主體、客體的位置轉移而丟失或破壞安全標記。在DTE模型里,主要是設定域和類型。比如一個發(fā)送郵件的程序作為主體所具有的安全級別,不會因為該程序被拷貝到另外一個目錄就發(fā)生改變。
目前對主體、客體進行安全標記的方法可以歸為2種,基于數(shù)據(jù)本身做標記和基于數(shù)據(jù)的唯一性標識做標記,對比說明如下:

具體來講可以參考下面的幾個具體做法:
1. 對用戶基于用戶名進行標記,因為用戶名在系統(tǒng)里面都是唯一標識并不允許改動的。
2. 對文件基于文件全路徑(有時需要附加Hash值)進行安全標記。文件的全路徑(有時需要附加Hash值)是文件的唯一標識,類似家里的門牌號。該方案的難點在于跟蹤文件的拷貝、修改、重命名等操作,確保數(shù)據(jù)全程安全標記的一致性。類似家里搬家或者有人員的增加減少都需要及時跟蹤調整相關安全標記。
3. 對文件基于文件本身進行安全標記,安全標記記錄在文件的屬性內。這個方案可以很容易的保證安全標記在各種情況下的全程一致性。該方案的難點在于需要研究各種操作系統(tǒng)的文件數(shù)據(jù)結構(包括硬盤存儲數(shù)據(jù)結構和內存映像數(shù)據(jù)結構),和操作系統(tǒng)的耦合比較緊。
4. 另外,還有一些像數(shù)據(jù)庫表之類的應用數(shù)據(jù),適合采用獨立安全標記的方法。主要原因是我們很難研究搞懂各種應用數(shù)據(jù)的結構,其他應用的數(shù)據(jù)結構不一定有合適的擴展方案供我們做標記。
當前主流產(chǎn)品的相關實現(xiàn)
強制訪問控制模式自提出以來,在目前的主流產(chǎn)品上都有相關實現(xiàn),主要包括:Linux系統(tǒng)上的SELinux、Windows系統(tǒng)上的MIC(Mandatory Integrity Control)、FreeBSD系統(tǒng)的TrustedBSD、Oracle為Solaris系統(tǒng)提供的Trusted Extensions等。
4.1. SELinux on Linux
SELinux主要由美國國家安全局NSA開發(fā),是一個內核模塊,現(xiàn)在已經(jīng)被集成在版本號為2.6以后的Linux內核版本中,可以控制打開或關閉。SELinux有三種工作模式:強制模式(違反規(guī)則被阻止并記錄日志)、容忍模式(違反規(guī)則不阻止只記錄日志)、關閉模式(不生效)。
SELinux主要擴展了類型Type標簽,實現(xiàn)強制訪問控制策略。SELinux提供了各種常見的MAC模型,比如BLP、Biba都有現(xiàn)成的模板可以使用。
SELinux在Linux內核以安全模塊LSM(Linux Security Modules)的形式集成進來,系統(tǒng)的架構如下圖:

SELinux默認是關閉的,要打開該功能需要修配置文件并重啟,配置文件修改見下圖:

SELinux的開源項目社區(qū)為:https://github.com/SELinuxProject
4.2. MIC on Windows
從Windows Vista和Windows 2008開始,微軟在Windows內建了強制完整性保護機制,即MIC(Mandatory Integrity Control)。MIC采用類似Biba的模型實現(xiàn),保護Windows內核模塊的安全。
Windows系統(tǒng)對外主要使用自主訪問控制模型DAC,MIC運行在DAC的下層,即優(yōu)先根據(jù)MIC策略進行控制,再根據(jù)DAC策略進行控制。
MIC模型中共分為4個安全級別:低、中、高、系統(tǒng)級。Windows系統(tǒng)服務運行在系統(tǒng)級,管理員運行的進程運行在高安全級別,其他進程運行在中安全級別。當一個進程試圖訪問另一個文件時,其安全級別必須高于被訪問對象。
MIC在Windows里沒有對外的圖形化操作界面,僅提供了命令行來設置文件的安全級別。命令行參考下圖:

4.3. TrustedBSD on FreeBSD
TrustedBSD 也是以內核擴展的形式集成在FreeBSD 系統(tǒng)中,為強制訪問控制策略提供支持。從FreeBSD 5.0 RC2版本開始,F(xiàn)reeBSD就開始內部集成TrustedBSD,但是缺省情況下,內核二進制代碼中并沒有包括對MAC框架的支持。
MAC 框架是一個插入式的訪問控制框架,允許新的安全策略更方便地融入內核。安全策略可以編譯時靜態(tài)鏈接到內核中,也可以在引導時加載,甚至在運行時動態(tài)加載。該框架所提供的標準化接口,使得運行在其上的安全策略模塊能對系統(tǒng)對象進行安全標記,從而實現(xiàn)各種強制訪問控制的安全模型。
安全策略作為一個獨立的動態(tài)內核鏈接(KLD)模塊,可以獨立于內核進行編譯,再在使用的時候掛接到MAC框架上。在主體訪問客體時,MAC框架會調用所有的安全策略,只有當所有的安全策略均表示同意,MAC框架才會授權這次訪問,TrustedBSD的系統(tǒng)結構如下圖:

關于TrustedBSD的詳細內容請參考注 【2】官方網(wǎng)站相關文檔
4.4. Trusted Extensions on Solaris
Oracle提供可信擴展Trusted Extensions 加入 Solaris 系統(tǒng),保護系統(tǒng)的安全性。Trusted Extensions可以提供自主訪問控制和強制強制訪問控制兩種控制模型。
Trusted Extensions提供的強制訪問控制模型在經(jīng)典的DTE模型基礎上進行了改進:
1. 增加了區(qū)域(Zone)的概念,保證數(shù)據(jù)的隔離,不同區(qū)域之間不能通信。
2. 支持同級別的多個安全標簽。比如設定絕密級別的安全標記可以包括:絕密、絕密A、絕密B、絕密AB,如下圖:

則不同標簽之間的比較關系為:絕密 AB支配自身并且嚴格支配其他標簽,絕密A支配自身并且嚴格支配絕密,絕密 B支配自身并且嚴格支配絕密,絕密 A和絕密B不相交無法比較。
綜合來看,Trusted Extensions的強制訪問控制模型有點像DTE模型但又不是DTE模型,應該是Oracle結合自身業(yè)務設計出來的模型。
基于LSM框架的SELinux作為Linux的一個安全模塊,可以禁用,或將其設置為容忍或強制執(zhí)行模式。而Trusted Extensions是Solaris的一個配置,無法禁用,權限策略可擴展,但始終強制執(zhí)行。這兩個框架都利用內核解釋的進程權限管理(特權)來進行訪問控制。
Trusted Extensions為Solaris添加了區(qū)域的安全標簽,而SELinux則擴展了類型的安全標簽。Trusted Extensions的區(qū)域概念可以提供完全虛擬化的環(huán)境,標記區(qū)域中的應用程序無需修改即可運行,同時提供了一套圖形化界面來配置安全策略和標記,易用性更好一些。