6 Connessione sicura al frontend

Panoramica

Questa sezione fornisce i passaggi di configurazione di Zabbix ed esempi di configurazione per connessioni TLS sicure tra Zabbix frontend e Zabbix server.

Configurazione

Per impostazione predefinita, la comunicazione tra Zabbix frontend e Zabbix server non è crittografata. Per una maggiore sicurezza, abilitare TLS su entrambi i lati. Di seguito è riportato un esempio del modo più semplice per farlo.

1. Generare certificati e chiavi.

Creare una directory di lavoro:

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

Creare un certificato CA (adattare il valore MyZabbixCA in modo che corrisponda al common name effettivo):

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

Generare una chiave privata e un certificato per Zabbix server (adattare il valore zabbix-server.example.com in modo che corrisponda al common name effettivo):

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

Generare una chiave privata e un certificato per Zabbix frontend (adattare il valore zabbix-frontend-node in modo che corrisponda al common name effettivo):

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. Impostare i permessi corretti.

Per Zabbix server (adattare proprietario/gruppo in base all'utente del demone Zabbix server della propria distribuzione):

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

Per il frontend (adattare proprietario/gruppo in base all'utente del webserver della propria distribuzione):

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. Configurare Zabbix server.

In zabbix_server.conf aggiungere:

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

Quindi riavviare il server:

sudo systemctl restart zabbix-server

4. Configurare Zabbix frontend.

Durante l'installazione dell'interfaccia web, abilitare l'opzione Encrypt connections from Web interface (e l'opzione Verify server certificate issuer and subject, se necessario) e compilare i campi TLS CA file, TLS key file, TLS certificate file (e i campi Server TLS certificate issuer e Server TLS certificate subject, se necessario):

Parameter Description
TLS CA file Specificare il percorso completo del file del certificato della Certificate Authority (CA) utilizzato per verificare il certificato del server.
TLS key file Specificare il percorso completo del file della chiave privata del client corrispondente al certificato del client.
TLS certificate file Specificare il percorso completo del file del certificato del client se è richiesta l'autenticazione TLS reciproca.
Server TLS certificate issuer Specificare un Distinguished Name (DN) dell'emittente da confrontare con il certificato del server.
Server TLS certificate subject Specificare un Distinguished Name (DN) del soggetto da confrontare con il certificato del server.

Nelle installazioni esistenti, modificare i seguenti campi in zabbix.conf.php:

$ZBX_SERVER_TLS['ACTIVE'] = '1';
$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';
// Facoltativamente:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = '/CN=MyZabbixCA/';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = '/CN=zabbix-server.example.com/';

5. Verificare la crittografia confermando che non vi siano messaggi di errore in Zabbix frontend o nel file di log di Zabbix server:

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