亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

Linux系統(tǒng)中的SELinux訪問控制功能

添加時(shí)間:2016-4-12 21:32:26  添加: 思海網(wǎng)絡(luò) 
SELinux(Security-Enhanced Linux) 是美國(guó)國(guó)家安全局(NSA)對(duì)于強(qiáng)制訪問控制的實(shí)現(xiàn),是 Linux歷史上最杰出的新安全子系統(tǒng)。NSA是在Linux社區(qū)的幫助下開發(fā)了一種訪問控制體系,在這種訪問控制體系的限制下,進(jìn)程只能訪問那些在他的任務(wù)中所需要文件。SELinux 默認(rèn)安裝在 Fedora 和 Red Hat Enterprise Linux 上,也可以作為其他發(fā)行版上容易安裝的包得到。
SELinux 是 2.6 版本的 Linux 內(nèi)核中提供的強(qiáng)制訪問控制(MAC)系統(tǒng)。對(duì)于目前可用的 Linux安全模塊來說,SELinux 是功能最全面,而且測(cè)試最充分的,它是在 20 年的 MAC 研究基礎(chǔ)上建立的。SELinux 在類型強(qiáng)制服務(wù)器中合并了多級(jí)安全性或一種可選的多類策略,并采用了基于角色的訪問控制概念。[1] 
大部分使用 SELinux 的人使用的都是 SELinux 就緒的發(fā)行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它們都是在內(nèi)核中啟用 SELinux 的,并且提供一個(gè)可定制的安全策略,還提供很多用戶層的庫(kù)和工具,它們都可以使用 SELinux 的功能。
SELinux是一種基于 域-類型 模型(domain-type)的強(qiáng)制訪問控制(MAC)安全系統(tǒng),它由NSA編寫并設(shè)計(jì)成內(nèi)核模塊包含到內(nèi)核中,相應(yīng)的某些安全相關(guān)的應(yīng)用也被打了SELinux的補(bǔ)丁,最后還有一個(gè)相應(yīng)的安全策略。任何程序?qū)ζ滟Y源享有完全的控制權(quán)。假設(shè)某個(gè)程序打算把含有潛在重要信息的文件扔到/tmp目錄下,那么在DAC情況下沒人能阻止他。SELinux提供了比傳統(tǒng)的UNⅨ權(quán)限更好的訪問控制。

1. 簡(jiǎn)介
SELinux帶給Linux的主要價(jià)值是:提供了一個(gè)靈活的,可配置的MAC機(jī)制。

Security-Enhanced Linux (SELinux)由以下兩部分組成:

1) Kernel SELinux模塊(/kernel/security/selinux)

2) 用戶態(tài)工具

SELinux是一個(gè)安全體系結(jié)構(gòu),它通過LSM(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社區(qū)的聯(lián)合項(xiàng)目。

SELinux提供了一種靈活的強(qiáng)制訪問控制(MAC)系統(tǒng),且內(nèi)嵌于Linux Kernel中。SELinux定義了系統(tǒng)中每個(gè)【用戶】、【進(jìn)程】、【應(yīng)用】和【文件】的訪問和轉(zhuǎn)變的權(quán)限,然后它使用一個(gè)安全策略來控制這些實(shí)體(用戶、進(jìn)程、應(yīng)用和文件)之間的交互,安全策略指定如何嚴(yán)格或?qū)捤傻剡M(jìn)行檢查。

SELinux對(duì)系統(tǒng)用戶(system users)是透明的,只有系統(tǒng)管理員需要考慮在他的服務(wù)器中如何制定嚴(yán)格的策略。策略可以根據(jù)需要是嚴(yán)格的或?qū)捤傻摹?/div>

只有同時(shí)滿足了【標(biāo)準(zhǔn)Linux訪問控制】和【SELinux訪問控制】時(shí),主體才能訪問客體。

1.1 DAC與MAC的關(guān)鍵區(qū)別(root用戶)
安 全增強(qiáng)型Linux(SELinux)開始是由NSA(國(guó)家安全局)啟動(dòng)并加入到Linux系統(tǒng)中的一套核心組件及用戶工具,可以讓應(yīng)用程序運(yùn)行在其所需的最低權(quán)限上。未 經(jīng)修改過的Linux系統(tǒng)是使用自主訪問控制的,用戶可以自己請(qǐng)求更高的權(quán)限,由此惡意軟件幾乎可以訪問任何它想訪問的文件,而如果你授予其root權(quán) 限,那它就無所不能了。

在SELinux中沒有root這個(gè)概念,安全策略是由管理員來定義的,任何軟件都無法取代它。這意味著那些潛在的惡意軟件所能造成的損害可以被控制在最小。一般情況下只有非常注重?cái)?shù)據(jù)安全的企業(yè)級(jí)用戶才會(huì)使用SELinux。  

操作系統(tǒng)有兩類訪問控制:自主訪問控制(DAC)和強(qiáng)制訪問控制(MAC)。標(biāo)準(zhǔn)Linux安全是一種DAC,SELinux為L(zhǎng)inux增加了一個(gè)靈活的和可配置的的MAC。

所有DAC機(jī)制都有一個(gè)共同的弱點(diǎn),就是它們不能識(shí)別自然人與計(jì)算機(jī)程序之間最基本的區(qū)別。簡(jiǎn)單點(diǎn)說就是,如果一個(gè)用戶被授權(quán)允許訪問,意味著程序也被授權(quán)訪問,如果程序被授權(quán)訪問,那么惡意程序也將有同樣的訪問權(quán)。 DAC最根本的弱點(diǎn)是主體容易受到多種多樣的惡意軟件的攻擊,MAC就是避免這些攻擊的出路,大多數(shù)MAC特性組成了多層安全模型。

SELinux實(shí)現(xiàn)了一個(gè)更靈活的MAC形式,叫做類型強(qiáng)制(Type Enforcement)和一個(gè)非強(qiáng)制的多層安全形式(Multi-Level Security)。

在Android4.2中,SELinux是個(gè)可選項(xiàng),谷歌并沒有直接取消root權(quán)限或其他功能。這是一個(gè)為企業(yè)級(jí)用戶或是對(duì)隱私數(shù)據(jù)極為重視的用戶提供的選項(xiàng),普通消費(fèi)者則完全可以關(guān)閉它。   


2. SELinux的運(yùn)行機(jī)制
SELinux決策過程如下圖所示:




當(dāng)一個(gè)subject(如: 一個(gè)應(yīng)用)試圖訪問一個(gè)object(如:一個(gè)文件),Kernel中的策略執(zhí)行服務(wù)器將檢查AVC (Access Vector Cache), 在AVC中,subject和object的權(quán)限被緩存(cached)。如果基于AVC中的數(shù)據(jù)不能做出決定,則請(qǐng)求安全服務(wù)器,安全服務(wù)器在一個(gè)矩陣中查找“應(yīng)用+文件”的安全環(huán)境。然后根據(jù)查詢結(jié)果允許或拒絕訪問,拒絕消息細(xì)節(jié)位于/var/log/messages中。

3. SELinux偽文件系統(tǒng)
/selinux/偽文件系統(tǒng)kernel子系統(tǒng)通常使用的命令,它類似于/proc/偽文件系統(tǒng)。系統(tǒng)管理員和用戶不需要操作這部分。/selinux/目錄舉例如下:



復(fù)制代碼代碼如下:
-rw-rw-rw- 1 root root 0 Sep 22 13:14 access 
dr-xr-xr-x 1 root root 0 Sep 22 13:14 booleans 
--w------- 1 root root 0 Sep 22 13:14 commit_pending_bools 
-rw-rw-rw- 1 root root 0 Sep 22 13:14 context 
-rw-rw-rw- 1 root root 0 Sep 22 13:14 create 
--w------- 1 root root 0 Sep 22 13:14 disable 
-rw-r--r-- 1 root root 0 Sep 22 13:14 enforce 
-rw------- 1 root root 0 Sep 22 13:14 load 
-r--r--r-- 1 root root 0 Sep 22 13:14 mls 
-r--r--r-- 1 root root 0 Sep 22 13:14 policyvers 
-rw-rw-rw- 1 root root 0 Sep 22 13:14 relabel 
-rw-rw-rw- 1 root root 0 Sep 22 13:14 user 

如cat enforce其值可能如下:
1: enforcing mode 

0: permissive mode

4. SELinux配置文件
SELinux配置文件(configuration)或策略文件(policy)位于/etc/目錄下。

4.1 /etc/sysconfig/selinux配置文件
/etc/sysconfig/selinux是一個(gè)符號(hào)鏈接,真正的配置文件為:/etc/selinux/config 

配置SELinux有如下兩種方式:

1) 使用配置工具:Security Level Configuration Tool (system-config-selinux)

2) 編輯配置文件 (/etc/sysconfig/selinux).

/etc/sysconfig/selinux中包含如下配置選項(xiàng):

1) 打開或關(guān)閉SELinux

2) 設(shè)置系統(tǒng)執(zhí)行哪一個(gè)策略(policy)

3) 設(shè)置系統(tǒng)如何執(zhí)行策略(policy)

4.2 配置文件選項(xiàng)
4.2.1 SELINUX
SELINUX=enforcing|permissive|disabled —定義SELinux的高級(jí)狀態(tài)
• enforcing — The SELinux security policy is enforced.
• permissive — The SELinux system prints warnings but does not enforce policy.
• disabled — SELinux is fully disabled. SELinux hooks are disengaged from the kernel and the pseudo-file system is unregistered.

4.2.2 SELINUXTYPE(安全策略)
SELINUXTYPE=targeted|strict — 指定SELinux執(zhí)行哪一個(gè)策略
• targeted — 只有目標(biāo)網(wǎng)絡(luò)daemons保護(hù)。每個(gè)daemon是否執(zhí)行策略,可通過system-config-selinux進(jìn)行配置。保護(hù)常見的網(wǎng)絡(luò)服務(wù),為SELinux默認(rèn)值。
可使用如下工具設(shè)置每個(gè)daemon的布爾值:

1) getsebool -a: 列出SELinux的所有布爾值

2) setsebool: 設(shè)置SELinux布爾值,如:setsebool -P dhcpd_disable_trans=0,-P表示即使用reboot之后,仍然有效。

• strict — 對(duì)SELinux執(zhí)行完全的保護(hù)。為所有的subjects和objects定義安全環(huán)境,且每一個(gè)Action由策略執(zhí)行服務(wù)器處理。提供符合Role-based-Access Control(RBAC)之policy,具備完整的保護(hù)功能,保護(hù)網(wǎng)絡(luò)服務(wù)、一般指令及應(yīng)用程序。

4.2.3 SETLOCALDEFS
SETLOCALDEFS=0|1 — 控制如何設(shè)置本地定義(users and booleans)。
• 1:這些定義由load_policy控制,load_policy來自于文件/etc/selinux/<policyname>

• 0:由semanage控制

4.3 /etc/selinux/目錄
/etc/selinux/是存放所有策略文件和主要配置文件的目錄。其例子如下:   



復(fù)制代碼代碼如下:
-rw-r--r-- 1 root root 448 Sep 22 17:34 config 
drwxr-xr-x 5 root root 4096 Sep 22 17:27 strict 
drwxr-xr-x 5 root root 4096 Sep 22 17:28 targeted 

5. SELinux工具
1) /usr/sbin/setenforce — 修改SELinux運(yùn)行模式,例子如下:

• setenforce 1 — SELinux以強(qiáng)制(enforcing)模式運(yùn)行
• setenforce 0 — SELinux以警告(permissive)模式運(yùn)行

為了關(guān)閉SELinux,你可以修改配置文件:/etc/selinux/config或/etc/sysconfig/selinux


2) /usr/sbin/sestatus -v — 顯示系統(tǒng)的詳細(xì)狀態(tài),例子如下:

SELinux status:                 enabled  
SELinuxfs mount:                /selinux  
Current mode:                   enforcing  
Mode from config file:          enforcing  
Policy version:                 21  
Policy from config file:        targeted  

Process contexts:  
Current context:                user_u:system_r:unconfined_t:s0  
Init context:                   system_u:system_r:init_t:s0  
/sbin/mingetty                  system_u:system_r:getty_t:s0  

3) /usr/bin/newrole — 在一個(gè)新的context或role中運(yùn)行一個(gè)新的shell
4) /sbin/restorecon — 通過為適當(dāng)?shù)奈募虬踩h(huán)境標(biāo)記擴(kuò)展屬性,設(shè)置一個(gè)或多個(gè)文件的安全環(huán)境

5) /sbin/fixfiles — 檢查或校正文件系統(tǒng)中的安全環(huán)境數(shù)據(jù)庫(kù)

6) getsebool — getsebool -a:查看所有布爾值

7) setsebool — 參數(shù)-P,永久性設(shè)置

8) chcon 修改文件、目錄的安全上下文
chcon –u[user]
chcon –r[role]
chcon –t[type] 
chcon –R  遞歸


6. 類型強(qiáng)制的安全上下文(Type Enforcement Security Context)
安全上下文是一個(gè)簡(jiǎn)單的、一致的訪問控制屬性,在SELinux中,類型標(biāo)識(shí)符是安全上下文的主要組成部分,由于歷史原因,一個(gè)進(jìn)程的類型通常被稱為一個(gè)域(domain),"域"和"域類型"意思都一樣,我們不必苛刻地去區(qū)分或避免使用術(shù)語域,通常,我們認(rèn)為【域】、【域類型】、【主體類型】和【進(jìn)程類型】都是同義的,即都是安全上下文中的“TYPE”。

SELinux對(duì)系統(tǒng)中的許多命令做了修改,通過添加一個(gè)-Z選項(xiàng)顯示客體和主體的安全上下文。

1) 系統(tǒng)根據(jù)PAM子系統(tǒng)中的pam_selinux.so模塊設(shè)定登錄者運(yùn)行程序的安全上下文;
2) 文件的Security Contex規(guī)則如下:

• rpm包安裝的:會(huì)根據(jù)rpm包內(nèi)記錄來生成安全上下文;

• 手動(dòng)創(chuàng)建的文件:會(huì)根據(jù)policy中規(guī)定的來設(shè)置安全上下文;

• cp:會(huì)重新生成安全上下文;

• mv:安全上下文則不變。

3) id -Z 
顯示了你的shell的安全上下文;
4) ps -Z

檢查進(jìn)程的安全上下文;
5) ls -Z
檢查文件、目錄的安全上下文;

6.1 安全上下文格式
所有操作系統(tǒng)訪問控制都是以關(guān)聯(lián)的客體和主體的某種類型的訪問控制屬性為基礎(chǔ)的。在SELinux中,訪問控制屬性叫做安全上下文。所有客體(文件、進(jìn)程間通訊通道、套接字、網(wǎng)絡(luò)主機(jī)等)和主體(進(jìn)程)都有與其關(guān)聯(lián)的安全上下文,一個(gè)安全上下文由三部分組成:用戶、角色和類型標(biāo)識(shí)符。常常用下面的格式指定或顯示安全上下文:

USER:ROLE:TYPE[LEVEL[:CATEGORY]]

安全上下文中的用戶和角色標(biāo)識(shí)符除了對(duì)強(qiáng)制有一點(diǎn)約束之外對(duì)類型強(qiáng)制訪問控制策略沒什么影響,對(duì)于進(jìn)程,用戶和角色標(biāo)識(shí)符顯得更有意義,因?yàn)樗鼈兪怯糜诳刂祁愋秃陀脩魳?biāo)識(shí)符的聯(lián)合體,這樣就會(huì)與Linux用戶賬號(hào)關(guān)聯(lián)起來;然而,對(duì)于客體,用戶和角色標(biāo)識(shí)符幾乎很少使用,為了規(guī)范管理,客體的角色常常是object_r,客體的用戶常常是創(chuàng)建客體的進(jìn)程的用戶標(biāo)識(shí)符,它們?cè)谠L問控制上沒什么作用。

標(biāo)準(zhǔn)Linux安全中的用戶ID和安全上下文中的用戶標(biāo)識(shí)符之間的區(qū)別,就技術(shù)而論,它們是正交標(biāo)識(shí)符,分別用于標(biāo)準(zhǔn)的和安全增強(qiáng)的訪問控制機(jī)制,這兩者之間的任一相互關(guān)聯(lián)都是通過登陸進(jìn)程按照規(guī)范嚴(yán)格規(guī)定的,而不是通過SELinux策略直接強(qiáng)制實(shí)施的。

6.1.1 USER
1) user identity:類似Linux系統(tǒng)中的UID,提供身份識(shí)別,用來記錄身份;安全上下文的一部分;
2) 三種常見的 user:

• user_u :普通用戶登錄系統(tǒng)后的預(yù)設(shè);
• system_u :開機(jī)過程中系統(tǒng)進(jìn)程的預(yù)設(shè);
• root :root 登錄后的預(yù)設(shè);
3) 在 targeted policy 中 users 不是很重要;
4) 在strict policy 中比較重要,所有預(yù)設(shè)的 SELinux Users 都是以 “_u” 結(jié)尾的,root 除外。

6.1.2 ROLE
1) 文件、目錄和設(shè)備的role:通常是 object_r;
2) 程序的role:通常是 system_r;
3) 用戶的role:targeted policy為system_r; strict policy為sysadm_r、staff_r、user_r;用戶的role,類似系統(tǒng)中的GID,不同角色具備不同的的權(quán)限;用戶可以具備多個(gè)role;但是同一時(shí)間內(nèi)只能使用一個(gè)role;        

4) 使用基于RBAC(Roles Based Access Control) 的strict和mls策略中,用來存儲(chǔ)角色信息

6.1.3 TYPE
1) type:用來將主體(subject)和客體(object)劃分為不同的組,給每個(gè)主體和系統(tǒng)中的客體定義了一個(gè)類型;為進(jìn)程運(yùn)行提供最低的權(quán)限環(huán)境;
2) 當(dāng)一個(gè)類型與執(zhí)行中的進(jìn)程相關(guān)聯(lián)時(shí),其type也稱為domain;
3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心臟,預(yù)設(shè)值以_t結(jié)尾;

LEVEL和CATEGORY:定義層次和分類,只用于mls策略中
• LEVEL:代表安全等級(jí),目前已經(jīng)定義的安全等級(jí)為s0-s15,等級(jí)越來越高
• CATEGORY:代表分類,目前已經(jīng)定義的分類為c0-c1023

6.2 對(duì)比SELinux和標(biāo)準(zhǔn)Linux的訪問控制屬性
在標(biāo)準(zhǔn)Linux中,主體的訪問控制屬性是與進(jìn)程通過在內(nèi)核中的進(jìn)程結(jié)構(gòu)關(guān)聯(lián)的真實(shí)有效的用戶和組ID,這些屬性通過內(nèi)核利用大量工具進(jìn)行保護(hù),包括登陸進(jìn)程和setuid程序,對(duì)于客體(如文件),文件的inode包括一套訪問模式位、文件用戶和組ID。以前的訪問控制基于讀/寫/執(zhí)行這三個(gè)控制位,文件所有者、文件所有者所屬組、其他人各一套。

在SELinux中,訪問控制屬性總是安全上下文三人組(用戶:角色:類型)形式,所有客體和主體都有一個(gè)關(guān)聯(lián)的安全上下文。需要特別指出的是,因?yàn)镾ELinux的主要訪問控制特性是類型強(qiáng)制,安全上下文中的類型標(biāo)識(shí)符決定了訪問權(quán)。

注意:SELinux是在標(biāo)準(zhǔn)Linux基礎(chǔ)上增加了類型強(qiáng)制(TE: Type Enforcement),這就意味著標(biāo)準(zhǔn)Linux和SELinux訪問控制都必須滿足先要能訪問一個(gè)客體,例如:如果我們對(duì)某個(gè)文件有SELinux寫入權(quán)限,但我們沒有該文件的w許可,那么我們也不能寫該文件。下表總結(jié)了標(biāo)準(zhǔn)Linux和SELinux之間訪問控制屬性的對(duì)比:    


  標(biāo)準(zhǔn)Linux SELInux 
進(jìn)程安全屬性 真實(shí)有效的用戶和組ID 安全上下文 
客體安全屬性 訪問模式、文件用戶和組ID 安全上下文 
訪問控制基礎(chǔ) 進(jìn)程用戶/組ID和文件的訪問模式,
此訪問模式基于文件的用戶/組ID 在進(jìn)程類型和文件類型
之間允許的許可 

6.3 小結(jié)
1) 系統(tǒng)中每個(gè)文件、目錄、網(wǎng)絡(luò)端口等都被指定一個(gè)安全上下文,policy 則給出各安全上下文之間的作用規(guī)則。
2) SELinux根據(jù)policy及security context規(guī)則來決定存取行為是否可執(zhí)行;
3) Subject(主體):系統(tǒng)進(jìn)程,比如/usr/sbin/httpd;
4) Object(客體):被存取的項(xiàng)目,比如File、Directory、IP、Socket等;

7. 類型強(qiáng)制(TE)訪問控制
在SELinux中,所有訪問都必須明確授權(quán),SELinux默認(rèn)不允許任何訪問,不管Linux用戶/組ID是什么。這就意味著在SELinux中,沒有默認(rèn)的超級(jí)用戶了,與標(biāo)準(zhǔn)Linux中的root不一樣,通過指定主體類型(即域)和客體類型使用allow規(guī)則授予訪問權(quán)限,allow規(guī)則由四部分組成:
• 源類型(Source type(s) ) 通常是嘗試訪問的進(jìn)程的域類型
• 目標(biāo)類型(Target type(s) ) 被進(jìn)程訪問的客體的類型
• 客體類別(Object class(es)) 指定允許訪問的客體的類型
• 許可(Permission(s)) 象征目標(biāo)類型允許源類型訪問客體類型的訪問種類
舉例如下:



復(fù)制代碼代碼如下:
allow user_t bin_t : file {read execute getattr}; 

這個(gè)例子顯示了TE allow規(guī)則的基礎(chǔ)語法,這個(gè)規(guī)則包含了兩個(gè)類型標(biāo)識(shí)符:源類型(或主體類型或域)user_t,目標(biāo)類型(或客體類型)bin_t。標(biāo)識(shí)符file是定義在策略中的客體類別名稱(在這里,表示一個(gè)普通的文件),大括號(hào)中包括的許可是文件客體類別有效許可的一個(gè)子集,這個(gè)規(guī)則解釋如下:
擁有域類型user_t的進(jìn)程可以讀/執(zhí)行或獲取具有bin_t類型的文件客體的屬性。

SELinux allow規(guī)則如之前的例子在SELinux中實(shí)際上都是授予訪問權(quán)的,真正的挑戰(zhàn)是如何保證數(shù)以萬計(jì)的訪問正確授權(quán),只授予必須的權(quán)限,實(shí)現(xiàn)盡可能的安全。

7.1 標(biāo)準(zhǔn)Linux安全中的setuid程序
精通用戶joe想安全地修改現(xiàn)有的密碼問題,Linux解決這個(gè)問題的方法是通過給passwd賦一個(gè)setuid值,使其執(zhí)行時(shí)具有root權(quán)限,如果你在一個(gè)普通Linux系統(tǒng)上列出密碼文件,你看到的會(huì)是:



復(fù)制代碼代碼如下:
# ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 41292 Sep 7 2012 /usr/bin/passwd 

這里注意兩件事,第一個(gè)是在所有者權(quán)限的x位置被設(shè)置為s了,這就是所謂的setuid位,意思是任何執(zhí)行這個(gè)文件的進(jìn)程,它的有效UID(即用戶ID)將會(huì)被改為文件所有者。這里,root是文件所有者,因此當(dāng)執(zhí)行密碼程序時(shí)實(shí)際上將會(huì)以root用戶的ID運(yùn)行。其執(zhí)行過程如下圖所示:




從上面的分析中可以看出,passwd以root權(quán)限的身份運(yùn)行, 它可以訪問系統(tǒng)的任何資源,這給系統(tǒng)帶來了安全問題,其實(shí)它只需要訪問shadow及其相關(guān)的文件就可以了。而且shadow只需要接受passwd的訪問即可。這在標(biāo)準(zhǔn)Linux中是無法做到的,而TE(類型強(qiáng)制)可實(shí)現(xiàn)此功能。

8. 基于角色的訪問控制
SELinux也提供了一種基于角色的訪問控制(RBAC),SELinux的RBAC特性是依靠類型強(qiáng)制建立的,SELinux中的訪問控制主要是通過類型實(shí)現(xiàn)的,角色基于進(jìn)程安全上下文中的角色標(biāo)識(shí)符限制進(jìn)程可以轉(zhuǎn)變的類型,如此,策略編寫器可以創(chuàng)建一個(gè)角色,允許它轉(zhuǎn)變?yōu)橐惶子蝾愋停僭O(shè)類型強(qiáng)制規(guī)則允許轉(zhuǎn)變),從而定義角色的限制。
9. SELinux中的多級(jí)安全(Multi-Level Security)
類型強(qiáng)制(Type Enforcement)無疑是SELinux引入的最重要的強(qiáng)制訪問控制(MAC)機(jī)制,然而,在某些情況下,主要是保密控制應(yīng)用程序的一個(gè)子集,傳統(tǒng)的多級(jí)安全(MLS)MAC與類型強(qiáng)制一起使用顯得更有價(jià)值,在這些情況下,SELinux總是包括某種格式的MLS功能,MLS特性是可選的,在SELinux的兩個(gè)MAC機(jī)制中,它通常不是最重要的那個(gè),對(duì)大多數(shù)安全應(yīng)用程序而言,包括許多非保密數(shù)據(jù)應(yīng)用程序,類型強(qiáng)制是最適合的安全增強(qiáng)的機(jī)制,盡管如此,MLS對(duì)部分應(yīng)用程序還是增強(qiáng)了安全性。

在大多數(shù)SELinux策略中,敏感度(s0,s1,...)和范疇(c0,c1,...)使用通配名,將它留給用戶空間程序和程序庫(kù),以指定有意義的用戶名。(例如:s0可能與UNCLASSIFIED 關(guān)聯(lián),s1可能與SECRET關(guān)聯(lián))
為了支持MLS,安全上下文被擴(kuò)展了,包括了安全級(jí)別,如:



復(fù)制代碼代碼如下:
user:role:type:sensitivity[:category,...] [-sensitivity[:category,...]] 

例子如下所示:


復(fù)制代碼代碼如下:
root@luohj-virtual-machine:~# ps -aZ 
LABEL PID TTY TIME CMD 
unconfined_u:system_r:insmod_t:s0-s0:c0.c255 4940 pts/0 00:00:00 passwd 

注意MLS安全上下文至少必須有一個(gè)安全級(jí)別(它由單個(gè)敏感度和0個(gè)或多個(gè)范疇組成),但可以包括兩個(gè)安全級(jí)別,這兩個(gè)安全級(jí)別分別被叫做低(或進(jìn)程趨勢(shì))和高(或進(jìn)程間隙),如果高安全級(jí)別丟失,它會(huì)被認(rèn)為與低安全級(jí)別的值是相同的(最常見的情況),實(shí)際上,對(duì)于客體和進(jìn)程而言,低和高安全級(jí)別通常都是相同的,通常用于進(jìn)程的級(jí)別范圍被認(rèn)為是受信任的主體(即進(jìn)程信任降級(jí)信息)或多層客體,如一個(gè)目錄,它又包括了不同安全級(jí)別的客體。為了使描述簡(jiǎn)單,假設(shè)所有的進(jìn)程和客體都只有一個(gè)安全級(jí)別。

10. 策略分析工具apol
apol(即analyze policy【分析策略】)工具是一個(gè)成熟的SELinux策略分析工具,它位于setools工具包中。使用它打開policy.xx文件即可分析所有的相關(guān)策略。xx為策略編譯器(checkpolicy)的版本號(hào)。




11. 小結(jié)
SELinux訪問控制是基于與所有系統(tǒng)資源(包括進(jìn)程)關(guān)聯(lián)的安全上下文的,安全上下文包括三個(gè)組件:用戶、角色和類型標(biāo)識(shí)符。類型標(biāo)識(shí)符是訪問控制的主要基礎(chǔ)。

在SELinux中,訪問控制的主要特性是類型強(qiáng)制,在主體(即進(jìn)程)與客體之間通過指定allow規(guī)則(主體的類型【也叫做域類型】是源,客體的類型是目標(biāo))進(jìn)行訪問授權(quán),訪問被授予特定的客體類別,為每個(gè)客體類別設(shè)置細(xì)粒度的許可。

類型強(qiáng)制的一個(gè)關(guān)鍵優(yōu)勢(shì)是它可以控制哪個(gè)程序可能運(yùn)行在給定的域類型上,因此,它允許對(duì)單個(gè)程序進(jìn)行訪問控制(比起用戶級(jí)的安全控制要安全得多了),使程序進(jìn)入另一個(gè)域(即以一個(gè)給定的進(jìn)程類型運(yùn)行)叫做域轉(zhuǎn)變,它是通過SELinux的allow規(guī)則緊密控制的,SELinux也允許通過type_transition 文件使域轉(zhuǎn)變自動(dòng)發(fā)生。

SELinux在訪問控制安全上下文中不直接使用角色標(biāo)識(shí)符,相反,所有的訪問都是基于類型的,角色用于關(guān)聯(lián)允許的域類型,這樣可以設(shè)置類型強(qiáng)制允許的功能組合到一起,將用戶作為一個(gè)角色進(jìn)行認(rèn)證。

SELinux提供了一個(gè)可選的MLS訪問控制機(jī)制,它提供了更多的訪問限制,MLS特性依靠TE機(jī)制建立起來的,MLS擴(kuò)展了安全上下文的內(nèi)容,包括了一個(gè)當(dāng)前的(或低)安全級(jí)別和一個(gè)可選的高安全級(jí)別。

關(guān)鍵字:Linux、系統(tǒng)、SELinux
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站