SELinux入门简介
? ? 操作系統有兩類訪問控制:自主訪問控制(DAC)和強制訪問控制(MAC)。標準Linux安全是一種DAC,SELinux為Linux增加了一個靈活的和可配置的的MAC。
? ? 進程啟動時所擁有的權限就是運行此進程的用戶權限,一個進程能訪問哪些文件取決于該文件的主、組和其他權限,這就是DAC
? ? 如一個用戶運行了進程,運行此進程需要若干個文件,但該進程具有的權限是與該用戶的權限一致,即該進程能訪問此用戶能夠訪問的所有文件。Linux自身是無法限定某個進程只能訪問其運行需要的指定文件,因此MAC,就是不讓進程在該用戶權限下訪問它不需要文件,即使進程是有權限訪問的。
那么是如何實現的?
每個進程啟動時,給它劃定一個范圍,只能訪問此范圍內的資源。但是每種程序運行依賴的資源或權限并不相同,并不可能為每一種程序制定范圍。所以有如下兩種工作級別。
SELinux工作級別
??????? restrict:每個進程都受selinux的控制
??????? targeted:僅有限的進程受到控制,通常只監控容易受到入侵的進程
SELinux工作模型
??????? 存在三種角色subject?? operation?? object
??????? subject:主體,操作的發起者
??????? operation:操作,主體能夠執行什么樣的操作取決于客體所支持的操作
??????? object:客體,操作的作用對象
??????? 通常動作的發起者是進程,進程可以對諸如文件或者進程等對象執行操作,那針對文件來說可以支持的操作有讀、寫、打開、關閉及更改權限等,針對進程作為客體,執行的操作有殺死、創建等
? ? 每一個進程都有一個標簽。操作系統中的每一個文件/目錄客體object也都有一個標簽。甚至連網絡端口、設備,乃至潛在的主機名都被分配了標簽。標簽有五部分組成USER:ROLE:TYPE[LEVEL[:CATEGORY]]。user指的是SELinux的user非系統user,LEVEL和CATEGORY:定義層次和分類,只用于mls策略中。
? ? 進程通過標簽劃分在不同的域,文件通過標簽定義為不同個類型。SElinux存在一規則庫,其中定義了哪種域能夠訪問哪些類型內的文件。如某進程要訪問一個文件,但是此進程的域與文件的類型不在同一范圍內那么要如何突破限制,這時候就要修改標簽。
SELinux的策略通常是編譯成二進制文件以加速訪問。
如何使用SELinux
??????? (1)? /etc/sysconfig/selinux打開或關閉SELinux
?????????????? SELINUX=enforcing|permissive|disabled
?????????????? 從disable狀態啟用,需要重啟系統,讓系統上的所有文件重新打上標簽。permissive不禁止,但會計入日志/var/log/audit/audit.log
?????????????? getenforce/setenforce 0|1? 獲取或更改當前狀態
??????? (2)查看、更改文件標簽
???????????? ps –Z :檢查進程的安全上下文;
???????????? ls -Z :檢查文件、目錄的安全上下文
???????????? chcon [-u USER] [-r ROLE] [-t TYPE]
????????????? 一般目錄下的文件具有“目錄名_t”的類型,更改文件標簽類型可以在不更改主(組)的情況下限制進程對其的訪問。
????????????? 還原文件的默認標簽 ,restorecon [-R] path/file
??????? (3)SELinux的布爾型開關
?????????????? getsebool -a: 列出SELinux的所有布爾值
?????????????? setsebool: 設置SELinux布爾值,如:setsebool -P dhcpd_disable_trans=0,-P表示重啟后也能生效,直接寫入規則庫
參考:http://blog.csdn.net/myarrow/article/details/9856095/
轉載于:https://www.cnblogs.com/otherside/p/6683429.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的SELinux入门简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP中unset,array_spli
- 下一篇: Linux Shell——函数的使用