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 desativados) 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 é configurado para aceitar conexões TLS por padrão. Siga as instruções da documentação do PostgreSQL para a preparação de certificados com postgresql.conf e também para controle de acesso de usuários por meio de ph_hba.conf.

Por padrão, o socket do PostgreSQL fica vinculado ao localhost; para conexões remotas pela rede, permita a escuta na interface de rede real.

As configurações do PostgreSQL para todos os modes 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 para transporte

Frontend

Para habilitar a criptografia apenas de transporte para conexões entre o frontend do Zabbix e o banco de dados:

  • Marque Database TLS encryption
  • Deixe Verify database certificate desmarcado

server

Para habilitar a criptografia somente de transporte para conexões entre o server e o banco de dados, edite o arquivo de configuração do server:

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...

Criptografia com verificação da autoridade certificadora

Frontend

Para habilitar a criptografia com verificação da autoridade certificadora nas 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

Como alternativa, isso pode ser definido no arquivo de configuração do frontend (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 nas conexões entre o Zabbix server e o banco de dados, edite o arquivo de configuração do server:

...
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 a verificação da identidade do host do banco de dados nas 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 de 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

Como alternativa, isso pode ser definido no arquivo de configuração do frontend (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 do certificado e da identidade do host do banco de dados nas conexões entre o Zabbix server e o banco de dados, edite o arquivo de configuração do server:

...
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
...