如何在 Ubuntu 24.04/22.04/20.04 上安裝 SELinux

安全增強型 Linux (SELinux) 對於管理 Linux 系統上的存取控制安全策略至關重要。 SELinux 主要由系統管理員、開發人員和安全專業人員使用,在核心層級提供強大的安全性。它在 Ubuntu 伺服器上的實施,特別是 24.04、22.04 和 20.04 LTS 版本,增強了這些系統的安全性。

SELinux 增強 Ubuntu 安全性的主要功能包括:

  • 強制存取控制(MAC): 與傳統的自主存取控制系統不同,SELinux 執行嚴格的策略規則來限制系統進程和用戶,從而降低未經授權存取的風險。
  • 細粒度控制: 它提供對系統進程及其與文件和其他資源的交互的詳細控制。
  • 增強的安全策略: 量身訂製的安全策略有助於防範外部和內部威脅。
  • 審計和記錄: 全面的日誌記錄功能有助於監控和追蹤安全相關事件,有助於及時識別和解決問題。

將 SELinux 整合到 Ubuntu 伺服器環境中,特別是對於管理關鍵應用程式或敏感資料的系統來說,可以顯著增強系統安全性。本指南重點介紹 SELinux 的安裝和基本使用,旨在提供一種簡單的方法來利用這些安全優勢。

禁用AppArmor服務

為了確保相容性,請確認 AppArmor 是否處於活動狀態,因為同時執行 AppArmor 和 SELinux 可能會導致衝突。透過以下方式確定 AppArmor 的狀態:

sudo systemctl status apparmor

如果 AppArmor 可以運行,請將其停用以防止對 SELinux 產生任何干擾。執行以下命令停用 AppArmor:

sudo systemctl disable apparmor --now

透過APT指令安裝SELinux

此階段涉及安裝關鍵的 SELinux 軟體包: policycoreutils, selinux-utils, 和 selinux-basics。這些對於管理 SELinux 策略和提供基礎 SELinux 支援至關重要。

使用以下命令啟動安裝:

sudo apt install policycoreutils selinux-utils selinux-basics

執行此命令將在您的 Ubuntu 系統上安裝所需的 SELinux 軟體套件。

啟動SELinux

安裝必要的軟體包後,啟動 SELinux 以確保它在啟動時加載。此啟動對於啟用 SELinux 的安全功能至關重要。使用 root 權限執行以下命令:

sudo selinux-activate

此步驟將您的系統配置為在開機過程中初始化 SELinux。

強制執行 SELinux 模式

將 SELinux 設定為其強制模式至關重要。在此模式下,SELinux 主動應用其安全性策略,根據預定義規則拒絕存取。使用以下命令切換到強制模式:

sudo selinux-config-enforcing

此操作會修改您的 SELinux 配置以在強制模式下運作。

系統重新啟動以啟動 SELinux

透過重新啟動系統來完成設定過程。這可確保套用所有更改,並且 SELinux 開始在設定模式下運行:

sudo reboot

重新啟動後,您的系統將在安裝、啟動和設定 SELinux 的情況下運行,以強制執行其安全性原則。以下部分將引導您進一步客製化 SELinux 以滿足您的安全需求。

配置SELinux

了解 SELinux 模式

SELinux 以三種不同的模式運作:

  • 強制模式:預設設置,SELinux 嚴格執行其安全策略,根據既定規則拒絕存取。
  • 寬容模式:在這裡,SELinux 會記錄策略違規行為,但不會主動執行它們。此模式對於測試和故障排除策略非常有用。
  • 停用模式:在此模式下,SELinux 完全關閉,不套用任何政策。

編輯 SELinux 設定文件

若要自訂 SELinux 設置,請編輯 /etc/selinux/config 文件。使用首選文字編輯器(例如 nano)來完成此任務:

sudo nano /etc/selinux/config

在該文件內,修改 SELINUX 行設定您的首選模式。例如,要啟用強制模式:

SELINUX=enforcing

應用程式配置更改

若要使變更生效,請重新啟動系統:

sudo reboot

自訂其他 SELinux 設定選項

SELinux 提供了多種自訂選項:

  • 設定本地定義文件:確定本地定義的文件上下文的使用。若要使用預設上下文,請將其設為 0。 /etc/selinux/config 相應地歸檔:
SETLOCALDEFS=0
  • SELINUX類型:設定策略類型。通用策略類型「針對性」著重於保護特定的系統服務。若要設定此項,請更新 SELINUXTYPE 設定檔中的行:
SELINUXTYPE=targeted

範例:為 Web 伺服器設定 SELinux

考慮配置 SELinux 以允許 Ubuntu Web 伺服器上的 HTTP 和 HTTPS 流量。這 semanage 命令用於策略管理。

首先,安裝 semanage 公用事業:

sudo apt install policycoreutils-python-utils

然後,允許連接埠 80 上的 HTTP 流量:

sudo semanage port -a -t http_port_t -p tcp 80

連接埠 443 上的 HTTPS 流量:

sudo semanage port -a -t http_port_t -p tcp 443

這些命令將更新 SELinux 策略,允許您的 Web 伺服器接收連接埠 80 (HTTP) 和 443 (HTTPS) 上的傳入連接,確保安全的 Web 服務操作。

驗證 SELinux 模式

重新啟動後檢查 SELinux 狀態

重新啟動 Ubuntu 系統後,確認 SELinux 的運作狀態至關重要。此驗證可確保系統正確套用 SELinux 設定。

執行以下命令檢查目前狀態:

sestatus

此命令提供有關 SELinux 的全面詳細信息,包括其當前運行狀態、運行模式(強制、許可或停用)以及所使用的策略。將此輸出與您的設定進行交叉引用 /etc/selinux/config 檔案來確認 SELinux 是否如預期運作。

常見 SELinux 問題故障排除

恢復預設檔案上下文

不正確的文件上下文通常會導致 SELinux 拒絕訪問,從而破壞應用程式功能。若要修正此問題,請使用 restorecon 命令。例如,為了解決以下問題 /var/www/html 目錄,執行:

sudo restorecon -Rv /var/www/html

此命令遞歸地恢復其中所有檔案和目錄的預設上下文 /var/www/html,並提供詳細說明更改的詳細輸出。

暫時切換到寬容模式進行故障排除

不確定 SELinux 是否導致了特定問題?暫時切換到寬容模式進行診斷。此模式記錄違規行為而不強制執行。使用以下指令啟動寬容模式:

sudo setenforce 0

立即測試您的應用程式。如果問題不再出現,則很可能源自 SELinux 政策。請記得在測試後恢復到強制模式:

sudo setenforce 1

查看 SELinux 日誌以進行問題診斷

SELinux 日誌對於識別策略違規行為至關重要。在 Ubuntu 上,主要 SELinux 日誌是 /var/log/audit/audit.log。若要查看最近的條目,請使用:

sudo tail /var/log/audit/audit.log

在日誌中搜尋“denied”或“AVC”以查明潛在的違規行為。

使用audit2allow產生自訂原則模組

遇到政策相關問題?利用 audit2allow 分析審核日誌並建立自訂策略模組。例如:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

第一個指令根據審核日誌中的「denied」條目產生名為「mycustommodule」的策略。第二個安裝此策略,可能會解決問題。

管理 SELinux 布林值

SELinux 布林值控制特定功能。若要列出所有布林值及其狀態,請使用:

sudo getsebool -a

修改布林值,例如啟用 httpd_can_network_connect, 執行:

sudo setsebool -P httpd_can_network_connect 1

-P 標誌確保重新啟動後的持久性。

為 Web 應用程式設定 SELinux:允許 HTTP 和 HTTPS 流量

對於像 WordPress 這樣的 Web 應用程序,在 SELinux 中打開必要的網頁連接埠至關重要。使用下列命令啟用連接埠 80 (HTTP) 和 443 (HTTPS):

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

WordPress 的 SELinux 配置

調整 SELinux 策略以 WordPress 無縫操作:

  • HTTPD 腳本和模組的網路連接:為外掛程式和主題更新啟用此功能:
sudo setsebool -P httpd_can_network_connect 1
  • WordPress 目錄的讀寫權限:確保 HTTPD 可以與 WordPress 檔案互動:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

其他 SELinux 設定選項故障排除

客製化 SELinux 以滿足各種軟體需求:

  • 存取自訂目錄:修改自訂Web目錄的文件上下文,例如, /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • Web 伺服器的 FTP 訪問:如果需要,啟用 FTP 存取:
sudo setsebool -P allow_ftpd_full_access 1
  • Web 伺服器電子郵件功能:如果您的應用程式需要電子郵件傳送功能:
sudo setsebool -P httpd_can_sendmail 1

這些配置說明了 SELinux 在滿足特定安全和操作需求方面的靈活性。

結論

這是我們在 Ubuntu 24.04、22.04 或 20.04 上安裝 SELinux 的指南的總結。我們已經完成了安裝過程,介紹了一些基本指令,並探討了一些關鍵的設定技巧。請記住,定期更新和持續監控對於維護系統安全至關重要。請隨意嘗試 SELinux 策略以更好地滿足您伺服器的需求,但在進行更改之前始終備份您的配置。

Joshua James
跟我來
Joshua James 的最新帖子 (看全部)