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 è 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 Zabbix frontend (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 Zabbix frontend.

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.

Nelle 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 Zabbix o nel file di log di Zabbix server:

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