Áú»¢¶Ä²© prend en charge les communications chiffr¨¦es entre les composants Áú»¢¶Ä²© ¨¤ 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 Áú»¢¶Ä²© 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, Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© utilisant des PSK. Les biblioth¨¨ques GnuTLS et OpenSSL 1.1.0 prennent en charge les suites de chiffrement PSK avec . 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 Áú»¢¶Ä²© peuvent utiliser :
Deux param¨¨tres importants sont utilis¨¦s pour sp¨¦cifier le chiffrement entre les composants Áú»¢¶Ä²© :
TLSConnect
est utilis¨¦ dans les fichiers de configuration pour le proxy Áú»¢¶Ä²© (en mode actif, sp¨¦cifie uniquement les connexions au serveur) et l'agent Áú»¢¶Ä²© (pour les v¨¦rifications actives). Dans l'interface Áú»¢¶Ä²©, 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 Áú»¢¶Ä²© (en mode passif, sp¨¦cifie uniquement les connexions depuis le serveur) et l'agent Áú»¢¶Ä²© (pour les v¨¦rifications passives). Dans l'interface Áú»¢¶Ä²©, 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 Áú»¢¶Ä²©TLSAccept=cert
dans le fichier de configuration de l'agent et red¨¦marrer l'agent Áú»¢¶Ä²©. 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 Áú»¢¶Ä²©, 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 Áú»¢¶Ä²©, 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 Áú»¢¶Ä²© et, avant Áú»¢¶Ä²© 4.0.19, 4.4.7, ne sont pas configurables par l'utilisateur.
Depuis Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 | ±Ê²¹°ù²¹³¾¨¨³Ù°ù±ð | Valeur | Description |
---|---|---|---|
S¨¦lection de la suite de chiffrement pour les certificats | TLSCipherCert13 | 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 | OpenSSL valides pour TLS 1.2 ou 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 | 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 | OpenSSL valides pour TLS 1.2 ou 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 | 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 | OpenSSL valides pour TLS 1.2 ou 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 Áú»¢¶Ä²© :
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 Áú»¢¶Ä²© :
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.
±Ê²¹°ù²¹³¾¨¨³Ù°ù±ð | 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 |
±Ê²¹°ù²¹³¾¨¨³Ù°ù±ð | 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²©, 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
Áú»¢¶Ä²© 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
: