Linux SELinux 介绍详解
Linux SELinux 介绍详解
SElinux 简介
SElinux (Security Enhanced Linux)是由美国国家安全局(NSA)开发的。它已被植入到了Linux系统的内核当中,主要作用是通过安全策略将系统应用软件及用户程序对系统文件目录的访问限制。已MAC(Mandatory Access Control)的委任试存储方式作为安全处理。
SElinux 运作模式
- 主体(Subject)
- 主体相当于系统中的执行程序process,SElinux主要管理的就是程序。
- 目标(Object)
- 系统文件以及目录。
- 策略(Policy)
- 由于程序目录数量比较多,因此SELinux会一局某些服务来定制基本的存取安全策略。CentOS 7.x里面仅有提供三个主要的策略分别是:
- targeted:针对网络服务限制较多,针对本地限制较少,是预设的策略;
- minimum:由 target 修订而来,只针对选择的程序来保护!
- mls:完整的 SELinux 限制,限制方面较为严格。
- 由于程序目录数量比较多,因此SELinux会一局某些服务来定制基本的存取安全策略。CentOS 7.x里面仅有提供三个主要的策略分别是:
运作图:
SElinux 三种身份
查看当前目录下的SElinux信息(前提SElinux已经打开)
# 查看Selinux信息 [root@study ~]# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-r--r--. root root system_u:object_r:admin_home_t:s0 initial-setup-ks.cfg -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 regular_express.txt
Identify:role:type
身份识别:角色:类型
- 身份识别(Identify)
- 代表:相當於帳號方面的身份識別!主要的身份識別常見有底下幾種常見的類型:
- unconfined_u:不受限的用户,也就是說,該檔案來自於不受限的程序所產生的!一般來說,我們使用可登入帳號來取得 bash 之後, 預設 的 bash 環境是不受 SELinux 管制的~因為 bash 並不是什麼特別的網路服務!因此,在這個不受 SELinux 所限制的 bash 程序所產生的檔案, 其身份識別大多就是 unconfined_u 這個『不受限』用戶囉!
- system_u:系統用戶,大部分就是系統自己產生的檔案囉!
- 角色(Role)
- 代表:透過角色欄位,我們可以知道這個資料是屬於程序、檔案資源還是代表使用者。一般的角色有:
- object_r:代表的是檔案或目錄等檔案資源,這應該是最常見的囉;
- system_r:代表的就是程序啦!不過,一般使用者也會被指定成為 system_r 喔!
- 类型(Type)
- 代表:在預設的 targeted 政策中, Identify 與 Role 欄位基本上是不重要的!重要的在於這個類型 (type) 欄位! 基本上,一個主體程序能不能讀取到這個檔案資源,與類型欄位有關!而類型欄位在檔案與程序的定義不太相同,分別是:
- type:在檔案資源 (Object) 上面稱為類型 (Type);
- domain:在主體程序 (Subject) 則稱為領域 (domain) 了!
SElinux 三种启动模式
- enforcing:强制模式、代表SELinux运行中,且已经正确的开放限制 domain/type。
- permissive:宽容模式、代表SELinux运行中,不过金会有警告信息并不会直接限制 domian/type。
- disabled:关闭模式、SELinux 关闭状态。
来源地址:http://linux.vbird.org/linux_basic/0440processcontrol.php#selinux