SELinux
1.SElinux概念
SElinux(Security Enhanced Linux),意思是安全強化的Linux,
SElinux是對程式、檔案等權限設定依據的一個內核模塊,由于啟動網路服務的也是程式,因此剛好也是能夠控制網路服務能否訪問系統資源的一道關卡,
以策略規則制定特定程式讀取特定檔案:強制訪問控制,MAC(mandatory access control)MAC可以針對特定的行程與特定的檔案資源來進行權限控制,例子:即使你是root,在使用不同行程時,你所能取得的權限不應定是root,而是看該行程的設定,如此一來,就可以針對行程而不是用戶對檔案來進行訪問控制,此外,這個行程也不能任意使用系統檔案資源,因為每個檔案資源也有針對行程設定可取用的權限,由于,整個系統行程那么多,檔案那么多,所以SELinux也提供一些默認的策略(policy),并在該策略內提供多個規則,讓你可以選擇是否啟用該控制規則,
2.SElinux的運行模式
SElinux是通過MAC的方式來控制管理行程,它控制的主體是行程,而目標則是該行程能否讀取的檔案資源,
-
主體(subject):就是行程
-
目標(object):被主體訪問的資源,可以是檔案、目錄、埠等,
-
策略(policy):由于行程與檔案數量龐大,因此SELinux會依據某些服務來制定基本的訪問安全策略,這些策略內還會有詳細的規則(rule)來指定不同的服務開放某些資源的訪問與否,目前主要的策略有:
- targeted:針對網路服務限制較多,針對本機限制較少,是默認的策略;
- strict:完整的SELinux限制,限制方面較為嚴格,
-
安全背景關系(security context):主體能不能訪問目標除了策略指定外,主體與目標的安全背景關系必須一致才能夠順利訪問,最終檔案的成功訪問還是與檔案系統的rwx權限設定有關,
安全背景關系:
查看檔案安全背景關系:

安全背景關系用冒號分為四個欄位:
1.身份標識(identify):相當于賬號方面的身份標識,主要有以下常見型別:
- root:表示root的賬號身份
- system_u:程式方面的標識,通常就是行程,
- unconfined_u:代表一般用戶賬號的相關身份,
2.角色(role):通過角色欄位,可知道這個資料是屬于程式、檔案資源還是代表用戶,一般角色:
- object_r:代表的是檔案或目錄等檔案資源,
- system_r:代表行程,
3.型別(type):在默認的targeted策略中,Identify與role欄位基本上不重要,重要的在于型別欄位,
- type:在檔案資源上面稱為型別,
- domain:在主體程式中則稱為域,
4.最后一個欄位是和MLS和MCS相關的東西,代表靈敏度,一般用s0、s1、s2來命名,數字代表靈敏度的分級,數值越大、靈敏度越高,

訪問程序:
(1)首先,觸發具有httpd_exec_t這個型別的/usr/sbin/httpd這個可執行檔案;
(2)該檔案的型別會讓這個檔案所造成的主體行程具有httpd這個域,我們的策略已經針對這個域制定了許多規則,其中包括這個域可以讀取的目標資源型別;
(3)由于httpd domain被設定為可讀取httpd_sys_content_t這個型別的目標檔案,因此httpd行程就能夠讀取在/var/www/html/目錄下面的檔案了;
(4)最終能否讀到/var/www/html/目錄下面的資料,還要看rwx是否符合linux權限的規范,
3.SElinux模式切換
enforcing:強制模式 代表SElinux正在運行中,開始限制domain/type
permissive:寬容模式,代表SELinux正在運行中,不過僅會有警告資訊并不會實際限制domain/type的訪問,
disabled:關閉,SELinux并沒有實際運行,
查看操作:

[root@localhost ~]# vim /etc/selinux/config

setenforce 0 轉換成permissive寬容模式
setenforce 1轉換成enforcing強制模式
修改安全背景關系:
chcon [-R] [-t type] [-u user] [-r role] 檔案
-R:連同該目錄下的子目錄也同時修改;
-t:后面接安全背景關系的型別欄位;
-u:后面接身份識別;
-r:后面接角色
chcon [-R] --reference=范例檔案 檔案 將檔案的安全背景關系按照范例檔案修改
系統默認的目錄都有特殊的selinux安全背景關系,例如/var/www/html原本就是httpd可以讀取的目錄,所以如果修改錯誤可以使用restorecon還原默認的安全背景關系,


semanage可以查詢安全背景關系
semanage {login|user|port|interface|fcontext|translation} -l

查看策略里面的規則
root@localhost ~]# seinfo
-t:列出selinux的所有型別(type)種類;
-r:列出selinux的所有角色(role)種類;
-u:列出selinux所有身份標識(user)種類;
-b:列出所有規則的種類(布林值),
r:列出selinux的所有角色(role)種類;
-u:列出selinux所有身份標識(user)種類;
-b:列出所有規則的種類(布林值),

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/1352.html
標籤:其他
