Назад | Перейти на главную страницу

Проблемы с мониторингом установки Zimbra с помощью nagios

Я пытаюсь отслеживать мою устаревшую установку zimbra (работающую на устаревшей Ubuntu 8.x) из моей установки nagios (работающей на более поздней версии OpenBSD).

Проблема в том, что когда я бегу 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.

Обратите внимание, что конфигурация NRPE сервера zimbra работает:

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

С другой стороны, запуск плагина локально на сервере zimbra отлично работает от root:

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

Однако запуск его от имени пользователя nagios на сервере zimbra жалуется на путь:

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 |");

У меня есть подозрение, что это может быть связано с suid 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 я установил check_zimbra.pl плагин, который suid zimbra, чтобы я мог запустить его из 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 ..?

Спасибо,

perldoc perlsec указывает, что для @ENV {'PATH'} необходимо установить известное значение, а не сбрасывать его!

Blockquote Для сообщений «Небезопасный $ ENV {PATH}» вам необходимо установить $ ENV {'PATH'} на известное значение, и каждый каталог в пути должен быть абсолютным и недоступным для записи другим лицам, кроме его владельца и группы. Вы можете быть удивлены, получив это сообщение, даже если путь к вашему исполняемому файлу полностью определен. Он не создается, потому что вы не указали полный путь к программе; вместо этого он создается, потому что вы никогда не устанавливали переменную среды PATH или не устанавливали для нее что-то безопасное. Поскольку Perl не может гарантировать, что рассматриваемый исполняемый файл сам не развернется и не выполнит какую-то другую программу, зависящую от вашего PATH, он гарантирует, что вы установили PATH.