# 怎么使用semanage管理SELinux安全策略
## 目錄
1. [SELinux與semanage概述](#selinux與semanage概述)
2. [安裝與基礎配置](#安裝與基礎配置)
3. [端口管理實戰](#端口管理實戰)
4. [文件上下文控制](#文件上下文控制)
5. [布爾值精細調控](#布爾值精細調控)
6. [用戶與角色映射](#用戶與角色映射)
7. [網絡接口管理](#網絡接口管理)
8. [故障排查技巧](#故障排查技巧)
9. [最佳實踐建議](#最佳實踐建議)
10. [總結與進階學習](#總結與進階學習)
---
## SELinux與semanage概述
SELinux(Security-Enhanced Linux)作為Linux內核的強制訪問控制(MAC)系統,通過**安全上下文**和**策略規則**實現進程與資源的精細隔離。與傳統DAC(自主訪問控制)相比,它能有效防御提權攻擊和零日漏洞。
`semanage`是SELinux策略管理的關鍵工具,屬于`policycoreutils-python`包,提供以下核心功能:
- 端口類型映射管理(HTTP默認端口修改)
- 文件/目錄上下文永久配置
- 布爾值策略持久化設置
- 用戶角色映射維護
- 網絡接口安全控制
與臨時命令`chcon`不同,semanage的修改能**跨越文件系統重標記或系統重啟**,確保策略持久生效。
---
## 安裝與基礎配置
### 環境準備
```bash
# RHEL/CentOS系統
sudo yum install policycoreutils-python-utils
# Fedora
sudo dnf install policycoreutils-python-utils
# Ubuntu/Debian
sudo apt install policycoreutils selinux-utils
semanage [選項] [操作對象] [子命令] [參數]
常用操作對象:
- port
:管理網絡端口
- fcontext
:管理文件上下文
- boolean
:管理布爾值策略
- user
:管理SELinux用戶
- interface
:管理網絡接口
sudo semanage port -l | grep http
輸出示例:
http_port_t tcp 80, 443, 8080, 8000
# 允許TCP 8888作為HTTP端口
sudo semanage port -a -t http_port_t -p tcp 8888
# 驗證添加結果
sudo semanage port -l | grep http_port_t
# 移除錯誤配置的TCP 9999端口
sudo semanage port -d -t http_port_t -p tcp 9999
# 設置/webapp目錄默認上下文為httpd_sys_content_t
sudo semanage fcontext -a -t httpd_sys_content_t "/webapp(/.*)?"
# 使新策略立即生效
sudo restorecon -Rv /webapp
# 排除/webapp/uploads目錄使用默認策略
sudo semanage fcontext -a -e /var/www/html /webapp
# 查看文件當前上下文
ls -Z /webapp/index.html
# 查詢默認上下文配置
sudo semanage fcontext -l | grep '/webapp'
sudo semanage boolean -l | grep httpd
典型輸出:
httpd_can_network_connect --> off
httpd_enable_homedirs --> off
sudo semanage boolean -m --on httpd_can_network_connect
# 驗證變更
getsebool httpd_can_network_connect
# 創建允許httpd和sudo權限的用戶
sudo semanage user -a -R "staff_r system_r" -L s0 -r s0-s0:c0.c1023 webadmin
# 將現有用戶bob映射到webadmin_u身份
sudo semanage login -a -s webadmin_u bob
sudo semanage interface -l
sudo semanage interface -a -t netif_t eth1
sudo ausearch -m avc -ts recent
sudo semanage port -l | grep <端口號>
# 實時監控SELinux拒絕事件
sudo tail -f /var/log/audit/audit.log | grep AVC
變更管理原則:
-m
修改替代-a
添加重復條目文檔記錄:
# 導出當前策略備份
sudo semanage export -f selinux_backup.conf
定期審計:
# 檢查異常上下文
sudo matchpathcon -V /path/to/dir
通過本文您已掌握: - semanage核心功能模塊操作 - 策略持久化配置方法 - 常見故障診斷流程
進階學習方向: 1. 自定義SELinux策略模塊開發 2. 容器環境下的SELinux配置(如Kubernetes的spc_t上下文) 3. 多級安全(MLS)策略實施
參考文檔:
- Red Hat SELinux官方文檔
-man 8 semanage
- NSA SELinux白皮書 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。