以 root 身份运行 NRPE 插件:NRPE 无法读取输出

以 root 身份运行 NRPE 插件:NRPE 无法读取输出

我遇到了 nagios 和 NRPE 的问题,无法解决。

我已经尝试过了。

# grep "nrpe_user=" /etc/nagios/nrpe.cfg
nrpe_user=nrpe

NRPE 以用户 nrpe 的身份运行。因此我在 visudo 中添加了以下几行:

Defaults:nrpe !requiretty
nrpe ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/check_jboss_files

我编辑了我的nagios nrpe.cfg:

command[check_jboss_files]=sudo /usr/lib64/nagios/plugins/check_jboss_files

但是如果我尝试从 Nagios 服务器运行该命令,我会得到以下结果:

# /usr/lib64/nagios/plugins/check_nrpe -H 1.2.3.4 -c check_jboss_files
NRPE: Unable to read output

该脚本在本地启动时按预期运行,即使以用户 nrpe 身份运行时也是如此:

# sudo sudo -s -u nrpe
bash-4.2$ sudo /usr/lib64/nagios/plugins/check_jboss_files
JBOSS Files: 2049
WARNING - JBOSS Files: 2049

没有 sudo,脚本可以在 nagios 服务器上运行,但必须使用 sudo 才能获得良好的结果。我错过了什么?我可能已经尝试了所有方法,我将不胜感激任何帮助。

答案1

我最近遇到了非常类似的情况,解决方案是配置 selinux 以允许 sudo 访问。

跟随文章,你就会知道该怎么做。

对我来说这在 CentOS 7.4 上有效:

  1. yum install -y setroubleshoot-server
  2. 在审计日志中搜索违规行为
  3. 使用 audit2why
  4. 按照其建议

我的违规行为:

$ grep -m 1 type=AVC.*sudo /var/log/audit/audit.log | audit2why
type=AVC msg=audit(1525359549.889:211763): avc:  denied  { getattr } for  pid=127488 comm="check_d" path="/usr/bin/sudo" dev="dm-0" ino=67120340 scontext=system_u:system_r:nrpe_t:s0 tcontext=system_u:object_r:sudo_exec_t:s0 tclass=file
Was caused by:
The boolean nagios_run_sudo was set incorrectly.
Description:
Allow nagios to run sudo

Allow access by executing:
# setsebool -P nagios_run_sudo 1

运行建议的命令解决了我的问题。

相关内容