SELinux(Security Enhanced Linux),以下是SELinux的三種類型實際操作流程示意圖:
![](/d/20211018/97583bd12e7c6a56ee22867bb9f2d00a.gif)
意義:
傳統(tǒng)的Linux權限控制采用自主式權限控制(Discretionary Access Control, DAC),依據(jù)程序擁有者和資源的rwx權限決定有無存取能力.這樣存在root賬戶盜用可以使用任何資源和目錄如果被設為777權限而導致任意存取和操作的問題.SELinux采用MAC(Mandatory Access Control, MAC).在訪問資源時,判斷程序是否有權限,而不是判斷用戶.所以,即使不小心httpd被 取得了控制權,他也無權瀏覽/etc/shadow 等重要的文檔.開啟SELinux后,訪問文件會經(jīng)過SELinux權限控制和普通的用戶資源rwx權限控制.
SELinux 是整合到核心的一個核心功能,不需要啟動什么額外的服務來開啟SELinux.開機完成后,SELinux也就啟動了.
策略模式:
SELinux 的運作策略:
targeted:針對網(wǎng)路服務限制較多,針對本機限制較少,是預設的政策;
strict:完整的SELinux 限制,限制方面較為嚴格.
三種模式:
enforcing:強制模式,代表SELinux運作中,且已經(jīng)正確的開始限制domain/type了;
permissive:寬容模式:代表SELinux運作中,不過僅會有警告訊息并不會實際限制domain/type的存取.這種模式可以運來作為SELinux的debug之用(看下什么原因導致無法訪問);
disabled:關閉.
查詢SELinux當前模式:getenforce
查詢SELinux當前policy詳細信息:sestatus
打開關閉:
臨時關閉SELinux: setenforce 0 (設置SELinux 成為permissive模式)
臨時打開SELinux: setenforce 1 (設置SELinux 成為enforcing模式)
徹底關閉SElinux: vi /etc/selinux/config 設置SELINUX=disabled ,重啟生效
log:
以下服務可以記錄當發(fā)生SELinux 錯誤時,將那些有用的資訊記錄到log,用以提供解決的方案:
setroubleshoot(只記錄錯誤信息)
auditd(記錄詳細信息)
基本使用:
安全性本文(Security Context)查看:
ls -Z
安全性本文主要用冒號分為三個欄位
Identify:role:type
身份識別:角色:類型
身份識別(Identify):
root:表示root的帳號身份,如同上面的表格顯示的是root home目錄下的資料
system_u:表示系統(tǒng)程序方面的識別,通常就是程序
user_u:代表的是一般使用者帳號相關的身份
角色(Role):
object_r:代表的是檔案或目錄等檔案資源,這應該是最常見的
system_r:代表的就是程序啦!不過,一般使用者也會被指定成為system_r
類型(Type) :(最重要!)
程序的domain要和文件的type相搭配,才能有權限訪問.
每個目錄或檔案都會有預設的安全性本文
查詢增加修改預設的安全性文本:semanage
將文件修改為當前目錄默認的安全性文本:
restorecon -Rv /var/www/html/index.html
將文件目錄安全性文本設置為和另一個文件目錄一樣:
chcon -R --reference=/var/lib/ref_file target_file
可以設置和修改訪問規(guī)則,可以修改目錄默認安全性文本.