6 Connexion sécurisée au frontend
Aperçu
Cette section fournit les étapes de configuration de Zabbix ainsi que des exemples de configuration pour des connexions TLS sécurisées entre le frontend 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 une meilleure sécurité, activez TLS des deux côtés. Ci-dessous se trouve un exemple de la manière la plus simple de le faire.
1. Générez des certificats et des clés.
Créez un répertoire de travail :
sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl
Créez un certificat CA (ajustez 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 (ajustez 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 (ajustez 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 permissions appropriées.
Pour le serveur Zabbix (ajustez le propriétaire/groupe selon 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 (ajustez le propriétaire/groupe selon 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 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
Puis redémarrez le serveur :
sudo systemctl restart zabbix-server
4. Configurez l'interface Zabbix.
Lors de l'installation de l'interface web, activez l'option Chiffrer les connexions depuis l'interface web (et l'option Vérifier l'émetteur et le sujet du certificat du serveur, si nécessaire), puis renseignez les champs Fichier CA TLS, Fichier de clé TLS, Fichier de certificat TLS (et les champs Émetteur du certificat TLS du serveur et Sujet du certificat TLS du serveur, si nécessaire) :

| Parameter | Description |
|---|---|
| TLS CA file | Spécifiez 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 | Spécifiez le chemin complet vers le fichier de clé privée du client correspondant au certificat client. |
| TLS certificate file | Spécifiez le chemin complet vers le fichier de certificat client si l'authentification TLS mutuelle est requise. |
| Server TLS certificate issuer | Spécifiez un nom distinctif (DN) de l'émetteur à faire correspondre avec le certificat du serveur. |
| Server TLS certificate subject | Spécifiez un nom distinctif (DN) du sujet à faire correspondre avec le certificat du serveur. |
Sur les installations existantes, modifiez les champs suivants dans 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';
// Facultatif :
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER'] = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';
5. Vérifiez le chiffrement en confirmant qu'il n'y a aucun message d'erreur dans l'interface Zabbix ou dans le fichier journal du serveur Zabbix :
tail -f /var/log/zabbix/zabbix_server.log