安装 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 阻止了。我该怎么办?
答案1
此勘误表应可修复此问题:http://rhn.redhat.com/errata/RHBA-2012-0780.html
答案2
好吧,首先决定是否要使用 SELinux。所有基于 EL 的发行版都默认安装并启用了它,但几乎没有其他发行版这样做。它能给你一点安全性,但也带来了不少麻烦,所以你必须权衡是否需要它。如果你不需要,你可以在 /etc/selinux/config 中禁用它。文件中的注释会告诉你具体该怎么做。
如果您愿意,也可以尝试降低它。如果当前设置为强制,您可以将其切换为宽容,看看它是否允许您运行 NRPE。此外,您可能能够找到一些关于使用 SELinux 设置 NRPE 的更多演练。老实说,我总是觉得它太烦人了,不值得为了安全而这么做。HTH
编辑:您可以在这里找到一堆用于 nagios 的 selinux 布尔值:http://wiki.centos.org/TipsAndTricks/SelinuxBooleans
答案3
如果nrpe_disable_trans
布尔不是一个选项:
您可以关注这些创建您自己的策略以允许 NRPE 的说明基本上,这将涉及在宽容模式下运行 SELinux 足够长的时间,以便您的 Nagios 服务器执行所有计划的 NRPE 检查。然后,您可以将它们从 audit.log 文件传输到 audit2allow。这将构建所需的策略以供您审查和纳入。
Thomas Bleher 的 nrpe.te 文件也可能成为您制定自己的政策的一个有用的起点或参考。
答案4
我注意到 AVC 消息包含path="/usr/bin/sudo"
。这意味着 NRPE 在尝试使用sudo
调用插件时发生故障。
为了实现这一点你必须要做的第一件事(但绝不是最后一件事!)是:
sudo setsebool -P nagios_run_sudo on
(-P
将更改写入磁盘上的策略文件。因此它将在重新启动后保留下来。)
现在您的插件将以 root 身份运行。但它很可能无法执行任何复杂操作(例如,运行具有除 之外的域的程序bin_t
),因为您的插件仍以nrpe_t
域身份运行。此域非常刻意地具有限制性权限;它甚至无法写入 /tmp 中的文件。