linux添加三权,基于SELinux的三权分离技术的研究
目前,Linux操作系統(tǒng)已廣泛應(yīng)用于各種設(shè)備和產(chǎn)品中,如服務(wù)器、PC機(jī)、機(jī)頂盒及路由器等。隨著Linux系統(tǒng)的不斷發(fā)展和廣泛應(yīng)用,Linux系統(tǒng)的安全問題也引起越來越多的關(guān)注。在Linux操作系統(tǒng)中,存在一個超級用戶即root用戶。root也稱為系統(tǒng)管理員,它擁有管理系統(tǒng)的一切權(quán)限。當(dāng)一個非法用戶獲得root用戶口令后,他就可以以超級用戶的身份登錄系統(tǒng),然后做任何他想做的事情:如任意添加、刪除用戶,終止進(jìn)程,刪除重要文件甚至更改root用戶的口令。因此,一旦root權(quán)限被惡意用戶利用,就可能導(dǎo)致系統(tǒng)數(shù)據(jù)的泄密和破壞。
該問題已經(jīng)引起了國家的重點(diǎn)關(guān)注,如國家保密標(biāo)準(zhǔn)BMB20-2007《涉及國家秘密的信息系統(tǒng)分級保護(hù)管理規(guī)范》中明確提出:涉密信息系統(tǒng)應(yīng)配備系統(tǒng)管理員、安全保密管理員和安全審計(jì)員這三類安全保密管理人員,三員應(yīng)該相互獨(dú)立、相互制約、不得兼任。三個管理員之間的工作機(jī)制分為協(xié)作和制約兩種機(jī)制,行使的是原超級用戶的權(quán)力,即系統(tǒng)管理員、安全管理員和審計(jì)管理員間相互協(xié)作,共同維護(hù)系統(tǒng)的正常運(yùn)行。制約機(jī)制指只有在當(dāng)前管理員操作不影響其他管理員正在進(jìn)行的操作時才被允許,從而保證了管理員行為的可預(yù)期性,避免超級用戶的誤操作或其身份被假冒而帶來的安全隱患,增強(qiáng)了系統(tǒng)的安全性。該規(guī)范可以有效防止由系統(tǒng)管理員權(quán)力過大所帶來的系統(tǒng)安全威脅和隱患[。
SELinux (security-enhanced Linux)[是安全增強(qiáng)的Linux,以強(qiáng)制訪問控制(mandatory access control, MAC)[技術(shù)為基礎(chǔ),應(yīng)用類型增強(qiáng)(type enforcement, TE)和基于角色訪問控制(role-base access control, RBAC)兩種安全策略模型。通過MAC技術(shù)可以實(shí)現(xiàn)對用戶和進(jìn)程權(quán)限的最小化,即使在系統(tǒng)受到攻擊或者進(jìn)程和用戶的權(quán)限被剝奪的情況下,也不會對整個系統(tǒng)的安全造成重大影響。SELinux對訪問的控制更徹底,它對系統(tǒng)中的所有文件、目錄、端口資源的訪問控制都基于一定的安全策略而設(shè)定。只有管理員才能定制安全策略,一般用戶沒有權(quán)限更改。因此SELinux為三權(quán)分離思想的實(shí)現(xiàn)奠定了基礎(chǔ)。
目前,SELinux的相關(guān)研究工作主要集中在安全策略分析和配置及SELinux安全模型研究[方面。文獻(xiàn)[
本文基于SELinux建立了三權(quán)分離安全模型,設(shè)計(jì)了三權(quán)分離安全策略,并實(shí)現(xiàn)了三權(quán)分離機(jī)制,最后通過實(shí)驗(yàn)驗(yàn)證了可行性和正確性。
1 SELinux的安全技術(shù)
1.1 MAC和DAC技術(shù)分析
SELinux除了采用自主訪問控制(discretionary access control, DAC)外,還在Linux內(nèi)核中使用強(qiáng)制訪問控制機(jī)制嚴(yán)格控制所有對系統(tǒng)資源的訪問請求,并根據(jù)安全策略確定是否授予該請求相應(yīng)的權(quán)限。MAC機(jī)制將能夠發(fā)出訪問請求的對象稱為主體(如進(jìn)程),將系統(tǒng)的被訪問對象(如:文件、設(shè)備、socket、端口和其他進(jìn)程)稱為客體,所有主體對客體的訪問都必須由MAC機(jī)制通過安全策略授權(quán)。MAC機(jī)制給進(jìn)程僅授予操作所需要的權(quán)限,這遵循了最小權(quán)限原則。因此,在MAC機(jī)制的保護(hù)下,即使獲取root用戶的權(quán)限也無法訪問未授權(quán)的客體[。
在SELinux中,MAC與DAC機(jī)制聯(lián)合,以提高系統(tǒng)的安全性。如
圖1
圖1
SELinux的DAC與MAC
1.2 SELinux的安全策略模型[
安全策略作為訪問控制機(jī)制權(quán)限仲裁的依據(jù),是SELinux中非常重要的內(nèi)容之一。SELinux采用TE (type enforcement)和RBAC (role-based access control)相結(jié)合的安全策略。
1.2.1 TE[模型
SELinux中所有的安全策略,都必須用TE規(guī)則明確地定義,沒有被明確許可的其他訪問方式,都被禁止(最小權(quán)限原則)。TE訪問向量規(guī)則定義了主體可以訪問什么類型的客體,TE轉(zhuǎn)移規(guī)則定義了域類型的相互轉(zhuǎn)移[。本文只討論前者。
定義1?TE模型的關(guān)鍵要素:
源類型(source type, ST)主體(subject)或者域的類型。目標(biāo)類型(target type, TT)客體(object)的類型。對象類別(class)訪問申請的某一類別資源,如:file、socket等。操作類型(opration, OPT)如:read、write等。許可權(quán)限(permission, P)表示主體對客體訪問時允許的操作。
定義2?TE策略模型:
TE策略模型可定義為:P=ST×OPT×TT,許可權(quán)限(P)=源類型(ST)對目標(biāo)類型(TT)的資源類(class)的操作(OPT)。
定義3?根據(jù)上述TE策略模型,采用allow語法制定策略規(guī)則如下:
allow??ST??TT : class??{opt1, opt2, …};
根據(jù)此策略規(guī)則,定義出如下安全策略:
allow user_t bin_t : file {read execute getattr};
在allow基本語法規(guī)則中包含了兩個類型標(biāo)識符:源類型(ST) user_t,目標(biāo)類型(TT) bin_t。標(biāo)識符file是定義在策略中的對象類別名稱(在這里,表示一個普通的文件),大括號中包括的操作是文件操作類型的一個子集,此安全策略示例的含義是擁有域類型user_t的進(jìn)程可以讀/執(zhí)行或獲取具有bin_t類型的文件客體的屬性。
1.2.2 SELinux的RBAC模型
傳統(tǒng)的基于角色的訪問控制RBAC模型[,為角色授權(quán),然后將一個或多個角色分配給一個授權(quán)用戶。SELinux對RBAC模型進(jìn)行了改進(jìn),提出了一種TE-RBAC聯(lián)合模型,改進(jìn)后的模型如[。
圖2
圖2
SELinux的RBAC策略模型
定義4?TE與RBAC聯(lián)合模型:
聲明用戶及其關(guān)聯(lián)的角色,user??joe??roles {user_r};這個語句聲明了一個用戶joe,以及與之關(guān)聯(lián)的角色user_r。
聲明角色與其源類型關(guān)聯(lián),role user_r types user_t;這個語句將源類型user_t與角色user_r關(guān)聯(lián)起來。
2 三權(quán)分離模型
2.1 權(quán)能集定義
依據(jù)最小特權(quán)和權(quán)值分離的管理思想,本文將原超級用戶的特權(quán)進(jìn)行細(xì)粒度劃分,分別授予不同的管理員角色,使各種管理員只具有完成其任務(wù)所需的最小特權(quán),不同管理員間相互協(xié)作共同管理系統(tǒng)。從邏輯上將承擔(dān)這3類職責(zé)的特權(quán)用戶命名為系統(tǒng)管理、安全員管理員和審計(jì)員管理員[。
根據(jù)上述非形式化描述,為了實(shí)現(xiàn)三權(quán)分離機(jī)制,本文首先將系統(tǒng)的root權(quán)能集進(jìn)行劃分,并給出如下定義。
定義5?系統(tǒng)root權(quán)能集C
C={ Csy, Cse, Cau},其中Csy表示系統(tǒng)管理員權(quán)能集,Cse表示安全管理員權(quán)能集,Cau表示審計(jì)管理員權(quán)能集。
定義6?三權(quán)分離權(quán)能集。根據(jù)三權(quán)分離思想,將root權(quán)限拆分成下述3個權(quán)能集:
1)系統(tǒng)管理員權(quán)能集Csy
Csy管理與系統(tǒng)相關(guān)的資源,包括用戶身份管理、系統(tǒng)資源配置、系統(tǒng)加載和啟動、系統(tǒng)運(yùn)行的異常處理[。
2)安全管理員權(quán)能集Cse
Cse制定系統(tǒng)安全策略,負(fù)責(zé)對系統(tǒng)中的主體、客體進(jìn)行統(tǒng)一標(biāo)記,對主體進(jìn)行授權(quán),配置一致的安全策略,并確保標(biāo)記、授權(quán)和安全策略的數(shù)據(jù)完整性[。
3)審計(jì)管理員權(quán)能集Cau
Cau設(shè)置審計(jì)選項(xiàng),對與安全有關(guān)的事件進(jìn)行審計(jì)處理,包括監(jiān)視系統(tǒng)的活動以及日志的處理,提供審計(jì)和監(jiān)控功能,創(chuàng)建和維護(hù)受保護(hù)客體的訪問審計(jì)跟蹤記錄[。
4)各權(quán)能集之間相互隔離,當(dāng)且僅當(dāng)對任意a,b∈T(T={sy, se, au}),a≠b,有Ca?C,Cb?C,Ca∩Cb=?,其中C=Cse∪Csy∪Cau。即每個管理員所能訪問的權(quán)能集是絕對隔離的。
2.2 基于SELinux的三權(quán)分離策略模型
根據(jù)上述權(quán)能集的描述,下面基于SELinux建立一種三權(quán)分離策略模型,主要包括特權(quán)用戶、特權(quán)角色和源類型集定義,以及各特權(quán)用戶與對應(yīng)的特權(quán)角色關(guān)聯(lián)和特權(quán)角色與對應(yīng)的源類型集關(guān)聯(lián)。
如
圖3
圖3
三權(quán)分離策略模型
定義7?定義3組源類型集,STsy,STse,STau滿足下列條件:
STsy={ STasy, STbsy, …};STse={ STase, STbse, …};STau={ STaau, STbau, …}
并且根據(jù)SELinux的TE模型和上述全能集的定義,可得到如下3組TE策略模型:
1) Psy=STsy×OPT×TT,且Psy?Csy (即系統(tǒng)管理員各源類型的許可權(quán)限是系統(tǒng)管理員權(quán)能集Csy的子集);
2) Pse=STse×OPT×TT,且Pse?Cse (即安全管理員各源類型的許可權(quán)限是安全管理員權(quán)能集Cse的子集);
3) Pau=STau×OPT×TT,且Pau?Cau (即審計(jì)管理員各源類型的許可權(quán)限是審計(jì)管理員權(quán)能集Cau的子集);
4) STsy集∩STse集=?,STse集∩STau集=?,STsy集∩STau集=?,每組源類型集合之間都不能相交。
定義8定義三權(quán)分離的用戶與角色關(guān)聯(lián)
user??root??role??sysadm_r, 將root系統(tǒng)管理員用戶與sysadm_r角色關(guān)聯(lián);
user??secadm??role??secadm_r,將secadm安全管理員用戶與secadm_r角色關(guān)聯(lián);
user??auditadm??role??auditadm_r,將auditadm審計(jì)管理員用戶與auditadm_r角色關(guān)聯(lián)。
定義9?三權(quán)分離的角色與源類型集關(guān)聯(lián)
role??sysadm_r??types??STsy={STasy, STbsy, … }
role??secadm_r??types??STse={STase, STbse, … }
role??auditadm_r??types STau={ STaau, STbau, … }
本定義基于SELinux的RBAC安全模型為每個角色關(guān)聯(lián)一組源類型集合,即:
sysadm_r關(guān)聯(lián)STsy集;secadm_r關(guān)聯(lián)STse集;auditadm_r關(guān)聯(lián)STau集。
3 三權(quán)分離的安全策略設(shè)計(jì)與實(shí)現(xiàn)
在定義了三權(quán)分離模型后,為了在SELinux中實(shí)現(xiàn)該模型,必須修改SELinux已有的安全策略庫,添加三權(quán)分離的安全策略。下文詳細(xì)闡述基于SELinux的三權(quán)分離安全策略的設(shè)計(jì)與實(shí)現(xiàn)。
3.1 三權(quán)分離的安全策略設(shè)計(jì)
圖4
圖4
三權(quán)分離的安全策略設(shè)計(jì)
3.1.1 系統(tǒng)管理員策略設(shè)計(jì)
根據(jù)定義6~定義9的統(tǒng)管理員相關(guān)描述,系統(tǒng)管理員root關(guān)聯(lián)了角色sysadm_r,角色sysadm_r默認(rèn)的源類型為sysadm_t,這個源類型允許轉(zhuǎn)換到與角色sysadm_r關(guān)聯(lián)的其他源類型,如
3.1.2 安全管理員策略設(shè)計(jì)
根據(jù)定義6~定義9中安全管理員相關(guān)描述,安全管理員secadm關(guān)聯(lián)了角色secadm_r,角色secadm_r默認(rèn)的源類型為secadm_t,這個源類型允許轉(zhuǎn)換到與角色secadm_r關(guān)聯(lián)的其他源類型,如
3.1.3 審計(jì)管理員策略設(shè)計(jì)
根據(jù)定義6~定義9中審計(jì)管理員相關(guān)描述,審計(jì)管理員auditadm關(guān)聯(lián)了角色auditadm_r,角色auditadm_r默認(rèn)的源類型為auditadm_t,這個源類型允許轉(zhuǎn)換到與角色auditadm_r關(guān)聯(lián)的其他源類型,如
3.2 三權(quán)分離的TE策略實(shí)現(xiàn)
上一節(jié)中已經(jīng)描述了每個用戶角色所關(guān)聯(lián)的源類型,下面針對每個源類型按照前面所闡述的TE模型指定具體的安全許可規(guī)則。
3.2.1 系統(tǒng)管理員安全策略的實(shí)現(xiàn)
系統(tǒng)管理員擁有原root用戶的大部分權(quán)限,用來完成系統(tǒng)中日常的操作和維護(hù),包括系統(tǒng)用戶賬戶的管理、網(wǎng)絡(luò)相關(guān)管理與操作、內(nèi)核模塊加載、開啟和關(guān)閉系統(tǒng)、對文件的檔案備份和恢復(fù)、安裝或卸載文件系統(tǒng)等。以管理系統(tǒng)用戶賬戶為例,其源類型為useradd_t,系統(tǒng)管理員擁有添加用戶賬號的權(quán)限,即只有系統(tǒng)管理員可以執(zhí)行useradd命令,因此需要在策略中按TE模型的描述給useradd_t源類型定義相應(yīng)的許可權(quán)限。
allow??useradd_t??useradd_exec_t:??file {open??read??execute };
該allow規(guī)則定義了源類型useraddr_t對目標(biāo)類型useradd_exec_t (表示useradd命令)的文件資源授予打開(open)、讀(read)和執(zhí)行(execute)的權(quán)限。
3.2.2 安全管理員安全策略的實(shí)現(xiàn)
安全管理員是整個系統(tǒng)安全策略的制定者,負(fù)責(zé)制定生成安全策略,修改SELinux運(yùn)行模式,裝載二進(jìn)制安全策略,設(shè)置文件安全上下文等。以生成安全策略為例其源類型為checkpolicy_t,安全管理員擁有將策略規(guī)則源碼編譯成二進(jìn)制策略文件的權(quán)限,即只有安全管理員可以執(zhí)行checkpolicy命令,因此需要在策略中按TE模型的描述給checkpolicy_t源類型定義相應(yīng)的許可權(quán)限。
allow checkpolicy_t??checkpolicy_exec_t:??file {open??read??execute };
該allow規(guī)則定義了,源類型checkpolicy_t對目標(biāo)類型checkpolicy_exec_t (表示checkpolicy命令)授予打開(open)、讀(read)和執(zhí)行(execute)的權(quán)限。
3.2.3 審計(jì)管理員安全策略的實(shí)現(xiàn)
審計(jì)管理員是系統(tǒng)的監(jiān)督者,負(fù)責(zé)設(shè)置審計(jì)開關(guān)和審計(jì)閾值,啟動和關(guān)閉審計(jì)機(jī)制以及管理審計(jì)日志等。以auditadm_t源類型為例,只有審計(jì)管理員才能擁有查看審計(jì)日志的權(quán)限,在策略中按TE模型的描述給auditadm_t源類型定義相應(yīng)的許可權(quán)限。
allow??auditadm_t??var_log_t:??file {open??read??getattr };
該allow規(guī)則定義了源類型auditadm_t對目標(biāo)類型var_log_t (表示審計(jì)日志文件)授予打開(open)、讀(read)和獲取屬性(getattr)的權(quán)限。
4 三權(quán)分離實(shí)驗(yàn)
4.1 實(shí)驗(yàn)平臺介紹
實(shí)驗(yàn)的硬件平臺為TQ2440(基于S3C2440A CPU)嵌入式開發(fā)板,軟件平臺為嵌入式Linux。Linux內(nèi)核為Linux 2.6.30,Linux命令工具集為Busybox-1.22.0,安全策略由策略庫refpolicy-2.20090730[修改生成。
4.2 實(shí)驗(yàn)原型的實(shí)現(xiàn)
根據(jù)上文描述的三權(quán)分離安全策略模型,基于refpolicy策略庫,在嵌入式Linux平臺上,借助于SELinux模塊實(shí)現(xiàn)了一個三權(quán)分離的實(shí)驗(yàn)原型系統(tǒng)。該系統(tǒng)重點(diǎn)實(shí)現(xiàn)了三權(quán)分離的安全策略,定義3個特權(quán)角色及對應(yīng)的3個SELinux特權(quán)用戶,并為每個用戶制定詳細(xì)的最小執(zhí)行或訪問權(quán)限。禁止各用戶對其他用戶私有資源的訪問,最大化的限制用戶的權(quán)限,以提高系統(tǒng)的安全性。
4.3 三權(quán)分離功能測試
4.3.1 用戶角色關(guān)聯(lián)測試
系統(tǒng)管理員(root)關(guān)聯(lián)角色sysadm_r,且角色關(guān)聯(lián)sysadm_t源類型,如
圖5
圖5
用戶角色關(guān)聯(lián)標(biāo)識測試
4.3.2 審計(jì)管理員功能測試
根據(jù)三權(quán)分離的設(shè)計(jì)模型,審計(jì)日志只能由審計(jì)管理員進(jìn)行訪問,而其他用戶無權(quán)進(jìn)行讀操作。
圖6
圖6
三權(quán)分離功能測試
值得注意的是,如果當(dāng)前以root權(quán)限登錄去執(zhí)行審計(jì)操作,由于root用戶不具備對審計(jì)日志的訪問權(quán)限,因此該請求被拒絕,如
4.3.3 安全管理員功能測試
根據(jù)三權(quán)分離的設(shè)計(jì)模型,只有安全管理員有權(quán)修改SELinux安全模式,測試結(jié)果如
5 結(jié)束語
為了解決root權(quán)限過大給linux操作系統(tǒng)所帶來的安全隱患問題,本文基于SELinux的強(qiáng)制訪問控制技術(shù),采用三權(quán)分離思想,建立了三權(quán)分離策略模型,實(shí)現(xiàn)了一個安全增強(qiáng)的Linux操作系統(tǒng)。即使特權(quán)用戶的密碼被惡意用戶獲取,也不會對系統(tǒng)造成很大的損害,從而將惡意攻擊對系統(tǒng)的危害降到最低。本文的三權(quán)分離思想將Linux系統(tǒng)的root用戶權(quán)限拆分為安全管理、系統(tǒng)管理、審計(jì)管理三種權(quán)限。然后定義了三權(quán)分離策略模型,并基于SELinux的安全策略庫設(shè)計(jì)并實(shí)現(xiàn)了一套三權(quán)分離的安全策略庫。最后,在嵌入式Linux平臺上,借助于SELinux的強(qiáng)制訪問控制技術(shù)實(shí)現(xiàn)了一個實(shí)驗(yàn)原型系統(tǒng),并對系統(tǒng)各項(xiàng)功能進(jìn)行了多次測試。實(shí)驗(yàn)結(jié)果表示,本文的研究工作能夠嚴(yán)格的限制每個用戶的權(quán)限,如只有審計(jì)管理員可以查看系統(tǒng)的審計(jì)日志,只有安全管理員可以對系統(tǒng)的安全策略進(jìn)行管理等,從而有效解決了Linux系統(tǒng)由于root權(quán)限過大所帶來的系統(tǒng)危害和被攻擊的問題。本文的研究工作適合于任何Linux平臺,包括嵌入式設(shè)備和服務(wù)器,通過這種三權(quán)分離機(jī)制可以克服權(quán)力過于集中給系統(tǒng)帶來的危害,以提高Linux系統(tǒng)的安全性。
總結(jié)
以上是生活随笔為你收集整理的linux添加三权,基于SELinux的三权分离技术的研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3D数字孪生大屏怎么做?你需要了解这款数
- 下一篇: Linux执行命令提示Password,