文章目錄
- 前言
- 一、SELinux 概述
- 1.1 SELinux 簡介
- 1.2 SELinux 特點
- 1.2.1 MAC(Mandatory Access Control)
- 1.2.2 RBAC(Role-Based Access Control)
- 1.2.3 TE(Type Enforcement)
- 1.3 SELinux 的執行模式
- 1.4 SELinux 工作原理
- 二、SELinux 狀態切換
- 總結
前言
SELinux(Security-Enhanced Linux)是一種由美國國家安全局(NSA)開發的安全增強系統,集成于 Linux 內核中,旨在提供更強大的訪問控制機制,顯著提升系統的安全性。本文將對 SELinux 的基本概念、特點、執行模式及其狀態切換方法進行系統梳理和介紹,幫助讀者更好地理解和使用 SELinux。
一、SELinux 概述
1.1 SELinux 簡介
SELinux(Security-Enhanced Linux)是由美國國家安全局(NSA)開發的內核級安全模塊,采用靈活的強制訪問控制機制,能夠顯著提升Linux系統的安全性。該系統提供強大的安全防護能力,可有效抵御未知威脅,其安全等級達到軍事級B1標準(信息安全評估體系)。
信息安全評估標準共分為 4 類(D,C,B,A),7 個級別:D,C1,C2,B1,B2,B3,A。SELinux 已經整合到 2.6 及以上版本的 Kernel 中,可通過
uname -r
命令查看內核版本。
在沒有 SELinux 保護的傳統 Linux 系統中,若服務器被駭客攻陷,最高權限可能隨之喪失。而有了 SELinux 的保護,即使服務被入侵,也僅限于該服務本身,整個服務器的最高權限仍然得以保持。
一句話概括 SELinux 的作用:增強 Linux 系統安全性。例如,若 Apache 服務器被入侵,僅會影響到 httpd 服務,系統整體權限仍保持正常。
1.2 SELinux 特點
1.2.1 MAC(Mandatory Access Control)
全面強化訪問控制機制,對所有文件、目錄和端口的訪問權限實施策略化管理。這些訪問策略由系統管理員統一配置,普通用戶不具備修改權限。
1.2.2 RBAC(Role-Based Access Control)
對用戶只賦予最小權限,將用戶劃分為不同角色(role)。即使擁有 root 權限,若未分配至 sysadm_r
角色,也無法執行 sysadm_t
相關的管理操作。
1.2.3 TE(Type Enforcement)
對進程只賦予最小運行權限。在 SELinux 安全機制中,類型強制(TE)機制發揮著關鍵作用,其實現方式是通過為文件分配type
類型標簽,同時為進程分配domain
域標簽。這種設計確保了特定域標簽的進程只能訪問與其匹配的文件資源類型,例如:
- 當進程 vim 被限制只能讀取 T1 標簽的文件時:
- a.txt 具有 T1 標簽 → 可訪問
- b.txt 具有 T2 標簽 → 不可訪問
1.3 SELinux 的執行模式
SELinux 有以下三種執行模式:
- enforcing:強制模式,只要 SELinux 不允許,操作就無法執行。
- permissive:警告模式,操作可以執行,但所有事件都會被記錄。
- disabled:關閉 SELinux。
1.4 SELinux 工作原理
當進程(Subject)嘗試執行操作時,需經過 SELinux 的檢查。SELinux 會查詢其策略數據庫,根據規則判斷是否允許執行該操作。
可通過以下命令查看 SELinux 相關軟件包(默認已安裝):
rpm -qa | grep selinux
配置文件位于 /etc/sysconfig/selinux
。可通過 getenforce
命令查看當前 SELinux 的運行狀態。
getenforce
啟用 SELinux 需編輯配置文件 /etc/sysconfig/selinux
,設置:
SELINUX=enforcing
初次啟用 SELinux 后需重啟系統,并更新文件標簽,該過程可能耗時較長。
二、SELinux 狀態切換
可通過以下命令在 enforcing 和 permissive 模式之間切換:
setenforce 0 # 從 enforcing 切換為 permissive
getenforce # 查看當前狀態
setenforce 1 # 從 permissive 切換為 enforcing
getenforce # 查看當前狀態
注意:從 disabled 狀態啟用 SELinux 需修改配置文件并重啟系統。
總結
SELinux通過不同的執行模式來控制系統資源的訪問權限。三種核心模式決定是否阻止違規行為和是否警告,并且是否記錄在行為日志中。
- enforcing:阻止違規行為
- permissive:警告,并且是否記錄在行為日志中
- disabled:關閉
SELinux 作為強制訪問控制機制,顯著提升了 Linux 系統的安全性。它通過 MAC、RBAC 和 TE 等多種機制,嚴格限制進程和用戶的權限范圍,有效防范權限擴散和未知威脅。理解 SELinux 的核心概念、運行模式及狀態切換方法,是系統管理員必備的專業技能,也是構建安全穩定的 Linux 系統環境的重要基礎。