1. SELinux基礎認知
SELinux(Security-Enhanced Linux)是美國國家安全局(NSA)開發的內核安全模塊,通過**強制訪問控制(MAC)**機制限制進程與系統資源的交互,即使進程被攻破,也能有效降低損害范圍。其核心組件包括:
用戶:角色:類型:級別
),是SELinux實施訪問控制的基礎;targeted
策略(針對常見服務,如Apache、MySQL);Enforcing
(強制執行,違反規則拒絕操作并記錄)、Permissive
(寬容模式,僅記錄違規不阻止)、Disabled
(完全關閉SELinux)。2. 環境準備與狀態管理
sestatus
(詳細狀態,包括模式、策略名稱)或getenforce
(僅當前模式)命令,確認SELinux是否啟用及運行模式;sudo setenforce 1
(Enforcing)、sudo setenforce 0
(Permissive)(立即生效,重啟失效);/etc/selinux/config
文件,將SELINUX=
后的值改為enforcing
/permissive
/disabled
,重啟系統生效。Enforcing
模式,僅在調試時切換至Permissive
。3. 核心操作技能掌握
ls -Z
(如ls -Z /var/www/html
);ps -Z
(如ps -Z | grep httpd
);id -Z
(如unconfined_t
表示不受限用戶)。sudo chcon -t 類型 文件路徑
(如sudo chcon -t httpd_sys_content_t /var/www/html/index.html
);semanage fcontext
添加規則:sudo semanage fcontext -a -t 類型 "文件路徑正則"
(如sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
);sudo restorecon -Rv 文件路徑
(遞歸恢復目錄)。getsebool -a
;getsebool 布爾名
(如getsebool httpd_can_network_connect
);setsebool 布爾名 值
(1
=開啟,0
=關閉);-P
參數(如sudo setsebool -P httpd_can_network_connect 1
)。4. 日志分析與故障排查
/var/log/audit/audit.log
,可使用ausearch
命令過濾AVC(訪問控制違規)事件:sudo ausearch -m avc -ts recent
;audit2allow
工具將日志中的違規信息轉換為策略模塊:
sudo ausearch -m avc -ts recent | audit2why
(分析違規原因);sudo ausearch -c '進程名' --raw | audit2allow -M 策略名
(如sudo ausearch -c 'httpd' --raw | audit2allow -M my_httpd_policy
);sudo semodule -i 策略名.pp
(如sudo semodule -i my_httpd_policy.pp
)。5. 實戰案例練習
http_port_t
類型:sudo semanage port -a -t http_port_t -p tcp 8080
;/etc/httpd/conf/httpd.conf
),將Listen 80
改為Listen 8080
;sudo systemctl restart httpd
。ls -Z /var/www/html/wp-content/uploads
(通常為httpd_sys_content_t
);sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wp-content/uploads(/.*)?"
;sudo restorecon -Rv /var/www/html/wp-content/uploads
。shadow
文件上下文:ls -Z /etc/shadow
(應為shadow_t
);chcon -t shadow_t /etc/shadow
臨時修復,或通過semanage fcontext
永久修改。6. 進階學習方向
semanage user
管理SELinux用戶(如user_u
、staff_u
),實現更嚴格的身份隔離;seinfo
分析策略復雜度,移除不必要的規則,降低SELinux對系統性能的影響;