Zabbix prend en charge les communications chiffrées entre les composants Zabbix à l'aide du protocole Transport Layer Security (TLS) v.1.2 et 1.3 (selon la bibliothèque de chiffrement). Le chiffrement basé sur des certificats et basé sur des clés pré-partagées est pris en charge.
Le chiffrement peut être configuré pour les connexions :
Le chiffrement est facultatif et configurable pour les composants individuels :
Les démons Zabbix utilisent un port d'écoute pour les connexions entrantes chiffrées et non chiffrées. L'ajout d'un cryptage ne nécessite pas l'ouverture de nouveaux ports sur les pare-feux.
Pour prendre en charge le chiffrement, Zabbix doit être compilé et lié à l'une des bibliothèques de chiffrement prises en charge :
tls_*()
spécifiques à LibreSSL ne sont pas utilisées. Les composants Zabbix compilés avec LibreSSL ne pourront pas utiliser PSK, seuls les certificats peuvent être utilisés.La bibliothèque est sélectionnée en spécifiant l'option respective pour "configurer" le script :
--with-gnutls[=DIR]
--with-openssl[=DIR]
(également utilisé pour LibreSSL)Par exemple, pour configurer les sources du serveur et de l'agent avec OpenSSL, vous pouvez utiliser quelque chose comme :
./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 de chiffrement (par exemple, un serveur avec OpenSSL, un agent avec GnuTLS).
Si vous prévoyez d'utiliser des clés pré-partagées (PSK), envisagez d'utiliser les bibliothèques GnuTLS ou OpenSSL 1.1.0 (ou plus récent) dans les composants Zabbix utilisant des PSK. Les bibliothèques GnuTLS et OpenSSL 1.1.0 prennent en charge les suites de chiffrement PSK avec Perfect Forward Secrecy. Les anciennes versions de la bibliothèque OpenSSL (1.0.1, 1.0.2c) prennent également en charge les PSK, mais les suites de chiffrement PSK disponibles ne fournissent pas Perfect Forward Secrecy.
Les connexions dans Zabbix peuvent utiliser :
Deux paramètres importants sont utilisés pour spécifier le chiffrement entre les composants Zabbix :
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, l'équivalent TLSConnect est le champ Connexions à l'hôte dans l'onglet Configuration → Hôtes → <un hôte> → Chiffrement et le champ Connexions au proxy dans l'onglet Administration → Proxies → <un proxy> → Chiffrement . Si le type de chiffrement configuré pour la connexion échoue, aucun autre type de chiffrement ne sera essayé.
TLSAccept
est utilisé dans les fichiers de configuration pour le proxy Zabbix (en mode passif, spécifie uniquement les connexions depuis le serveur) et l'agent Zabbix (pour les vérifications passives). Dans l'interface Zabbix, l'équivalent TLSAccept est le champ Connexions depuis l'hôte dans l'onglet Configuration → Hôtes → <un hôte> → Chiffrement et le champ Connexions depuis le proxy dans l'onglet Administration → Proxies → <un proxy> → Chiffrement .
Normalement, vous ne configurez qu'un seul type de chiffrement pour les chiffrements entrants. Mais vous voudrez peut-être changer le type de cryptage, par exemple de non crypté à basé sur certificat avec un temps d'arrêt minimum et une possibilité de restauration. Pour y parvenir :
TLSAccept=unencrypted,cert
dans le fichier de configuration de l'agent et redémarrez l'agent ZabbixTLSAccept=cert
dans le fichier de configuration de l'agent et redémarrer l'agent Zabbix. Désormais, l'agent n'acceptera que les connexions basées sur des certificats chiffrés. Les connexions non chiffrées et basées sur PSK seront rejetées.De la même manière, cela fonctionne sur le serveur et le proxy. Si, dans l'interface Zabbix, dans la configuration de l'hôte, Connexions depuis l'hôte est défini sur "Certificat", seules les connexions chiffrées basées sur un certificat seront acceptées par l'agent (vérifications actives) et zabbix_sender (éléments de trappeur).
Vous configurerez très probablement les connexions entrantes et sortantes pour utiliser le même type de cryptage ou aucun cryptage du tout. Mais techniquement, il est possible de le configurer de manière asymétrique, par ex. chiffrement basé sur certificat pour les connexions entrantes et basé sur PSK pour les connexions sortantes.
La configuration du chiffrement pour chaque hôte est affichée dans l'interface Zabbix, dans Configuration → Hôtes dans la colonne Chiffrement de l'agent. Par exemple:
Exemple | Connexions à l'hôte | Connexions autorisées depuis l'hôte | Connexions rejetées depuis l'hôte |
---|---|---|---|
Non crypté | Non crypté | Crypté, certificat et cryptage basé sur PSK | |
Crypté, basé sur un certificat | Crypté, basé sur un certificat | Non crypté et crypté par PSK | |
Crypté, basé sur PSK | Crypté, basé sur PSK | Crypté non crypté et crypté sur certificat | |
Crypté, basé sur PSK | Non crypté et crypté PSK | Crypté basé sur certificat | |
Crypté, basé sur certificat | Non crypté, PSK ou crypté basé sur certificat | - |
Les connexions ne sont pas chiffrées par défaut. Le chiffrement doit être configuré pour chaque hôte et proxy individuellement.
Voir les man-pages zabbix_get et zabbix_sender pour une utilisation avec chiffrement.
Les suites de chiffrement par défaut sont configurées en interne lors du démarrage de Zabbix et, avant Zabbix 4.0.19, 4.4.7, ne sont pas configurables par l'utilisateur.
Depuis Zabbix 4.0.19, 4.4.7, les suites de chiffrement configurées par l'utilisateur sont également prises en charge pour GnuTLS et OpenSSL. Les utilisateurs peuvent configurer des suites de chiffrement en fonction de leurs politiques de sécurité. L'utilisation de cette fonctionnalité est facultative (les suites de chiffrement par défaut intégrées fonctionnent toujours).
Pour les bibliothèques de chiffrement compilées avec les paramètres par défaut, les règles intégrées de Zabbix entraînent généralement les suites de chiffrement suivantes (dans l'ordre de priorité la plus élevée à la plus faible) :
Librairie | Suite de chiffrement Certificat | Suite de chiffrement PSK |
---|---|---|
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 |
OpenSSL 1.1.1d | TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA |
TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 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 |
Les critères de sélection de suite de chiffrement intégrés peuvent être remplacés par des suites de chiffrement configurées par l'utilisateur.
Les suites de chiffrement configurées par l'utilisateur sont une fonctionnalité destinée aux utilisateurs avancés qui comprennent les suites de chiffrement TLS, leur sécurité et les conséquences des erreurs, et qui sont à l'aise avec le dépannage TLS.
Les critères de sélection de la suite de chiffrement intégrée peuvent être remplacés à l'aide des paramètres suivants :
Remplacer la portée | Paramètre | Valeur | Description |
---|---|---|---|
Sélection de la suite de chiffrement pour les certificats | TLSCipherCert13 | Chaînes de chiffrement OpenSSL 1.1.1 valides pour le protocole TLS 1.3 (leurs valeurs sont transmises à la fonction OpenSSL SSL_CTX_set_ciphersuites()). | Critères de sélection de la suite de chiffrement basée sur les certificats pour TLS 1.3 Uniquement OpenSSL 1.1.1 ou version ultérieure. |
TLSCipherCert | Chaînes de chiffrement OpenSSL valides pour TLS 1.2 ou chaînes de priorité GnuTLS valides. Leurs valeurs sont respectivement transmises aux fonctions SSL_CTX_set_cipher_list() ou gnutls_priority_init(). | Critères de sélection des suites de chiffrement basées sur des certificats pour TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Sélection de la suite de chiffrement pour PSK | TLSCipherPSK13 | Chaînes de chiffrement OpenSSL 1.1.1 valides pour le protocole TLS 1.3 (leurs valeurs sont transmises à la fonction OpenSSL SSL_CTX_set_ciphersuites()). | Critères de sélection des suites de chiffrement basées sur PSK pour TLS 1.3 Uniquement OpenSSL 1.1.1 ou plus récent. |
TLSCipherPSK | Chaînes de chiffrement OpenSSL valides pour TLS 1.2 ou chaînes de priorité GnuTLS valides. Leurs valeurs sont respectivement transmises aux fonctions SSL_CTX_set_cipher_list() ou gnutls_priority_init(). | Critères de sélection de suite de chiffrement basés sur PSK pour TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Liste combinée de suites de chiffrement pour certificat et PSK | TLSCipherAll13 | Chaînes de chiffrement OpenSSL 1.1.1 valides pour le protocole TLS 1.3 (leurs valeurs sont transmises à la fonction OpenSSL SSL_CTX_set_ciphersuites()). | Critères de sélection des suites de chiffrement pour TLS 1.3 Uniquement OpenSSL 1.1.1 ou plus récent. |
TLSCipherAll | Chaînes de chiffrement OpenSSL valides pour TLS 1.2 ou chaînes de priorité GnuTLS valides. Leurs valeurs sont respectivement transmises aux fonctions SSL_CTX_set_cipher_list() ou gnutls_priority_init(). | Critères de sélection Ciphersuite pour TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) |
Pour remplacer la sélection de la suite de chiffrement dans les utilitaires zabbix_get et zabbix_sender - utilisez les paramètres de ligne de commande :
--tls-cipher13
--tls-cipher
Les nouveaux paramètres sont facultatifs. Si un paramètre n'est pas spécifié, la valeur par défaut interne est utilisée. Si un paramètre est défini, il ne peut pas être vide.
Si la définition d'une valeur TLSCipher* dans la bibliothèque de chiffrement échoue, le serveur, le proxy ou l'agent ne démarre pas et une erreur est consignée.
Il est important de comprendre quand chaque paramètre est applicable.
Le cas le plus simple est celui des connexions sortantes :
--tls-cipher13
et --tls-cipher
peuvent être utilisés (le chiffrement est spécifié sans ambiguïté avec un paramètre --tls-connect
)C'est un peu plus compliqué avec les connexions entrantes car les règles sont spécifiques aux composants et à la configuration.
Pour l'agent Zabbix :
Configuration de la connexion de l'agent | Configuration du chiffrement |
---|---|
TLSConnect=cert | TLSCipherCert, TLSCipherCert13 |
TLSConnect=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert | TLSCipherCert, TLSCipherCert13 |
TLSAccept=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert,psk | TLSCipherAll, TLSCipherAll13 |
Pour le serveur et le proxy Zabbix :
Configuration de la connexion | Configuration du chiffrement |
---|---|
Connexions sortantes utilisant PSK | TLSCipherPSK, TLSCipherPSK13 |
Connexions entrantes utilisant des certificats | TLSCipherAll, TLSCipherAll13 |
Connexions entrantes utilisant PSK si le serveur n'a pas de certificat | TLSCipherPSK, TLSCipherPSK13 |
Connexions entrantes utilisant PSK si le serveur a un certificat | TLSCipherAll, TLSCipherAll13 |
Certains modèles peuvent être observés dans les deux tableaux ci-dessus :
Les tableaux suivants montrent les valeurs par défaut intégrées de TLSCipher*
. Ils pourraient être un bon point de départ pour vos propres valeurs personnalisées.
Paramètre | GnuTLS 3.6.12 |
---|---|
TLSCipherCert | NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 |
TLSCipherPSK | NONE:+VERS-TLS1.2:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL |
TLSCipherAll | NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 |
Paramètre | OpenSSL 1.1.1d 1 |
---|---|
TLSCipherCert13 | |
TLSCipherCert | EECDH+aRSA+AES128:RSA+aRSA+AES128 |
TLSCipherPSK13 | TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 |
TLSCipherPSK | kECDHEPSK+AES128:kPSK+AES128 |
TLSCipherAll13 | |
TLSCipherAll | EECDH+aRSA+AES128:RSA+aRSA+AES128:kECDHEPSK+AES128:kPSK+AES128 |
1 Les valeurs par défaut sont différentes pour les anciennes versions d'OpenSSL (1.0.1, 1.0.2, 1.1.0), pour LibreSSL et si OpenSSL est compilé sans le support PSK.
** Exemples de suites de chiffrement configurées par l'utilisateur **
Voir ci-dessous les exemples suivants de suites de chiffrement configurées par l'utilisateur :
Pour voir quelles suites de chiffrement ont été sélectionnées, vous devez définir 'DebugLevel=4' dans le fichier de configuration, ou utiliser l'option -vv
pour zabbix_sender.
Certaines expérimentations avec les paramètres TLSCipher *
peuvent être nécessaires avant d'obtenir les suites de chiffrement souhaitées. Il n'est pas pratique de redémarrer plusieurs fois le serveur, le proxy ou l'agent Zabbix juste pour modifier les paramètres TLSCipher *
. Des options plus pratiques utilisent zabbix_sender ou la commande openssl
. Montrons les deux.
1. Utilisation de zabbix_sender.
Créons un fichier de configuration de test, par exemple /home/zabbix/test.conf, avec la syntaxe d'un fichier zabbix_agentd.conf :
Hostname=nonexisting
ServerActive=nonexisting
TLSConnect=cert
TLSCAFile=/home/zabbix/ca.crt
TLSCertFile=/home/zabbix/agent.crt
TLSKeyFile=/home/zabbix/agent.key
TLSPSKIdentity=nonexisting
TLSPSKFile=/home/zabbix/agent.psk
Vous avez besoin de certificats CA et d'agent valides et de PSK pour cet exemple. Ajustez les chemins et les noms des certificats et des fichiers PSK pour votre environnement.
Si vous n'utilisez pas de certificats, mais uniquement PSK, vous pouvez créer un fichier de test plus simple :
Hostname=nonexisting
ServerActive=nonexisting
TLSConnect=psk
TLSPSKIdentity=nonexisting
TLSPSKFile=/home/zabbix/agentd.psk
Les suites de chiffrement sélectionnées peuvent être vues en exécutant zabbix_sender (exemple compilé avec OpenSSL 1.1.d) :
$ zabbix_sender -vv -c /home/zabbix/test.conf -k nonexisting_item -o 1 2>&1 | grep ciphersuites
zabbix_sender [41271]: DEBUG: zbx_tls_init_child() certificate ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA
zabbix_sender [41271]: DEBUG: zbx_tls_init_child() PSK ciphersuites: TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 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
zabbix_sender [41271]: DEBUG: zbx_tls_init_child() certificate and PSK ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 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
Ici, vous voyez les suites de chiffrement sélectionnées par défaut. Ces valeurs par défaut sont choisies pour assurer l'interopérabilité avec les agents Zabbix exécutés sur des systèmes avec des versions OpenSSL plus anciennes (à partir de 1.0.1).
Avec les systèmes plus récents, vous pouvez choisir de renforcer la sécurité en n'autorisant que quelques suites de chiffrement, par exemple uniquement les suites de chiffrement avec PFS (Perfect Forward Secrecy). Essayons de n'autoriser que les suites de chiffrement avec PFS en utilisant les paramètres TLSCipher*
.
Le résultat ne sera pas interopérable avec les systèmes utilisant OpenSSL 1.0.1 et 1.0.2, si PSK est utilisé. Le chiffrement basé sur des certificats devrait fonctionner.
Ajoutez deux lignes au fichier de configuration test.conf
:
et testez à nouveau :
$ zabbix_sender -vv -c /home/zabbix/test.conf -k nonexisting_item -o 1 2>&1 | grep ciphersuites
zabbix_sender [42892]: DEBUG: zbx_tls_init_child() certificate ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA
zabbix_sender [42892]: DEBUG: zbx_tls_init_child() PSK ciphersuites: TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA
zabbix_sender [42892]: DEBUG: zbx_tls_init_child() certificate and PSK ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 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
Les listes "certificate ciphersuites" et "PSK ciphersuites" ont changé - elles sont plus courtes qu'auparavant, ne contenant que les suites de chiffrement TLS 1.3 et les suites de chiffrement TLS 1.2 ECDHE-* comme prévu.
2. TLSCipherAll et TLSCipherAll13 ne peuvent pas être testés avec zabbix_sender ; ils n'affectent pas la valeur "certificate and PSK ciphersuites" indiquée dans l'exemple ci-dessus. Pour modifier TLSCipherAll et TLSCipherAll13, vous devez l'expérimenter avec l'agent, le proxy ou le serveur.
Ainsi, pour autoriser uniquement les suites de chiffrement PFS, vous devrez peut-être ajouter jusqu'à trois paramètres
TLSCipherCert=EECDH+aRSA+AES128
TLSCipherPSK=kECDHEPSK+AES128
TLSCipherAll=EECDH+aRSA+AES128:kECDHEPSK+AES128
dans zabbix_agentd.conf, zabbix_proxy.conf et zabbix_server.conf si chacun d'eux a un certificat configuré et que l'agent a également PSK.
Si votre environnement Zabbix utilise uniquement un chiffrement basé sur PSK et aucun certificat, alors un seul :
Maintenant que vous comprenez comment cela fonctionne, vous pouvez tester la sélection de la suite de chiffrement même en dehors de Zabbix, avec la commande openssl
. Testons les trois valeurs de paramètre TLSCipher*
:
$ openssl ciphers EECDH+aRSA+AES128 | sed 's/:/ /g'
TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA
$ openssl ciphers kECDHEPSK+AES128 | sed 's/:/ /g'
TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA
$ openssl ciphers EECDH+aRSA+AES128:kECDHEPSK+AES128 | sed 's/:/ /g'
TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA
Vous pouvez préférer openssl ciphers
avec l'option -V
pour une sortie plus détaillée :
$ openssl ciphers -V EECDH+aRSA+AES128:kECDHEPSK+AES128
0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
0xC0,0x13 - ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
0xC0,0x37 - ECDHE-PSK-AES128-CBC-SHA256 TLSv1 Kx=ECDHEPSK Au=PSK Enc=AES(128) Mac=SHA256
0xC0,0x35 - ECDHE-PSK-AES128-CBC-SHA TLSv1 Kx=ECDHEPSK Au=PSK Enc=AES(128) Mac=SHA1
De même, vous pouvez tester les chaînes de priorité pour GnuTLS :
$ gnutls-cli -l --priority=NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509
Cipher suites for NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509
TLS_ECDHE_RSA_AES_128_GCM_SHA256 0xc0, 0x2f TLS1.2
TLS_ECDHE_RSA_AES_128_CBC_SHA256 0xc0, 0x27 TLS1.2
Protocols: VERS-TLS1.2
Ciphers: AES-128-GCM, AES-128-CBC
MACs: AEAD, SHA256
Key Exchange Algorithms: ECDHE-RSA
Groups: GROUP-SECP256R1, GROUP-SECP384R1, GROUP-SECP521R1, GROUP-X25519, GROUP-X448, GROUP-FFDHE2048, GROUP-FFDHE3072, GROUP-FFDHE4096, GROUP-FFDHE6144, GROUP-FFDHE8192
PK-signatures: SIGN-RSA-SHA256, SIGN-RSA-PSS-SHA256, SIGN-RSA-PSS-RSAE-SHA256, SIGN-ECDSA-SHA256, SIGN-ECDSA-SECP256R1-SHA256, SIGN-EdDSA-Ed25519, SIGN-RSA-SHA384, SIGN-RSA-PSS-SHA384, SIGN-RSA-PSS-RSAE-SHA384, SIGN-ECDSA-SHA384, SIGN-ECDSA-SECP384R1-SHA384, SIGN-EdDSA-Ed448, SIGN-RSA-SHA512, SIGN-RSA-PSS-SHA512, SIGN-RSA-PSS-RSAE-SHA512, SIGN-ECDSA-SHA512, SIGN-ECDSA-SECP521R1-SHA512, SIGN-RSA-SHA1, SIGN-ECDSA-SHA1
Zabbix utilise AES128 par défaut pour les données. Supposons que vous utilisiez des certificats et que vous souhaitiez passer à AES256, sur OpenSSL 1.1.1.
Ceci peut être réalisé en ajoutant les paramètres respectifs suivants dans zabbix_server.conf
:
TLSCAFile=/home/zabbix/ca.crt
TLSCertFile=/home/zabbix/server.crt
TLSKeyFile=/home/zabbix/server.key
TLSCipherCert13=TLS_AES_256_GCM_SHA384
TLSCipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384
TLSCipherPSK13=TLS_CHACHA20_POLY1305_SHA256
TLSCipherPSK=kECDHEPSK+AES256:-SHA1
TLSCipherAll13=TLS_AES_256_GCM_SHA384
TLSCipherAll=EECDH+aRSA+AES256:-SHA1:-SHA384
Bien que seules les suites de chiffrement liées aux certificats soient utilisées, les paramètres TLSCipherPSK*
sont également définis pour éviter leurs valeurs par défaut qui incluent des chiffrements moins sécurisés pour une interopérabilité plus large. Les suites de chiffrement PSK ne peuvent pas être complètement désactivées sur le serveur/proxy.
Et dans zabbix_agentd.conf
: