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