審計表示無事可做,但 puppet 無法在 SELinux 強制下執行
我決心讓我的 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 模式下發現。