佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > SELINUX工作原理詳解

SELINUX工作原理詳解

熱門標(biāo)簽:網(wǎng)站建設(shè) 阿里云 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 檢查注冊(cè)表項(xiàng) 美圖手機(jī) 硅谷的囚徒呼叫中心 使用U盤裝系統(tǒng) 智能手機(jī)

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),它通過(guò)LSM(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社區(qū)的聯(lián)合項(xiàng)目。

SELinux提供了一種靈活的強(qiáng)制訪問(wèn)控制(MAC)系統(tǒng),且內(nèi)嵌于Linux Kernel中。SELinux定義了系統(tǒng)中每個(gè)【用戶】、【進(jìn)程】、【應(yīng)用】和【文件】的訪問(wèn)和轉(zhuǎn)變的權(quán)限,然后它使用一個(gè)安全策略來(lái)控制這些實(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ū)捤傻摹?/p>

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

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)修改過(guò)的Linux系統(tǒng)是使用自主訪問(wèn)控制的,用戶可以自己請(qǐng)求更高的權(quán)限,由此惡意軟件幾乎可以訪問(wèn)任何它想訪問(wèn)的文件,而如果你授予其root權(quán) 限,那它就無(wú)所不能了。

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

操作系統(tǒng)有兩類訪問(wèn)控制:自主訪問(wèn)控制(DAC)和強(qiáng)制訪問(wèn)控制(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)說(shuō)就是,如果一個(gè)用戶被授權(quán)允許訪問(wèn),意味著程序也被授權(quán)訪問(wèn),如果程序被授權(quán)訪問(wèn),那么惡意程序也將有同樣的訪問(wè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),谷歌并沒(méi)有直接取消root權(quán)限或其他功能。這是一個(gè)為企業(yè)級(jí)用戶或是對(duì)隱私數(shù)據(jù)極為重視的用戶提供的選項(xiàng),普通消費(fèi)者則完全可以關(guān)閉它。 

2. SELinux的運(yùn)行機(jī)制

    SELinux決策過(guò)程如下圖所示:

      當(dāng)一個(gè)subject(如: 一個(gè)應(yīng)用)試圖訪問(wèn)一個(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é)果允許或拒絕訪問(wèn),拒絕消息細(xì)節(jié)位于/var/log/messages中。

3. SELinux偽文件系統(tǒng)

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

-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í)行策略,可通過(guò)system-config-selinux進(jìn)行配置。保護(hù)常見(jiàn)的網(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來(lái)自于文件/etc/selinux/<policyname>
  • 0:由semanage控制

4.3 /etc/selinux/目錄

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

-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 — 通過(guò)為適當(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)單的、一致的訪問(wèn)控制屬性,在SELinux中,類型標(biāo)識(shí)符是安全上下文的主要組成部分,由于歷史原因,一個(gè)進(jìn)程的類型通常被稱為一個(gè)域(domain),"域"和"域類型"意思都一樣,我們不必苛刻地去區(qū)分或避免使用術(shù)語(yǔ)域,通常,我們認(rèn)為【域】、【域類型】、【主體類型】和【進(jìn)程類型】都是同義的,即都是安全上下文中的“TYPE”。

    SELinux對(duì)系統(tǒng)中的許多命令做了修改,通過(guò)添加一個(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)記錄來(lái)生成安全上下文;
  • 手動(dòng)創(chuàng)建的文件:會(huì)根據(jù)policy中規(guī)定的來(lái)設(shè)置安全上下文;
  •  cp:會(huì)重新生成安全上下文;
  • mv:安全上下文則不變。

    3) id -Z  

        顯示了你的shell的安全上下文; 

    4) ps -Z

        檢查進(jìn)程的安全上下文; 

    5) ls -Z 

        檢查文件、目錄的安全上下文;

6.1 安全上下文格式

      所有操作系統(tǒng)訪問(wèn)控制都是以關(guān)聯(lián)的客體和主體的某種類型的訪問(wèn)控制屬性為基礎(chǔ)的。在SELinux中,訪問(wèn)控制屬性叫做安全上下文。所有客體(文件、進(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)制訪問(wèn)控制策略沒(méi)什么影響,對(duì)于進(jìn)程,用戶和角色標(biāo)識(shí)符顯得更有意義,因?yàn)樗鼈兪怯糜诳刂祁愋秃陀脩魳?biāo)識(shí)符的聯(lián)合體,這樣就會(huì)與Linux用戶賬號(hào)關(guān)聯(lián)起來(lái);然而,對(duì)于客體,用戶和角色標(biāo)識(shí)符幾乎很少使用,為了規(guī)范管理,客體的角色常常是object_r,客體的用戶常常是創(chuàng)建客體的進(jìn)程的用戶標(biāo)識(shí)符,它們?cè)谠L問(wèn)控制上沒(méi)什么作用。

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

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

  •             user_u :普通用戶登錄系統(tǒng)后的預(yù)設(shè); 
  •              system_u :開機(jī)過(guò)程中系統(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策略中,用來(lái)存儲(chǔ)角色信息

6.1.3 TYPE

        1) type:用來(lái)將主體(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í)越來(lái)越高 
  • CATEGORY:代表分類,目前已經(jīng)定義的分類為c0-c1023

6.2 對(duì)比SELinux和標(biāo)準(zhǔn)Linux的訪問(wèn)控制屬性

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

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

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

標(biāo)準(zhǔn)Linux
SELInux

進(jìn)程安全屬性
真實(shí)有效的用戶和組ID
安全上下文

客體安全屬性
訪問(wèn)模式、文件用戶和組ID
安全上下文

訪問(wèn)控制基礎(chǔ)
進(jìn)程用戶/組ID和文件的訪問(wèn)模式,
此訪問(wèn)模式基于文件的用戶/組ID
在進(jìn)程類型和文件類型
之間允許的許可

6.3 小結(jié)

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

7. 類型強(qiáng)制(TE)訪問(wèn)控制

      在SELinux中,所有訪問(wèn)都必須明確授權(quán),SELinux默認(rèn)不允許任何訪問(wèn),不管Linux用戶/組ID是什么。這就意味著在SELinux中,沒(méi)有默認(rèn)的超級(jí)用戶了,與標(biāo)準(zhǔn)Linux中的root不一樣,通過(guò)指定主體類型(即域)和客體類型使用allow規(guī)則授予訪問(wèn)權(quán)限,allow規(guī)則由四部分組成:

  • 源類型(Source type(s) ) 通常是嘗試訪問(wèn)的進(jìn)程的域類型
  • 目標(biāo)類型(Target type(s) ) 被進(jìn)程訪問(wèn)的客體的類型
  • 客體類別(Object class(es)) 指定允許訪問(wèn)的客體的類型
  • 許可(Permission(s)) 象征目標(biāo)類型允許源類型訪問(wèn)客體類型的訪問(wèn)種類

     舉例如下:

allow user_t bin_t : file {read execute getattr}; 

這個(gè)例子顯示了TE allow規(guī)則的基礎(chǔ)語(yǔ)法,這個(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í)際上都是授予訪問(wèn)權(quán)的,真正的挑戰(zhàn)是如何保證數(shù)以萬(wàn)計(jì)的訪問(wèn)正確授權(quán),只授予必須的權(quán)限,實(shí)現(xiàn)盡可能的安全。

7.1 標(biāo)準(zhǔn)Linux安全中的setuid程序

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

# 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í)行過(guò)程如下圖所示:

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

8. 基于角色的訪問(wèn)控制

     SELinux也提供了一種基于角色的訪問(wèn)控制(RBAC),SELinux的RBAC特性是依靠類型強(qiáng)制建立的,SELinux中的訪問(wèn)控制主要是通過(guò)類型實(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)無(wú)疑是SELinux引入的最重要的強(qiáng)制訪問(wèn)控制(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í)別,如:

user:role:type:sensitivity[:category,...] [-sensitivity[:category,...]] 

例子如下所示:

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í)別的值是相同的(最常見(jiàn)的情況),實(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訪問(wèn)控制是基于與所有系統(tǒng)資源(包括進(jìn)程)關(guān)聯(lián)的安全上下文的,安全上下文包括三個(gè)組件:用戶、角色和類型標(biāo)識(shí)符。類型標(biāo)識(shí)符是訪問(wèn)控制的主要基礎(chǔ)。

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:山南 賀州 黃山 通遼 懷化 湘潭 湖北 煙臺(tái)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SELINUX工作原理詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    北流市| 龙泉市| 蕉岭县| 文登市| 威海市| 大宁县| 商河县| 于田县| 资源县| 通辽市| 祁阳县| 云和县| 湄潭县| 富蕴县| 曲沃县| 长海县| 郴州市| 丘北县| 彰武县| 阜阳市| 潜江市| 天柱县| 大关县| 江孜县| 湖州市| 侯马市| 瓮安县| 昆山市| 兴和县| 攀枝花市| 疏勒县| 荆门市| 农安县| 灵山县| 徐州市| 青州市| 德令哈市| 于都县| 孝昌县| 金溪县| 固镇县|