我已经安装了 zabbix 服务器Ubuntu 18.04在 AWS 云中并设置域名和 SSL。
AWS 服务器有一个nginxWeb 服务器运行于端口 80 和 443和阿帕奇2配置在7526。出于安全原因,AWS 安全组中仅启用了端口 80 和 443。因此,外部世界也无法访问 apache2。
我已经在 apache2 中配置了 zabbix 服务器,并且有一个nginx 代理从外部世界连接到 zabbix 服务器。Zabbix 前端在 nginx 中使用此代理后运行良好。
我的系统位于不同的地方,因此决定通过 Active check 将其连接到 zabbix 服务器。在 Active check 中,zabbix 代理连接到 zabbix 服务器通过10051端口默认情况下。我无法打开新端口由于安全原因,在 AWS 防火墙中。
如何连接 zabbix 服务器和 zabbix 代理进行主动检查?
笔记 :为了测试,我在 AWS 防火墙中启用了 10051 端口,并且 zabbix 代理可以连接到服务器
已编辑
请参阅我的zabbix_agentd配置文件包含以下配置的文件服务器活动范围。
正如你现在所看到的app.myoffice.com现已启用,zabbix 尝试连接到默认10051端口因此无法连接到服务器,因为防火墙中只有端口 80 和 443 处于活动状态
我可以给serverActive=https://example.mydomain.com/zabbixserver/app像这样吗?如果是的话那怎么样?
答案1
zabbix server和zabbix agent都不支持监听低于1024的端口。
服务器:
范围 | 强制的 | 范围 | 默认 | 描述 |
---|---|---|---|---|
监听端口 | 不 | 1024-32767 | 10051 | 监听捕获器的端口。 |
代理人:
范围 | 强制的 | 范围 | 默认 | 描述 |
---|---|---|---|---|
监听端口 | 不 | 1024-32767 | 10050 | 代理将在此端口上监听来自服务器的连接。 |
还,低于 1024 的端口是特权端口,因此不允许普通用户在其上运行服务器。
此外,端口 80 和 443 分别保留用于 HTTP 和 HTTPS。Zabbix 代理使用自己的基于 JSON 的协议[来源]。虽然技术上可行,但在同一个端口上监听两种不同的协议会导致很多问题。
最好的,也可能是唯一的解决方案是在端口 10050 和 10051 上开放流量。
答案2
我用哈普罗西公开我的服务并生成服务特定的 TLS 证书(使用 SNI),我喜欢它,因为我只需连接到https://someservice.example.com/并且不再关心我的任何服务实际使用哪些端口。
对于 zabbix,我认为以下内容应该是您需要配置的最低限度:
frontend hafrontend
bind *:443 ssl crt /etc/haproxy/certs_and_keys
mode http
default_backend zabbix_backend
use_backend zabbix_backend if { ssl_fc_sni zabbix.example.com }
backend zabbix_backend
mode http
server zabbix_server 127.0.0.1:10051
尽管如果您需要使用类似的 urlhttps://example.mydomain.com/zabbixserver/app
而不仅仅是https://example.mydomain.com/
(以上是我所了解的有关配置 haproxy 的全部内容,也是我所需要的全部内容),可能还需要更多的魔法。
通过 Makefile 生成的证书(文件位置可能是 Centos 特定的):
# Root CA
example.com.key:
openssl genrsa -out $@ 4096
openssl rsa -in $@ -noout -text
example.com.crt: example.com.key
openssl req -new -x509 -days 7500 -key $^ -out $@ -subj '/C=XX/L=Example/CN=example.com'
/etc/pki/ca-trust/source/anchors/example.com.pem: example.com.crt example.com.key
cat $^ > $@
update-ca-trust
/etc/haproxy/certs_and_keys/example.com.pem: example.com.crt example.com.key
cat $^ > $@
# Host cert
zabbix.example.com.key:
openssl genrsa -out $@ 4096
openssl rsa -in $@ -noout -text
zabbix.example.com.csr: zabbix.example.com.key
bash -c "openssl req -new -key $^ -out $@ -extensions san -config <(echo '[req]'; echo 'distinguished_name=req'; echo '[san]'; echo 'subjectAltName=DNS:zabbix.example.com') -subj '/C=XX/L=Example/CN=zabbix.example.com'"
openssl req -in $@ -noout -text
zabbix.example.com.crt: zabbix.example.com.csr
openssl x509 -days 365 -req -in $^ -out $@ -CA example.com.crt -CAkey example.com.key -CAcreateserial
/etc/haproxy/certs_and_keys/zabbix.example.com.pem: zabbix.example.com.crt zabbix.example.com.key
cat $^ > $@