溫馨提示×

ubuntu selinux如何定制個性化策略

小樊
36
2025-10-12 02:41:17
欄目: 智能運維

1. 準備工作:安裝SELinux基礎工具與依賴
在Ubuntu上定制SELinux策略前,需先安裝核心工具包。運行以下命令安裝selinux-basics(基礎SELinux配置)、selinux-policy-default(默認策略)及管理工具:

sudo apt update
sudo apt install selinux-basics selinux-policy-default policycoreutils libselinux1 auditd

安裝完成后,啟用SELinux并設置為permissive模式(允許記錄拒絕事件但不阻止操作):

sudo setenforce 0  # 臨時切換至permissive模式
sudo sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config  # 永久生效

重啟系統使設置生效:sudo reboot。

2. 查看當前SELinux狀態
使用sestatus命令確認SELinux運行狀態,需確保Current modepermissive(測試階段)或enforcing(正式生效):

sestatus

輸出示例:

SELinux status:                 enabled
Current mode:                   permissive
Mode from config file:          permissive
Policy version:                 35
Policy from config file:        targeted

3. 定制個性化策略:編寫.te規則文件
SELinux策略的核心是類型強制(TE),需通過.te文件定義進程(主體)與資源(客體)的訪問規則。以下是常見場景示例:

場景1:允許自定義應用myapp訪問/opt/myapp/data目錄
創建/etc/selinux/targeted/src/policy/myapp_policy.te文件,內容如下:

module myapp_policy 1.0;

# 聲明類型:進程類型(myapp_process_t)與文件類型(myapp_data_t)
type myapp_process_t;
type myapp_data_t;

# 允許myapp_process_t讀寫myapp_data_t類型的目錄
allow myapp_process_t myapp_data_t:dir { read write search };
allow myapp_process_t myapp_data_t:file { read write open };

場景2:允許Apache(httpd_t)訪問自定義端口(8080)
若需讓Apache監聽非標準端口(如8080),需修改端口標簽并添加規則:

module apache_custom_port 1.0;

# 聲明端口類型(http_port_t為Apache默認端口類型)
type http_port_t;

# 允許httpd_t進程綁定8080端口
allow httpd_t port_t:tcp listen;

注:若端口未被標記為http_port_t,需額外創建.fc文件(見步驟4)。

4. (可選)定義文件上下文:.fc文件
若需為特定文件/目錄分配自定義SELinux標簽(如場景2中的8080端口),需創建.fc文件。例如,在/etc/selinux/targeted/src/policy/apache_custom_port.fc中添加:

# 將8080/tcp端口標記為http_port_t類型
portcon tcp 8080 system_u:object_r:http_port_t:s0

此文件用于關聯資源與SELinux類型,確保策略規則生效。

5. 編譯與加載自定義策略模塊
使用SELinux提供的工具鏈編譯.te(及.fc)文件為可加載模塊:

# 編譯.te文件為.mod中間文件
checkmodule -M -m -o myapp_policy.mod myapp_policy.te
# 打包.mod文件為.pp可加載模塊(含.fc文件則一并處理)
semodule_package -o myapp_policy.pp -m myapp_policy.mod
# 加載模塊至SELinux策略
sudo semodule -i myapp_policy.pp

加載后,可通過semodule -l | grep myapp_policy驗證模塊是否安裝成功。

6. 調試與驗證策略

  • 查看拒絕日志:若策略未生效,通過ausearch命令獲取最近的SELinux拒絕事件:
    sudo ausearch -m avc -ts recent
    
  • 生成策略修正建議:使用audit2allow工具根據日志生成修正規則(示例):
    sudo ausearch -m avc -ts recent | audit2allow -M myapp_fix
    sudo semodule -i myapp_fix.pp  # 加載修正模塊
    
  • 測試策略效果:切換至enforcing模式(sudo setenforce 1),運行目標應用(如myapp或Apache),確認是否按預期工作。

7. 切換至Enforcing模式(正式生效)
測試無誤后,將SELinux切換至enforcing模式(強制執行策略):

sudo setenforce 1

如需永久生效,確保/etc/selinux/configSELINUX=enforcing。

注意事項

  • 定制策略前,建議備份現有策略:sudo cp -r /etc/selinux/targeted /etc/selinux/targeted.bak。
  • 避免過度授權(如allow *:*:*),遵循最小權限原則,僅授予必要權限。
  • Ubuntu默認使用targeted策略(針對特定服務),若需全局定制,可切換至mls策略(多級安全),但需更高配置復雜度。

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