如何在 CentOS/RHEL 7 中啟用 SELinux?


簡介

安全是任何系統管理員的首要關注事項。SELinux(安全增強型 Linux)是一種強制訪問控制 (MAC) 安全機制,它為 Linux 核心提供了額外的安全層。

預設情況下,SELinux 在 CentOS/RHEL 7 中已啟用,但它以許可模式執行,這意味著它不會阻止系統活動,而只是記錄它們。在本文中,我們將學習如何在 CentOS/RHEL 7 中啟用 SELinux。

在 CentOS/RHEL 7 中啟用 SELinux 的重要性

啟用 SELinux 可以更好地保護您的伺服器免受攻擊和未經授權的訪問。它增加了針對不同型別的惡意活動的額外防禦層,例如拒絕服務 (DoS) 攻擊或特權提升嘗試。停用 SElinux 可能會使某些應用程式執行更流暢,因為它們不必處理 SELinux 策略和規則施加的額外限制。

什麼是 SELinux?

SELinux 是 Linux 核心的安全模組,透過策略執行提供強制訪問控制。它由美國國家安全域性與 Red Hat 合作開發,作為傳統 Unix 風格的任意訪問控制之上的一層額外的保護。透過執行限制程序和使用者可以執行的操作的策略,SELinux 有助於降低與惡意軟體或未經授權活動相關的風險。

它是如何工作的?

SELinux 透過執行策略來工作,這些策略根據分配給資源(例如檔案、目錄、套接字、裝置等)的預定義標籤來控制程序和使用者可以在系統上執行的操作。這些標籤用於定義程序在其內執行的上下文,從而可以對它們可以訪問的資源以及可以執行的操作進行細粒度的控制。SELinux 策略定義了這些上下文根據其標籤如何相互互動的規則。為了執行這些策略,SELinux 結合使用核心級控制(例如系統呼叫限制和檔案許可權檢查)以及使用者空間工具(例如 setroubleshootd 或 auditd)。

使用 SELinux 的好處

  • 更好的安全 − 透過在核心級和使用者級實現強制訪問控制,selinux 提供了比傳統的任意訪問控制更高的安全級別。

  • 能夠限制程序 − 程序可以被限制為僅訪問系統上的特定資源,從而降低了惡意軟體未經授權訪問或操作的風險。

  • 改進的審計和問責制 − Selinux 生成詳細的日誌條目,這些條目可用於識別和跟蹤系統上的可疑活動,與傳統的任意訪問控制相比,提供了更好的可見性和問責制。

檢查 SELinux 的當前狀態

在系統上啟用 SELinux 之前,檢查其當前狀態是至關重要的步驟。此步驟可確保系統在 SELinux 方面沒有任何預先存在的問題,這些問題可能會在啟用過程中導致問題。檢查 SELinux 當前狀態的一種方法是使用 getenforce 命令。

使用 getenforce 命令

getenforce 命令是 CentOS/RHEL 7 中的一個內建工具,用於顯示 SELinux 的當前操作模式。要使用它,請開啟一個終端視窗並輸入“getenforce”,然後按 Enter 鍵。

然後,該命令將顯示三種可能的輸出之一 −

  • Enforcing − 這意味著 SELinux 正在以強制模式執行,這可以防止對系統上的檔案和程序進行任何未經授權的訪問。

  • Permissive − 這意味著 SELinux 正在以許可模式執行,該模式允許未經授權的訪問,但會記錄任何違規行為。

  • Disabled − 這意味著 SELinux 當前未在您的系統上啟用。

在 CentOS/RHEL 7 中啟用 SELinux

編輯 /etc/selinux/config 檔案

要在 CentOS/RHEL 7 中啟用 SELinux,您需要編輯 /etc/selinux/config 檔案。為此,您可以使用任何您選擇的文字編輯器。

在此示例中,我們將使用 vi 編輯器。開啟終端並鍵入以下命令 −

sudo vi /etc/selinux/config 

這將在 vi 編輯器中開啟配置檔案。

您將看到類似以下內容 −

# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. 
# permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. 
SELINUX=enforcing 

如您所見,SELINUX 可以採用三種可能的值:enforcing、permissive 或 disabled。

當前值設定為 enforcing,這意味著 SELinux 已經啟用。但是,如果它未在您的系統上啟用,則需要更改此值。

將 SELINUX 的值更改為 enforcing

要啟用 SELinux 並確保它即使在重新引導後仍保持啟用狀態,您需要將 SELINUX 的值更改為 enforcing。為此,將游標移到 `enforcing` 上,然後在鍵盤上按 `i`(插入)鍵。

這將使 vi 進入插入模式,允許您編輯檔案中的文字。現在刪除之前存在的任何值(enforcing/permissive/disabled),然後鍵入 `enforcing`。

現在儲存您的更改並透過按 `ESC` 後跟 `:wq` 退出 vi 編輯器,然後按 Enter 鍵。

驗證 SELinux 是否已啟用並正在執行

在 CentOS/RHEL 7 系統上成功啟用 SELinux 後,您需要驗證它是否正常執行。檢查 SELinux 狀態的一種方法是使用“getenforce”命令。

此命令顯示系統上 SELinux 的當前狀態 - 無論是強制還是許可。要使用“getenforce”命令,只需開啟一個新的終端視窗並鍵入“getenforce”。

輸出將是三種可能的值之一:enforcing、permissive 或 disabled。如果看到“enforcing”,則 SELinux 正在系統上積極執行策略。

如果看到“permissive”,則 SELinux 仍在執行,但沒有積極執行策略 - 它只會記錄違規行為,而不是阻止它們。如果看到“disabled”,則 SELinux 完全沒有執行。

再次使用 getenforce 命令檢查狀態更改

請注意,更改 /etc/selinux/config 檔案中 SELINUX 的值需要重新引導才能使更改生效。重新引導伺服器並重新登入後,再次執行 getenforce 命令以確保更改已正確應用。如果您在按照步驟 4 中的說明進行配置更改並重新引導後仍然看到“permissive”作為輸出,這可能表示 CentOS/RHEL 7 伺服器上的一項或多項服務配置不正確,沒有使用 SElinux 策略。

驗證所有服務是否正常執行

在驗證 SELinux 是否設定為“enforcing”後,請確保所有服務都正常執行,方法是檢查日誌或使用 systemctl 等命令列工具。注意與 SElinux 策略相關的任何警報或錯誤訊息,這些訊息可能表明每項特定服務都需要採取其他步驟。重要的是,CentOS/RHEL 7 系統上的所有服務都配置了 SElinux 策略。

如果任何服務未正確配置,則它可能無法正常執行,甚至可能導致系統上的安全漏洞。因此,有必要檢查每項服務是否都能順利執行,以及其配置檔案是否已更新為包含 SELinux 策略。

結論

Selinux 預設情況下隨 CentOS/RHEL 7 一起安裝,但可能不會開箱即用地啟用。它增加了一層額外的保護,以防禦當今普遍存在的各種型別的攻擊。

啟用 selinux 可確保在伺服器上執行的應用程式和服務之間進行強大的隔離。selinux 提供了多種便利,例如基於角色的訪問控制 (RBAC)、強制訪問控制 (MAC)、程序分離等。

更新於: 2023年6月8日

1K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.