Connessione sicura al frontend

Panoramica

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

Configurazione

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

1. Genera certificati e chiavi.

Crea una directory di lavoro:

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

Crea un certificato CA (adatta 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/"

Genera una chiave privata e un certificato per Zabbix server (adatta 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

Genera una chiave privata e un certificato per frontend di Zabbix (adatta 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. Imposta i permessi corretti.

Per Zabbix server (adatta proprietario/gruppo in base all'utente del demone Zabbix server della tua 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 frontend (adatta proprietario/gruppo in base all'utente del webserver della tua 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. Configura Zabbix server.

In zabbix_server.conf aggiungi:

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

Quindi riavvia il server:

sudo systemctl restart zabbix-server

4. Configura frontend di Zabbix.

Durante l'installazione dell'interfaccia web, abilita l'opzione Encrypt connections from Web interface (e l'opzione Verify server certificate issuer and subject, se necessario) e compila 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 Specifica il percorso completo del file del certificato dell'Autorità di certificazione (CA) usato per verificare il certificato del server.
TLS key file Specifica il percorso completo del file della chiave privata del client corrispondente al certificato del client.
TLS certificate file Specifica il percorso completo del file del certificato del client se è richiesta l'autenticazione TLS reciproca.
Server TLS certificate issuer Specifica un Distinguished Name (DN) dell'emittente da confrontare con il certificato del server.
Server TLS certificate subject Specifica un Distinguished Name (DN) del soggetto da confrontare con il certificato del server.

Per le installazioni esistenti, modifica 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';
// Opzionalmente:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';

5. Verifica la cifratura confermando che non ci siano messaggi di errore nel frontend di Zabbix o nel file di log di Zabbix server:

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