溫馨提示×

centos selinux學習路徑

小樊
51
2025-09-24 04:16:25
欄目: 智能運維

1. SELinux基礎認知
SELinux(Security-Enhanced Linux)是美國國家安全局(NSA)開發的內核安全模塊,通過**強制訪問控制(MAC)**機制限制進程與系統資源的交互,即使進程被攻破,也能有效降低損害范圍。其核心組件包括:

  • 安全上下文(SELinux Context):每個文件、進程、端口都有唯一的標簽(格式:用戶:角色:類型:級別),是SELinux實施訪問控制的基礎;
  • 策略(Policy):定義允許/禁止的操作規則,默認使用targeted策略(針對常見服務,如Apache、MySQL);
  • 模式(Mode):分為Enforcing(強制執行,違反規則拒絕操作并記錄)、Permissive(寬容模式,僅記錄違規不阻止)、Disabled(完全關閉SELinux)。
    學習前需理解這些基礎概念,可通過官方文檔或在線教程(如“通俗易懂的Linux之CentOS7.x教程”)快速入門。

2. 環境準備與狀態管理

  • 檢查SELinux狀態:使用sestatus(詳細狀態,包括模式、策略名稱)或getenforce(僅當前模式)命令,確認SELinux是否啟用及運行模式;
  • 修改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);
    • 永久修改:
      1. 使用semanage fcontext添加規則:sudo semanage fcontext -a -t 類型 "文件路徑正則"(如sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?");
      2. 恢復上下文:sudo restorecon -Rv 文件路徑(遞歸恢復目錄)。
  • 管理布爾值(Boolean):布爾值是SELinux中可開關的小規則(如允許Apache訪問網絡),常用命令:
    • 查看所有布爾值:getsebool -a;
    • 查詢特定布爾值:getsebool 布爾名(如getsebool httpd_can_network_connect);
    • 修改布爾值(臨時):setsebool 布爾名 值1=開啟,0=關閉);
    • 永久修改:加-P參數(如sudo setsebool -P httpd_can_network_connect 1)。

4. 日志分析與故障排查

  • 查看SELinux日志:默認日志路徑為/var/log/audit/audit.log,可使用ausearch命令過濾AVC(訪問控制違規)事件:sudo ausearch -m avc -ts recent;
  • 生成自定義策略:使用audit2allow工具將日志中的違規信息轉換為策略模塊:
    1. 提取違規日志:sudo ausearch -m avc -ts recent | audit2why(分析違規原因);
    2. 生成策略文件:sudo ausearch -c '進程名' --raw | audit2allow -M 策略名(如sudo ausearch -c 'httpd' --raw | audit2allow -M my_httpd_policy);
    3. 加載策略模塊:sudo semodule -i 策略名.pp(如sudo semodule -i my_httpd_policy.pp)。
      提示:優先通過調整布爾值或上下文解決問題,避免過度生成自定義策略。

5. 實戰案例練習

  • 案例1:允許Apache訪問自定義端口
    1. 添加8080端口到http_port_t類型:sudo semanage port -a -t http_port_t -p tcp 8080;
    2. 修改Apache配置文件(/etc/httpd/conf/httpd.conf),將Listen 80改為Listen 8080;
    3. 重啟Apache:sudo systemctl restart httpd。
  • 案例2:修復WordPress上傳文件權限問題
    1. 查看上傳目錄上下文:ls -Z /var/www/html/wp-content/uploads(通常為httpd_sys_content_t);
    2. 修改為允許寫入的類型:sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wp-content/uploads(/.*)?";
    3. 恢復上下文:sudo restorecon -Rv /var/www/html/wp-content/uploads。
  • 案例3:Passwd命令無法修改密碼
    1. 查看shadow文件上下文:ls -Z /etc/shadow(應為shadow_t);
    2. 若上下文錯誤,使用chcon -t shadow_t /etc/shadow臨時修復,或通過semanage fcontext永久修改。

6. 進階學習方向

  • 自定義策略編寫:學習SELinux策略語言(.te文件),編寫更精細的規則(如限制特定進程訪問特定文件);
  • SELinux用戶與角色管理:通過semanage user管理SELinux用戶(如user_u、staff_u),實現更嚴格的身份隔離;
  • 性能優化:通過seinfo分析策略復雜度,移除不必要的規則,降低SELinux對系統性能的影響;
  • 集成應用場景:結合Docker、Kubernetes等容器技術,配置SELinux策略保障容器安全(如限制容器訪問宿主機文件系統)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女