在Ubuntu上測試SELinux前,需先安裝核心工具包(包括SELinux基礎組件、審計工具及策略管理工具):
sudo apt update
sudo apt install selinux-basics selinux-policy-default auditd audispd-plugins setools setools-gui selinux-policy-dev
這些工具用于激活SELinux、查看狀態、分析日志及管理策略。
安裝完成后,通過以下命令激活SELinux(設置啟動參數security=selinux
):
sudo selinux-activate
激活后需重啟系統,使SELinux在啟動時加載。
使用以下命令確認SELinux是否啟用及當前模式:
sestatus
示例輸出(啟用且處于寬容模式):SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
Loaded policy name: default
Current mode: permissive
Mode from config file: permissive
Enforcing
/Permissive
/Disabled
):getenforce
若輸出Permissive
,表示SELinux僅記錄違規行為而不阻止;若輸出Enforcing
,則表示強制執行策略。Permissive
模式(記錄日志但不阻止):sudo setenforce 0
Enforcing
模式(強制執行策略):sudo setenforce 1
/etc/selinux/config
文件,修改SELINUX=
參數:sudo nano /etc/selinux/config
將SELINUX=permissive
改為SELINUX=enforcing
(或disabled
),保存后重啟:sudo reboot
注意:首次啟用SELinux時,務必不要直接設為
Enforcing
模式,否則可能導致系統無法啟動(因默認策略會拒絕大量操作)。
通過創建測試文件并嘗試修改,驗證SELinux是否攔截違規操作:
echo "Hello, SELinux!" > testfile.txt
ls -Z testfile.txt
示例輸出:unconfined_u:object_r:user_home_t:s0 testfile.txt
Enforcing
模式,執行以下命令可能會被拒絕(需結合日志確認):echo "Hello, World!" >> testfile.txt
Permissive
模式,修改會成功,但日志會記錄違規行為。SELinux的拒絕日志默認存儲在/var/log/audit/audit.log
中,可使用以下工具提取并分析:
avc denied
日志(SELinux拒絕訪問的核心日志):sudo ausearch -m avc -ts recent
sudo aureport -m avc
日志中會顯示違規的進程、文件、操作及所需的權限,為后續調整策略提供依據。若測試中遇到avc denied
錯誤,可通過以下步驟生成并加載自定義策略:
audit2allow
生成策略模塊:sudo ausearch -m avc -ts recent | audit2allow -M my-custom-policy
此命令會生成my-custom-policy.pp
(策略模塊文件)和my-custom-policy.te
(策略源文件)。sudo semodule -i my-custom-policy.pp
sudo semodule -l | grep my-custom-policy
若輸出my-custom-policy
,則表示加載成功。通過以上步驟,可全面測試Ubuntu上的SELinux配置,確保其按預期工作。測試過程中需注意:首次啟用SELinux時建議使用Permissive
模式,避免因默認策略過于嚴格導致系統故障。