Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

5 Conexión segura a la base de datos

Descripción general

Esta sección proporciona los pasos de configuración de Zabbix y ejemplos de configuración para conexiones TLS seguras entre:

Base de datos Componentes de Zabbix
MySQL Interfaz web de Zabbix, servidor Zabbix, proxy Zabbix
PostgreSQL Interfaz web de Zabbix, servidor Zabbix, proxy Zabbix

Para configurar el cifrado de la conexión dentro del SGBD, consulte la documentación oficial del proveedor para más detalles:

  • MySQL: servidores de base de datos de replicación de origen y réplica.
  • MySQL: replicación en grupo, etc. servidores de base 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 los repositorios oficiales utilizando 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, 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 a menudo se distribuyen con versiones de software de base de datos obsoletas para las cuales no se ha implementado 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 servidor/proxy de Zabbix y el frontend a la base de datos:

  • required - conectar usando TLS como modo de transporte sin comprobaciones de identidad
  • verify_ca - conectar usando TLS y verificar el certificado
  • verify_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 conexión a la BD para habilitar el cifrado de transporte.
  • Marque la casilla Verificar certificado de la base de datos que aparece cuando el campo Cifrado TLS está marcado para habilitar el cifrado con certificados.

Para MySQL, la casilla Cifrado TLS de la base de datos está deshabilitada si Equipo de la base de datos está configurado como localhost, porque la conexión que utiliza un archivo de socket (en Unix) o memoria compartida (en Windows) no puede ser cifrada.
Para PostgreSQL, la casilla Cifrado TLS está deshabilitada si el valor del campo Equipo de la base de datos comienza con una barra 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 marcadas):

Parámetro Descripción
Archivo CA TLS de la base de datos Especifique la ruta completa a un archivo de autoridad certificadora (CA) TLS válido.
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 equipo de la base de datos Marque esta casilla para activar la verificación del equipo.
Deshabilitado para MYSQL, porque la biblioteca PHP 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 OpenSSL.
Disponible solo para MySQL.

Los parámetros TLS deben apuntar a archivos válidos. Si apuntan a archivos inexistentes o no válidos, provocará un error de autorización.
Si los archivos de certificado son editables, el frontend genera una advertencia en el informe Información del sistema que indica que "Los archivos de certificado TLS deben ser de solo lectura." (se muestra solo si el usuario de PHP es el propietario del certificado).

No se admiten certificados protegidos por contraseñas.

Casos de uso

La interfaz gráfica de Zabbix utiliza la interfaz GUI para definir las opciones posibles: required, verify_ca, verify_full. Especifique las opciones requeridas en el paso del asistente de instalación Configurar conexiones a la base de datos. 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 base de datos
Deje Verificar certificado de 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 base de datos y Verificar certificado de base de datos
2. Especifique la ruta al Archivo CA TLS de base de datos
Habilita el modo verify_ca.
...
// Usado para conexión TLS con lista de cifrado estrictamente definida.
$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:

...
// Usado para conexión TLS sin lista de cifrado definida - seleccionada por el servidor 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 base de datos y Verificar certificado de base de datos
2. Especifique la ruta al Archivo de clave TLS de base de datos
3. Especifique la ruta al Archivo CA TLS de base de datos
4. Especifique la ruta al Archivo de certificado TLS de base de datos
5. Especifique la Lista de cifrado TLS de 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 base de datos y Verificar certificado de base de datos
2. Especifique la ruta al Archivo de clave TLS de base de datos
3. Especifique la ruta al Archivo CA TLS de base de datos
4. Especifique la ruta al Archivo de certificado TLS de base de datos
5. Marque Verificación de equipo de base de datos
Habilita el modo verify_full para PostgreSQL.

Consulte 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 respectivos parámetros 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_ca
2. 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_full
2. 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 equipo de la base de datos.
1. Establecer DBTLSCAFile - especificar el archivo de la autoridad certificadora TLS
2. Establecer DBTLSCertFile - especificar el archivo del certificado de clave pública del cliente
3. 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.2

o DBTLSCipher13 - la lista de cifrados de encriptación que el cliente permite para conexiones usando el protocolo TLS 1.3
(MySQL) Se realiza una conexión TLS utilizando un cifrado de la lista proporcionada.
(PostgreSQL) Establecer esta opción se considerará un error.