RHEL7中的SELinux簡述

2021-09-26 19:47:08 字數 3702 閱讀 5291

security-enhanced linux(安全增強linux)簡稱selinux,它是乙個 linux核心模組,主要由美國****局開發。該模組也是linux的乙個安全子系統,作用類似沙盒;在核心2.6 及以上版本都已經整合了selinux模組。由於selinux的結構及配置非常複雜,而且有大量概念性的東西,所以在實際生產環境中系統管理員一般選擇關閉selinux。

selinux 主要作用就是最大限度地減小系統中服務程序可訪問的資源(最小許可權原則),增強系統的安全性。

enforcing:強制模式,表示selinux已經在保護系統當中,違反 selinux 規則的行為將被阻止並記錄到日誌中。

permissive:寬容模式:代表selinux運作中,不過只會有警告訊息並不會實際限制domain/type的訪問,這種模式可以運來作為selinux的debug之用(看下什麼原因導致無法訪問)。

disabled:表示selinux已經關閉

1. 主體(subject)

在selinux中可以認為主體就是程序。

2. 物件(object)

被主體訪問的資源。可以是檔案、目錄、埠、裝置等。

3. 策略和規則(policy & rule)

系統中通常有大量的檔案和程序,為了節省時間和開銷,通常我們只是選擇性地對某些程序進行管制。而哪些程序需要管制、要怎麼管制是由策略決定的。

一套策略裡面有多個規則。部分規則可以按照需求啟用或禁用(該型別的規則稱為布林型規則)。規則是模組化、可擴充套件的。在安裝新的應用程式時,應用程式可通過新增新的模組來新增規則,使用者也可以手動地刪減規則。

在selinux中有以下三種策略:

1. targeted:對大部分網路服務程序進行管制。這是系統預設使用的政策

2. minimum:以targeted為基礎,僅對選定的網路服務程序進行管制。

3. mls:多級安全保護。對所有的程序進行管制,這是最嚴格的政策,配置難度非常大。一般不用,除非對安全性有極高的要求。

傳統linux系統基於dac自主訪問控制模型(使用者、組、其他人的許可權控制安全,主體是使用者),selinux基於mac強制訪問控制模型(基於物件的,即為每個物件(程序)貼上乙個安全的標籤,本質上是擁有更多的規則,主體是物件),比如http訪問網頁,

所以selinux可以看做是一些安全規則的集合,用來確定哪些程序可以訪問那些檔案、目錄、埠,甚至遠端檔案系統;每個程序、檔案、埠獨有乙個安全標籤,該安全標籤稱之為上下文;標籤型別有以下幾種:使用者、角色、型別(常用)、敏感性

selinux的工作模型

安全上下文是 selinux 的核心。

安全上下文可以分為兩種:程序安全上下文和檔案安全上下文。

乙個程序安全上下文一般對應多個檔案安全上下文,只有兩者的安全上下文對應上了,程序才能訪問檔案。

它們的對應關係由策略中的規則決定,檔案安全上下文由檔案建立的位置和建立檔案的程序所決定。而且系統有一套預設值,使用者也可以對預設值進行設定。需要注意的是,單純的移動檔案操作並不會改變檔案的安全上下文。

安全上下文的結構及含義:

安全上下文有四個字段,分別用冒號隔開

格式:user:role:type:sensitivity

例如:system_u:object_r:admin_home_t:s0

user:指示登入系統的使用者型別,如root,user_u,system_u,多數本地程序都屬於自由(unconfined)程序

role:定義檔案、程序和使用者的用途;檔案:object_r,程序和使用者:system_r

type:指定資料型別,規則中定義何種程序型別訪問何種檔案target,策略基於type實現,比如多服務公用:public_conten_t

sensitivity:限制訪問的等級,由組織定義的分層安全級別,如unclassified,secret,top,乙個物件有且只要乙個sensitivity,分0-15級,s0最低,target策略預設使用s0

1. 檢視設定selinux的狀態

* setenforce  0|1               #關閉或開啟selinx

* getenforce                        #獲取selinux的當前狀態

* sestatus                            #獲取selinux的完整狀態

2. 上下文(安全標籤)

* ls -z                                  #檢視檔案的安全標籤

* semanage fcontext/port [選項]  #檢視所有/埠預設策略

- l:查詢。

-a:增加,增加一些目錄的預設安全上下文型別設定。

-m:修改

-d:刪除

-t:上下文型別

* chcon [選項] [型別] [物件]   #更改物件的上下文

* restorecon [物件]                   #還原物件的上下文

選項:-h, --no-dereference:影響符號連線而非引用的檔案。

-r, --recursive:遞迴處理所有的檔案及子目錄。

-v, --verbose:為處理的所有檔案顯示診斷資訊。

-u, --user=使用者:設定指定使用者的目標安全環境。

-r, --role=角色:設定指定角色的目標安全環境。

-t, --type=型別:設定指定型別的目標安全環境。

-l, --range=範圍:設定指定範圍的目標安全環境。

常見型別:

public_content_t                 #允許這個ftp共享給匿名使用者

public_content_rw_t           #允許這個ftp目錄可以上傳檔案

httpd_sys_content_t           #允許http訪問該物件

httpd_sys_content_rw_t     #允許http寫入檔案

samba_share_t                    #允許將samba共享給其他使用者

* restorecon [選項] [物件]   #恢復物件的上下文

-i:忽略不存在的檔案。

-f:infilename 檔案 infilename 中記錄要處理的檔案。

-e:directory 排除目錄

-r/-r:遞迴處理目錄

-n:不改變檔案標籤

-v:將過程顯示到螢幕上

3. 布林值(開關)

是乙個可以自定義的selinux的策略

* getsebool -a                        #列出目前系統上所有布林值狀態

* setsebool -p [布林值條款] 0|1 #將布林值寫入配置檔案永久生效

如果上下文標籤和布林值同時設定,上下文標籤優先於布林值

當開啟了 selinux 之後,很多服務的一些正常行為都會被視為違規行為,這時候我們就需要借助 selinux 違規日誌來分析解決。

selinux違規日誌儲存在/var/log/audit/audit.log

在該檔案中內容很多,而且混有很多與 selinux 錯誤無關的系統審計日誌。為了更直觀的檢視違規資訊,可以使用sealert分析錯誤

命令基本用法:sealert -a /var/log/audit/audit.log

執行完命令之後,系統需要花一段時間去分析日誌中的違規行為並給出分析報告

RHEL7 配置方法

命令 hostname 檢視現在主機的名稱 hostnamectl set hostname test 將主機名修改為 test reboot 重啟 配置資訊需要重啟生效 命令 ifconfig a 顯示所有網路介面資訊 含down狀態的介面 ifconfig命令被用於配置和顯示linux核心中網路...

rhel 7特殊許可權

一 suid 用於二進位制的檔案中,對目錄無效 讓一般使用者在執行某些二進位制檔案的時候,能夠暫時擁有該程式 二進位制檔案 所有者的許可權 使用該命令的所屬使用者的許可權來執行,而不是命令執行者的許可權 比如 在root使用者的家目錄下 在某一目錄下執行ls命令時候,要看其目錄對應的許可權 ls l...

RHEL7服務管理

對於學習過紅帽rhel6的系統或已經習慣使用service chkconfig等命令來管理系統服務的使用者可能要鬱悶了,因為在紅帽rhel7系統中管理服務的命令變成了 systemctl 但使用方法大致相同,做一下對比。例1 root localhost systemctl status sshd....