SELinux(Security-Enhanced Linux)通過強制訪問控制(MAC)保護系統。當策略違規發生時,會產生 AVC 拒絕日誌並彈出警告。本文梳理四大典型成因及對應處理路徑。
核心機制:所有主體(進程)、客體(文件/端口/Socket)必須帶有正確標籤。策略規則基於標籤匹配,標籤錯誤直接導致拒絕。
典型場景:
cp /var/www/html/index.html /tmp/,類型變為 user_tmp_t 而非 httpd_sys_content_t)/data/www)修復工具鏈:
# 1. 查看建議標籤
ls -Z /path/to/file
semanage fcontext -l | grep '/var/www'
# 2. 永久添加文件上下文規則
semanage fcontext -a -t httpd_sys_content_t '/data/www(/.*)?'
# 3. 恢復上下文
restorecon -Rv /data/www
# 4. 圖形工具
sealert -b # 瀏覽器查看詳細建議
背景:SELinux 預置策略覆蓋常見服務默認配置。修改端口、路徑、啟動參數會超出策略許可範圍。
布爾值調節:
# 查看所有布爾值
semanage boolean -l | grep httpd
# 常用示例
setsebool -P httpd_can_network_connect 1 # 允許 HTTPD 連網
setsebool -P httpd_enable_homedirs 1 # 允許讀取用戶家目錄
setsebool -P nis_enabled 1 # 啟用 NIS 認證
# 圖形管理
system-config-selinux
特徵:未修改配置、標籤正確,仍觸發拒絕。可能是:
處理路徑:
sealert -l 查看詳細報告與建議semanage permissive -a httpd_tsetenforce 0(僅記錄不阻擋)ausearch -c 'app' --raw | audit2allow -M local_app; semodule -i local_app.ppSELinux 非 IDS,但異常警告模式可作為入侵指標(IOC):
| 可疑行為 | 對應警告特徵 |
|---|---|
| 嘗試關閉 SELinux | 寫入 /etc/selinux/config、執行 setenforce 0 |
| 載入惡意核心模組 | 寫入 /lib/modules/、/boot/、調用 init_module |
| 竊取憑證 | 讀取 shadow_t 類型文件(/etc/shadow、/etc/gshadow) |
| 清除蹤跡 | 截斷/覆寫 var_log_t 日誌文件 |
| 建立隱蔽通道 | 連接非常用埠(>1024)、SMTP 埠 (25) 外發郵件 |