Cette section fournit les étapes de configuration de Zabbix et des exemples de configuration pour les connexions TLS sécurisées entre :
Base de données | Composants Zabbix |
---|---|
MySQL | Interface Zabbix, serveur Zabbix, proxy Zabbix |
PostgreSQL | Interface Zabbix, serveur Zabbix, proxy Zabbix |
Pour configurer le chiffrement de connexion dans le SGBD, consultez la documentation officielle du fournisseur pour plus de détails :
Tous les exemples sont basés sur les versions GA de MySQL CE (8.0) et PgSQL (13) disponibles via les référentiels officiels utilisant CentOS 8.
Les éléments suivants sont requis pour configurer le chiffrement :
Il est recommandé d'éviter les systèmes d'exploitation en fin de vie, en particulier dans le cas de nouvelles installations
La définition de cette option force l'utilisation de la connexion TLS à la base de données à partir du serveur/proxy Zabbix et de l'interface à la base de données :
Une connexion sécurisée à la base de données peut être configurée pendant l'installation de l'interface:
Pour MySQL, la case à cocher Chiffrement TLS de la base de données est désactivée, si Hôte de la base de données est défini sur localhost, car la connexion qui utilise un fichier socket (sous Unix) ou de la mémoire partagée (sous Windows) ne peut pas être cryptée.
Pour PostgreSQL, la case à cocher Chiffrement TLS est désactivée, si la valeur du champ Hôte de la base de données commence par une barre oblique ou le champ est vide.
Les paramètres suivants deviennent disponibles dans le chiffrement TLS en mode certificats (si les deux cases sont cochées) :
Paramètre | Description |
---|---|
Fichier CA TLS de la base de données | Spécifiez le chemin d'accès complet à un fichier d'autorité de certification TLS valide. |
Fichier de clé TLS de la base de données | Spécifiez le chemin d'accès complet à un fichier de clé TLS valide. |
Fichier de certificat TLS de base de données | Spécifiez le chemin d'accès complet à un fichier de certificat TLS valide. |
Vérification de l'hôte de la base de données | Cochez cette case pour activer la vérification de l'hôte. Désactivé pour MYSQL, car la bibliothèque PHP MySQL ne permet pas d'ignorer l'étape de validation du certificat pair. |
Liste de chiffrement TLS de la base de données | Spécifiez une liste personnalisée de chiffrements valides. Le format de la liste de chiffrement doit être conforme à la norme OpenSSL. Disponible pour MySQL uniquement. |
Les paramètres TLS doivent pointer vers des fichiers valides. Si ils pointent vers des fichiers inexistants ou invalides, cela conduira à une erreur d'autorisation.
Si les fichiers de certificat sont accessibles en écriture, l'interface génère un avertissement dans les informattions système signalant que "les fichiers de certificat TLS doivent être en lecture seule". (affiché uniquement si l'utilisateur PHP est le propriétaire du certificat).
Les certificats protégés par des mots de passe ne sont pas pris en charge.
L'interface Zabbix utilise l'interface graphique pour définir les options possibles : required, verify_ca, verify_full. Spécifiez les options requises à l'étape de l'assistant d'installation Configurer les connexions à la base de données. Ces options sont mappées au fichier de configuration (zabbix.conf.php) de la manière suivante :
Paramètres de l'interface graphique | Fichier de configuration | Description | Résultat |
---|---|---|---|
... // Utilisé pour la connexion TLS. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Cochez Chiffrement TLS de la base de données Laissez Vérifier le certificat de la base de données décoché |
Active le mode 'requis'. | |
... $DB['ENCRYPTION'] = true; \\ $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem'; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
1. Cochez Chiffrement TLS de la base de données et Vérifier le certificat de la base de données 2. Spécifiez le chemin d'accès au fichier CA TLS de la base de données |
Active le mode 'verify_ca'. | |
... // Utilisé pour la connexion TLS avec une liste de chiffrement strictement définie. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = '<cipher_list>'; ... Ou : ... // Utilisé pour la connexion TLS sans liste de chiffrement définie - sélectionné par le serveur MySQL $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ''; ... |
1. Cochez Chiffrement TLS de la base de données et Vérifier le certificat de la base de données 2. Spécifiez le chemin d'accès au fichier de clé TLS de la base de données 3. Spécifiez le chemin d'accès au fichier CA TLS de la base de données 4. Spécifiez le chemin d'accès au fichier de certificat TLS de la base de données 6. Spécifiez la liste de chiffrement TLS (facultatif) |
Active le mode 'verify_full' pour MySQL. | |
... $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = '<key_file_path>'; $DB['CERT_FILE'] = '<key_file_path>'; $DB['CA_FILE'] = '<key_file_path>'; $DB['VERIFY_HOST'] = true; $DB['CIPHER_LIST'] = ' '; ... |
1. Cochez Chiffrement TLS de la base de données et Vérifier le certificat de la base de données 2. Spécifiez le chemin d'accès au fichier de clé TLS de la base de données 3. Spécifiez le chemin d'accès au fichier CA TLS de la base de données 4. Spécifiez le chemin d'accès au fichier de certificat TLS de la base de données 6. Vérifier Vérification de l'hôte de la base de données |
Active le mode 'verify_full' pour PostgreSQL. |
Voir aussi : Exemples de configuration de chiffrement pour MySQL, Exemples de configuration de chiffrement pour PostgreSQL.
Les connexions sécurisées à la base de données peuvent être configurées avec les paramètres respectifs dans le fichier de configuration serveur et/ou proxy Zabbix.
Configuration | Résultat |
---|---|
Aucune | Connexion à la base de données sans cryptage. |
1. Définissez DBTLSConnect=required | Le serveur/proxy établit une connexion TLS à la base de données. Une connexion non chiffrée n'est pas autorisée. |
1. Définissez DBTLSConnect=verify_ca 2. Définissez DBTLSCAFile - spécifiez le fichier d'autorité de certification TLS |
Le serveur/proxy établit une connexion TLS à la base de données après avoir vérifié le certificat de la base de données. |
1. Définissez DBTLSConnect=verify_full 2. Définissez DBTLSCAFile - spécifiez le fichier d'autorité de certification TLS |
Le serveur/proxy établit une connexion TLS à la base de données après avoir vérifié le certificat de base de données et l'identité de l'hôte de la base de données. |
1. Définissez DBTLSCAFile - spécifiez le fichier d'autorité de certification TLS 2. Définissez DBTLSCertFile - spécifiez le fichier de certificat de clé publique du client 3. Set DBTLSKeyFile - spécifiez le fichier de clé privée du client |
Le serveur/proxy fournit un certificat client lors de la connexion à la base de données. |
1. Définir DBTLSCipher - la liste des chiffrements de chiffrement que le client autorise pour les connexions utilisant les protocoles TLS jusqu'à TLS 1.2 ou DBTLSCipher13 - la liste des chiffrements que le client autorise pour les connexions utilisant le protocole TLS 1.3 |
(MySQL) La connexion TLS est établie à l'aide d'un chiffrement de la liste fournie. (PostgreSQL) La définition de cette option sera considérée comme une erreur. |