2 Configuração de criptografia do PostgreSQL
Visão geral
Esta seção fornece vários exemplos de configuração de criptografia para CentOS 8.2 e PostgreSQL 13.
A conexão entre o frontend do Zabbix e o PostgreSQL não pode ser criptografada (os parâmetros na interface gráfica estão desabilitados) se o valor do campo Database host começar com uma barra ou se o campo estiver vazio.
Pré-requisitos
Instale o banco de dados PostgreSQL usando o repositório oficial.
O PostgreSQL não está configurado para aceitar conexões TLS por padrão. Siga as instruções da documentação do PostgreSQL para preparação de certificado com postgresql.conf e também para controle de acesso de usuário através do ph_hba.conf.
Por padrão, o socket do PostgreSQL está vinculado ao localhost, para permitir conexões remotas de rede, permita escutar na interface de rede real.
As configurações do PostgreSQL para todos os modos podem ser assim:
/var/lib/pgsql/13/data/postgresql.conf:
...
ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
ssl_prefer_server_ciphers = on
ssl_min_protocol_version = 'TLSv1.3'
...
Para controle de acesso ajuste /var/lib/pgsql/13/data/pg_hba.conf:
...
### require
hostssl all all 0.0.0.0/0 md5
### verify CA
hostssl all all 0.0.0.0/0 md5 clientcert=verify-ca
### verify full
hostssl all all 0.0.0.0/0 md5 clientcert=verify-full
...
Criptografia apenas de transporte
Frontend
Para habilitar a criptografia apenas de transporte para conexões entre o frontend do Zabbix e o banco de dados:
- Marque Criptografia TLS do banco de dados
- Deixe Verificar certificado do banco de dados desmarcado

Servidor
Para habilitar a criptografia apenas de transporte para conexões entre o servidor e o banco de dados, configure /etc/zabbix/zabbix_server.conf:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...
Criptografia com verificação de autoridade certificadora
Frontend
Para habilitar a criptografia com verificação de autoridade certificadora para conexões entre o frontend do Zabbix e o banco de dados:
- Marque Criptografia TLS do banco de dados e Verificar certificado do banco de dados
- Especifique o caminho para o Arquivo CA TLS do banco de dados

Alternativamente, isso pode ser definido em /etc/zabbix/web/zabbix.conf.php:
...
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
Server
Para habilitar a criptografia com verificação de certificado para conexões entre o Zabbix server e o banco de dados, configure /etc/zabbix/zabbix_server.conf:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_ca
DBTLSCAFile=/etc/ssl/pgsql/root.crt
...
Criptografia com verificação completa
Frontend
Para habilitar a criptografia com certificado e verificação de identidade do host do banco de dados para conexões entre o frontend do Zabbix e o banco de dados:
- Marque Criptografia TLS do banco de dados e Verificar certificado do banco de dados
- Especifique o caminho para o Arquivo de chave TLS do banco de dados
- Especifique o caminho para o Arquivo CA TLS do banco de dados
- Especifique o caminho para o Arquivo de certificado TLS do banco de dados
- Marque Verificação do host do banco de dados

Alternativamente, isso pode ser definido em /etc/zabbix/web/zabbix.conf.php:
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '';
...
Server
Para habilitar a criptografia com verificação de certificado e identidade do host do banco de dados para conexões entre o Zabbix server e o banco de dados, configure /etc/zabbix/zabbix_server.conf:
...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_full
DBTLSCAFile=/etc/ssl/pgsql/root.crt
DBTLSCertFile=/etc/ssl/pgsql/client.crt
DBTLSKeyFile=/etc/ssl/pgsql/client.key
...