Порт 10051 сервера Zabbix заблокирован брандмауэром, и мне нужно использовать только порт 80

У меня есть сервер zabbix, установленный в ubuntu 18.04 в облаке AWS, и я настроил домен и SSL .

На сервере AWS есть веб-сервер nginx , работающий в портах 80 и 443 , а apache2 настроен в 7526 . Из соображений безопасности в группе безопасности AWS включены только порты 80 и 443. Таким образом, apache2 также недоступен из внешнего мира.

Я настроил сервер zabbix в apache2 и имел прокси-сервер nginx для подключения к серверу zabbix из внешнего мира. Интерфейс Zabbix отлично работает после этого прокси в nginx.

У меня есть система, расположенная в разных местах, поэтому я решил подключить ее к серверу zabbix через Активную проверку. В активной отметке агент zabbix по умолчанию подключается к серверу zabbix через порт 10051 . Я не могу открыть новый порт в брандмауэре AWS по соображениям безопасности.

Как я могу соединить сервер zabbix и агент zabbix для активных проверок ?.

Примечание: Для тестирования я включил порт 10051 в брандмауэре AWS, и агент zabbix может подключиться к серверу

ИЗМЕНИТЬ

См. Мой файл zabbix_agentd.conf с конфигурация параметра ServerActive .

enter image description here

Как видите, app.myoffice.com теперь включен, и zabbix пытается подключиться к порту по умолчанию 10051 , поэтому он не может подключиться к серверу, так как в брандмауэре активны только порты 80 и 443

Могу я дать serverActive = https: //example.mydomain.com/zabbixserver/app как это? Если да, то как это?

1
задан 7 June 2021 в 16:08
2 ответа

Ни сервер zabbix, ни агент zabbix не поддерживают прослушивание портов ниже 1024.

Официальная документация для сервера и агента четко указывает поддерживаемый диапазон портов.

Сервер:

Параметр Обязательный Диапазон По умолчанию Описание
ListenPort нет 1024-32767 10051 Порт прослушивания для траппера .

Агент:

Параметр Обязательный Диапазон По умолчанию Описание
ListenPort нет 1024-32767 10050 Агент будет слушать этот порт для подключений с сервера.

Кроме того, порты ниже 1024 являются привилегированными , поэтому обычным пользователям не разрешается запускать на них серверы.
Кроме того, порты 80 и 443 зарезервированы для HTTP и HTTPS соответственно. Агент Zabbix использует собственный протокол на основе JSON [ источник ] . Хотя это технически возможно, прослушивание двух разных протоколов на одном и том же порту вызывает множество проблем.


Лучшее и, возможно, единственное решение - открыть трафик на портах 10050 и 10051.

0
ответ дан 28 July 2021 в 13:23

Я использую haproxyдля предоставления своих сервисов вместе с генерацией сертификатов 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

, хотя, возможно, с некоторой магией, если вам нужно использовать URL-адрес, такой как https://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 $^ > $@

0
ответ дан 10 December 2021 в 20:58

Теги

Похожие вопросы