【資訊保安】SELinux

kingsql發表於2014-09-09

    SELinux 是安全增強了的Linux,是Security-enhanced Linux 的簡寫,SELinux 使用了分級的強制訪問控制,是Linux 核心的重要安全措施;SELinux 改進了對核心物件和服務的訪問控制,改進了對程式初始化、繼承和程式執行的訪問控制,改進了對檔案系統、目錄、檔案和開啟檔案描述的訪問控制,還改進了對埠、資訊和網路介面的訪問控制。

1. SELinux 的強制訪問控制機制(MAC

SELinux 在核心中使用強制訪問控制機制(MAC)檢查允許的操作。SELinux MAC 訪問控制框架中定義,所有的主體(程式)對系統的客體或目標物件(如:檔案、裝置、socket、埠等)進行操作,需要許可權或許可。

2. SELinux 安全上下文

SELinux 中,訪問控制屬性叫做安全上下文。所有客體(檔案、程式間通訊通道、套接字、網路主機等)和主體(程式)都有與其關聯的安全上下文,一個安全上下文由三部分組成:使用者、角色和型別識別符號。這裡的型別識別符號被用於強制訪問控制規則的設定。

主客體的安全上下文的定義

SELinux 中,需要對主客體的安全上下文進行定義,不同型別的主客體定義的方式也不同。對於有唯一且永久的節點號的傳統檔案系統,SELinux 用永久的標識對映,透過fs_use_psid 命令來指定檔案系統內的節點的安全上下文和檔案系統本身的安全上下文。

#fs_use_psid ext2

#fs_use_psid ext3

#fs_use_psid reiserfs

對於不支援永久標識對映的檔案系統,用genfscon 命令來指定檔案系統或檔案路徑或檔案的安全上下文。

#genfscon proc / system_u:object_r:proc_t

#genfscon proc /kmsg system_u:object_r;proc_kmsg-t

#genfscon /kcore system_u:object-r:proc_kcore_t

對於代表管道和socket 物件的偽檔案系統,SE Linux 常指定建立程式的上下文給代表物件的節點。

這個行為用fs_use_task 來宣告。

#fs_use_task pipefs system_u:object_r:fs_t

#fs_use_task sockfs system:object_r:fs_t

檢視安全上下文

SELinux 系統中透過新增一個-Z 選項顯示主體和客體的安全上下文:

ps -Z 顯示程式(主體)的安全上下文

ls -Z 顯示檔案(客體)的安全上下文

3 SELinux 中的型別強制(TE:Type Enforcement

SELinux 中,不管使用者UID 或者GID 是什麼,所有訪問都必須明確授權,SELinux 預設不允許任何訪問。這就意味著在SELinux 中,沒有預設的超級使用者了,任何訪問需要透過指定主體型別和客體型別,使用allow 規則來授予訪問許可權,allow 規則由四部分組成:

源型別(Source type(s) ) 通常是嘗試訪問的程式的域型別

目標型別(Target type(s) ) 被程式訪問的客體的型別

客體類別(Object class(es)) 指定允許訪問的客體的型別

許可(Permission(s)) 象徵目標型別允許源型別訪問客體型別的訪問種類

語法格式如下:

allow Source type Target type Object class { Permission }

強制訪問控制配置示例

假設我們允許程式(主體)passwd 命令可以讀和執行/etc/shadow 檔案,那麼首先,需要知道主體和客體的型別。

檢視主體的型別

# ps -aZ

joe:user_r:passwd_t 16532 pts/0 00:00:00 passwd

//從安全上下文的型別識別符號中可以看到主體型別是passwd_t

檢視客體檔案的型別

#ls -Z /etc/shadow

-r---- root root system_u:object_r:shadow_t shadow

//從安全上下文的型別識別符號中可以看到客體型別是shadow_t

根據主客體的型別配置訪問規則

#allow passwd_t shadow_t : file {read execute getattr}

//擁有域型別passwd_t 的程式(主體)可以讀/執行具有shadow_t 型別的檔案(客體),可以獲取具有shadow_t 型別的客體檔案的屬性

4. SELinux 中的多層安全MLS

型別強制(TE)無疑是SELinux 引入的最重要的強制訪問控制(MAC)機制,然而,在某些情況下,對於保密控制應用程式的一個子集,傳統的多層安全(MLSMAC 與型別強制(TE)一起使用顯得更有價值,在這些情況下,SELinux MLS 特性是可選的,作為SELinux 的兩個MAC 機制中的一個,它通常不是最重要的那個,對大多數安全應用程式而言,包括許多非保密資料應用程式,型別強制是最適合的安全增強的機制,對於一些涉密的資料,MLS 相比於TE 對應用程式還是增強了更多的安全性。

---------------------------------
kingsql分享

轉載請註明出處

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1266656/,如需轉載,請註明出處,否則將追究法律責任。

相關文章