我决心让我的 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
有任何故障排除建议吗?
[编辑]:附加信息,按照关闭“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
当然,所有作品都在 Permissive 中。:(
为了更深入地解决这个问题,我
setroubleshoot-server
在我的 puppet master 上安装了这个包。我没有将机器置于 Permissive 模式,而是将其置于 Enforcing 状态。然后我将我的审计日志输入到 sealert 中,得到了这个 gem:实际上,这允许 puppet master 在 Enforcing 模式下成功运行。
我的理论是,在 Enforcing 模式下,Puppet master 被触发到触发额外访问警报的不同代码路径,而在 Permissive 模式下没有发现。