- 6 Безопасное подключение к веб-интерфейсу
- Обзор
- Настройка
- Устранение неполадок
- IP-адрес веб-интерфейса не разрешен
- Незашифрованное подключение не разрешено
- Веб-интерфейс пытается установить TLS-соединение, тогда как сервер ожидает незашифрованное соединение
- Сертификат веб-интерфейса не является доверенным
- Файл ключа TLS недоступен для чтения
- Файлы TLS недействительны или повреждены
6 Безопасное подключение к веб-интерфейсу
Обзор
В этом разделе приведены шаги по настройке Zabbix и примеры конфигурации для безопасных TLS-соединений между веб-интерфейсом Zabbix и сервером Zabbix.
Настройка
По умолчанию обмен данными между веб-интерфейсом Zabbix и сервером Zabbix не шифруется. Для повышения безопасности включите TLS с обеих сторон. Ниже приведен пример самого простого способа сделать это.
1. Создайте сертификаты и ключи.
Создайте рабочий каталог:
sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl
Создайте сертификат CA (измените значение MyZabbixCA в соответствии с фактическим общим именем):
sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"
Создайте закрытый ключ и сертификат для сервера Zabbix (измените значение zabbix-server.example.com в соответствии с фактическим общим именем):
sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr -subj "/CN=zabbix-server.example.com/"
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crt
Создайте закрытый ключ и сертификат для веб-интерфейса Zabbix (измените значение zabbix-frontend-node в соответствии с фактическим общим именем):
sudo openssl genrsa -out frontend.key 2048
sudo openssl req -new -key frontend.key -out frontend.csr -subj "/CN=zabbix-frontend-node/"
sudo openssl x509 -req -days 365 -in frontend.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out frontend.crt
2. Установите необходимые разрешения.
Для сервера Zabbix (измените владельца и группу в соответствии с пользователем демона сервера Zabbix в вашем дистрибутиве):
sudo chown root:zabbix /etc/zabbix/ssl/server.{crt,key} /etc/zabbix/ssl/ca.crt
sudo chmod 640 /etc/zabbix/ssl/server.key
sudo chmod 644 /etc/zabbix/ssl/server.crt /etc/zabbix/ssl/ca.crt
Для веб-интерфейса (измените владельца и группу в соответствии с пользователем веб-сервера в вашем дистрибутиве):
sudo chown root:www-data /etc/zabbix/ssl/frontend.{crt,key}
sudo chmod 640 /etc/zabbix/ssl/frontend.key
sudo chmod 644 /etc/zabbix/ssl/frontend.crt
3. Настройте сервер Zabbix.
Добавьте в zabbix_server.conf:
TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# Необязательно:
# TLSFrontendCertIssuer=CN=MyZabbixCA
# TLSFrontendCertSubject=CN=zabbix-frontend-node
Затем перезапустите сервер:
sudo systemctl restart zabbix-server
4. Настройте веб-интерфейс Zabbix.
Во время установки веб-интерфейса включите параметр Encrypt connections from Web interface (а при необходимости и параметр Verify server certificate issuer and subject) и заполните поля TLS CA file, TLS key file, TLS certificate file (а при необходимости также поля Server TLS certificate issuer и Server TLS certificate subject):

| Parameter | Description |
|---|---|
| TLS CA file | Укажите полный путь к файлу сертификата центра сертификации (CA), используемому для проверки сертификата сервера. |
| TLS key file | Укажите полный путь к файлу закрытого ключа клиента, соответствующему сертификату клиента. |
| TLS certificate file | Укажите полный путь к файлу сертификата клиента, если требуется взаимная аутентификация TLS. |
| Server TLS certificate issuer | Укажите отличительное имя (DN) издателя для сопоставления с сертификатом сервера. |
| Server TLS certificate subject | Укажите отличительное имя (DN) субъекта для сопоставления с сертификатом сервера. |
В существующих установках измените следующие поля в zabbix.conf.php:
$ZBX_SERVER_TLS['ACTIVE'] = '1';
$ZBX_SERVER_TLS['CA_FILE'] = '/etc/zabbix/ssl/ca.crt';
$ZBX_SERVER_TLS['KEY_FILE'] = '/etc/zabbix/ssl/frontend.key';
$ZBX_SERVER_TLS['CERT_FILE'] = '/etc/zabbix/ssl/frontend.crt';
// Необязательно:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER'] = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';
5. Проверьте шифрование, убедившись в отсутствии сообщений об ошибках в веб-интерфейсе Zabbix или файле журнала сервера Zabbix:
tail -f /var/log/zabbix/zabbix_server.log
Устранение неполадок
Неправильная или неполная конфигурация TLS может привести к ошибкам в веб-интерфейсе Zabbix или указывать на то, что сервер Zabbix запущен, но подключение не устанавливается:


Чтобы определить точную проблему конфигурации, установите уровень журнала сервера Zabbix равным 4, воспроизведите ошибку в веб-интерфейсе и проверьте журнал сервера Zabbix на наличие соответствующего сообщения об ошибке.
В следующих случаях описаны распространенные ошибки и их возможные причины.
IP-адрес веб-интерфейса не разрешен
Журнал сервера Zabbix содержит ошибку, подобную следующей:
54283:20260819:105926.400 frontend connection from "127.0.0.1" is not allowed by FrontendAllowedIP
Соединение разрывается после установления TCP-соединения, поскольку IP-адрес веб-интерфейса не авторизован.
Добавьте IP-адрес веб-интерфейса в параметр FrontendAllowedIP файла zabbix_server.conf и перезапустите сервер Zabbix.
Незашифрованное подключение не разрешено
Журнал сервера Zabbix содержит ошибку, подобную следующей:
56884:20260819:111154.285 frontend connection of type "unencrypted" is not allowed by TLSFrontendAccept
Сервер Zabbix настроен на прием только TLS-подключений, например с помощью TLSFrontendAccept=cert, однако веб-интерфейс пытается подключиться без шифрования.
Включите шифрование веб-интерфейса и настройте необходимые файлы TLS в zabbix.conf.php, как описано в шаге 4 раздела Конфигурация.
Веб-интерфейс пытается установить TLS-соединение, тогда как сервер ожидает незашифрованное соединение
В журнале сервера Zabbix содержится ошибка, подобная следующей:
61091:20260819:115916.019 End of zbx_tls_accept():FAIL error:'TLS handshake set result code to 1: file ../ssl/record/rec_layer_s3.c line 317 func ssl3_read_n: error:0A000126:SSL routines::unexpected eof while reading: TLS write fatal alert "decode error"'
Точное сообщение об ошибке зависит от версии OpenSSL.
Сервер Zabbix настроен на прием только незашифрованных соединений, например с помощью TLSFrontendAccept=unencrypted, тогда как веб-интерфейс пытается установить TLS-соединение.
Настройте сервер Zabbix на прием TLS-соединений, задав TLSFrontendAccept=cert и указав TLSCertFile и TLSKeyFile в zabbix_server.conf.
В качестве альтернативы отключите шифрование соединения с веб-интерфейсом в zabbix.conf.php.
Сертификат веб-интерфейса не является доверенным
В журнале сервера Zabbix содержится ошибка, похожая на следующую:
62248:20260819:124203.812 End of zbx_tls_accept():FAIL error:'self-signed certificate: TLS handshake set result code to 1: file ../ssl/statem/statem_srvr.c line 3522 func tls_process_client_certificate: error:0A000086:SSL routines::certificate verify failed: TLS write fatal alert "unknown CA"'
Веб-интерфейс предоставил сертификат, но сервер Zabbix не доверяет центру сертификации (CA), подписавшему его.
Та же проблема может отображаться в системной информации веб-интерфейса следующим образом:
fread(): SSL operation failed with code 1. OpenSSL Error messages:
error:0A000418:SSL routines::tlsv1 alert unknown ca [zabbix.php:17 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → Widgets\SystemInfo\Actions\WidgetView->doAction() → CSystemInfoHelper::getData() → CSystemInfoHelper::getServerStatus() → CZabbixServer->getStatus() → CZabbixServer->request() → fread() → CConfigFile->{closure:/user/share/conf/zabbix.conf.php:89}() in conf/zabbix.conf.php:95]
Веб-интерфейс также может отображать сообщение «Получен некорректный ответ от сервера Zabbix "localhost"».
Убедитесь, что сертификат веб-интерфейса подписан центром сертификации, указанным в параметре TLSCAFile файла zabbix_server.conf.
Файл ключа TLS недоступен для чтения
Веб-интерфейс может отображать сообщение «Файл ключа TLS: файл недоступен для чтения».
Также может отображаться сообщение «Не удалось подключиться к серверу Zabbix из-за настроек TLS. Некоторые функции недоступны».

У пользователя веб-сервера недостаточно прав для чтения одного или нескольких файлов сертификатов, ключей или центров сертификации, настроенных в zabbix.conf.php.
Это может произойти, если файлы сертификатов хранятся в каталоге с ограниченным доступом, например в /root/ или домашнем каталоге пользователя.
Переместите файлы сертификатов в каталог, доступный веб-серверу, и установите соответствующие разрешения, как описано в шаге 2 раздела Конфигурация.
Файлы TLS недействительны или повреждены
В веб-интерфейсе может отображаться сообщение: «Невозможно подключиться к серверу Zabbix из-за настроек TLS. Некоторые функции недоступны».

Это может произойти, если настроенные файлы сертификата или ключа существуют и доступны для чтения, но их содержимое пусто, повреждено или иным образом недействительно. В этом случае веб-интерфейс не устанавливает соединение с сервером Zabbix, и соответствующая попытка подключения не отображается в журнале сервера Zabbix.
Убедитесь, что файлы сертификата и ключа содержат корректные данные в правильном формате, а закрытый ключ соответствует сертификату.