使用 nagios 监控 zimbra 安装时出现问题

使用 nagios 监控 zimbra 安装时出现问题

我正在尝试从我的 nagios 安装(在较新的 OpenBSD 上运行)监控我的旧式 zimbra 安装(在过时的 Ubuntu 8.x 上运行)。

问题是,当我check_nrpe从 nagios 服务器运行时,它会抱怨:

nagios-server$ sudo su -m _nagios -c "/usr/local/libexec/nagios/check_nrpe -H ZIMBRA_HOST -c check_zimbra"
CHECK_NRPE: No output returned from daemon.

注意zimbra服务器的NRPE配置运行:

command[check_zimbra]=/usr/lib/nagios/plugins/check_zimbra.pl

另一方面,从 root 角度在 zimbra 服务器上本地运行该插件可以正常工作:

zimbra-server# ./check_zimbra.pl 
HOST : ZIMBRA_HOST, ldap : OK, logger : STOPPED and zmlogswatchctl down, mailbox : OK, mta : STOPPED and zmmtaconfigctl down and zmsaslauthdctl down, snmp : STOPPED, spell : OK, stats : OK

但是,在 zimbra 服务器上以 nagios 用户身份运行它会抱怨路径:

zimbra-server# su -m nagios -c "./check_zimbra.pl" 
Insecure $ENV{PATH} while running setuid at ./check_zimbra.pl line 32.

第 32 行叙述:

7  $zimbra_status_command='/opt/zimbra/bin/zmcontrol status';
[snip]
32 open (ZMSTATUS, "$zimbra_status_command |");

我怀疑这可能与超级 perl. 事实上,这个建议并将此行添加到check_zimbra.pl文件中,

delete @ENV{'PATH', 'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};

我得到以下信息:

zimbra-server# su -m nagios -c "./check_zimbra.pl" 
Insecure dependency in piped open while running setuid at /opt/zimbra/bin/zmcontrol line 389.

无论如何,在 zimbra 服务器上我已经安装了检查_zimbra.pl插件,它是suidzimbra,所以我可以从用户那里运行它nagios

zimbra-server# ls -la check_zimbra.pl 
-rwsr-xr-x 1 zimbra root 2885 2010-01-11 21:14 check_zimbra.pl

我已进行修改/etc/sudoers,以便nagios用户可以运行适当的 zimbra 监控工具:

%nagios ALL=(zimbra) NOPASSWD:/opt/zimbra/bin/zmcontrol

我被困住了..有没有其他方法可以check_zimbra.pl以 nagios 用户身份运行插件,能够zmcontrol status以 zimbra 用户身份运行命令..?

谢谢,

答案1

perldoc perlsec 指出应该将 @ENV{'PATH'} 设置为已知值,而不是取消设置它!

Blockquote 对于“不安全的 $ENV{PATH}”消息,您需要将 $ENV{'PATH'} 设置为已知值,并且路径中的每个目录必须是绝对的,并且除其所有者和组外,其他人都无法写入。即使可执行文件的路径名是完全限定的,您也可能会惊讶地收到此消息。这不是因为您没有提供程序的完整路径而生成的;相反,这是因为您从未设置 PATH 环境变量,或者您没有将其设置为安全的值而生成的。由于 Perl 无法保证所讨论的可执行文件本身不会转而执行依赖于您的 PATH 的其他程序,因此它会确保您设置了 PATH。

相关内容