5 Conexión segura a la base de datos
Descripción general
Esta sección proporciona pasos de configuración de Zabbix y ejemplos de configuración para conexiones TLS seguras entre:
| Base de datos | Componentes Zabbix |
|---|---|
| MySQL | Frontal Zabbix, servidor Zabbix, proxy Zabbix |
| PostgreSQL | Frontal Zabbix, servidor Zabbix, proxy Zabbix |
Para configurar el cifrado de la conexión dentro del DBMS, consulte la documentación del proveedor oficial para más detalles:
- MySQL: Servidores de bases de datos de replicación de origen y réplica.
- MySQL: replicación de grupos, etc. servidores de bases de datos.
- 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 repositorios oficiales usando CentOS 8.
Requisitos
Se requiere lo siguiente para configurar el cifrado:
- Sistema operativo compatible por el desarrollador con OpenSSL >=1.1.X o alternativa.
Se recomienda evitar sistemas operativos en estado de fin de vida útil, especialmente en el caso de instalaciones nuevas
- Motor de base de datos (RDBMS) instalado y mantenido desde el repositorio oficial proporcionado por el desarrollador. Los sistemas operativos a menudo se distribuyen con versiones obsoletas 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 utilizar una conexión TLS a la base de datos desde el servidor/proxy de Zabbix y el frontend a 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 Database TLS encryption en el paso Configure DB connection para habilitar el cifrado del transporte.
- Marque la casilla Verify database certificate que aparece cuando el campo TLS encryption está marcado para habilitar el cifrado con certificados.
Para MySQL, la casilla Database TLS encryption está deshabilitada si Database host está establecido en localhost, porque una conexión que utiliza un archivo de socket (en Unix) o memoria compartida (en Windows) no puede cifrarse.
Para PostgreSQL, la casilla TLS encryption está deshabilitada si el valor
del campo Database host comienza con una barra o si 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 marcadas):
| Parameter | Description |
|---|---|
| Database TLS CA file | Especifique la ruta completa a un archivo válido de autoridad de certificación (CA) TLS. |
| Database TLS key file | Especifique la ruta completa a un archivo válido de clave TLS. |
| Database TLS certificate file | Especifique la ruta completa a un archivo válido de certificado TLS. |
| Database host verification | Marque esta casilla para activar la verificación del host. Deshabilitado para MYSQL, porque la biblioteca MySQL de PHP no permite omitir el paso de validación del certificado del par. |
| Database TLS cipher list | Especifique una lista personalizada de cifrados válidos. El formato de la lista de cifrados debe ajustarse al estándar OpenSSL. Disponible solo 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 System information indicando que "TLS certificate files must be read-only." (se muestra solo si el usuario de PHP es el propietario del certificado).
No se admiten certificados protegidos con contraseña.
Casos de uso
La interfaz gráfica de Zabbix utiliza la interfaz GUI para definir las posibles opciones: required, verify_ca, verify_full. Especifique las opciones requeridas en el paso del asistente de instalación Configurar conexiones a la BD. Estas opciones se asignan al archivo de configuración (zabbix.conf.php) de la siguiente manera:
| Configuración GUI | Archivo de configuración | Descripción | Resultado |
|---|---|---|---|
![]() |
... // Usado para conexión TLS. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Marque Cifrado TLS de la base de datos Deje Verificar certificado de la base de datos sin marcar |
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 certificado de la base de datos 2. Especifique la ruta al Archivo CA TLS de la base de datos |
Habilita el modo verify_ca. |
![]() |
... // Usado para conexión TLS con lista de cifrados estrictamente definida. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<ruta_archivo_clave>'; $DB['CERT_FILE'] = '<ruta_archivo_clave>'; $DB['CA_FILE'] = '<ruta_archivo_clave>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = '<lista_cifrados>'; ... O: ... // Usado para conexión TLS sin lista de cifrados definida - seleccionada por el servidor MySQL $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<ruta_archivo_clave>'; $DB['CERT_FILE'] = '<ruta_archivo_clave>'; $DB['CA_FILE'] = '<ruta_archivo_clave>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ''; ... |
1. Marque Cifrado TLS de la base de datos y Verificar 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 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'] = '<ruta_archivo_clave>'; $DB['CERT_FILE'] = '<ruta_archivo_clave>'; $DB['CA_FILE'] = '<ruta_archivo_clave>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ' '; ... |
1. Marque Cifrado TLS de la base de datos y Verificar 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 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 de cifrado para MySQL, Ejemplos de configuración de cifrado para PostgreSQL.
Configuración del servidor/proxy de Zabbix
Las conexiones seguras a la base de datos pueden configurarse con los parámetros correspondientes en el archivo de configuración de servidor y/o proxy de Zabbix.
| Configuración | Resultado |
|---|---|
| Ninguna | Conexión a la base de datos sin cifrado. |
1. Establecer DBTLSConnect=required |
El servidor/proxy realiza una conexión TLS a 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 servidor/proxy realiza una conexión TLS a 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 servidor/proxy realiza una conexión TLS a 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 servidor/proxy proporciona un certificado de cliente al conectarse a la base de datos. |
1. Establecer DBTLSCipher - la lista de cifrados de encriptación que el cliente permite para conexiones usando protocolos TLS hasta TLS 1.2o DBTLSCipher13 - la lista de cifrados de encriptación que el cliente permite para conexiones usando el protocolo TLS 1.3 |
(MySQL) La conexión TLS se realiza utilizando un cifrado de la lista proporcionada. (PostgreSQL) Establecer esta opción se considerará un error. |



