Conexión segura al frontend

Descripción general

Esta sección proporciona pasos de configuración de Zabbix y ejemplos de configuración para conexiones TLS seguras entre Zabbix frontend y Zabbix server.

Configuración

De forma predeterminada, la comunicación entre el frontend de Zabbix y el server de Zabbix no está cifrada. Para mejorar la seguridad, habilite TLS en ambos lados. A continuación se muestra un ejemplo de la forma más sencilla de hacerlo.

1. Genere los certificados y las claves.

Cree un directorio de trabajo:

sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl

Cree un certificado de CA (ajuste el valor MyZabbixCA para que coincida con el nombre común real):

sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"

Genere una clave privada y un certificado para el server de Zabbix (ajuste el valor zabbix-server.example.com para que coincida con el nombre común real):

sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr -subj "/CN=zabbix-server.example.com/"
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crt

Genere una clave privada y un certificado para el frontend de Zabbix (ajuste el valor zabbix-frontend-node para que coincida con el nombre común real):

sudo openssl genrsa -out frontend.key 2048
sudo openssl req -new -key frontend.key -out frontend.csr -subj "/CN=zabbix-frontend-node/"
sudo openssl x509 -req -days 365 -in frontend.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out frontend.crt

2. Establezca los permisos adecuados.

Para el server de Zabbix (ajuste el propietario y el grupo según el usuario del demonio del server de Zabbix de su distribución):

sudo chown root:zabbix /etc/zabbix/ssl/server.{crt,key} /etc/zabbix/ssl/ca.crt
sudo chmod 640 /etc/zabbix/ssl/server.key
sudo chmod 644 /etc/zabbix/ssl/server.crt /etc/zabbix/ssl/ca.crt

Para el frontend (ajuste el propietario y el grupo según el usuario del servidor web de su distribución):

sudo chown root:www-data /etc/zabbix/ssl/frontend.{crt,key}
sudo chmod 640 /etc/zabbix/ssl/frontend.key
sudo chmod 644 /etc/zabbix/ssl/frontend.crt

3. Configure el server de Zabbix.

En el archivo de configuración del server (zabbix_server.conf), añada:

TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# Opcionalmente:
# TLSFrontendCertIssuer=CN=MyZabbixCA
# TLSFrontendCertSubject=CN=zabbix-frontend-node

A continuación, reinicie el server:

sudo systemctl restart zabbix-server

4. Configure el frontend de Zabbix.

Durante la instalación de la interfaz web, habilite la opción Cifrar las conexiones desde la interfaz web (y la opción Verificar el emisor y el asunto del certificado del server, si es necesario) y complete los campos Archivo de CA de TLS, Archivo de clave de TLS y Archivo de certificado de TLS (y los campos Emisor del certificado TLS del server y Asunto del certificado TLS del server, si es necesario):

Parámetro Descripción
Archivo de CA de TLS Especifique la ruta completa al archivo de certificado de la autoridad certificadora (CA) utilizado para verificar el certificado del server.
Archivo de clave de TLS Especifique la ruta completa al archivo de clave privada del cliente correspondiente al certificado del cliente.
Archivo de certificado de TLS Especifique la ruta completa al archivo de certificado del cliente si se requiere autenticación TLS mutua.
Emisor del certificado TLS del server Especifique un nombre distinguido (DN) del emisor que se comparará con el certificado del server.
Asunto del certificado TLS del server Especifique un nombre distinguido (DN) del asunto que se comparará con el certificado del server.

En las instalaciones existentes, edite los siguientes parámetros en el archivo de configuración del frontend:

$ZBX_SERVER_TLS['ACTIVE'] = 'true';
$ZBX_SERVER_TLS['CA_FILE'] = '/etc/zabbix/ssl/ca.crt';
$ZBX_SERVER_TLS['KEY_FILE'] = '/etc/zabbix/ssl/frontend.key';
$ZBX_SERVER_TLS['CERT_FILE'] = '/etc/zabbix/ssl/frontend.crt';
// Opcionalmente:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';

5. Verifique el cifrado confirmando que no haya mensajes de error en el frontend de Zabbix ni en el archivo de registro del server de Zabbix:

tail -f /var/log/zabbix/zabbix_server.log