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

     1) 打開或關閉SELinux

     2) 設置系統執行哪一個策略(policy)

     3) 設置系統如何執行策略(policy)

4.2 配置文件選項

4.2.1 SELINUX

SELINUX=enforcing|permissive|disabled —定義SELinux的高級狀態 

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執行哪一個策略

targeted — 只有目標網絡daemons保護。每個daemon是否執行策略,可通過system-config-selinux進行配置。保護常見的網絡服務,為SELinux默認值。 

         可使用如下工具設置每個daemon的布爾值:

         1) getsebool -a: 列出SELinux的所有布爾值

         2) setsebool: 設置SELinux布爾值,如:setsebool -P dhcpd_disable_trans=0,-P表示即使用reboot之后,仍然有效。 

strict — 對SELinux執行完全的保護。為所有的subjects和objects定義安全環境,且每一個Action由策略執行服務器處理。提供符合Role-based-Access Control(RBAC)之policy,具備完整的保護功能,保護網絡服務、一般指令及應用程序。

4.2.3 SETLOCALDEFS

SETLOCALDEFS=0|1 — 控制如何設置本地定義(users and booleans)。

1:這些定義由load_policy控制,load_policy來自于文件/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運行模式,例子如下:

setenforce 1 — SELinux以強制(enforcing)模式運行
setenforce 0 — SELinux以警告(permissive)模式運行

    為了關閉SELinux,你可以修改配置文件:/etc/selinux/config或/etc/sysconfig/selinux

2) /usr/sbin/sestatus -v — 顯示系統的詳細狀態,例子如下:

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 — 在一個新的context或role中運行一個新的shell

4) /sbin/restorecon — 通過為適當的文件或安全環境標記擴展屬性,設置一個或多個文件的安全環境

5) /sbin/fixfiles — 檢查或校正文件系統中的安全環境數據庫

6) getsebool — getsebool -a:查看所有布爾值

7) setsebool — 參數-P,永久性設置

8) chcon 修改文件、目錄的安全上下文 

      chcon –u[user]
      chcon –r[role]
      chcon –t[type] 
      chcon –R  遞歸

6. 類型強制的安全上下文(Type Enforcement Security Context)

    安全上下文是一個簡單的、一致的訪問控制屬性,在SELinux中,類型標識符是安全上下文的主要組成部分,由于歷史原因,一個進程的類型通常被稱為一個域(domain),域和域類型意思都一樣,我們不必苛刻地去區分或避免使用術語域,通常,我們認為【域】、【域類型】、【主體類型】和【進程類型】都是同義的,即都是安全上下文中的“TYPE”。

    SELinux對系統中的許多命令做了修改,通過添加一個-Z選項顯示客體和主體的安全上下文。

    1) 系統根據PAM子系統中的pam_selinux.so模塊設定登錄者運行程序的安全上下文;
    2) 文件的Security Contex規則如下:

 rpm包安裝的:會根據rpm包內記錄來生成安全上下文;
手動創建的文件:會根據policy中規定的來設置安全上下文;
 cp:會重新生成安全上下文;
mv:安全上下文則不變。

    3) id -Z  

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

    4) ps -Z

        檢查進程的安全上下文; 

    5) ls -Z 

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

6.1 安全上下文格式

      所有操作系統訪問控制都是以關聯的客體和主體的某種類型的訪問控制屬性為基礎的。在SELinux中,訪問控制屬性叫做安全上下文。所有客體(文件、進程間通訊通道、套接字、網絡主機等)和主體(進程)都有與其關聯的安全上下文,一個安全上下文由三部分組成:用戶、角色和類型標識符。常常用下面的格式指定或顯示安全上下文:

USER:ROLE:TYPE[LEVEL[:CATEGORY]]

      安全上下文中的用戶和角色標識符除了對強制有一點約束之外對類型強制訪問控制策略沒什么影響,對于進程,用戶和角色標識符顯得更有意義,因為它們是用于控制類型和用戶標識符的聯合體,這樣就會與Linux用戶賬號關聯起來;然而,對于客體,用戶和角色標識符幾乎很少使用,為了規范管理,客體的角色常常是object_r,客體的用戶常常是創建客體的進程的用戶標識符,它們在訪問控制上沒什么作用。

      標準Linux安全中的用戶ID和安全上下文中的用戶標識符之間的區別,就技術而論,它們是正交標識符,分別用于標準的和安全增強的訪問控制機制,這兩者之間的任一相互關聯都是通過登陸進程按照規范嚴格規定的,而不是通過SELinux策略直接強制實施的。

6.1.1 USER
         1) user identity:類似Linux系統中的UID,提供身份識別,用來記錄身份;安全上下文的一部分;
         2) 三種常見的 user:

            user_u :普通用戶登錄系統后的預設; 
             system_u :開機過程中系統進程的預設; 
             root :root 登錄后的預設;

        3) 在 targeted policy 中 users 不是很重要;
        4) 在strict policy 中比較重要,所有預設的 SELinux Users 都是以 “_u” 結尾的,root 除外。

6.1.2 ROLE

        1) 文件、目錄和設備的role:通常是 object_r;
        2) 程序的role:通常是 system_r;
        3) 用戶的role:targeted policy為system_r; strict policy為sysadm_r、staff_r、user_r;用戶的role,類似系統中的GID,不同角色具備不同的的權限;用戶可以具備多個role;但是同一時間內只能使用一個role;

        4) 使用基于RBAC(Roles Based Access Control) 的strict和mls策略中,用來存儲角色信息

6.1.3 TYPE

        1) type:用來將主體(subject)和客體(object)劃分為不同的組,給每個主體和系統中的客體定義了一個類型;為進程運行提供最低的權限環境;
        2) 當一個類型與執行中的進程相關聯時,其type也稱為domain;
        3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心臟,預設值以_t結尾;

        LEVEL和CATEGORY:定義層次和分類,只用于mls策略中 

LEVEL:代表安全等級,目前已經定義的安全等級為s0-s15,等級越來越高 
CATEGORY:代表分類,目前已經定義的分類為c0-c1023

6.2 對比SELinux和標準Linux的訪問控制屬性

      在標準Linux中,主體的訪問控制屬性是與進程通過在內核中的進程結構關聯的真實有效的用戶和組ID,這些屬性通過內核利用大量工具進行保護,包括登陸進程和setuid程序,對于客體(如文件),文件的inode包括一套訪問模式位、文件用戶和組ID。以前的訪問控制基于讀/寫/執行這三個控制位,文件所有者、文件所有者所屬組、其他人各一套。

      在SELinux中,訪問控制屬性總是安全上下文三人組(用戶:角色:類型)形式,所有客體和主體都有一個關聯的安全上下文。需要特別指出的是,因為SELinux的主要訪問控制特性是類型強制,安全上下文中的類型標識符決定了訪問權。

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

標準Linux
SELInux

進程安全屬性
真實有效的用戶和組ID
安全上下文

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

訪問控制基礎
進程用戶/組ID和文件的訪問模式,
此訪問模式基于文件的用戶/組ID
在進程類型和文件類型
之間允許的許可

6.3 小結

      1) 系統中每個文件、目錄、網絡端口等都被指定一個安全上下文,policy 則給出各安全上下文之間的作用規則。
      2) SELinux根據policy及security context規則來決定存取行為是否可執行;
      3) Subject(主體):系統進程,比如/usr/sbin/httpd;
      4) Object(客體):被存取的項目,比如File、Directory、IP、Socket等;

7. 類型強制(TE)訪問控制

      在SELinux中,所有訪問都必須明確授權,SELinux默認不允許任何訪問,不管Linux用戶/組ID是什么。這就意味著在SELinux中,沒有默認的超級用戶了,與標準Linux中的root不一樣,通過指定主體類型(即域)和客體類型使用allow規則授予訪問權限,allow規則由四部分組成:

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

     舉例如下:

allow user_t bin_t : file {read execute getattr}; 

這個例子顯示了TE allow規則的基礎語法,這個規則包含了兩個類型標識符:源類型(或主體類型或域)user_t,目標類型(或客體類型)bin_t。標識符file是定義在策略中的客體類別名稱(在這里,表示一個普通的文件),大括號中包括的許可是文件客體類別有效許可的一個子集,這個規則解釋如下:

     擁有域類型user_t的進程可以讀/執行或獲取具有bin_t類型的文件客體的屬性。

     SELinux allow規則如之前的例子在SELinux中實際上都是授予訪問權的,真正的挑戰是如何保證數以萬計的訪問正確授權,只授予必須的權限,實現盡可能的安全。

7.1 標準Linux安全中的setuid程序

      精通用戶joe想安全地修改現有的密碼問題,Linux解決這個問題的方法是通過給passwd賦一個setuid值,使其執行時具有root權限,如果你在一個普通Linux系統上列出密碼文件,你看到的會是:

# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 41292 Sep 7 2012 /usr/bin/passwd 

       這里注意兩件事,第一個是在所有者權限的x位置被設置為s了,這就是所謂的setuid位,意思是任何執行這個文件的進程,它的有效UID(即用戶ID)將會被改為文件所有者。這里,root是文件所有者,因此當執行密碼程序時實際上將會以root用戶的ID運行。其執行過程如下圖所示:

       從上面的分析中可以看出,passwd以root權限的身份運行, 它可以訪問系統的任何資源,這給系統帶來了安全問題,其實它只需要訪問shadow及其相關的文件就可以了。而且shadow只需要接受passwd的訪問即可。這在標準Linux中是無法做到的,而TE(類型強制)可實現此功能。

8. 基于角色的訪問控制

     SELinux也提供了一種基于角色的訪問控制(RBAC),SELinux的RBAC特性是依靠類型強制建立的,SELinux中的訪問控制主要是通過類型實現的,角色基于進程安全上下文中的角色標識符限制進程可以轉變的類型,如此,策略編寫器可以創建一個角色,允許它轉變為一套域類型(假設類型強制規則允許轉變),從而定義角色的限制。

9. SELinux中的多級安全(Multi-Level Security)

    類型強制(Type Enforcement)無疑是SELinux引入的最重要的強制訪問控制(MAC)機制,然而,在某些情況下,主要是保密控制應用程序的一個子集,傳統的多級安全(MLS)MAC與類型強制一起使用顯得更有價值,在這些情況下,SELinux總是包括某種格式的MLS功能,MLS特性是可選的,在SELinux的兩個MAC機制中,它通常不是最重要的那個,對大多數安全應用程序而言,包括許多非保密數據應用程序,類型強制是最適合的安全增強的機制,盡管如此,MLS對部分應用程序還是增強了安全性。

     在大多數SELinux策略中,敏感度(s0,s1,…)和范疇(c0,c1,…)使用通配名,將它留給用戶空間程序和程序庫,以指定有意義的用戶名。(例如:s0可能與UNCLASSIFIED 關聯,s1可能與SECRET關聯)
     為了支持MLS,安全上下文被擴展了,包括了安全級別,如:

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安全上下文至少必須有一個安全級別(它由單個敏感度和0個或多個范疇組成),但可以包括兩個安全級別,這兩個安全級別分別被叫做低(或進程趨勢)和高(或進程間隙),如果高安全級別丟失,它會被認為與低安全級別的值是相同的(最常見的情況),實際上,對于客體和進程而言,低和高安全級別通常都是相同的,通常用于進程的級別范圍被認為是受信任的主體(即進程信任降級信息)或多層客體,如一個目錄,它又包括了不同安全級別的客體。為了使描述簡單,假設所有的進程和客體都只有一個安全級別。

10. 策略分析工具apol

      apol(即analyze policy【分析策略】)工具是一個成熟的SELinux策略分析工具,它位于setools工具包中。使用它打開policy.xx文件即可分析所有的相關策略。xx為策略編譯器(checkpolicy)的版本號。

11. 小結

      SELinux訪問控制是基于與所有系統資源(包括進程)關聯的安全上下文的,安全上下文包括三個組件:用戶、角色和類型標識符。類型標識符是訪問控制的主要基礎。

      在SELinux中,訪問控制的主要特性是類型強制,在主體(即進程)與客體之間通過指定allow規則(主體的類型【也叫做域類型】是源,客體的類型是目標)進行訪問授權,訪問被授予特定的客體類別,為每個客體類別設置細粒度的許可。

      類型強制的一個關鍵優勢是它可以控制哪個程序可能運行在給定的域類型上,因此,它允許對單個程序進行訪問控制(比起用戶級的安全控制要安全得多了),使程序進入另一個域(即以一個給定的進程類型運行)叫做域轉變,它是通過SELinux的allow規則緊密控制的,SELinux也允許通過type_transition 文件使域轉變自動發生。

      SELinux在訪問控制安全上下文中不直接使用角色標識符,相反,所有的訪問都是基于類型的,角色用于關聯允許的域類型,這樣可以設置類型強制允許的功能組合到一起,將用戶作為一個角色進行認證。

      SELinux提供了一個可選的MLS訪問控制機制,它提供了更多的訪問限制,MLS特性依靠TE機制建立起來的,MLS擴展了安全上下文的內容,包括了一個當前的(或低)安全級別和一個可選的高安全級別。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持三五互聯

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » SELINUX工作原理詳解

登錄

找回密碼

注冊

主站蜘蛛池模板: 中国性欧美videofree精品| 亚洲欧洲av一区二区久久 | 精品国产一区二区在线视| 欧美激情一区二区三区成人| 99精品国产中文字幕| 国产高潮刺激叫喊视频| 无套后入极品美女少妇| 亚洲成人高清av在线| 太原市| 久久日产一线二线三线| 亚洲人成在久久综合网站| 电白县| 国产精品一二二区视在线 | a国产一区二区免费入口| 无码国产偷倩在线播放老年人| 高清无码在线视频| 国产极品尤物粉嫩在线观看| 久久精品国产久精国产| 中文字幕av中文字无码亚 | 国内精品伊人久久久久av| 国产午夜无码视频在线观看| 亚洲中文一区二区av| 秋霞人妻无码中文字幕| 国99久9在线 | 免费| 久久久精品波多野结衣av| 国模无吗一区二区二区视频| 高唐县| 亚洲嫩模喷白浆在线观看| 国产欧美在线手机视频| 十八禁午夜福利免费网站| 曝光无码有码视频专区| 国产丝袜在线精品丝袜| 国产午夜福利视频第三区| 日韩欧美视频一区二区三区| jizz国产免费观看| 赫章县| 蜜臀午夜一区二区在线播放| 国产午夜福利在线视频| 偷拍久久大胆的黄片视频| 中文字幕日韩有码国产| 97精品亚成在人线免视频|