审计没有说明要做什么,但 Puppet 却无法在 SELinux 强制执行的情况下运行

审计没有说明要做什么,但 Puppet 却无法在 SELinux 强制执行的情况下运行

我决心让我的 Puppet Master 在 SELinux 设置为强制的情况下运行。如果我让它允许,它就能正常运行。

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

我已经使用审计日志和 audit2allow 进行了几次传递,以制作涵盖审计日志的 semodule。 (这是一个大混乱,乘客以 apache 用户的身份从 apache 模块运行,执行 puppet master 代码。)

这是一个全新的配置,因此 Puppet 清单是一个默认的空节点,无需执行任何操作。

如果我在远程机器上运行“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

有什么故障排除建议吗?

[编辑]:附加信息,按照建议关闭“dontaudit”并重复练习,错误消息发生了变化。我的 $ssldir 是 /var/lib/puppet/ssl,$logdir 是 /var/log/puppet,这使得这些错误变得有趣:

puppet-master[3210]: 权限被拒绝-/etc/puppet/ssl

puppet-master[3210]:(/File[/etc/puppet/ssl]/ensure)从不存在更改为目录失败:无法在确保上设置“目录”:权限被拒绝 - /etc/puppet/ssl

puppet-master[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

所有作品当然都是允许的。:(

答案1

为了更深入地研究这个问题,我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 会被绊倒进入不同的代码路径,从而触发额外的访问警报,而这些警报在宽容模式下是无法发现的。

相关内容