6 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 maior segurança, habilite TLS em ambos os lados. Abaixo está um exemplo da forma mais simples de fazer isso.

1. Gere certificados e 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 adequadas.

Para o server do Zabbix (ajuste o proprietário/grupo de acordo com o usuário do daemon do server do Zabbix na 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 na 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.

Em 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 Encrypt connections from Web interface (e a opção Verify server certificate issuer and subject, se necessário) e preencha os campos TLS CA file, TLS key file, TLS certificate file (e os campos Server TLS certificate issuer e Server TLS certificate subject, se necessário):

Parameter Description
TLS CA file Especifique o caminho completo para o arquivo de certificado da Autoridade Certificadora (CA) usado para verificar o certificado do server.
TLS key file Especifique o caminho completo para o arquivo de chave privada do cliente correspondente ao certificado do cliente.
TLS certificate file Especifique o caminho completo para o arquivo de certificado do cliente se a autenticação TLS mútua for necessária.
Server TLS certificate issuer Especifique um Nome distinto (DN) do emissor para corresponder ao certificado do server.
Server TLS certificate subject Especifique um Nome distinto (DN) do assunto para corresponder ao certificado do server.

Em instalações existentes, edite os seguintes campos em 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';
// 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