1. 確認SELinux處于Enforcing模式
SELinux的核心價值在于強制訪問控制(MAC),需確保其處于Enforcing
模式(而非Permissive
或Disabled
)。通過sestatus
命令檢查狀態,若未啟用,修改/etc/selinux/config
文件中的SELINUX=enforcing
參數并重啟系統生效。日常運維中,Enforcing
模式是平衡安全與功能的基礎。
2. 精簡與優化SELinux策略
sestatus
查看當前策略狀態,禁用對非關鍵服務(如本地腳本)的策略,減少不必要的策略決策開銷。getsebool -a
列出所有布爾值,通過setsebool -P <boolean_name>=0
關閉無關選項(如httpd_enable_homedirs
若未使用則禁用)。httpd_disable_trans
可減少Apache的傳輸延遲(設置為1
),dbms_usefte
可提升數據庫性能(設置為1
)。3. 正確管理與持久化SELinux上下文
安全上下文(Type Enforcement)是SELinux的關鍵,錯誤的上下文會導致訪問被拒絕。
ls -Z
(文件/目錄)、ps -auxZ
(進程)查看當前上下文,確認服務運行在專有域(如httpd進程應為httpd_t
,而非unconfined_t
)。semanage fcontext
定義持久化規則(如semanage fcontext -a -t httpd_sys_content_t "/srv/mywebapp(/.*)?"
),再通過restorecon -Rv
應用到實際文件系統(避免僅用chcon
臨時修改,其重啟后失效)。4. 分析與處理SELinux拒絕日志
SELinux的拒絕信息記錄在/var/log/audit/audit.log
中,需定期分析以避免服務中斷。
ausearch -m avc -ts recent
搜索最近的AVC(訪問控制)拒絕日志,或通過sealert -a /var/log/audit/audit.log
生成可視化報告。audit2allow
生成最小化策略模塊(如grep "avc: denied" /var/log/audit/audit.log | audit2allow -M my_policy
),并通過semodule -i my_policy.pp
安裝。5. 優化SELinux相關內核與文件系統
/etc/sysctl.conf
優化內核設置,如net.ipv4.tcp_syncookies = 1
(防止SYN Flood攻擊)、fs.file-max = 1000000
(增加文件描述符限制),提升系統整體性能。noatime
選項(減少磁盤I/O操作,提升文件訪問性能)。6. 監控與持續維護SELinux狀態
perf
、flamegraph
等工具分析SELinux對系統調用的開銷,識別性能瓶頸(如頻繁的上下文切換)。sealert
分析歷史拒絕事件,及時調整策略(如新增服務時添加對應上下文規則),保持策略的最小化與有效性。7. 特定場景下的安全調整
myapp_t
)和上下文規則(如myapp_exec_t
、myapp_log_t
),強化服務隔離(避免使用unconfined_t
,其無SELinux保護)。semanage port
添加對應規則(如semanage port -a -t http_port_t -p tcp 8080
),避免因端口上下文錯誤導致服務無法啟動。