Phusion-Passenger

審計表示無事可做,但 puppet 無法在 SELinux 強制下執行

  • August 21, 2014

我決心讓我的 puppet master 執行 SELinux 設置為強制執行。如果我允許它,它執行良好。

我在 RHEL 7 上,使用 systemd、apache2、passenger 4 和 puppet 3。

我已經使用審計日誌和audit2allow 完成了幾次通過,以製作覆蓋審計日誌的semodule。(而且這是一團糟,乘客從 apache 模組執行,作為 apache 使用者,執行 puppet 主程式碼。)

這是一個全新的配置,所以 puppet manifest 是一個預設的空節點,什麼都不做。

如果我在遠端機器上執行“puppet agent -t”,它會以 setenforce 0 成功。審計日誌非常空。(audit2allow 報告“無事可做。”)

但是,如果我將 setenforce 設為 1,我會得到這些:

Aug 20 23:14:28 puppet002 puppet-master[1544]: Permission denied - /etc/puppet/auth.conf
Aug 20 23:14:29 puppet002 puppet-master[1544]: Permission denied - /etc/puppet/manifests/site.pp on node agentserver.example.com

我嘗試更改 /etc/puppet/* 上的所有權,並且 se 上下文看起來不錯:

[root@puppet002 log]# cd /etc/puppet
[root@puppet002 puppet]# ls -lZ
-rw-r--r--. apache apache system_u:object_r:puppet_etc_t:s0 auth.conf
-rw-r--r--. apache apache system_u:object_r:puppet_etc_t:s0 fileserver.conf
drwxr-xr-x. apache apache system_u:object_r:puppet_etc_t:s0 manifests
drwxr-xr-x. apache apache system_u:object_r:puppet_etc_t:s0 modules
-rw-r--r--. apache apache system_u:object_r:puppet_etc_t:s0 puppet.conf

有任何故障排除建議嗎?

$$ Edit $$:附加資訊,按照關閉“dontaudit”並重複練習的建議,錯誤消息發生了變化。我的 $ ssldir is /var/lib/puppet/ssl and $ logdir 是 /var/log/puppet,這使得這些錯誤變得有趣: 木偶大師

$$ 3210 $$: 權限被拒絕 - /etc/puppet/ssl 木偶大師

$$ 3210 $$: (/文件$$ /etc/puppet/ssl $$/ensure)從不存在更改為目錄失敗:無法在確保上設置“目錄”:權限被拒絕 - /etc/puppet/ssl 木偶大師

$$ 3210 $$:無法準備執行:初始化時出現 3 次失敗:文件$$ /etc/puppet/ssl $$:從缺席更改為目錄失敗:無法在確保上設置“目錄”:權限被拒絕 - /etc/puppet/ssl;文件$$ /etc/puppet/manifests $$:從缺席更改為目錄失敗:無法在確保上設置“目錄”:權限被拒絕 - /etc/puppet/manifests;文件$$ /var/lib/puppet/log $$:從 0755 更改為 0750 失敗:無法在 /var/lib/puppet/log 上設置模式 755:權限被拒絕 - /var/lib/puppet/log 當然,所有作品都在 Permissive 中。:(

為了更深入地解決這個問題,我setroubleshoot-server在我的 puppet master 上安裝了這個包。我沒有將機器置於 Permissive 模式,而是將其置於 Enforcing 狀態。然後我將我的審計日誌輸入到 sealert 中,得到了這個 gem:

found 3 alerts in /var/log/audit/audit.log
--------------------------------------------------------------------------------

SELinux is preventing /usr/bin/ruby from search access on the directory .

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that ruby should be allowed search access on the  directory by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep ruby /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

實際上,這允許 puppet master 在 Enforcing 模式下成功執行。

我的理論是,在 Enforcing 模式下,Puppet master 被觸發到觸發額外訪問警報的不同程式碼路徑,而不是在 Permissive 模式下發現。

引用自:https://serverfault.com/questions/622913