前提:Ubuntu默認使用AppArmor,需先安裝SELinux
Ubuntu并非默認啟用SELinux(默認使用AppArmor),因此需先安裝SELinux及相關工具。通過以下命令完成安裝:
sudo apt update
sudo apt install selinux selinux-utils auditd audispd-plugins
步驟1:配置SELinux模式
編輯SELinux配置文件/etc/selinux/config
,將SELINUX
參數設置為permissive
(寬松模式,僅記錄違規不阻止)或enforcing
(強制模式,阻止違規)。例如:
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
修改后重啟系統使設置生效:
sudo reboot
驗證SELinux狀態:
sestatus
# 應顯示"SELinux status: enabled"及當前模式(如"Current mode: permissive")
步驟2:安裝并配置auditd服務
auditd是Linux審計框架的核心守護進程,用于記錄SELinux相關事件。
sudo apt install auditd audispd-plugins
sudo systemctl start auditd
sudo systemctl enable auditd
/etc/audit/auditd.conf
,調整日志大小、保留數量等參數(如max_file_size 100
表示單日志文件最大100MB,num_files 10
表示保留10個歸檔文件),修改后重啟服務:sudo systemctl restart auditd
步驟3:配置SELinux審計規則
通過auditctl
命令或自定義規則文件監控SELinux關鍵操作:
/etc/selinux/config
)、策略文件(/etc/selinux/policy
)及活動策略目錄(/var/lib/selinux/active
)的所有讀寫操作,自定義關鍵詞selinux_audit
便于后續過濾:sudo auditctl -w /etc/selinux/config -p wa -k selinux_audit
sudo auditctl -w /etc/selinux/policy -p wa -k selinux_audit
sudo auditctl -w /var/lib/selinux/active -p wa -k selinux_audit
/etc/audit/rules.d/selinux.rules
,添加以下內容(監控SELinux AVC拒絕事件及上述文件變更):-w /etc/selinux/config -p wa -k selinux_audit
-w /etc/selinux/policy -p wa -k selinux_audit
-w /var/lib/selinux/active -p wa -k selinux_audit
-a always,exit -F arch=b32 -S avc -k selinux_avc
-a always,exit -F arch=b64 -S avc -k selinux_avc
加載規則:sudo augenrules --load
步驟4:查看與分析SELinux審計日志
ausearch
命令過濾selinux_audit
關鍵詞或avc
(SELinux訪問控制)消息類型,-ts recent
表示最近1分鐘內事件,-i
參數顯示詳細信息:sudo ausearch -k selinux_audit -ts recent -i
sudo ausearch -m avc -ts recent -i
aureport
命令生成匯總報告,-m selinux
參數聚焦SELinux事件,可查看違規次數、類型等統計信息:sudo aureport -m selinux -i
/var/log/audit/audit.log
,可使用grep
快速篩選拒絕事件:sudo grep -i "denied" /var/log/audit/audit.log
注意事項
enforcing
模式,但需提前通過permissive
模式測試避免誤攔截;/var/log/audit/audit.log
),防止日志被覆蓋或篡改;semanage
(策略管理工具)和audit2allow
(生成自定義策略)工具使用。