溫馨提示×

Ubuntu SELinux如何支持多用戶

小樊
45
2025-09-21 02:49:57
欄目: 智能運維

SELinux對Ubuntu多用戶的支持機制與配置
SELinux(Security-Enhanced Linux)通過強制訪問控制(MAC)模型,在Ubuntu系統中為多用戶環境提供更細粒度的安全隔離。其核心設計是通過安全上下文(Security Context)角色-based訪問控制(RBAC),確保不同用戶的進程和資源相互隔離,防止單個用戶的未授權操作影響其他用戶或系統安全。

1. SELinux用戶與Linux用戶的映射:隔離基礎

SELinux中的SELinux用戶(如user_u、staff_u)與Linux系統用戶(如lisa、testuser)是分離的。多個Linux用戶可映射到同一個SELinux用戶,但SELinux用戶決定了用戶能承擔的角色和訪問權限范圍。

  • 配置命令:使用semanage login命令將Linux用戶映射到SELinux用戶。例如,將用戶lisa映射到staff_u(允許更多權限),將users組的用戶映射到user_u(限制更多):
    sudo semanage login -a -s staff_u lisa      # 單個用戶映射
    sudo semanage login -a -s user_u %users     # 組用戶批量映射(%表示組)
    
  • 生效要求:修改映射后,需強制注銷相關用戶(pkill -KILL -u lisa)使新映射生效,同時重置用戶主目錄上下文(restorecon -RF /home/lisa)以避免上下文沖突。

2. 角色與權限控制:限制用戶行為邊界

SELinux通過**角色(Role)**進一步限制SELinux用戶的權限。每個SELinux用戶關聯一個或多個角色(如user_r、staff_r),角色定義了用戶能執行的進程域(Domain)。例如:

  • user_u用戶通常關聯user_r角色,只能運行普通用戶進程(如bash、firefox);
  • staff_u用戶可關聯staff_r角色,允許運行部分管理任務(如sudo)。
  • 查看角色分配:使用semanage login -l查看用戶與SELinux用戶的映射及角色:
    sudo semanage login -l
    # 輸出示例:Login Name           SELinux User         MLS/MCS Range        Service
    # __default__            user_u               s0                   *
    # lisa                   staff_u              s0-s0:c0.c4          *
    

3. 安全上下文:資源訪問的最小權限

每個文件、目錄和進程都有安全上下文(格式:USER:ROLE:TYPE:LEVEL[:CATEGORY]),其中USER對應SELinux用戶,ROLE對應角色,TYPE定義資源類型(如user_home_t表示用戶家目錄)。SELinux通過比較進程上下文與資源上下文,決定是否允許訪問。

  • 設置文件上下文:使用semanage fcontext添加自定義上下文規則,用restorecon恢復默認上下文。例如,限制用戶user1只能訪問/home/user1/documents目錄:
    sudo semanage fcontext -a -t user_home_t "/home/user1/documents(/.*)?"  # 添加規則
    sudo restorecon -Rv /home/user1/documents                               # 恢復上下文
    
  • 查看上下文:使用ls -Z查看文件/目錄上下文,ps -eZ查看進程上下文。

4. 多租戶隔離:敏感度與類別控制

對于需要更嚴格隔離的多租戶環境(如托管多個客戶的服務器),可通過**敏感性(sensitivity)類別(category)**實現。例如:

  • 將不同租戶的進程分配到不同敏感性級別(如s0、s1),通過MLS(多級安全)策略限制低敏感性進程訪問高敏感性資源(遵循“禁止向上讀取、禁止向下寫入”原則);
  • 用**類別(c0.c4)**劃分租戶,同一租戶的進程和資源分配相同類別,不同租戶的類別不同,確保進程無法跨租戶訪問資源。
  • 配置示例:將users組用戶映射到staff_u,并限制敏感性范圍為s0-s0:c0.c4
    sudo semanage login -m -s staff_u -r "s0-s0:c0.c4" %users
    

5. 日志與故障排查:解決權限問題

當用戶因SELinux策略被拒絕訪問時,需通過日志定位問題:

  • 查看拒絕日志:使用ausearch命令過濾AVC(訪問控制拒絕)消息:
    sudo ausearch -m avc -ts recent  # 查看近期拒絕事件
    
  • 生成修復策略:使用audit2allow根據日志生成自定義策略(謹慎使用,避免過度放寬權限):
    sudo ausearch -m avc -ts recent | audit2allow -M mypolicy  # 生成策略模塊
    sudo semodule -i mypolicy.pp                             # 安裝模塊
    

通過以上配置,SELinux在Ubuntu中實現了多用戶的安全隔離:不同用戶通過SELinux用戶映射到不同角色,進程和資源的上下文限制了訪問范圍,多租戶環境可通過敏感度和類別進一步隔離。這種機制既保證了多用戶的正常使用,又提升了系統的整體安全性。

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