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

當前位置:主頁 > 教程 > 服務(wù)器類 >

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

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

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

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

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

  SELinux是一種基于 域-類型 模型(domain-type)的強制訪問控制(MAC)安全系統(tǒng),它由NSA編寫并設(shè)計成內(nèi)核模塊包含到內(nèi)核中,相應(yīng)的某些安全相關(guān)的應(yīng)用也被打了SELinux的補丁,最后還有一個相應(yīng)的安全策略。任何程序?qū)ζ滟Y源享有完全的控制權(quán)。假設(shè)某個程序打算把含有潛在重要信息的文件扔到/tmp目錄下,那么在DAC情況下沒人能阻止他。SELinux提供了比傳統(tǒng)的UNⅨ權(quán)限更好的訪問控制。

  1. 簡介

  SELinux帶給Linux的主要價值是:提供了一個靈活的,可配置的MAC機制。

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

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

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

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

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

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

  只有同時滿足了【標準Linux訪問控制】和【SELinux訪問控制】時,主體才能訪問客體。

  1.1 DAC與MAC的關(guān)鍵區(qū)別(root用戶)

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

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

  操作系統(tǒng)有兩類訪問控制:自主訪問控制(DAC)和強制訪問控制(MAC)。標準Linux安全是一種DAC,SELinux為Linux增加了一個靈活的和可配置的的MAC。

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

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

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

  2. SELinux的運行機制

  SELinux決策過程如下圖所示:

2016411121934972.jpg (668×353)

  當一個subject(如: 一個應(yīng)用)試圖訪問一個object(如:一個文件),Kernel中的策略執(zhí)行服務(wù)器將檢查AVC (Access Vector Cache), 在AVC中,subject和object的權(quán)限被緩存(cached)。如果基于AVC中的數(shù)據(jù)不能做出決定,則請求安全服務(wù)器,安全服務(wù)器在一個矩陣中查找“應(yīng)用+文件”的安全環(huán)境。然后根據(jù)查詢結(jié)果允許或拒絕訪問,拒絕消息細節(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是一個符號鏈接,真正的配置文件為:/etc/selinux/config

  配置SELinux有如下兩種方式:

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

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

  /etc/sysconfig/selinux中包含如下配置選項:

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

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

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

  4.2 配置文件選項

  4.2.1 SELINUX

  SELINUX=enforcing|permissive|disabled —定義SELinux的高級狀態(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í)行哪一個策略