Conexión segura a la base de datos
Resumen
Esta sección proporciona pasos de configuración de Zabbix y ejemplos de configuración para conexiones TLS seguras entre:
| Database | Zabbix components |
|---|---|
| MySQL | Zabbix frontend, Zabbix server, Zabbix proxy |
| PostgreSQL | Zabbix frontend, Zabbix server, Zabbix proxy |
Para configurar el cifrado de la conexión dentro del DBMS, consulte la documentación oficial del proveedor para obtener más detalles:
- MySQL: servidores de base de datos de replicación de origen y réplica.
- MySQL: servidores de base de datos de replicación en grupo, etc.
- PostgreSQL opciones de cifrado.
Todos los ejemplos se basan en las versiones GA de MySQL CE (8.0) y PgSQL (13) disponibles a través de los repositorios oficiales usando CentOS 8.
Requisitos
Se requiere lo siguiente para configurar el cifrado:
- Sistema operativo compatible con el desarrollador con OpenSSL >=1.1.X o una alternativa.
Se recomienda evitar sistemas operativos en estado de fin de vida, especialmente en el caso de nuevas instalaciones
- Motor de base de datos (RDBMS) instalado y mantenido desde el repositorio oficial proporcionado por el desarrollador. Los sistemas operativos suelen incluir versiones desactualizadas del software de base de datos para las que no está implementado el soporte de cifrado; por ejemplo, sistemas basados en RHEL 7 y PostgreSQL 9.2, MariaDB 5.5 sin soporte de cifrado.
Terminología
Configurar esta opción obliga a usar una conexión TLS a la base de datos desde el server/proxy de Zabbix y el frontend hacia la base de datos:
required- conectar usando TLS como modo de transporte sin comprobaciones de identidadverify_ca- conectar usando TLS y verificar el certificadoverify_full- conectar usando TLS, verificar el certificado y verificar que la identidad de la base de datos (CN) especificada por DBHost coincida con su certificado
Configuración de Zabbix
Frontend a la base de datos
Se puede configurar una conexión segura a la base de datos durante la instalación del frontend:
- Marque la casilla Cifrado TLS de la base de datos en el paso Configurar la conexión a la base de datos para habilitar el cifrado del transporte.
- Marque la casilla Verificar el certificado de la base de datos que aparece al seleccionar el campo Cifrado TLS para habilitar el cifrado con certificados.
Para MySQL, la casilla Cifrado TLS de la base de datos está deshabilitada si Host de la base de datos está establecido en localhost, porque la conexión que utiliza un archivo de socket (en Unix) o memoria compartida (en Windows) no se puede cifrar.
Para PostgreSQL, la casilla Cifrado TLS está deshabilitada si el valor
del campo Host de la base de datos comienza con una barra diagonal o el campo está vacío.
Los siguientes parámetros están disponibles en el modo de cifrado TLS con certificados (si ambas casillas están seleccionadas):
| Parámetro | Descripción |
|---|---|
| Archivo de CA TLS de la base de datos | Especifique la ruta completa a un archivo válido de la autoridad certificadora (CA) TLS. |
| Archivo de clave TLS de la base de datos | Especifique la ruta completa a un archivo de clave TLS válido. |
| Archivo de certificado TLS de la base de datos | Especifique la ruta completa a un archivo de certificado TLS válido. |
| Verificación del host de la base de datos | Marque esta casilla para activar la verificación del host. Deshabilitada para MySQL porque la biblioteca PHP de MySQL no permite omitir el paso de validación del certificado del par. |
| Lista de cifrados TLS de la base de datos | Especifique una lista personalizada de cifrados válidos. El formato de la lista de cifrados debe cumplir con el estándar de OpenSSL. Disponible únicamente para MySQL. |
Los parámetros TLS deben apuntar a archivos válidos. Si apuntan a archivos inexistentes o no válidos, se producirá un error de autorización.
Si los archivos de certificado tienen permisos de escritura, el frontend genera una advertencia en el informe Información del sistema: "Los archivos de certificado TLS deben ser de solo lectura." (se muestra únicamente si el usuario de PHP es el propietario del certificado).
No se admiten certificados protegidos mediante contraseñas.
Casos de uso
El frontend de Zabbix utiliza una interfaz GUI para definir las opciones posibles: required, verify_ca, verify_full.
Especifique las opciones necesarias en el paso del asistente de instalación Configurar conexiones de DB.
Estas opciones se asignan al archivo de configuración del frontend (zabbix.conf.php) de la siguiente manera:
| Configuración de la GUI | Archivo de configuración | Descripción | Resultado |
|---|---|---|---|
![]() |
... // Used for TLS connection. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
1. Marque Cifrado TLS de la base de datos 2. Deje sin marcar Verificar el certificado de la base de datos |
Habilita el modo required. |
![]() |
...$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. Marque Cifrado TLS de la base de datos y Verificar el certificado de la base de datos 2. Especifique la ruta al archivo de CA TLS de la base de datos |
Habilita el modo verify_ca. |
![]() |
... // 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>';... O bien: ... // 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. Marque Cifrado TLS de la base de datos y Verificar el certificado de la base de datos 2. Especifique la ruta al archivo de clave TLS de la base de datos 3. Especifique la ruta al archivo de CA TLS de la base de datos 4. Especifique la ruta al archivo de certificado TLS de la base de datos 5. Especifique la lista de cifrados TLS de la base de datos (opcional) |
Habilita el modo verify_full para 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. Marque Cifrado TLS de la base de datos y Verificar el certificado de la base de datos 2. Especifique la ruta al archivo de clave TLS de la base de datos 3. Especifique la ruta al archivo de CA TLS de la base de datos 4. Especifique la ruta al archivo de certificado TLS de la base de datos 5. Marque Verificación del host de la base de datos |
Habilita el modo verify_full para PostgreSQL. |
Véase también: Ejemplos de configuración del cifrado para MySQL, Ejemplos de configuración del cifrado para PostgreSQL.
Configuración del server/proxy
Las conexiones seguras a la base de datos se pueden configurar con los parámetros correspondientes en el archivo de configuración del server y/o del proxy de Zabbix.
| Configuración | Resultado |
|---|---|
| Ninguna | Conexión a la base de datos sin cifrado. |
Establecer DBTLSConnect=required |
El server/proxy establece una conexión TLS con la base de datos. No se permite una conexión sin cifrado. |
1. Establecer DBTLSConnect=verify_ca2. Establecer DBTLSCAFile: especificar el archivo de la autoridad certificadora TLS |
El server/proxy establece una conexión TLS con la base de datos después de verificar el certificado de la base de datos. |
1. Establecer DBTLSConnect=verify_full2. Establecer DBTLSCAFile: especificar el archivo de la autoridad certificadora TLS |
El server/proxy establece una conexión TLS con la base de datos después de verificar el certificado de la base de datos y la identidad del host de la base de datos. |
1. Establecer DBTLSCAFile: especificar el archivo de la autoridad certificadora TLS2. Establecer DBTLSCertFile: especificar el archivo del certificado de clave pública del cliente3. Establecer DBTLSKeyFile: especificar el archivo de clave privada del cliente |
El server/proxy proporciona un certificado de cliente al conectarse a la base de datos. |
Establecer DBTLSCipher: la lista de cifrados de encriptación que el cliente permite para las conexiones que utilizan protocolos TLS hasta TLS 1.2o DBTLSCipher13: la lista de cifrados de encriptación que el cliente permite para las conexiones que utilizan el protocolo TLS 1.3 |
(MySQL) La conexión TLS se establece utilizando un cifrado de la lista proporcionada. (PostgreSQL) Establecer esta opción se considerará un error. |



