Zabbix Documentation 4.0

2.23.04.04.2 (current)In development:4.4 (devel)Unsupported:1.82.02.43.23.4

User Tools

Site Tools


Sidebar

fr:manual:encryption

17. Chiffrement

Vue d'ensemble

Zabbix prend en charge les communications chiffrées entre le serveur Zabbix, le proxy Zabbix, les agents Zabbix, les utilitaires zabbix_sender et zabbix_get en utilisant le protocole TLS (Transport Layer Security) v.1.2. Le chiffrement est pris en charge à partir de Zabbix 3.0. Le chiffrement basé sur des certificats et sur des clés pré-partagées est pris en charge.

Le chiffrement est facultatif et configurable pour chaque composant individuellement (par exemple, certains proxys et agents peuvent être configurés pour utiliser le chiffrement basé sur des certificats avec le serveur, tandis que d'autres peuvent utiliser le chiffrement par clé pré-partagée).

Le serveur (ou le proxy) peut utiliser différentes configurations de chiffrement pour différents hôtes.

Les démons Zabbix utilisent un seul port d'écoute pour les connexions entrantes chiffrées et non chiffrées. L'ajout d'un chiffrement ne nécessite pas l'ouverture de nouveaux ports sur les pare-feux.

Limitations

  • Les clés privées sont stockées en texte brut dans des fichiers lisibles par les composants Zabbix lors du démarrage.
  • Les clés pré-partagées sont saisies dans l'interface Zabbix et stockées dans la base de données Zabbix en texte brut.
  • Le chiffrement intégré ne protège pas les communications :
    • entre le serveur Web exécutant l'interface Zabbix et le navigateur Web de l'utilisateur,
    • entre le serveur Web exécutant l'interface Zabbix et le serveur,
    • entre le serveur Zabbix (ou le proxy) et la base de données Zabbix.
  • Actuellement, chaque connexion chiffrée s'ouvre par négociation TLS complète, aucune mise en cache de session et aucun ticket ne sont implémentés.
  • L'ajout du chiffrement augmente la durée des vérifications et des actions, en fonction de la latence du réseau. Par exemple, si le délai de transmission est de 100 ms, l'ouverture d'une connexion TCP et l'envoi d'une requête non chiffrée prennent environ 200 ms.
    Avec le chiffrement, 1000ms environ sont ajoutés pour établir une connexion TLS.
    Il peut être nécessaire d'augmenter les délais d'attente. A défaut, certains éléments et actions exécutant des scripts à distance sur des agents fonctionneront en connexion non chiffrée, après échec dû à l'expiration du chiffrement.
  • Le chiffrement n'est pas pris en charge pour la découverte réseau. Les vérifications des agents Zabbix effectuées par découverte réseau ne seront pas chiffrées et si l'agent Zabbix est configuré pour rejeter les connexions non chiffrées, ces vérifications échoueront.

Compiler Zabbix avec le support du chiffrement

Pour prendre en charge le chiffrement, Zabbix doit être compilé et lié à l'une des trois bibliothèques cryptographiques suivantes :

  • GnuTLS (à partir de la version 3.1.18).
  • OpenSSL (versions ​1.0.1, 1.0.2, 1.1.0). OpenSSL 1.1.1 est supporté pour les versions Zabbix 3.0.23, 3.4.15, 4.0.1.
  • LibreSSL (testé avec les versions 2.7.4, 2.8.2) est supporté à partir de la version 4.0.6 de Zabbix. LibreSSL 2.6.x n'est pas supporté. LibreSSL est supporté en tant que remplacement compatible de OpenSSL, les nouvelles fonctions tls_*() de l'API LibreSSL-specific ne sont pas utilisées. Les composants Zabbix compilés avec LibreSSL ne pourront pas utiliser PSK, seuls les certificats peuvent être utilisés.   * mbed TLS (anciennement PolarSSL) (version 1.3.9 et ultérieures 1.3.x). mbed TLS 2.x n'est actuellement pas supporté, ce n'est pas un remplacement instantané de la branche 1.3, Zabbix ne compilera pas avec mbed TLS 2.x. La bibliothèque est sélectionnée en spécifiant une des options suivantes au script “configure” : * --with-gnutls[=DIR] * <​nowiki>​–with-openssl[=DIR]</​nowiki>​ (également utilisé pour LibreSSL) * <​nowiki>​–with-mbedtls[=DIR]</​nowiki>​ Par exemple, pour configurer les sources pour le serveur et l'agent avec OpenSSL, vous pouvez utiliser le script “configure” comme suit :
    ./configure –enable-server –enable-agent –with-mysql –enable-ipv6 –with-net-snmp –with-libcurl –with-libxml2 –with-openssl Différents composants Zabbix peuvent être compilés avec différentes bibliothèques cryptographiques (par exemple, un serveur avec
    OpenSSL, un agent avec GnuTLS). <note important> Si vous prévoyez d'utiliser des clés pré-partagées (PSK), envisagez d'utiliser les bibliothèques GnuTLS ou mbed TLS pour les composants Zabbix utilisant PSK. Les bibliothèques GnuTLS et mbed TLS prennent en charge les suites de chiffrement PSK avec Confidentialité persistante. La bibliothèque OpenSSL (versions 1.0.1 et 1.0.2c) prend en charge les PSK, mais les suites de chiffrement PSK disponibles ne fournissent pas confidentialité persistante. </note> === Gestion du chiffrement de la connexion === Les connexions dans Zabbix peuvent utiliser : * aucun chiffrement (par défaut) * le chiffrement basé sur un certificat RSA * le chiffrement basé sur PSK Deux paramètres importants permettent de spécifier le chiffrement des connexions entre les composants Zabbix : * TLSConnect * TLSAccept TLSConnect spécifie le chiffrement à utiliser pour les connexions sortantes et peut prendre une des trois valeurs (unencrypted, PSK, certificate). TLSConnect est utilisé dans les fichiers de configuration pour le proxy Zabbix (en mode actif, spécifie uniquement les connexions au serveur) et l'agent Zabbix (pour les vérifications actives). Dans l'interface Zabbix, les équivalents de TLSConnect sont le champ Connexion à l'hôte de l'onglet Configuration - >Hôtes → <un hôte> → Chiffrement et le champ Connexion au proxy de l'onglet Administration → Proxys → <un proxy> → Chiffrement. Si le type de chiffrement configuré pour la connexion échoue, aucun autre type de chiffrement ne sera essayé. TLSAccept indique quels types de connexions sont autorisés pour les connexions entrantes. Les types de connexion sont les suivants : unencrypted, PSK, certificate. Une ou plusieurs valeurs peuvent être spécifiées. TLSAccept est utilisé dans les fichiers de configuration du proxy Zabbix (en mode passif, spécifie uniquement les connexions du serveur) et du démon Zabbix agentd (pour les vérifications passives). Dans l'interface Zabbix, les équivalents de TLSAccept sont le champ Connexion de l'hôte de l'onglet Configuration → Hôtes → <un hôte> → Chiffrement et le champ Connexions du proxy de l'onglet Administration → Proxys → <un proxy> → Chiffrement. Normalement, vous ne configurez qu'un seul type de chiffrement pour les chiffrements entrants. Mais vous pourriez vouloir changer de type de chiffrement, par exemple du non chiffré au certificat avec un temps d'arrêt minimum et une possibilité de retour en arrière.
    Pour y parvenir, vous pouvez définir TLSAccept=unencrypted,cert dans le fichier de configuration du démon agentd, puis redémarrer l'agent Zabbix.
    Ensuite, vous pourrez tester la connexion avec la commande zabbix_get à destination de l'agent utilisant un certificat. Si cela fonctionne, vous pourrez reconfigurer le chiffrement pour cet agent dans l'onglet
    Configuration → Hôtes → <un hôte> → Chiffrement de l'interface Zabbix en définissant Connexion à l'hôte à “Certificat”.
    Lorsque le cache de configuration du serveur est mis à jour (et la configuration du proxy est mise à jour si l'hôte supervisé par un proxy) les connexions à cet agent seront alors chiffrées.
    Si tout fonctionne comme prévu, vous pourrez définir TLSAccept=cert dans le fichier de configuration de l'agent et redémarrer l'agent Zabbix.
    Dès lors, l'agent n'acceptera que les connexions chiffrées basées sur des certificats. Les connexions non chiffrées et basées sur PSK seront rejetées. Tout cela fonctionne de la même manière sur le serveur et le proxy. Si dans le champ
    Connexion de l'hôte de l'onglet Configuration → Hôtes → <un hôte> → Chiffrement de l'interface Zabbix est défini à “Certificat”, alors seules les connexions chiffrées basées sur des certificats seront acceptées depuis l'agent (surveillances actives) et du zabbix_sender (éléments trappeur). Vous configurerez très probablement les connexions entrantes et sortantes pour utiliser le même type de chiffrement ou aucun chiffrement. Mais techniquement, il est possible de passer à une configuration asymétrique, par exemple un chiffrement par certificat pour les connexions entrantes et basées sur PSK pour les connexions sortantes. Pour une vue d'ensemble, la configuration de chiffrement pour chaque hôte est affichée dans l'interface Zabbix Configuration → Hôtes sur le côté droit, dans la colonne Chiffrement sur l'agent. Exemples d'affichage de configuration : ^Exemple^Connexions A l'hôte^Connexions autorisées DE l'hôte^Connexions rejetées DE l'hôte^ | | Non chiffrées | Non chiffrées | Chiffrées par certificat et PSK | | | Chiffrées par certificat | Chiffrées par certificat | Non chiffrées et chiffrées par PSK | | | Chiffrées par PSK | Chiffrées par PSK | Non chiffrées et chiffrées par certificat | | | Chiffrées par PSK | Non chiffrées et chiffrées par PSK | Chiffrées par certificat | | | Chiffrées par certificat | Non chiffrées, chiffrées par certificat et chiffrées par PSK | - | <note important> Par défaut, les connexions sont non chiffrées. Le chiffrement doit être configuré pour chaque hôte et chaque proxy individuellement. </note> === zabbix_get et zabbix_sender avec chiffrement === Voir les man-pages zabbix_get et zabbix_sender pour une utilisation par chiffrement. === Méthodes de chiffrement === Les méthodes de chiffrement sont configurées en interne lors du démarrage de Zabbix et dépendent de la bibliothèque cryptographique, actuellement ils ne sont pas configurables par l'utilisateur. Configurations du chiffrements par type de bibliothèque, de la priorité la plus élevée à la plus basse : ^Bibliothèque^Méthodes de chiffrement par certificat^Méthodes de chiffrement PSK^ | mbed TLS (PolarSSL) 1.3.9 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
    TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256
    TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA
    TLS-RSA-WITH-AES-128-GCM-SHA256
    TLS-RSA-WITH-AES-128-CBC-SHA256
    TLS-RSA-WITH-AES-128-CBC-SHA |TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256
    TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA
    TLS-PSK-WITH-AES-128-GCM-SHA256
    TLS-PSK-WITH-AES-128-CBC-SHA256
    TLS-PSK-WITH-AES-128-CBC-SHA | |
    GnuTLS 3.1.18 |TLS_ECDHE_RSA_AES_128_GCM_SHA256
    TLS_ECDHE_RSA_AES_128_CBC_SHA256
    TLS_ECDHE_RSA_AES_128_CBC_SHA1
    TLS_RSA_AES_128_GCM_SHA256
    TLS_RSA_AES_128_CBC_SHA256
    TLS_RSA_AES_128_CBC_SHA1 |TLS_ECDHE_PSK_AES_128_CBC_SHA256
    TLS_ECDHE_PSK_AES_128_CBC_SHA1
    TLS_PSK_AES_128_GCM_SHA256
    TLS_PSK_AES_128_CBC_SHA256
    TLS_PSK_AES_128_CBC_SHA1 | |
    OpenSSL 1.0.2c |ECDHE-RSA-AES128-GCM-SHA256
    ECDHE-RSA-AES128-SHA256
    ECDHE-RSA-AES128-SHA
    AES128-GCM-SHA256
    AES128-SHA256
    AES128-SHA |PSK-AES128-CBC-SHA | |
    OpenSSL 1.1.0 |ECDHE-RSA-AES128-GCM-SHA256
    ECDHE-RSA-AES128-SHA256
    ECDHE-RSA-AES128-SHA
    AES128-GCM-SHA256
    AES128-CCM8
    AES128-CCM
    AES128-SHA256
    AES128-SHA
    |ECDHE-PSK-AES128-CBC-SHA256
    ECDHE-PSK-AES128-CBC-SHA
    PSK-AES128-GCM-SHA256
    PSK-AES128-CCM8
    PSK-AES128-CCM
    PSK-AES128-CBC-SHA256
    PSK-AES128-CBC-SHA | Méthodes de chiffrement utilisant des certificats : | ^Serveur TLS^^^ ^Client TLS|
    mbed TLS (PolarSSL)|GnuTLS|OpenSSL 1.0.2| |mbed TLS (PolarSSL)|TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 | |GnuTLS|TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 | |OpenSSL 1.0.2|TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 |TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 | Méthodes de chiffrement utilisant PSK : | ^Serveur TLS^^^ ^Client TLS|mbed TLS (PolarSSL)|GnuTLS|OpenSSL 1.0.2| |mbed TLS (PolarSSL)|TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-PSK-WITH-AES-128-CBC-SHA | |GnuTLS|TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 |TLS-PSK-WITH-AES-128-CBC-SHA | |OpenSSL 1.0.2|TLS-PSK-WITH-AES-128-CBC-SHA |TLS-PSK-WITH-AES-128-CBC-SHA |TLS-PSK-WITH-AES-128-CBC-SHA |