在安装Nagios NRPE和Nagios插件后,我在我的rsyslog中获得以下条目:
May 13 14:01:30 wcmisdlin02 kernel: type=1400 audit(1305309690.482:2334): avc: denied { getattr } for pid=3835 comm="sh" path="/usr/bin/sudo" dev=dm-0 ino=7355981 scontext=unconfined_u:system_r:nrpe_t:s0 tcontext=system_u:object_r:sudo_exec_t:s0 tclass=file
看起来像我试图通过NRPE执行的Nagios插件被SELinux阻止。 我该怎么办?
这应该通过这个勘误来解决: http : //rhn.redhat.com/errata/RHBA-2012-0780.html
如果nrpe_disable_trans布尔值不是一个选项:
您可以按照这些说明创build您自己的策略以允许NRPE 。 基本上,这将涉及在允许模式下运行SELinux足够长的时间,以使您的Nagios服务器执行所有计划的NRPE检查。 然后,您可以将它们从audit.log文件传送到audit2allow。 这将build立您的审查和包含所需的政策。
Thomas Bleher的nrpe.te文件也可能成为构build自己的策略的有用起点或参考。
那么,首先决定你是否想要SELinux。 所有基于EL的都默认安装并启用,但几乎没有其他发行版。 它给了你一点安全感,但是不止一点令人头痛,所以你不得不以某种方式衡量你是否想要它。 如果你不这样做,你可以在/ etc / selinux / config中禁用它。 该文件中的评论将准确地告诉你该怎么做。
如果你想,你也可以尝试降低它。 如果目前设置为执行,则可以将其切换为宽容,并查看是否允许您运行NRPE。 你也许可以find更多的使用SELinux设置NRPE的演练。 老实说,我总是觉得这是一个值得担心的烦恼。 HTH
编辑:你可以在这里find一堆用于nagios的selinux布尔: http ://wiki.centos.org/TipsAndTricks/SelinuxBooleans
我注意到AVC消息包含path="/usr/bin/sudo" 。 这意味着当试图使用sudo来调用一个插件时,NRPE正在运行。
第一个(但没有意味着最后!)你必须做的事情来允许这个:
sudo setsebool -P nagios_run_sudo on
( -P将更改写入磁盘上的策略文件,因此在重新启动时它将保持不变。)
现在你的插件将以root身份运行。 但是它很可能不能做任何复杂的事情(例如,运行具有bin_t以外的域的程序),因为你的插件仍然作为nrpe_t域运行。 这个域非常刻意限制权限; 它甚至不能写入/ tmp中的文件。