Conexão segura com o frontend
Visão geral
Esta seção fornece etapas de configuração do Zabbix e exemplos de configuração para conexões TLS seguras entre o frontend do Zabbix e o server do Zabbix.
Configuração
Por padrão, a comunicação entre o frontend do Zabbix e o server do Zabbix não é criptografada. Para aumentar a segurança, habilite o TLS em ambos os lados. Abaixo está um exemplo da maneira mais simples de fazer isso.
1. Gere os certificados e as chaves.
Crie um diretório de trabalho:
sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl
Crie um certificado de CA (ajuste o valor MyZabbixCA para corresponder ao nome comum real):
sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"
Gere uma chave privada e um certificado para o server do Zabbix (ajuste o valor zabbix-server.example.com para corresponder ao nome comum real):
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
Gere uma chave privada e um certificado para o frontend do Zabbix (ajuste o valor zabbix-frontend-node para corresponder ao nome comum real):
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. Defina as permissões apropriadas.
Para o server do Zabbix (ajuste o proprietário/grupo de acordo com o usuário do daemon do server do Zabbix da sua distribuição):
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
Para o frontend (ajuste o proprietário/grupo de acordo com o usuário do servidor web da sua distribuição):
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. Configure o server do Zabbix.
No arquivo de configuração do server (zabbix_server.conf), adicione:
TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# Opcionalmente:
# TLSFrontendCertIssuer=CN=MyZabbixCA
# TLSFrontendCertSubject=CN=zabbix-frontend-node
Em seguida, reinicie o server:
sudo systemctl restart zabbix-server
4. Configure o frontend do Zabbix.
Durante a instalação da interface web, habilite a opção Criptografar conexões da interface web (e a opção Verificar emissor e assunto do certificado do server, se necessário) e preencha os campos Arquivo de CA do TLS, Arquivo de chave do TLS, Arquivo de certificado do TLS (e os campos Emissor do certificado TLS do server e Assunto do certificado TLS do server, se necessário):

| Parâmetro | Descrição |
|---|---|
| Arquivo de CA do TLS | Especifique o caminho completo para o arquivo de certificado da Autoridade de Certificação (CA) usado para verificar o certificado do server. |
| Arquivo de chave do TLS | Especifique o caminho completo para o arquivo de chave privada do cliente correspondente ao certificado do cliente. |
| Arquivo de certificado do TLS | Especifique o caminho completo para o arquivo de certificado do cliente se a autenticação TLS mútua for necessária. |
| Emissor do certificado TLS do server | Especifique um Nome Distinto (DN) do emissor para comparar com o certificado do server. |
| Assunto do certificado TLS do server | Especifique um Nome Distinto (DN) do assunto para comparar com o certificado do server. |
Em instalações existentes, edite os seguintes parâmetros no arquivo de configuração do frontend:
$ZBX_SERVER_TLS['ACTIVE'] = 'true';
$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';
// Opcionalmente:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER'] = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';
5. Verifique a criptografia confirmando que não há mensagens de erro no frontend do Zabbix ou no arquivo de log do server do Zabbix:
tail -f /var/log/zabbix/zabbix_server.log
Solução de problemas
Uma configuração TLS incorreta ou incompleta pode causar erros no frontend do Zabbix ou indicar que o Zabbix server está em execução, mas a conexão não foi estabelecida com sucesso:


Para identificar o problema exato de configuração, defina o nível de log do Zabbix server como 4, reproduza o erro no frontend e verifique o log do Zabbix server em busca da mensagem de erro correspondente.
Os casos a seguir descrevem erros comuns e suas possíveis causas.
O endereço IP do frontend não é permitido
O log do Zabbix server contém um erro semelhante a:
54283:20260819:105926.400 frontend connection from "127.0.0.1" is not allowed by FrontendAllowedIP
A conexão é encerrada após o handshake TCP porque o endereço IP do frontend não está autorizado.
Adicione o endereço IP do frontend ao parâmetro FrontendAllowedIP em zabbix_server.conf e reinicie o Zabbix server.
Conexão não criptografada não é permitida
O log do Zabbix server contém um erro semelhante a:
56884:20260819:111154.285 frontend connection of type "unencrypted" is not allowed by TLSFrontendAccept
O Zabbix server está configurado para aceitar somente conexões TLS, por exemplo, com TLSFrontendAccept=cert, mas o frontend está tentando se conectar sem criptografia.
Habilite a criptografia do frontend e configure os arquivos TLS necessários em zabbix.conf.php, conforme descrito na etapa 4 de Configuração.
O frontend tenta usar TLS enquanto o server espera uma conexão não criptografada
O log do Zabbix server contém um erro semelhante a:
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"'
A mensagem de erro exata depende da versão do OpenSSL.
O Zabbix server está configurado para aceitar apenas conexões não criptografadas, por exemplo, com TLSFrontendAccept=unencrypted, enquanto o frontend tenta estabelecer uma conexão TLS.
Configure o Zabbix server para aceitar conexões TLS definindo TLSFrontendAccept=cert e especificando TLSCertFile e TLSKeyFile em zabbix_server.conf.
Como alternativa, desative a criptografia do frontend em zabbix.conf.php.
O certificado do frontend não é confiável
O log do Zabbix server contém um erro semelhante a:
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"'
O frontend apresentou um certificado, mas o Zabbix server não confia na Autoridade de Certificação (CA) que o assinou.
O mesmo problema também pode aparecer nas informações do sistema do frontend como:
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]
O frontend também pode exibir a mensagem "Incorrect response received from Zabbix server "localhost"".
Verifique se o certificado do frontend foi assinado pela CA especificada por TLSCAFile em zabbix_server.conf.
Arquivo de chave TLS não pode ser lido
O frontend pode exibir "Arquivo de chave TLS: o arquivo não pode ser lido."
Também pode exibir "Não foi possível conectar-se ao server Zabbix devido às configurações de TLS. Algumas funções estão indisponíveis.".

O usuário do web server não tem permissões suficientes para ler um ou mais arquivos de certificado, chave ou CA configurados em zabbix.conf.php.
Isso pode ocorrer quando os arquivos de certificado estão armazenados em um diretório restrito, como /root/ ou no diretório inicial de um usuário.
Mova os arquivos de certificado para um diretório acessível ao web server e defina as permissões apropriadas conforme descrito na etapa 2 de Configuração.
Arquivos TLS inválidos ou corrompidos
O frontend pode exibir "Não foi possível conectar-se ao Zabbix server devido às configurações de TLS. Algumas funções estão indisponíveis.".

Isso pode ocorrer quando os arquivos de certificado ou chave configurados existem e podem ser lidos, mas seu conteúdo está vazio, corrompido ou é inválido por outro motivo. Nesse caso, o frontend não estabelece uma conexão com o Zabbix server, e nenhuma tentativa de conexão correspondente aparece no log do Zabbix server.
Verifique se os arquivos de certificado e chave contêm dados válidos e formatados corretamente e se a chave privada corresponde ao certificado.