Zabbix 服务器 SELinux 策略

Zabbix 服务器 SELinux 策略

我有一个在 RHEL 7 机器上运行的 Zabbix 服务器,当我使用 Web 前端(在同一个机器上)时,它显示 Zabbix 服务器没有运行。

如果我禁用 SELinux 并且不进行任何其他更改,则 Web 前端会显示 Zabbix 服务器已成功运行。

关于如何允许 Zabbix 通过,您有什么想法吗?我已经将端口 10050 和 10051 添加到 FirewallD,但 SELinux 不允许我“第二次”添加它们。

答案1

我终于搞明白了。Zabbix Server 有一个 SELinux bool,允许 httpd 与端口 10051 进行通信。要设置它,请发出命令sudo setsebool httpd_can_connect_zabbix 1

这将允许 Web 界面显示 Zabbix 服务器是否启用,而无需禁用 SELinux!

答案2

没有答案给出关于如何更新 SELinux 规则以及如何在服务器重启后使设置保持不变的正确建议,为此请执行以下操作:

# 设置 sebool -P httpd_can_network_connect
# 设置布尔值 -P httpd_can_network_connect=true

这是在 RHEL7 上完成的。

答案3

  1. SELinux

https://www.zabbix.com/forum/showthread.php?t=47375&highlight=selinux 您已禁用它-确定

  1. 防火墙

尝试关闭防火墙

  1. PHP 前端/zabbix 服务器配置

常见问题是当 zabbix_server 仅在 IP 上监听,而不是在本地主机上监听(netstat -tanp | grep :10051),但前端配置为 localhost:10051,请正确测试和配置前端/zabbix 服务器

# grep ZBX_SERVER /etc/zabbix/web/zabbix.conf.php
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';

# telnet localhost 10051
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

如果服务器正在监听所有接口(包括 localhost),那么我也可以在前端配置中使用 localhost:

# netstat -tanp | grep :10051 | grep LISTEN
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      825/zabbix_server
tcp6       0      0 :::10051                :::*                    LISTEN      825/zabbix_server

答案4

你不需要sudo setenforce 0

请勿使用unreserved_port_t,否则/var/log/zabbix/zabbix_agentd.log输出为

 31542:20220614:214432.987 using configuration file: /etc/zabbix/zabbix_agentd.conf
 31542:20220614:214432.987 listener failed: bind() for [[-]:10050] failed: [13] Permission denied

改为zabbix_agent_port_t

semanage port --add    --type zabbix_agent_port_t --proto tcp 10050 || \
semanage port --modify --type zabbix_agent_port_t --proto tcp 10050

而对于 zabbix 服务器使用zabbix_port_t端口 10051。

相关内容