說說SELinux工作原則
導讀 | SE 使用所謂的委任式訪問控制(Mandatory Access Control,MAC),可以根據特定的程式和特定的檔案資源進行許可權的管理。即使是root使用者,在使用不同的程式時,你所能獲得的許可權不一定是root,需要根據程式的設定。 |
1、主體(Subject)
SELinux主要管理的就是程式。可以相比於process。
2、目標(Object)
主體程式訪問的目標資源一般就是檔案系統。
3、策略(Policy)
訪問安全性策略,規則等。
6.x提供targeted和mls兩個主要的策略。
targeted:針對網路服務限制較多,針對本機限制較少,是預設的策略。
mls:完整的SELinux限制,限制方面較為嚴格。
4、安全性環境(Security Context)
類似於檔案系統的rwx。
檢視/root下面檔案的安全性環境
# 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 install.log -rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog
Identify:role:type
身份識別:角色:型別
身份識別(Identify):相當於賬號方面的身份識別。主要的身份識別有:
1、root:表示root的賬號身份
2、system_u:表示系統程式方面的識別,通常就是程式
3、user_u:代表的是一般使用者賬號相關的身份
角色(Rule):透過角色欄位,我們可以知道這個資料是代表程式、檔案資源還是使用者。
1、object_r:代表的是檔案或目錄等資源,這是最常見的。
2、system_r:代表的就是程式了。不過一般使用者也會被指定成為system_r
型別(Type):一個主體程式能否讀取到這個檔案資源,與型別欄位有關
1、Type:在檔案資源中被稱為型別
2、Domain:在主體程式中被稱為域
三種模式:
# SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded.
檢視:getenforce
臨時設定:setenforce 【0 | 1】
永久修改:vim /etc/selinux/config,再重新啟動
注意:setenforce無法在disabled的模式下進行切換
複製檔案的Type欄位會繼承自目標目錄,而移動檔案保持不變。
1、chcon
chcon [-R] [-t type] [-u user] [-r role] 檔案
chcon [-R] --reference=範例檔案 檔案
-R:連同該目錄下的子目錄也進行修改
-t:後面接安全性環境的型別欄位
-u:後面接身份識別
-r:後面接角色
--reference:參考範例檔案
2、restorecon
restorecon [-Rv] 檔案或目錄
-R:連同子目錄修改
-v:過程顯示到螢幕
3、semanage
semanage {login|user|port|interface|fcontext|translation} -l
semanage fcontext -{a|d|m} [-frst] file_spec
fcontext:主要用作安全性環境方面,-l為查詢
-a:增加
-m:修改
-d:刪除
1、策略查閱
seinfo [-Atrub]
-A:列出SELinux的狀態
-t:所有類別
-r:所有角色種類
-u:所有身份識別種類
-b:所有規則的種類(布林值)
詳細的規則:
sesearch [--all] [-s 主體類別] [-t 目標類別] [-b 布林值]
2、布林值的查詢與修改
查閱:
getsebool [-a] [布林值條款]
修改:
getsebool [-P] 布林值=[0|1]
使用setsebool、chcon、restorecon等都是為了當某些網路服務無法正常提供相關功能時才需要進行修改的一些 動作。CentOS提供了幾個檢測的服務來檢測處理在登入SELinux時產生的錯誤,那就是auditd、setroubleshoot。
1、setroubleshoot:將錯誤資訊寫入/var/log/message與/var/log/setroubleshoot/*
安裝並啟動該服務
yum install setroubleshoot setroubleshoot-server service auditd restart
運作方式:
1、先由auditd去呼叫audispd服務
2、然後audispd服務去啟動sedispatch程式
3、sedispatch再將原本的auditd資訊轉成setroubleshoot的資訊,進一步儲存下來。
以httpd程式產生的錯誤為例
2、使用E-mail或在
列上面直接提供setroubleshoot錯誤資訊
3、SELinux錯誤克服的總結
網路連線要透過SELinux的許可權判定後才能夠繼續rwx的許可權對比,而SELinux的對比需要透過策略的各項規則對比後才能夠進行SELinux Type安全性環境的對比。而後續的SELinux的修改透過chcon、restorecon、setsebool等命令來處理。透過分析/var/log/messsage內提供的setroubleshoot的資訊。
a】在服務和rwx許可權都沒有問題,卻無法成功的使用網路服務時,先使用setenforce 0 設定為寬容模式
b】再次使用該網路服務,如果這樣就能使用,則問題出現在SELinux上面,若仍無法使用則應從其他方面考慮排錯。
c】分析/var/log/message中的資訊,找到sealert -l相關的資訊並且執行
d】找到Allow Access的關鍵詞,按照裡面的動作來進行SELinux的錯誤克服。
e】處理完畢重新setenforce 1,再次測試網路服務
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2900931/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 嘻哈說:開放封閉原則
- 嘻哈說:設計模式之介面隔離原則設計模式
- 嘻哈說:設計模式之依賴倒置原則設計模式
- 嘻哈說:設計模式之里氏替換原則設計模式
- 嘻哈說:設計模式之單一職責原則設計模式
- 退費規則說明
- 說說最近工作中go語言踩到的坑Go
- SELinux: 如何讓selinux對某些命令放行,自定義selinux規則。Linux
- (原)ROP公式的說明公式
- 說說使用者運營的四字原則“威逼利誘”!教你如何“四兩撥千斤”!
- 說說webpack proxy工作原理?為什麼能解決跨域?Web跨域
- 【ASM C/C++】 Makefile 規則說明ASMC++
- jpa 方法 命名規則 詳細說明
- 工作當中需要好好說話
- 戲說Android view 工作流程AndroidView
- 說說MySQLORDERBYMySql
- 也說說c++builder中的不規則窗體的實現 (轉)C++UI
- Linux——防火牆、SELinux規則Linux防火牆
- 讓“無處不在的工作空間”成為可能! Ivanti不是說說而已...
- 大咖說·圖書分享 | 精益產品開發:原則、方法與實施
- 說說非同步非同步
- 說說Prototypal Inheritance
- 前端:說說工作中解決過的印象比較深刻的問題前端
- 工作的六大原則(收藏)
- jboss to weblogic移值說明(原創)Web
- 說說java的反射Java反射
- 說說IT公司那些制度
- 說說函式索引函式索引
- 【原創】說說你是如何理解Oracle資料庫中latch和enqueue lock的?Oracle資料庫ENQ
- k朋友抱怨說“ 突然變得不會工作了!!!!”
- Flowable - 6.6.0 更新說明 (主流工作流引擎)
- 說說Flutter中的SemanticsFlutter
- 說說Flutter中的RepaintBoundaryFlutterAI
- 說說劫持 Cookie 的原理Cookie
- 說說CORS與jsonpCORSJSON
- 說說 方舟編譯器編譯
- 說說MySQL索引相關MySql索引
- 說說 Python 的列表Python