Connexion sécurisée à l'interface

Vue d'ensemble

Cette section fournit les étapes de configuration de Zabbix et des exemples de configuration pour des connexions TLS sécurisées entre l'interface Zabbix et le serveur Zabbix.

Configuration

Par défaut, la communication entre l'interface Zabbix et le serveur Zabbix n'est pas chiffrée. Pour renforcer la sécurité, activez TLS des deux côtés. Voici un exemple de la manière la plus simple de procéder.

1. Générez les certificats et les clés.

Créez un répertoire de travail :

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

Créez un certificat d'autorité de certification (CA) (adaptez la valeur MyZabbixCA pour qu'elle corresponde au nom commun réel) :

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

Générez une clé privée et un certificat pour le serveur Zabbix (adaptez la valeur zabbix-server.example.com pour qu'elle corresponde au nom commun réel) :

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

Générez une clé privée et un certificat pour l'interface Zabbix (adaptez la valeur zabbix-frontend-node pour qu'elle corresponde au nom commun réel) :

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. Définissez les autorisations appropriées.

Pour le serveur Zabbix (adaptez le propriétaire et le groupe en fonction de l'utilisateur du démon du serveur Zabbix de votre distribution) :

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

Pour l'interface (adaptez le propriétaire et le groupe en fonction de l'utilisateur du serveur web de votre distribution) :

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. Configurez le serveur Zabbix.

Dans le fichier de configuration du serveur (zabbix_server.conf), ajoutez :

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

Redémarrez ensuite le serveur :

sudo systemctl restart zabbix-server

4. Configurez l'interface Zabbix.

Lors de l'installation de l'interface web, activez l'option Encrypt connections from Web interface (ainsi que l'option Verify server certificate issuer and subject, si nécessaire) et renseignez les champs TLS CA file, TLS key file et TLS certificate file (ainsi que les champs Server TLS certificate issuer et Server TLS certificate subject, si nécessaire) :

Parameter Description
TLS CA file Indiquez le chemin complet vers le fichier de certificat de l'autorité de certification (CA) utilisé pour vérifier le certificat du serveur.
TLS key file Indiquez le chemin complet vers le fichier de clé privée du client correspondant au certificat client.
TLS certificate file Indiquez le chemin complet vers le fichier de certificat client si une authentification TLS mutuelle est requise.
Server TLS certificate issuer Indiquez un nom distinctif (DN) de l'émetteur à comparer à celui du certificat du serveur.
Server TLS certificate subject Indiquez un nom distinctif (DN) du sujet à comparer à celui du certificat du serveur.

Dans les installations existantes, modifiez les paramètres suivants dans le fichier de configuration de l'interface :

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

5. Vérifiez le chiffrement en vous assurant qu'aucun message d'erreur ne s'affiche dans l'interface Zabbix ou dans le fichier journal du serveur Zabbix :

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