This section provides Zabbix setup steps and configuration examples for secure TLS connections between:
Database | Zabbix components |
---|---|
MySQL | Zabbix frontend, Zabbix server, Zabbix proxy |
PostgreSQL | Zabbix frontend, Zabbix server, Zabbix proxy |
To set up connection encryption within the DBMS, see official vendor documentation for details:
All examples are based on the GA releases of MySQL CE (8.0) and PgSQL (13) available through official repositories using CentOS 8.
The following is required to set up encryption:
It is recommended to avoid OS in the end-of-life status, especially in the case of new installations
Setting this option enforces to use TLS connection to database from Zabbix server/proxy and frontend to database:
Uma conexão segura com o banco de dados pode ser configurada durante o frontend instalação:
Para MySQL, a caixa de seleção Criptografia TLS do banco de dados é desabilitado, se Database host estiver definido como localhost, porque a conexão que usa um arquivo de soquete (no Unix) ou memória compartilhada (no Windows) não pode ser criptografado.
Para PostgreSQL, a caixa de seleção criptografia TLS é desabilitada, se o valor do campo Database host começa com uma barra ou o campo está vazio.
Os seguintes parâmetros ficam disponíveis na criptografia TLS em modo de certificados (se ambas as caixas de seleção estiverem marcadas):
Parâmetro | Descrição |
---|---|
Arquivo de CA TLS do banco de dados | Especifique o caminho completo para um arquivo de autoridade de certificação (CA) TLS válido. |
Arquivo de chave TLS do banco de dados | Especifique o caminho completo para um arquivo de chave TLS válido. |
Arquivo de certificado TLS do banco de dados | Especifique o caminho completo para um arquivo de certificado TLS válido. |
Verificação do host do banco de dados | Marque esta caixa de seleção para ativar a verificação do host. Desativado para MYSQL, porque a biblioteca PHP MySQL não permite pular a etapa de validação do certificado de peer. |
Lista de cifras TLS do banco de dados | Especifique uma lista personalizada de cifras válidas. O formato da lista de cifras deve estar em conformidade com o padrão OpenSSL. Disponível apenas para MySQL. |
::: não importante Os parâmetros TLS devem apontar para arquivos válidos. Se eles apontar para arquivos inexistentes ou inválidos, isso levará ao erro de autorização.
Se os arquivos de certificado forem graváveis, o frontend gerará um aviso em o sistema informações](/manual/web_interface/frontend_sections/reports/status_of_zabbix) informe que "os arquivos de certificado TLS devem ser somente leitura". (exibido apenas se o usuário PHP for o proprietário do certificado).
Certificados protegidos por senhas não são suportados. :::
Zabbix frontend uses GUI interface to define possible options: required, verify_ca, verify_full. Specify required options in the installation wizard step Configure DB connections. These options are mapped to the configuration file (zabbix.conf.php) in the following manner:
GUI settings | Configuration file | Description | Result |
---|---|---|---|
... // Used for TLS connection. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Check Database TLS encryption Leave Verify database certificate unchecked |
Enable 'required' mode. | |
... $DB['ENCRYPTION'] = true;\\ $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem'; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
1. Check Database TLS encryption and Verify database certificate 2. Specify path to Database TLS CA file |
Enable 'verify_ca' mode. | |
... // Used for TLS connection with strictly defined Cipher list. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = '<cipher_list>'; ... Or: ... // Used for TLS connection without Cipher list defined - selected by MySQL server $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ''; ... |
1. Check Database TLS encryption and Verify database certificate 2. Specify path to Database TLS key file 3. Specify path to Database TLS CA file 4. Specify path to Database TLS certificate file 6. Specify TLS cipher list (optional) |
Enable 'verify_full' mode for MySQL. | |
... $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ' '; ... |
1. Check Database TLS encryption and Verify database certificate 2. Specify path to Database TLS key file 3. Specify path to Database TLS CA file 4. Specify path to Database TLS certificate file 6. Check Database host verification |
Enable 'verify_full' mode for PostgreSQL. |
See also: Encryption configuration examples for MySQL, Encryption configuration examples for PostgreSQL.
Secure connections to the database can be configured with the respective parameters in the Zabbix server and/or proxy configuration file.
Configuration | Result |
---|---|
None | Connection to the database without encryption. |
1. Set DBTLSConnect=required | Server/proxy make a TLS connection to the database. An unencrypted connection is not allowed. |
1. Set DBTLSConnect=verify_ca 2. Set DBTLSCAFile - specify the TLS certificate authority file |
Server/proxy make a TLS connection to the database after verifying the database certificate. |
1. Set DBTLSConnect=verify_full 2. Set DBTLSCAFile - specify TLS certificate authority file |
Server/proxy make a TLS connection to the database after verifying the database certificate and the database host identity. |
1. Set DBTLSCAFile - specify TLS certificate authority file 2. Set DBTLSCertFile - specify the client public key certificate file 3. Set DBTLSKeyFile - specify the client private key file |
Server/proxy provide a client certificate while connecting to the database. |
1. Set DBTLSCipher - the list of encryption ciphers that the client permits for connections using TLS protocols up to TLS 1.2 or DBTLSCipher13 - the list of encryption ciphers that the client permits for connections using TLS 1.3 protocol |
(MySQL) TLS connection is made using a cipher from the provided list. (PostgreSQL) Setting this option will be considered as an error. |