技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類 >

深入解析Linux系統(tǒng)中的SELinux訪問(wèn)控制功能

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-01-05 00:03┆點(diǎn)擊:

  SELinux(Security-Enhanced Linux) 是美國(guó)國(guó)家安全局(NSA)對(duì)于強(qiáng)制訪問(wèn)控制的實(shí)現(xiàn),是 Linux歷史上最杰出的新安全子系統(tǒng)。NSA是在Linux社區(qū)的幫助下開發(fā)了一種訪問(wèn)控制體系,在這種訪問(wèn)控制體系的限制下,進(jìn)程只能訪問(wèn)那些在他的任務(wù)中所需要文件。SELinux 默認(rèn)安裝在 Fedora 和 Red Hat Enterprise Linux 上,也可以作為其他發(fā)行版上容易安裝的包得到。

  SELinux 是 2.6 版本的 Linux 內(nèi)核中提供的強(qiáng)制訪問(wèn)控制(MAC)系統(tǒng)。對(duì)于目前可用的 Linux安全模塊來(lái)說(shuō),SELinux 是功能最全面,而且測(cè)試最充分的,它是在 20 年的 MAC 研究基礎(chǔ)上建立的。SELinux 在類型強(qiáng)制服務(wù)器中合并了多級(jí)安全性或一種可選的多類策略,并采用了基于角色的訪問(wèn)控制概念。[1]

  大部分使用 SELinux 的人使用的都是 SELinux 就緒的發(fā)行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它們都是在內(nèi)核中啟用 SELinux 的,并且提供一個(gè)可定制的安全策略,還提供很多用戶層的庫(kù)和工具,它們都可以使用 SELinux 的功能。

  SELinux是一種基于 域-類型 模型(domain-type)的強(qiáng)制訪問(wèn)控制(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)限更好的訪問(wè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),它通過(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中沒有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),谷歌并沒有直接取消root權(quán)限或其他功能。這是一個(gè)為企業(yè)級(jí)用戶或是對(duì)隱私數(shù)據(jù)極為重視的用戶提供的選項(xiàng),普通消費(fèi)者則完全可以關(guān)閉它。

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

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

2016411121934972.jpg (668×353)

  當(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è)策略