SELinux主要作用就是最大限度地減小系統(tǒng)中服務(wù)進程可訪問的資源(最小權(quán)限原則),最大程序上限制了Linux系統(tǒng)中的惡意代碼活動。SELinux是部署在Linux系統(tǒng)中的安全增強功能模塊,它通過對進程和文件資源采用MAC(強制訪問控制方式)為Linux系統(tǒng)提供了改進的安全性。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
SELinux是什么
安全增強型 Linux(Security-Enhanced Linux)簡稱 SELinux,它是一個 Linux 內(nèi)核模塊,也是 Linux 的一個安全子系統(tǒng)。
SELinux 主要由美國國家安全局開發(fā)。2.6 及以上版本的 Linux 內(nèi)核都已經(jīng)集成了 SELinux 模塊。
SELinux 的結(jié)構(gòu)及配置非常復(fù)雜,而且有大量概念性的東西,要學(xué)精難度較大。很多 Linux 系統(tǒng)管理員嫌麻煩都把 SELinux 關(guān)閉了。
SELinux有什么用
SELinux 主要作用就是最大限度地減小系統(tǒng)中服務(wù)進程可訪問的資源(最小權(quán)限原則)。
我們知道,傳統(tǒng)的 Linux 系統(tǒng)安全,采用的是 DAC(自主訪問控制方式),而 SELinux 是部署在 Linux 系統(tǒng)中的安全增強功能模塊,它通過對進程和文件資源采用 MAC(強制訪問控制方式)為 Linux 系統(tǒng)提供了改進的安全性。
需要注意的是,SELinux 的 MAC 并不會完全取代 DAC,恰恰相反,對于 Linux 系統(tǒng)安全來說,它是一個額外的安全層,換句話說,當(dāng)使用 SELinux 時,DAC 仍然被使用,且會首先被使用,如果允許訪問,再使用 SELinux 策略;反之,如果 DAC 規(guī)則拒絕訪問,則根本無需使用 SELinux 策略。
例如,若用戶嘗試對沒有執(zhí)行權(quán)限(rw-)的文件進行執(zhí)行操作,那么傳統(tǒng)的 DAC 規(guī)則就會拒絕用戶訪問,因此,也就無需再使用 SELinux 策略。
相比傳統(tǒng)的 Linux DAC 安全控制方式,SELinux 具有諸多好處,比如說:
-
它使用的是 MAC 控制方式,這被認為是最強的訪問控制方式;
-
它賦予了主體(用戶或進程)最小的訪問特權(quán),這也就意味著,每個主體僅被賦予了完成相關(guān)任務(wù)所必須的一組有限的權(quán)限。通過賦予最小訪問特權(quán),可以防止主體對其他用戶或進程產(chǎn)生不利的影響;
-
SELinux 管理過程中,每個進程都有自己的運行區(qū)域(稱為域),各進程僅運行在自己的域內(nèi),無法訪問其他進程和文件,除非被授予了特殊權(quán)限。
-
SELinux 可以調(diào)整到 Permissive 模式,此模式允許查看在系統(tǒng)上執(zhí)行 SELinux 后所產(chǎn)生的印象。在 Permissive 模式中,SELinux 仍然會記錄它所認為的安全漏洞,但并不會阻止它們。
其實,想要了解 SELinux 的優(yōu)點,最直接的辦法就是查看當(dāng) Linux 系統(tǒng)上沒有運行 SELinux 時會發(fā)生什么事情。
例如,Web 服務(wù)器守護進程(httd)正在監(jiān)聽某一端口上所發(fā)生的事情,而后進來了一個請求查看主頁的來自 Web 瀏覽器的簡單請求。由于不會受到 SELinux 的約束,httpd 守護進程聽到請求后,可以完成以下事情:
-
根據(jù)相關(guān)的所有者和所屬組的rwx權(quán)限,可以訪問任何文件或目錄;
-
完成存在安全隱患的活動,比如允許上傳文件或更改系統(tǒng)顯示;
-
可以監(jiān)聽任何端口的傳入請求。
但在一個受 SELinux 約束的系統(tǒng)上,httpd 守護進程受到了更加嚴(yán)格的控制。仍然使用上面的示例,httped僅能監(jiān)聽 SELinux 允許其監(jiān)聽的端口。SELinux 還可以防止 httpd 訪問任何沒有正確設(shè)置安全上下文的文件,并拒絕沒有再 SELinux 中顯式啟用的不安全活動。
因此,從本質(zhì)上講,SELinux 最大程序上限制了 Linux 系統(tǒng)中的惡意代碼活動。