国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

多種MAC機(jī)制并存的動態(tài)裝載方法

2018-11-20 06:08杜軍龍周劍濤
計算機(jī)工程 2018年11期
關(guān)鍵詞:內(nèi)核指向仲裁

杜軍龍,周劍濤

(江西省信息中心,南昌 330001)

0 概述

強(qiáng)制性訪問控制(Mandatory Access Control,MAC)[1]被美國國家計算機(jī)安全中心NCSC的安全標(biāo)準(zhǔn)TCSEC列為B級安全操作系統(tǒng)的基本要求[2]。MAC具有非常強(qiáng)的魯棒性,能夠絕對執(zhí)行安全管理員預(yù)定的訪問控制策略,有效防止特洛伊木馬的攻擊。目前對Linux操作系統(tǒng)平臺的MAC機(jī)制研究較多且側(cè)重點不同,主要研究包括Flask模型、Clark-Wilson模型、Bell-lapadula模型、Biba模型、Chinese-Wall模型、DTE模型和Lattice模型以及各企業(yè)、團(tuán)體自主研發(fā)的設(shè)計模型等[3-6]。

然而,在特殊單位中,單一MAC機(jī)制很難完全滿足其通用Linux平臺使用的特殊性與多樣性安全需求,需要多種MAC機(jī)制并存互補(bǔ),以提供更高的系統(tǒng)安全性。目前針對通用Linux系統(tǒng)中的多MAC機(jī)制并存研究較少,以Selinux機(jī)制為代表的具有主/從性的多MAC堆疊并存機(jī)制較為普及,它將Selinux作為主安全模塊,后續(xù)MAC機(jī)制通過mod_reg_security函數(shù)在主模塊中進(jìn)行注冊成為從安全模塊,較好地支持了MAC并存與調(diào)用,但從安全模塊受主安全模塊策略的約束與管理,并且在kernel-2.6.19以后不支持mod_reg_security函數(shù)的使用[7]。文獻(xiàn)[8]設(shè)計了一種在kernel源碼中以安全域數(shù)組的形式實現(xiàn)的多MAC機(jī)制并存管理器,有效地支持了多MAC并存,但這種并存管理器的平臺可遷移性差,對于不愿更改內(nèi)核的用戶,他們難以接受這種方法。文獻(xiàn)[9]利用擴(kuò)展內(nèi)核hook安全域的形式,以內(nèi)核通用鏈表做載體為系統(tǒng)提供一種多MAC并存機(jī)制,但是該法的綜合決策和鏈?zhǔn)秸{(diào)用存在系統(tǒng)開銷大和靈活性不足問題。

基于以上問題,在沿襲內(nèi)核hook安全域擴(kuò)展的基礎(chǔ)上,本文提出一種多種MAC機(jī)制并存的動態(tài)裝載方法。該方法使MAC機(jī)制以動態(tài)方式載入系統(tǒng)且能與平臺自有MAC機(jī)制實現(xiàn)并存,同時輔以優(yōu)先級調(diào)度算法實現(xiàn)靈活調(diào)度[10]。

1 通用MAC裝載流程

目前, Linux操作系統(tǒng)平臺自帶的通用MAC機(jī)制大都是依托Flask模型進(jìn)行工程實現(xiàn)的[11]。Flask模型以進(jìn)程為主體,按照集中式或分散式的策略權(quán)限訪問系統(tǒng)資源客體,存在類型強(qiáng)制與多層安全非強(qiáng)制的形式,同時具備控制精細(xì)、策略靈活與可配置等特點。通用MAC機(jī)制通過更改內(nèi)核全局描述表security_ops中hook地址指向,以KO的形式進(jìn)行動態(tài)裝載[12]。通用MAC裝載及其控制流程如圖1所示。

圖1 通用MAC裝載流程

通用MAC裝載流程主要包括以下步驟:

1)系統(tǒng)開機(jī),內(nèi)核層首先進(jìn)行安全初始化,將內(nèi)核全局描述表security_ops地址指向系統(tǒng)默認(rèn)安全模塊default_security_ops,此過程無任何MAC機(jī)制,僅作為初始化使用。

2)平臺自帶Flask模型的MAC機(jī)制將獲取內(nèi)核全局描述表security_ops地址,并進(jìn)行地址替換,使之指向MAC機(jī)制中自定義的全局描述表,此時系統(tǒng)平臺的初始化安全模塊default_security_ops失效,MAC機(jī)制裝載成功且生效。

3)用戶層進(jìn)程訪問客體,首先讀取系統(tǒng)文件目錄項,查找系統(tǒng)資源客體inode節(jié)點,并獲取inode節(jié)點屬性信息,然后經(jīng)過內(nèi)核接口執(zhí)行程序功能性錯誤檢查。

4)進(jìn)行系統(tǒng)平臺傳統(tǒng)的DAC權(quán)限檢查校驗。

5)經(jīng)過以上步驟,在用戶進(jìn)程即將訪問客體之前,內(nèi)核層生效的MAC機(jī)制將讀取強(qiáng)訪策略,最終確定主體訪問客體權(quán)限。

2 并存方案設(shè)計與實現(xiàn)

系統(tǒng)內(nèi)核中的透明安全域是一個void*類型指針,它將安全模塊中的安全信息和內(nèi)核內(nèi)部對象聯(lián)系起來,對MAC機(jī)制的支持具有唯一性,如若安全域被主模塊占用,勢必導(dǎo)致其他MAC機(jī)制失效。針對要實現(xiàn)2種甚至多種MAC機(jī)制的并存問題,本節(jié)對多種MAC機(jī)制并存動態(tài)裝載進(jìn)行設(shè)計與實現(xiàn)。

2.1 方案設(shè)計

針對Linux平臺需要多種MAC機(jī)制并存以增強(qiáng)系統(tǒng)安全性的需求,提出一種具備靈活調(diào)度的多種MAC機(jī)制并存動態(tài)裝載方法。該方法主要分為MAC機(jī)制裝載與還原、并存調(diào)度策略、訪問仲裁和安全防篡改4個部分,其設(shè)計裝載流程如圖2所示,其中,header為跳躍表頭。

圖2 MAC并存裝載流程

多種MAC機(jī)制并存裝載沿襲了內(nèi)核安全域擴(kuò)展思想,但在安全模塊加載過程與傳統(tǒng)通用動態(tài)裝載的hook地址替換法不同,它利用跳躍表[13]對內(nèi)核全局描述表security_ops的入口點進(jìn)行重新構(gòu)造,以實現(xiàn)多MAC裝載管理機(jī)制與MAC模塊功能的靜態(tài)分離。跳躍表裝載多MAC的機(jī)制作為與MAC功能模塊交互的唯一途徑,具有順鏈?zhǔn)?先進(jìn)先出的MAC互聯(lián)邏輯)與跳躍式(任意順序的MAC互聯(lián)邏輯)2種調(diào)用,如圖2所示。鑒于系統(tǒng)安全的第一要義是安全,其次是性能,管理機(jī)制可無上限裝載多個MAC有違系統(tǒng)安全和性能要求,將MAC裝載上限以可配置的方式予以提供。多種MAC機(jī)制還原是對跳躍表裝載方式移除后的環(huán)境歸整,還原為系統(tǒng)平臺自帶MAC的強(qiáng)訪境況。

并存調(diào)度策略摒棄了以往FIFO模型實現(xiàn)的鏈?zhǔn)巾樞蛘{(diào)度思想,利用優(yōu)先級算法實現(xiàn)了多MAC機(jī)制的并存靈活調(diào)度設(shè)計。優(yōu)先級P是根據(jù)實際中不同MAC機(jī)制的側(cè)重點不同進(jìn)行的靜態(tài)標(biāo)簽設(shè)置,如圖2所示。預(yù)定義P為8個等級,P={P0,P1,…,P7},P0優(yōu)先級最高,依次逐級遞減,同等優(yōu)先級時,按照先進(jìn)先出順序進(jìn)行調(diào)度。

訪問仲裁是多MAC機(jī)制并存策略最終的決策者,決定了策略最終實施的成功與否。在已有并存技術(shù)中,全部MAC機(jī)制運(yùn)行后對返回結(jié)果做統(tǒng)一仲裁的方式具有可行性,但卻要將系統(tǒng)已裝載的MAC都運(yùn)行。簡單說,如果系統(tǒng)中第一個MAC機(jī)制已確認(rèn)該操作不安全,下面的MAC機(jī)制則不需要運(yùn)行實施,可直接給出仲裁結(jié)果。鑒于不同MAC機(jī)制具體的權(quán)威性與可信性不同,如若直接給出仲裁結(jié)果,可能導(dǎo)致仲裁偏差與失誤,本文設(shè)計的訪問仲裁通過引進(jìn)權(quán)重比W的方式對結(jié)果進(jìn)行修正,以增添仲裁可信性。W可設(shè)置為W={W0,W1,…,Wn},權(quán)重值越大,則影響力越大[14],如圖2所示。

安全防篡改功能是MAC機(jī)制并存方法在系統(tǒng)中的自安全增強(qiáng)機(jī)制,具備防篡改監(jiān)控和自修復(fù)2個特點,如圖2所示。防篡改監(jiān)控包含監(jiān)控時間片和地址判斷2個要素。自修復(fù)是在防篡改監(jiān)控發(fā)現(xiàn)被篡改的情景下做出的并存機(jī)制重載修復(fù)操作。

2.2 方案實現(xiàn)

假設(shè)存在以下條件:

1)需并存裝載的MAC機(jī)制集合M={M0,M1,…,M6}。

2)已定義優(yōu)先級P為8個等級,P={P0,P1,…,P7}。

3)已定義權(quán)重W為3個等級,W={W0,W1,W2}。

多種MAC機(jī)制并存動態(tài)裝載設(shè)計的實現(xiàn)過程如下:

1) MAC并存裝載與還原

內(nèi)核安全域已被系統(tǒng)中自帶MAC機(jī)制占用,首先將安全域以SkipList形式進(jìn)行擴(kuò)展,以支持多安全模塊的注冊,以file結(jié)構(gòu)的安全域void *f_security為例進(jìn)行擴(kuò)展,擴(kuò)展前為struct file{…void*f_security;…},擴(kuò)展后則為struct file {…struct mskiplist *list;void*f_security;…}。

file結(jié)構(gòu)安全域擴(kuò)展后的調(diào)用原理如圖3所示。file結(jié)構(gòu)的安全域由之前指向系統(tǒng)自帶MAC機(jī)制的file結(jié)構(gòu),更改為指向SkipList的頭節(jié)點,SkipList中的各個節(jié)點安全域指針被設(shè)置指向具體安全模塊的file結(jié)構(gòu)。

MAC并存裝載要對系統(tǒng)內(nèi)核全局描述表security_ops的地址進(jìn)行備份與替換,然而在通用Linux內(nèi)核2.6.22及以上版本[15]中,已經(jīng)不支持通過register_security函數(shù)操作security_ops地址方式,需手動進(jìn)行獲取,其關(guān)鍵數(shù)據(jù)結(jié)構(gòu)實現(xiàn)如下所示:

static int __coexit_init(void)

{static struct security_operations sec_ops_bak;

memset(&sec_ops_bak,0,sizeof(sec_ops_bak));

sec_ops_p = look_up_symbol("security_ops");

…;

memcpy(&sec_ops_bak,sec_ops_p,sizeof(sec_ops_bak));

…}

其中,第1行和第2行是為security_ops備份地址申請空間并初始化,第3行和第4行將獲取的security_ops地址進(jìn)行備份。

多MAC裝載需維護(hù)一個安全模塊函數(shù)鏈表,該鏈表以跳躍表的數(shù)據(jù)結(jié)構(gòu)實現(xiàn),其節(jié)點結(jié)構(gòu)如下所示:

typedef struct skiplist_node{

int p; /*優(yōu)先級*/

float w; /*權(quán)重*/

int levels; /*保存結(jié)點的層數(shù)*/

struct security_operations * security_ops;

/*MAC機(jī)制中hook函數(shù)表*/

struct skiplist_node_level{

struct skiplist_node *forward; /*前指針*/

}level[]; /*level最大值為32*/

struct skiplist_node *backward; /*后指針*/

}skiplist_node;

將所需并存的MAC機(jī)制M={M0,M1,…,M6}裝載在安全模塊函數(shù)鏈表中,其示意圖如圖4所示。

圖4 多MAC并存裝載示意圖

2) MAC并存調(diào)度

并存調(diào)度策略引入了優(yōu)先級調(diào)度算法思想,MAC的優(yōu)先級P以靜態(tài)標(biāo)簽形式存在。已知集合M,設(shè)M與P的自由組合為{M0,P0}、{M1,P7}、{M2,P2}、{M3,P0}、{M4,P1}、{M5,P1}和{M6,P0},如圖5所示。根據(jù)優(yōu)先級高先調(diào)用、同等級按照先進(jìn)先出的調(diào)度原則,MAC并存調(diào)度機(jī)制首先調(diào)用的是優(yōu)先級最高的P0級,調(diào)用順序為{M0,P0}、{M3,P0}和{M6,P0},如圖5中所標(biāo)線(長虛曲線)所示;然后,調(diào)用的是{M4,P1}和{M5,P1},如圖5中所標(biāo)線(短虛曲線)所示;最后,調(diào)用的是{M2,P2},如圖5中所標(biāo)線(實曲線)所示。

圖5 MAC調(diào)度示意圖

3) 訪問仲裁

訪問仲裁中處理的對象包含MAC集合M={M0,M1,…,M6},權(quán)重W={W0,W1,W2},K表示計算結(jié)果動態(tài)修正系數(shù),R表示當(dāng)前模塊返回結(jié)果,Z表示最后計算結(jié)果,以Ψ表示訪問仲裁集合,Ψ={M,W,K,R,Z}。

(1) MAC機(jī)制集合M={M0,M1,…,M6},按照優(yōu)先級P的順序依次執(zhí)行,并對應(yīng)返回結(jié)果R={R0,R1,…,Rn}。

(2)結(jié)果集R結(jié)合模塊權(quán)重W和修正系數(shù)K進(jìn)行決策計算,得出仲裁結(jié)果Z={undef,Z1,Z2,…,Zn}。其計算公式為:

(1)

4) 安全防篡改

安全防篡改中的篡改監(jiān)控特征是通過周期輪巡的方式進(jìn)行實現(xiàn),通過比對security_ops的入口地址是否被跳躍表以外的地址進(jìn)行替換而做出篡改判斷依據(jù),其時間片可設(shè)置為3 s,如若被非法篡改,自修復(fù)特征將重新獲取security_ops的入口地址主動權(quán),將多MAC機(jī)制重新裝載入系統(tǒng)。

3 系統(tǒng)性能驗證

本文將該并存方法在Linux通用系統(tǒng)平臺中進(jìn)行了實現(xiàn),主要的系統(tǒng)性能驗證如下:

1) 系統(tǒng)功耗性驗證

測試條件:

(1)系統(tǒng)中已默認(rèn)裝載Flask模型實現(xiàn)的MAC機(jī)制。

(2)設(shè)存在系統(tǒng)MAC補(bǔ)充機(jī)制M0和M1,并且M0和M1中的功能hook均返回0,用以忽略hook函數(shù)內(nèi)部的功能影響,以代表訪問過程均安全放行。

在Linux平臺條件(1)和(2)的環(huán)境下,實驗對比了多MAC機(jī)制堆疊并存裝載方法[7]和本文設(shè)計的多MAC機(jī)制并行裝載方法,分別執(zhí)行10 000次、100 000次和1 000 000次的文件打開與關(guān)閉,并記錄執(zhí)行所用時間,每一組重復(fù)執(zhí)行10次,然后取其平均值。2組實驗結(jié)果對比如圖6所示。

圖6 通用堆疊與并行裝載執(zhí)行時間對比

2) 防篡改功能驗證

假設(shè)在Linux通用系統(tǒng)平臺中已安裝本文可支持的多種MAC并存動態(tài)裝載機(jī)制,同時該并存動態(tài)裝載機(jī)制中包含系統(tǒng)自帶MAC及其補(bǔ)充MAC機(jī)制M0和M1。參照系統(tǒng)syslog審計方式,在并存動態(tài)裝載機(jī)制中每隔一定時間片主動獲取系統(tǒng)時間與內(nèi)核全局描述表security_ops地址,并通過vfs_write函數(shù)將相關(guān)信息記錄到/var/log/security_ops.log中。

在Linux通用系統(tǒng)平臺中,創(chuàng)建文件replace_security_ops.c用以強(qiáng)占并更改security_ops指向地址。在文件replace_security_ops.c中,首先獲取當(dāng)前系統(tǒng)內(nèi)核全局描述表security_ops指向地址,然后更改security_ops指向地址,最終將文件以KO模塊形式編譯生成lsm.ko,通過執(zhí)行insmod命令,將lsm.ko插入內(nèi)核,如圖7所示。

圖7 安全防篡改測試截圖

在日志/var/log/security_ops.log中,每隔3 s輸出當(dāng)前security_ops指向地址,在insmod操作動作執(zhí)行前,系統(tǒng)輸出提示信息的INFO語句,顯示security_ops地址為ffffffff81ae2420。當(dāng)執(zhí)行insmod操作動作后,系統(tǒng)輸出提示信息WARN語句,顯示系統(tǒng)security_ops地址已被篡改,且篡改后地址為ffffffff81fdadc8。此時安全防篡改模塊將執(zhí)行自修復(fù)功能,重新主動占據(jù)security_ops指向地址。經(jīng)上述security_ops強(qiáng)占測試后,最終確認(rèn)此方法具備安全防篡改功能。

4 結(jié)束語

本文提出一個多MAC機(jī)制并存的動態(tài)裝載方法,在并存裝載的同時以優(yōu)先級調(diào)度算法對其進(jìn)行靈活調(diào)度。測試結(jié)果表明,相比于通用堆疊并存技術(shù),該方法能夠滿足多種MAC機(jī)制的系統(tǒng)并存需求,系統(tǒng)性能開銷小,并且模塊具備安全防篡改功能。下一步將對并存方法中的各種MAC機(jī)制運(yùn)行時間片進(jìn)行研究,在考慮優(yōu)先級的情況下同時考慮時間要素,以先調(diào)用同優(yōu)先級、時間片較小的MAC機(jī)制的方式達(dá)到更優(yōu)的調(diào)度方案,進(jìn)而提高系統(tǒng)性能。

猜你喜歡
內(nèi)核指向仲裁
多內(nèi)核操作系統(tǒng)綜述①
強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
科學(xué)備考新指向——不等式選講篇
活化非遺文化 承啟設(shè)計內(nèi)核
對不屬于仲裁委員會管轄范圍的仲裁申請如何處理?
Linux內(nèi)核mmap保護(hù)機(jī)制研究
一種多通道共享讀寫SDRAM的仲裁方法
把準(zhǔn)方向盤 握緊指向燈 走好創(chuàng)新路
兩岸四地間相互執(zhí)行仲裁裁決:過去、現(xiàn)在及將來(上)
津南区| 聂荣县| 巴南区| 元谋县| 深圳市| 中江县| 诏安县| 宁晋县| 中方县| 历史| 霍邱县| 金沙县| 宾川县| 巴青县| 临洮县| 博白县| 承德市| 开化县| 昌乐县| 泰兴市| 棋牌| 揭阳市| 通河县| 永仁县| 罗定市| 泉州市| 山阴县| 合川市| 克什克腾旗| 房产| 富阳市| 贵南县| 阜宁县| 普宁市| 白沙| 宣城市| 阳朔县| 德格县| 荣成市| 龙口市| 宜兴市|