nagios nrpe插件:权限问题

nagios nrpe插件:权限问题

我有一个权限问题,这让我很抓狂。我正尝试使用插件“check_asterisk_peers”在 arch linux 虚拟机上监控 asterisk。我已经安装了 NRPE(Nagios 远程代理)。nrpe.cfg 的相关部分是:

command[check_users]=/usr/lib/monitoring-plugins/check_users -w 5 -c 10
command[check_asterisk_peers]=/usr/lib/monitoring-plugins/check_asterisk_peers -p monika_gigaset

以下是我得到的结果:

/usr/lib/monitoring-plugins/check_nrpe -H 10.10.10.10 -c check_users
USERS OK - 2 users currently logged in |users=2;5;10;0

现在,这告诉我 NRPE 运行正常,并且所有权限都设置正确。

如果我只是运行插件(不调用 check_nrpe),我会得到:

aag ~ $ /usr/lib/monitoring-plugins/check_asterisk_peers -p monika_gigaset
CRITICAL: Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

但是如果我使用 sudo 运行它,它可以正常工作(由此我得出结论,该插件以非 root 身份运行时没有足够的权限):

aag ~ $ sudo /usr/lib/monitoring-plugins/check_asterisk_peers -p monika_gigaset
 OK: monika_gigaset

但是,如果我运行星号插件,我会得到:

aag ~ $ /usr/lib/monitoring-plugins/check_nrpe -H 10.10.10.10 -c check_asterisk_peers
CRITICAL: Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

如果我用 sudo 运行它,也会发生同样的事情:

aag ~ $ sudo /usr/lib/monitoring-plugins/check_nrpe -H 10.10.10.10 -c check_asterisk_peers
CRITICAL: Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

我确信问题出在权限上,但我无法解决它。 sudoers 文件(摘录)内容如下:

root ALL=(ALL) ALL
http ALL = NOPASSWD: /usr/sbin/asterisk -rx database *

nrpe ALL=(ALL) NOPASSWD: /usr/sbin/service,/usr/lib/monitoring-plugins/check_asterisk_peers
asterisk ALL=(ALL) ALL

%wheel ALL=(ALL) ALL
%admins ALL= (ALL) ALL
Defaults targetpw  # Ask for the password of the target user
ALL ALL=(ALL) ALL  # WARNING: only use this together with 'Defaults targetpw'

任何提示都将不胜感激!我的诊断是插件“check_asterisk_peers”没有联系 asterisk(以 root 身份运行)的权限,但我不明白如何授予它适当的权限。

答案1

正确的解决方案:

在 /etc/asterisk/asterisk.conf 中将套接字的所有者更改为

[files]
astctlpermissions = 0660
astctlowner = asterisk
astctlgroup = asterisk

并将 nrpe 或 nagios 用户(您可以在 nrpe.cfg 中看到您使用的用户)添加到 asterisk 组。

答案2

根据手册页对于该插件,您需要使用 sudo 命令运行该插件,因此当您使用 sudo 运行该插件时会获得成功的结果。

我已为您突出显示了该页面上的说明:

要授予 nagios 用户执行脚本的权限,请在 /etc/sudoers 文件中尝试以下命令:

nagios ALL=(ALL) NOPASSWD: /path/to/plugins/directory/check_asterisk_peers 

然后使用 sudo 调用插件:

/path/to/sudo check_asterisk_peers

答案3

我最终设法通过向 nrpe 及其组授予 NOPASSWD 来解决问题。但是安全性并不理想,并且可能会受益于更严格的调整。以下是 sudoers 的相关部分:

root ALL=(ALL) ALL
http ALL = NOPASSWD: /usr/sbin/asterisk -rx database *
nrpe ALL=(ALL) NOPASSWD: ALL
asterisk ALL=(ALL) ALL
%admins ALL= (ALL) NOPASSWD: ALL
%wheel ALL=(ALL) NOPASSWD: ALL
%sudo   ALL=(ALL) NOPASSWD: ALL

相关内容