Systemd PrivateTmp=真正的安全隐患

sim*_*lev 6 security nrpe systemd

我使用Nagios CoreNRPEcheck_disk监控 Ubuntu 服务器上的可用磁盘空间。

在以前的 Ubuntu 版本中,我曾经得到类似这样的输出:

DISK OK - free space: / 43754 MB (80% inode=86%):
Run Code Online (Sandbox Code Playgroud)

相反,在 Ubuntu 18.04.1 上,我得到:

DISK OK - free space: /var/tmp 43754 MB (80% inode=86%):
Run Code Online (Sandbox Code Playgroud)

我看到/var/tmp/分区的安装点不正确。我跟踪此行为依赖PrivateTmp=truenagios-nrpe-server.service

  • 我去查看/var/tmp并发现了一个名为systemd-private-c5b5d3d362364af19af640147f2cb844-nagios-nrpe-server.service-4uILRy
  • 然后检查服务定义并注意到(例如Ubuntu 16.04 上的NRPE2PrivateTmp=true不存在)
  • 最后,尝试删除该行,然后根挂载点被检测为/

我觉得我面临三个选择:

  1. 忍受它。

  2. 消除PrivateTmp=true

  3. 找到合理的解决方法。

我倾向于接受它,但如果我更清楚没有私人/tmp服务的影响,我可以对选项 2 做出明智的选择。

最佳解决方案可能是找到一种解决方法,指示check_disk即使在这种情况下也返回正确的安装点信息。无法访问系统/tmp不应构成障碍。

问题:请说明 的含义PrivateTmp=true,解释为什么建议使用它,在什么情况下以及有哪些注意事项可以将其删除。

第二个问题:check_disk即使由带有 的服务运行,是否有一个合理的解决方法或等效工具可以显示正确的根挂载点PrivateTmp=true


附加信息:

完整的命令是:/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/mapper/vg-root。在本地运行时,即使与nagios用户一起运行,输出也会正确显示/. 当使用以下命令从 Nagios 服务器远程运行时/usr/local/libexec/nagios/check_nrpe2 -H 192.168.1.2 -c check_root,输出显示/var/tmp而不是预期的/.

Mic*_*ton 3

我可以通过提供块设备而check_disk不是安装点来重现此行为。

例如:

root@cosmic:~# grep check_root /etc/nagios/nrpe.cfg 
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
root@cosmic:~# /usr/lib/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_root
DISK OK - free space: /var/tmp 6451 MB (68% inode=78%);| /var/tmp=3033MB;8010;9011;0;10013
root@cosmic:~# /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013
Run Code Online (Sandbox Code Playgroud)

但通过使用挂载点,我得到了预期的行为:

root@cosmic:~# grep check_root /etc/nagios/nrpe.cfg 
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
root@cosmic:~# /usr/lib/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_root
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013
root@cosmic:~# /usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
DISK OK - free space: / 6451 MB (68% inode=78%);| /=3033MB;8010;9011;0;10013
Run Code Online (Sandbox Code Playgroud)

此行为似乎确实与PrivateTmp=systemd 单元中的设置有关。当我从 中删除它时nagios-nrpe-server.service,然后check_disk在给定块设备时返回预期结果。我玩了一下刚刚运行的微不足道的服务/bin/dfPrivateTmp=true但我找不到任何明显的问题。它也返回了正确的结果。

我建议,如果您确实需要能够通过块设备而不是挂载点检查磁盘,最好的办法就是向 Nagios NRPE 开发人员报告问题,以便他们能够真正深入研究代码并找到任何问题。是。