linux添加三權,基于SELinux的三權分離技術的研究

目前,Linux操作系統已廣泛應用于各種設備和產品中,如服務器、PC機、機頂盒及路由器等。隨著Linux系統的不斷發展和廣泛應用,Linux系統的安全問題也引起越來越多的關注。在Linux操作系統中,存在一個超級用戶即root用戶。root也稱為系統管理員,它擁有管理系統的一切權限。當一個非法用戶獲得root用戶口令后,他就可以以超級用戶的身份登錄系統,然后做任何他想做的事情:如任意添加、刪除用戶,終止進程,刪除重要文件甚至更改root用戶的口令。因此,一旦root權限被惡意用戶利用,就可能導致系統數據的泄密和破壞。

該問題已經引起了國家的重點關注,如國家保密標準BMB20-2007《涉及國家秘密的信息系統分級保護管理規范》中明確提出:涉密信息系統應配備系統管理員、安全保密管理員和安全審計員這三類安全保密管理人員,三員應該相互獨立、相互制約、不得兼任。三個管理員之間的工作機制分為協作和制約兩種機制,行使的是原超級用戶的權力,即系統管理員、安全管理員和審計管理員間相互協作,共同維護系統的正常運行。制約機制指只有在當前管理員操作不影響其他管理員正在進行的操作時才被允許,從而保證了管理員行為的可預期性,避免超級用戶的誤操作或其身份被假冒而帶來的安全隱患,增強了系統的安全性。該規范可以有效防止由系統管理員權力過大所帶來的系統安全威脅和隱患[。

SELinux (security-enhanced Linux)[是安全增強的Linux,以強制訪問控制(mandatory access control, MAC)[技術為基礎,應用類型增強(type enforcement, TE)和基于角色訪問控制(role-base access control, RBAC)兩種安全策略模型。通過MAC技術可以實現對用戶和進程權限的最小化,即使在系統受到攻擊或者進程和用戶的權限被剝奪的情況下,也不會對整個系統的安全造成重大影響。SELinux對訪問的控制更徹底,它對系統中的所有文件、目錄、端口資源的訪問控制都基于一定的安全策略而設定。只有管理員才能定制安全策略,一般用戶沒有權限更改。因此SELinux為三權分離思想的實現奠定了基礎。

目前,SELinux的相關研究工作主要集中在安全策略分析和配置及SELinux安全模型研究[方面。文獻[

本文基于SELinux建立了三權分離安全模型,設計了三權分離安全策略,并實現了三權分離機制,最后通過實驗驗證了可行性和正確性。

1 SELinux的安全技術

1.1 MAC和DAC技術分析

SELinux除了采用自主訪問控制(discretionary access control, DAC)外,還在Linux內核中使用強制訪問控制機制嚴格控制所有對系統資源的訪問請求,并根據安全策略確定是否授予該請求相應的權限。MAC機制將能夠發出訪問請求的對象稱為主體(如進程),將系統的被訪問對象(如:文件、設備、socket、端口和其他進程)稱為客體,所有主體對客體的訪問都必須由MAC機制通過安全策略授權。MAC機制給進程僅授予操作所需要的權限,這遵循了最小權限原則。因此,在MAC機制的保護下,即使獲取root用戶的權限也無法訪問未授權的客體[。

在SELinux中,MAC與DAC機制聯合,以提高系統的安全性。如

圖1

f4f064af9f457225570b79d2ad8581ae.png

圖1

SELinux的DAC與MAC

1.2 SELinux的安全策略模型[

安全策略作為訪問控制機制權限仲裁的依據,是SELinux中非常重要的內容之一。SELinux采用TE (type enforcement)和RBAC (role-based access control)相結合的安全策略。

1.2.1 TE[模型

SELinux中所有的安全策略,都必須用TE規則明確地定義,沒有被明確許可的其他訪問方式,都被禁止(最小權限原則)。TE訪問向量規則定義了主體可以訪問什么類型的客體,TE轉移規則定義了域類型的相互轉移[。本文只討論前者。

定義1?TE模型的關鍵要素:

源類型(source type, ST)主體(subject)或者域的類型。目標類型(target type, TT)客體(object)的類型。對象類別(class)訪問申請的某一類別資源,如:file、socket等。操作類型(opration, OPT)如:read、write等。許可權限(permission, P)表示主體對客體訪問時允許的操作。

定義2?TE策略模型:

TE策略模型可定義為:P=ST×OPT×TT,許可權限(P)=源類型(ST)對目標類型(TT)的資源類(class)的操作(OPT)。

定義3?根據上述TE策略模型,采用allow語法制定策略規則如下:

allow??ST??TT : class??{opt1, opt2, …};

根據此策略規則,定義出如下安全策略:

allow user_t bin_t : file {read execute getattr};

在allow基本語法規則中包含了兩個類型標識符:源類型(ST) user_t,目標類型(TT) bin_t。標識符file是定義在策略中的對象類別名稱(在這里,表示一個普通的文件),大括號中包括的操作是文件操作類型的一個子集,此安全策略示例的含義是擁有域類型user_t的進程可以讀/執行或獲取具有bin_t類型的文件客體的屬性。

1.2.2 SELinux的RBAC模型

傳統的基于角色的訪問控制RBAC模型[,為角色授權,然后將一個或多個角色分配給一個授權用戶。SELinux對RBAC模型進行了改進,提出了一種TE-RBAC聯合模型,改進后的模型如[。

圖2

fa69530c72cb15cd02a27728ffccf5db.png

圖2

SELinux的RBAC策略模型

定義4?TE與RBAC聯合模型:

聲明用戶及其關聯的角色,user??joe??roles {user_r};這個語句聲明了一個用戶joe,以及與之關聯的角色user_r。

聲明角色與其源類型關聯,role user_r types user_t;這個語句將源類型user_t與角色user_r關聯起來。

2 三權分離模型

2.1 權能集定義

依據最小特權和權值分離的管理思想,本文將原超級用戶的特權進行細粒度劃分,分別授予不同的管理員角色,使各種管理員只具有完成其任務所需的最小特權,不同管理員間相互協作共同管理系統。從邏輯上將承擔這3類職責的特權用戶命名為系統管理、安全員管理員和審計員管理員[。

根據上述非形式化描述,為了實現三權分離機制,本文首先將系統的root權能集進行劃分,并給出如下定義。

定義5?系統root權能集C

C={ Csy, Cse, Cau},其中Csy表示系統管理員權能集,Cse表示安全管理員權能集,Cau表示審計管理員權能集。

定義6?三權分離權能集。根據三權分離思想,將root權限拆分成下述3個權能集:

1)系統管理員權能集Csy

Csy管理與系統相關的資源,包括用戶身份管理、系統資源配置、系統加載和啟動、系統運行的異常處理[。

2)安全管理員權能集Cse

Cse制定系統安全策略,負責對系統中的主體、客體進行統一標記,對主體進行授權,配置一致的安全策略,并確保標記、授權和安全策略的數據完整性[。

3)審計管理員權能集Cau

Cau設置審計選項,對與安全有關的事件進行審計處理,包括監視系統的活動以及日志的處理,提供審計和監控功能,創建和維護受保護客體的訪問審計跟蹤記錄[。

4)各權能集之間相互隔離,當且僅當對任意a,b∈T(T={sy, se, au}),a≠b,有Ca?C,Cb?C,Ca∩Cb=?,其中C=Cse∪Csy∪Cau。即每個管理員所能訪問的權能集是絕對隔離的。

2.2 基于SELinux的三權分離策略模型

根據上述權能集的描述,下面基于SELinux建立一種三權分離策略模型,主要包括特權用戶、特權角色和源類型集定義,以及各特權用戶與對應的特權角色關聯和特權角色與對應的源類型集關聯。

圖3

991dc305f3cff6c6b15981192d5c9d9b.png

圖3

三權分離策略模型

定義7?定義3組源類型集,STsy,STse,STau滿足下列條件:

STsy={ STasy, STbsy, …};STse={ STase, STbse, …};STau={ STaau, STbau, …}

并且根據SELinux的TE模型和上述全能集的定義,可得到如下3組TE策略模型:

1) Psy=STsy×OPT×TT,且Psy?Csy (即系統管理員各源類型的許可權限是系統管理員權能集Csy的子集);

2) Pse=STse×OPT×TT,且Pse?Cse (即安全管理員各源類型的許可權限是安全管理員權能集Cse的子集);

3) Pau=STau×OPT×TT,且Pau?Cau (即審計管理員各源類型的許可權限是審計管理員權能集Cau的子集);

4) STsy集∩STse集=?,STse集∩STau集=?,STsy集∩STau集=?,每組源類型集合之間都不能相交。

定義8定義三權分離的用戶與角色關聯

user??root??role??sysadm_r, 將root系統管理員用戶與sysadm_r角色關聯;

user??secadm??role??secadm_r,將secadm安全管理員用戶與secadm_r角色關聯;

user??auditadm??role??auditadm_r,將auditadm審計管理員用戶與auditadm_r角色關聯。

定義9?三權分離的角色與源類型集關聯

role??sysadm_r??types??STsy={STasy, STbsy, … }

role??secadm_r??types??STse={STase, STbse, … }

role??auditadm_r??types STau={ STaau, STbau, … }

本定義基于SELinux的RBAC安全模型為每個角色關聯一組源類型集合,即:

sysadm_r關聯STsy集;secadm_r關聯STse集;auditadm_r關聯STau集。

3 三權分離的安全策略設計與實現

在定義了三權分離模型后,為了在SELinux中實現該模型,必須修改SELinux已有的安全策略庫,添加三權分離的安全策略。下文詳細闡述基于SELinux的三權分離安全策略的設計與實現。

3.1 三權分離的安全策略設計

圖4

75e2aaad451c13aa51d7f8007ddf3475.png

圖4

三權分離的安全策略設計

3.1.1 系統管理員策略設計

根據定義6~定義9的統管理員相關描述,系統管理員root關聯了角色sysadm_r,角色sysadm_r默認的源類型為sysadm_t,這個源類型允許轉換到與角色sysadm_r關聯的其他源類型,如

3.1.2 安全管理員策略設計

根據定義6~定義9中安全管理員相關描述,安全管理員secadm關聯了角色secadm_r,角色secadm_r默認的源類型為secadm_t,這個源類型允許轉換到與角色secadm_r關聯的其他源類型,如

3.1.3 審計管理員策略設計

根據定義6~定義9中審計管理員相關描述,審計管理員auditadm關聯了角色auditadm_r,角色auditadm_r默認的源類型為auditadm_t,這個源類型允許轉換到與角色auditadm_r關聯的其他源類型,如

3.2 三權分離的TE策略實現

上一節中已經描述了每個用戶角色所關聯的源類型,下面針對每個源類型按照前面所闡述的TE模型指定具體的安全許可規則。

3.2.1 系統管理員安全策略的實現

系統管理員擁有原root用戶的大部分權限,用來完成系統中日常的操作和維護,包括系統用戶賬戶的管理、網絡相關管理與操作、內核模塊加載、開啟和關閉系統、對文件的檔案備份和恢復、安裝或卸載文件系統等。以管理系統用戶賬戶為例,其源類型為useradd_t,系統管理員擁有添加用戶賬號的權限,即只有系統管理員可以執行useradd命令,因此需要在策略中按TE模型的描述給useradd_t源類型定義相應的許可權限。

allow??useradd_t??useradd_exec_t:??file {open??read??execute };

該allow規則定義了源類型useraddr_t對目標類型useradd_exec_t (表示useradd命令)的文件資源授予打開(open)、讀(read)和執行(execute)的權限。

3.2.2 安全管理員安全策略的實現

安全管理員是整個系統安全策略的制定者,負責制定生成安全策略,修改SELinux運行模式,裝載二進制安全策略,設置文件安全上下文等。以生成安全策略為例其源類型為checkpolicy_t,安全管理員擁有將策略規則源碼編譯成二進制策略文件的權限,即只有安全管理員可以執行checkpolicy命令,因此需要在策略中按TE模型的描述給checkpolicy_t源類型定義相應的許可權限。

allow checkpolicy_t??checkpolicy_exec_t:??file {open??read??execute };

該allow規則定義了,源類型checkpolicy_t對目標類型checkpolicy_exec_t (表示checkpolicy命令)授予打開(open)、讀(read)和執行(execute)的權限。

3.2.3 審計管理員安全策略的實現

審計管理員是系統的監督者,負責設置審計開關和審計閾值,啟動和關閉審計機制以及管理審計日志等。以auditadm_t源類型為例,只有審計管理員才能擁有查看審計日志的權限,在策略中按TE模型的描述給auditadm_t源類型定義相應的許可權限。

allow??auditadm_t??var_log_t:??file {open??read??getattr };

該allow規則定義了源類型auditadm_t對目標類型var_log_t (表示審計日志文件)授予打開(open)、讀(read)和獲取屬性(getattr)的權限。

4 三權分離實驗

4.1 實驗平臺介紹

實驗的硬件平臺為TQ2440(基于S3C2440A CPU)嵌入式開發板,軟件平臺為嵌入式Linux。Linux內核為Linux 2.6.30,Linux命令工具集為Busybox-1.22.0,安全策略由策略庫refpolicy-2.20090730[修改生成。

4.2 實驗原型的實現

根據上文描述的三權分離安全策略模型,基于refpolicy策略庫,在嵌入式Linux平臺上,借助于SELinux模塊實現了一個三權分離的實驗原型系統。該系統重點實現了三權分離的安全策略,定義3個特權角色及對應的3個SELinux特權用戶,并為每個用戶制定詳細的最小執行或訪問權限。禁止各用戶對其他用戶私有資源的訪問,最大化的限制用戶的權限,以提高系統的安全性。

4.3 三權分離功能測試

4.3.1 用戶角色關聯測試

系統管理員(root)關聯角色sysadm_r,且角色關聯sysadm_t源類型,如

圖5

596b9a4b72576b1fa9ee6c3c891a0e91.png

圖5

用戶角色關聯標識測試

4.3.2 審計管理員功能測試

根據三權分離的設計模型,審計日志只能由審計管理員進行訪問,而其他用戶無權進行讀操作。

圖6

877eed773fc3feb24f6ac733f1ed304e.png

圖6

三權分離功能測試

值得注意的是,如果當前以root權限登錄去執行審計操作,由于root用戶不具備對審計日志的訪問權限,因此該請求被拒絕,如

4.3.3 安全管理員功能測試

根據三權分離的設計模型,只有安全管理員有權修改SELinux安全模式,測試結果如

5 結束語

為了解決root權限過大給linux操作系統所帶來的安全隱患問題,本文基于SELinux的強制訪問控制技術,采用三權分離思想,建立了三權分離策略模型,實現了一個安全增強的Linux操作系統。即使特權用戶的密碼被惡意用戶獲取,也不會對系統造成很大的損害,從而將惡意攻擊對系統的危害降到最低。本文的三權分離思想將Linux系統的root用戶權限拆分為安全管理、系統管理、審計管理三種權限。然后定義了三權分離策略模型,并基于SELinux的安全策略庫設計并實現了一套三權分離的安全策略庫。最后,在嵌入式Linux平臺上,借助于SELinux的強制訪問控制技術實現了一個實驗原型系統,并對系統各項功能進行了多次測試。實驗結果表示,本文的研究工作能夠嚴格的限制每個用戶的權限,如只有審計管理員可以查看系統的審計日志,只有安全管理員可以對系統的安全策略進行管理等,從而有效解決了Linux系統由于root權限過大所帶來的系統危害和被攻擊的問題。本文的研究工作適合于任何Linux平臺,包括嵌入式設備和服務器,通過這種三權分離機制可以克服權力過于集中給系統帶來的危害,以提高Linux系統的安全性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453323.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453323.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453323.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

二叉樹、樹和有序樹的區別

樹:子樹沒有左右之分 二叉樹、有序樹:左右有序 二叉樹與有序樹:在只有一棵樹的情況下,二叉樹有左右之分、有序樹無左右之分 另外:二叉樹是有序的,可以為空或一個根節點以及兩個分別稱為左子樹和右子樹的互不相交的二叉…

高效程序員

軟件開發人員的作戰手冊 - 讓程序員活的久一點 1. 程序員的職業準則是:誠實(如實的報告你的狀態,風險和出現的問題),守信(承諾完成的任務就要按時完成),尊重(尊重給你的代…

PHP學習筆記1

1.什么是PHP? Hypertext Preprocessor(超文本預處理語言)。 是腳本語言。 是最流行的網站開發語言。 2.PHP能做什么? 可以生成動態頁面內容。 可以創建、打開、讀取、寫入、關閉服務器上的文件。 可以手機表單數據。 可以發送和接收cookies。&#xf…

Redis在windows下的配置

原文:Redis在windows下的配置 Redis在windows下的配置(在windows-64下安裝redis,請參考微軟redis的github:https://github.com/MSOpenTech/redis/releases)下面是windows32的配置 下載地址http://files.cnblogs.com/files/cuiweny…

linux磁盤符變化autofs,Linux基礎教程學習筆記之Autofs自動掛載

Linux基礎教程學習筆記之Autofs自動掛載Autofs自動掛載:yum -y install autofsvim /etc/auto.master 在文件中添加下面行/home/guests /etc/auto.tianyunvim /etc/auto.tianyun 子掛載點監控ldapuser0 -rw,sync classroom:/home/guests/ldapuser0systemctl enable …

二叉樹的遞歸遍歷(先序,中序,后序)

#include "stdio.h" #include "malloc.h" #define M 100 typedef struct node { /* 采用二叉鏈表存儲結構 */char data;struct node *lchild,*rchild; }BTnode; BTnode *create()/*利用先序遍歷的過程創建二叉樹*/ {BTnode *t;char ch;scanf("%c&quo…

DOM-動態操作心得

這個知識點都是之前看過的,就當是復習了 一、創建元素的三種方法 第一種: document.write() 識別標簽但會覆蓋之前內容第二種: 用元素自身的innerHTML方法 不識別標簽但可以不覆蓋之前內容 ul.innerHTML "<li></li>"; 第三種:利用DOM自身api創建元素 …

linux探索之旅pdf,【Linux探索之旅】第四部分第一課:壓縮文件,解壓無壓力

內容簡介1、第四部分第一課&#xff1a;壓縮文件&#xff0c;解壓無壓力2、第四部分第二課&#xff1a;SSH連接&#xff0c;安全快捷壓縮文件&#xff0c;解壓無壓力最近小編因為換工作&#xff0c;從南法搬到巴黎。折騰了很久。網絡一直用的是公共的無線網&#xff0c;信號不行…

遍歷二叉樹的全部方法(遞歸+非遞歸)

#include<iostream> #include<queue> #include<stack> using namespace std; //二叉樹結點的描述 typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; //左右孩子 }BiTNode,*BiTree; //按先序遍…

如何在本地搭建一個Android應用crashing跟蹤系統-ACRA

https://github.com/bboyfeiyu/android-tech-frontier/tree/master/others/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%9C%AC%E5%9C%B0%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AAAndroid%E5%BA%94%E7%94%A8crashing%E8%B7%9F%E8%B8%AA%E7%B3%BB%E7%BB%9F%EF%BC%8DACRA 如何在本地搭建一個Andr…

20165222第一周查漏補缺

一&#xff0c;第一章要點總結 1&#xff0c;java的特點&#xff1a;面向對象&#xff0c;動態&#xff0c;平臺無關。 2&#xff0c;對于帶包程序的編譯&#xff1a;注意javac -d 編譯到一個文件夾內&#xff0c;然后java -cp 文件夾名 包名.類名。 第一章是比較簡單的&#x…

學習中的十七條建議

作者&#xff1a;孤劍 對于一個自學的人來說&#xff0c;幾條規則當然是必要的了&#xff0c;以下是我自己的一些心得。 1。自信是你成功的第一要素&#xff1b; 2。用心去學&#xff0c;活學活用&#xff1b; 3。新手不要“好高騖遠”&#xff0c;老手不要“驕傲自大”&#x…

tp5 linux路由不跳轉,thinkphp5路由不生效一直跳到首頁的解決方法

自從用laravel框架后&#xff0c;好久沒用過thinkphp框架了&#xff0c;早期用的3.x系列&#xff0c;想熟悉一下thinkphp5&#xff0c;結果入坑了&#xff1b;路由配置一直不起作用&#xff0c;總是跳到首頁&#xff0c;折騰了好久&#xff0c;后來發現是nginx配置的問題&#…

stack堆棧簡介

stack堆棧簡介 堆棧是一個線性表&#xff0c;插入和刪除只在表的一端進行。這一端稱為棧頂(Stack Top)&#xff0c;另一端則為棧底(Stack Bottom)。堆棧的元素插入稱為入棧&#xff0c;元素的刪除稱為出棧。由于元素的入棧和出棧總在棧頂進行&#xff0c;因此&#xff0c;堆棧是…

一份從 0 到 1 的 Java 項目實踐清單

2019獨角獸企業重金招聘Python工程師標準>>> 看了一篇文章&#xff0c;感覺還可以&#xff0c;就給大家共享一下&#xff1a; 對于著手一個項目的時候&#xff0c;要從以下入手&#xff08;即項目清單&#xff09;&#xff1a; 1. 項目規劃 1.1 首先&#xff0c;你得…

JWT 簡介

JWT是一種用于雙方之間傳遞安全信息的簡潔的、URL安全的表述性聲明規范。JWT作為一個開放的標準&#xff08;RFC 7519&#xff09;&#xff0c;定義了一種簡潔的&#xff0c;自包含的方法用于通信雙方之間以Json對象的形式安全的傳遞信息。因為數字簽名的存在&#xff0c;這些信…

FFMPEG的詳細資料可以在它的官方網站上找到

請看官網的文檔欄目: http://ffmpeg.mplayerhq.hu/documentation.html FFmpeg System Documentation Frequently Asked QuestionsFFmpeg program documentationffserver documentationffplay documentationvideo hook documentationsample ffserver configuration fileFFmpeg A…

空指針入棧問題

空指針和數據元素一樣能夠進棧。并且如果棧原來為空&#xff0c;壓入空指針后棧就不會為空了。空指針一旦被賦予指針&#xff0c;如果是在32位機上則占四個字節。只不過是沒有指向堆內存中的任何數據。而空指針已經壓進棧了&#xff0c;不加以釋放就一直存在。

arm linux 中斷 分析,armlinux中斷異常的處理分析.pdf

基于 ARM Linux 中斷、異常的處理分析本文是基于ARM S3C2410X 系統的Linux 2.6 中斷、異常和系統調用的處理分析。主要有以下幾個部分&#xff1a;1. ARM 的硬件中斷機制2. Linux 2.6 對 ARM 中斷向量表的初始化3. Linux 2.6 對 ARM 中斷、異常的處理(從匯編-->C 語言函數&a…

(數據科學學習手札03)Python與R在隨機數生成上的異同

隨機數的使用是很多算法的關鍵步驟&#xff0c;例如蒙特卡洛法、遺傳算法中的輪盤賭法的過程&#xff0c;因此對于任意一種語言&#xff0c;掌握其各類型隨機數生成的方法至關重要&#xff0c;Python與R在隨機數底層生成上都依靠梅森旋轉&#xff08;twister&#xff09;來生成…