自由決定的訪問控制:基於用戶和組的模型,標準的用戶/組/其他權限安全模型
強制訪問控制:基於對象並由更加複雜的規則控制,SELinux安全模型
SELinux:用於確定哪個進程可以訪問哪些文件、目錄和端口的安全規則
SELinux上下文:每個文件、進程和端口都具有特別的安全標籤,策略用它來確定某個進程能否訪問文件、目錄和端口
SELinux上下文的種類:用戶、角色、類型、敏感度
目標策略根據類型上下文來制定自己的規則,類型上下文以_t結尾
eg:
httpd_t:web服務器的類型上下文
http_port_t:web服務器的端口類型上下文
httpd_sys_content_t:/var/www/html中的文件和目錄的類型上下文
tmp_t:/tmp 和/var/tmp 中的文件和目錄類型的上下文
ps、ls、cp、mkdir都是用-Z來顯示或設置SELinux上下文
SELinux的三種模式:
強制模式enforcing:不僅記錄而且提供保護,主動拒絕訪問嘗試tmp_t 的文件
許可模式permissive:用於對問題進行故障排除,會記錄在強制模式下拒絕的交互,暫時允許訪問selinux正在限制的內容
禁用模式disable:完全禁用selinux,需重啓系統才能徹底禁用,或切換爲另一模式
getenforce:顯示當前使用的有效selinux模式
setenforce:修改當前的selinux模式,0 表示許可模式,1表示強制模式
另一種方法:啓動時將參數傳遞給內核,
傳遞內核參數enforcing=0,系統進入許可模式
enforcing=1,系統進入強制模式
指定selinux=0參數,表示禁用SELinux
selinux=1參數,表示啓用SELinux
設置默認SELinux模式
使用配置文件/etc/selinux/config來更改默認的SELinux模式
傳遞selinux=和enforcing=內核參數會覆蓋在/etc/selinux/config中的任何默認值
更改SELinux上下文
通常父目錄的上下文會分配給新建文件(適於vim,touch,cp),若文件是在其他位置創建並且權限得以保留,那麼原始SELinux上下文將不會發生改變(mv,cp –a等)
chcon:將文件上下文更改成已指定爲該命令參數的上下文,-t指定上下文的類型
eg: chcon –t httpd_sys_content_t /virtual
restorecon:更改selinux上下文的首選方法,不會明確指定上下文,使用selinux策略中的規則來確定應該是那種上下文
eg:
定義SELinux默認文件上下文規則
Semanage fcontext 命令用於顯示或修改restorecon命令用來設置默認文件上下文的規則,使用擴展正則表達式來指定路徑和文件名,fcontext規則中最常用的擴展正則表達式是(/.*)?:匹配/後跟任意數量的字符,它將會匹配在表達式前面列出的目錄並遞歸,restorecon命令是policycoreutil軟件包的一部分,semanage是policycoreutil-python軟件包的一部分
eg:semanage fcontext -a -t httpd_sys_content_t ‘/virtual(/.*)?’
restorecon /virtual
SElinux布爾值
是更改SELinux策略行爲的開關,可以啓用或禁用的規則
getsebool:顯示selinux布爾值及其當前值
setsebool:修改selinux布爾值
-P 修改selinux的策略,並使修改永久保留
semanage boolean -l:顯示布爾值是否爲永久值,並提供該布爾值的簡短描述
semanage Boolean -l –C:僅列出進過本地修改的SELinux布爾值狀態