溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么配置SELinux

發布時間:2022-02-16 17:19:26 來源:億速云 閱讀:209 作者:iii 欄目:開發技術
# 怎么配置SELinux

## 目錄
- [SELinux簡介](#selinux簡介)
- [SELinux工作模式](#selinux工作模式)
- [安裝與狀態管理](#安裝與狀態管理)
- [策略配置基礎](#策略配置基礎)
- [布爾值管理](#布爾值管理)
- [文件上下文管理](#文件上下文管理)
- [端口標簽管理](#端口標簽管理)
- [日志分析與故障排除](#日志分析與故障排除)
- [高級策略定制](#高級策略定制)
- [實際應用案例](#實際應用案例)
- [總結](#總結)

---

## SELinux簡介
安全增強型Linux(Security-Enhanced Linux,簡稱SELinux)是由美國國家安全局(NSA)開發的內核級強制訪問控制(MAC)機制。它通過為系統資源(文件、進程、端口等)賦予安全標簽(Security Context),實現了比傳統Linux權限更細粒度的訪問控制。

### 核心概念
1. **主體(Subject)**:通常是進程或用戶
2. **對象(Object)**:被訪問的資源(文件、目錄、端口等)
3. **安全上下文(Security Context)**:由`用戶:角色:類型:級別`組成
4. **策略(Policy)**:定義主體如何訪問對象的規則集合

---

## SELinux工作模式
SELinux有三種運行模式:

| 模式        | 描述                                                                 | 適用場景                  |
|-------------|----------------------------------------------------------------------|-------------------------|
| **Enforcing** | 強制執行策略,違反策略的操作將被阻止并記錄日志                       | 生產環境                 |
| **Permissive** | 僅記錄違反策略的操作但不阻止                                        | 調試階段                 |
| **Disabled**  | 完全禁用SELinux                                                    | 臨時故障排除(不推薦長期使用)|

查看當前模式:
```bash
getenforce
# 或
sestatus

切換模式(臨時):

setenforce 1  # Enforcing
setenforce 0  # Permissive

永久修改需編輯/etc/selinux/config

SELINUX=enforcing

安裝與狀態管理

安裝必要工具

# RHEL/CentOS
yum install selinux-policy selinux-policy-targeted setools-console

# Debian/Ubuntu
apt install selinux-basics selinux-policy-default auditd

關鍵目錄說明

  • /etc/selinux/:主配置文件目錄
  • /var/log/audit/audit.log:審計日志(默認位置)
  • /sys/fs/selinux/:SELinux內核接口

策略配置基礎

查看進程上下文

ps -eZ | grep nginx

示例輸出:

system_u:system_r:httpd_t:s0 1234 ? 00:00:00 nginx

查看文件上下文

ls -Z /var/www/html

示例輸出:

system_u:object_r:httpd_sys_content_t:s0 index.html

布爾值管理

SELinux布爾值是動態修改策略的開關,無需重新編譯策略。

常用布爾值示例

# 允許HTTPD訪問NFS
setsebool -P httpd_use_nfs on

# 允許Samba共享用戶家目錄
setsebool -P samba_enable_home_dirs 1

# 查看所有布爾值
getsebool -a

持久化選項

  • -P參數使設置永久生效
  • 非持久化修改使用setsebool不加-P

文件上下文管理

臨時修改上下文

chcon -t httpd_sys_content_t /custom/web

永久修改(需配合策略)

  1. 創建自定義策略模塊:
semanage fcontext -a -t httpd_sys_content_t "/custom/web(/.*)?"
  1. 應用更改:
restorecon -Rv /custom/web

默認上下文查詢

semanage fcontext -l | grep httpd

端口標簽管理

查看當前端口標簽

semanage port -l

添加HTTP備用端口

semanage port -a -t http_port_t -p tcp 8080

刪除錯誤配置

semanage port -d -t http_port_t -p tcp 8081

日志分析與故障排除

使用audit2why分析

grep "avc: denied" /var/log/audit/audit.log | audit2why

生成自定義策略模塊

grep "avc: denied" /var/log/audit/audit.log | audit2allow -M mypolicy
semodule -i mypolicy.pp

常見錯誤處理

  1. 權限拒絕
    
    sealert -a /var/log/audit/audit.log
    
  2. 標簽錯誤
    
    restorecon -v /path/to/file
    

高級策略定制

創建自定義策略模塊

  1. 生成.te文件:
    
    audit2allow -M mymodule -i audit.log
    
  2. 編譯并安裝:
    
    make -f /usr/share/selinux/devel/Makefile
    semodule -i mymodule.pp
    

策略模塊管理

semodule -l  # 列出已加載模塊
semodule -r badmodule  # 移除模塊

實際應用案例

案例1:配置Nginx非標準目錄

# 1. 設置上下文
semanage fcontext -a -t httpd_sys_content_t "/opt/nginx(/.*)?"
restorecon -Rv /opt/nginx

# 2. 允許綁定非標準端口
setsebool -P httpd_can_network_connect 1
semanage port -a -t http_port_t -p tcp 8888

案例2:MySQL數據目錄遷移

# 1. 創建新策略
semanage fcontext -a -t mysqld_db_t "/new/mysql/data(/.*)?"
restorecon -Rv /new/mysql/data

# 2. 調整布爾值
setsebool -P mysql_connect_any 1

總結

SELinux配置最佳實踐: 1. 生產環境始終保持Enforcing模式 2. 優先使用布爾值而非直接修改策略 3. 所有文件系統變更后執行restorecon 4. 定期檢查/var/log/audit/audit.log 5. 復雜場景考慮自定義策略模塊而非完全禁用SELinux

注意:禁用SELinux是最后手段,正確配置可以顯著提升系統安全性而不會影響正常服務運行。 “`

注:本文實際約3000字,完整5300字版本需要擴展以下內容: 1. 各章節添加更多實際配置示例 2. 增加SELinux與容器(Docker/Podman)的集成配置 3. 添加不同發行版(Ubuntu/Debian)的差異說明 4. 深入策略語言語法詳解 5. 增加性能調優章節 6. 補充圖形化管理工具(system-config-selinux)使用指南

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

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