Áú»¢¶Ä²©

17. Xifrat

Vista general

Áú»¢¶Ä²© admet comunicacions xifrades entre components Áú»¢¶Ä²© emprant el protocol Transport Layer Security (TLS) v.1.2 i 1.3 (segons la biblioteca de xifrat). S'admet tant el xifrat basat en certificats com el basat en claus precompartides.

El xifrat es pot configurar per a connexions:

El xifrat ¨¦s opcional i configurable per a components individuals:

  • Alguns proxys i agents poden estar configurats per emprar xifrat basat en certificats amb el servidor, mentre que altres poden emprar el xifrat basat en claus compartides pr¨¨viament i d'altres continuen amb comunicacions sense xifrar (com abans)
  • El servidor (proxy) pot emprar diferents configuracions de xifrat per a diferents equips

Els dimonis Áú»¢¶Ä²© empren un port d'escolta per a connexions entrants xifrades i no xifrades. L'afegit de xifrat no requereix obrir nous ports als tallafocs.

Limitacions

  • Les claus privades s'emmagatzemen en text sense format en fitxers llegibles pels components Áú»¢¶Ä²© durant l'inici
  • Les claus precompartides s'introdueixen a la interf¨ªcie Áú»¢¶Ä²© i s'emmagatzemen a la base de dades de Áú»¢¶Ä²© en text sense format
  • El xifrat integrat no protegeix les comunicacions: - Entre el servidor web que executa la interf¨ªcie Áú»¢¶Ä²© i el navegador web de l'usuari - Entre la interf¨ªcie Áú»¢¶Ä²© i el servidor Áú»¢¶Ä²©
  • Actualment, totes les connexions xifrades s'obren amb una verificaci¨® TLS completa, no s'implementa cap emmagatzematge en mem¨°ria cau de sessi¨® ni tiquets
  • L'addici¨® de xifrat augmenta la verificaci¨® de l'element i el temps d'acci¨®, depenent de la lat¨¨ncia de la xarxa: - Per exemple, si l'endarrerimet del paquet ¨¦s de 100 ms, obrir una connexi¨® TCP i enviar una petici¨® sense xifrar triga uns 200 ms. Amb el xifrat, s'afegeixen aproximadament 1000 ms per establir la connexi¨® TLS; - Pot ser que sigui necessari augmentar els temps d'espera, en cas contrari, alguns elements i accions que executen scripts remots als agents poden funcionar amb connexions sense xifrar, per¨° fallar amb un temps d'espera xifrat.
  • El xifrat no ¨¦s compatible amb descoberta de xarxa. Les comprovacions de l'agent Áú»¢¶Ä²© fetes per la descoberta de la xarxa no es xifraran i si l'agent Áú»¢¶Ä²© ¨¦s configurat per rebutjar connexions no xifrades, aquestes comprovacions fallaran.

CompilarÁú»¢¶Ä²© amb suport de xifrat

Per donar suport al xifrat, Áú»¢¶Ä²© s'ha de compilar i enlla?ar amb una de les biblioteques de xifrat admeses:

  • GnuTLS - a partir de la versi¨® 3.1.18
  • OpenSSL - versions 1.0.1, 1.0.2, 1.1.0, 1.1.1, 3.0.x. Tingueu en compte que 3.0.x ¨¦s compatible des de Áú»¢¶Ä²© 6.0.4.
  • LibreSSL - provat amb les versions 2.7.4, 2.8.2:
    • LibreSSL 2.6.x no ¨¦s compatible
    • LibreSSL ¨¦s compatible com a substitut compatible d'OpenSSL; les noves funcions de l'API tls_*() espec¨ªfiques de LibreSSL no s'empren. Els components Áú»¢¶Ä²© compilats amb LibreSSL no podran emprar PSK, nom¨¦s es poden emprar certificats.

Podeu trobar m¨¦s informaci¨® sblre com configurar SSL per la interf¨ªcie de Áú»¢¶Ä²© seguint aquestes bones pr¨¤ctiques.

La biblioteca es tria especificant l'opci¨® corresponent per "configurar" l'script:

  • --with-gnutls[=DIR]
  • --with-openssl[=DIR] (tamb¨¦ s'utilitza per a LibreSSL)

Per exemple, per configurar les fonts del servidor i de l'agent amb OpenSSL, podeu emprar alguna cosa com:

 ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl

Es poden compilar diferents components de Áú»¢¶Ä²© amb diferents biblioteques de xifrat (per exemple, servidor amb OpenSSL, agent amb GnuTLS).

Si teniu previst emprar claus precompartides (PSK), penseu a emprar biblioteques GnuTLS o OpenSSL 1.1.0 (o m¨¦s recent) als components Áú»¢¶Ä²© mitjan?ant PSK. Les biblioteques GnuTLS i OpenSSL 1.1.0 admeten suites de xifrat PSK amb . Les versions anteriors de la biblioteca OpenSSL (1.0.1, 1.0.2c) tamb¨¦ admeten PSK, per¨° les suites de xifrat PSK disponibles no proporcionen Perfect Forward Secrecy.

Gesti¨® del xifrat de les connexions

Les connexions a Áú»¢¶Ä²© poden emprar:

S'empren dos par¨¤metres importants per especificar el xifrat entre components Áú»¢¶Ä²©:

  • TLSConnect: especifica el xifrat que s'emprar¨¤ per a les connexions sortints (sense xifrar, PSK o certificat)
  • TLSAccept: especifica quins tipus de connexi¨® es permeten per a connexions entrants (sense xifrar, PSK o certificat). Es poden especificar un o m¨¦s valors.

TLSConnect s'empra als fitxers de configuraci¨® per al proxy Áú»¢¶Ä²© (en mode actiu, nom¨¦s especifica les connexions del servidor) i l'agent Áú»¢¶Ä²© (per a comprovacions actives). A la interf¨ªcie de Áú»¢¶Ä²©, l'equivalent de TLSConnect ¨¦s el camp Connexions a l'equip a °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® ¡ú Equips ¡ú <un equip> ¡ú Pestanya Xifrat i el camp Connexions al proxy a la pestanya Administraci¨® ¡ú Proxys ¡ú <un proxy> ¡ú Xifrat . Si el tipus de xifrat configurat per a la connexi¨® falla, no es provar¨¤ cap altre tipus de xifrat.

TLSAccept s'empra als fitxers de configuraci¨® per al proxy Áú»¢¶Ä²© (en mode passiu, nom¨¦s especifica connexions des del servidor) i l'agent Áú»¢¶Ä²© (per a comprovacions passives). A la interf¨ªcie de Áú»¢¶Ä²©, l'equivalent de TLSAccept ¨¦s el camp Connexions des de l'equip a la pestanya °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® ¡ú Equips ¡ú <un equip> ¡ú Xifrat i el camp Connexions des del proxy a la pestanya Administraci¨® ¡ú Proxys ¡ú <un proxy> ¡ú Xifrat .

Normalment, nom¨¦s configureu un tipus de xifrat per a connexions entrants. Per¨° ¨¦s possible que vulgueu canviar el tipus de xifrat, per exemple, de no xifrat a basat en certificats amb un temps d'inactivitat i una capacitat de retroc¨¦s m¨ªnims. Per aconseguir-ho:

  • Establiu TLSAccept=unencrypted,cert al fitxer de configuraci¨® de l'agent i reinicieu l'agent Áú»¢¶Ä²©
  • Proveu la connexi¨® amb zabbix_get amb l'agent mitjan?ant el certificat. Si funciona, podeu tornar a configurar el xifrat per a aquest agent a la interf¨ªcie Áú»¢¶Ä²© a la pestanya °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® ¡ú Equips ¡ú <un equip> ¡ú Xifrat configurant Connexions a l'equip a "Certificat".
  • Quan s'actualitza la mem¨°ria cau de configuraci¨® del servidor (i la configuraci¨® del proxy s'actualitza si l'equip ¨¦s monitorat per el proxy), les connexions a aquest agent es xifraran
  • Si tot funciona com s'esperava, podeu establir TLSAccept=cert al fitxer de configuraci¨® de l'agent i reiniciar l'agent Áú»¢¶Ä²©. Ara l'agent nom¨¦s admetr¨¤ connexions basades en certificats xifrats. Les connexions no xifrades i basades en PSK seran rebutjades.

De la mateixa manera, funciona al servidor i al proxy. Si a la interf¨ªcie Áú»¢¶Ä²©, a la configuraci¨® de l'equip, Connexions des de l'equip s'estableix a "Certificat", nom¨¦s les connexions xifrades basades en certificats seran acceptades per l'agent (comprovacions actives) i el _sender de zabbix (elements trapper).

El m¨¦s probable ¨¦s que configureu les connexions entrants i sortints per emprar el mateix tipus de xifrat o cap xifrat. Per¨° t¨¨cnicament ¨¦s possible configurar-ho de manera asim¨¨trica, com ara xifrat basat en certificats per a connexions entrants i encriptaci¨® basat en PSK per a connexions sortints.

La configuraci¨® de xifrat per a cada equip es mostra a la interf¨ªcie Áú»¢¶Ä²©, a °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® ¡ú Equips a la columna Xifrat de l'agent. Per exemple:

|Exemple|Connexions a l'equip|Connexions permeses des de l'equip|Connexions no permeses des de l'equip| |-------|--------------------|-----|---------------- ----| |none_none.png|No xifrat|No xifrat|Xifrat, certificat i xifrat basat en PSK| |cert_cert.png|Xifrat, basat en certificats|Xifrat, basat en certificats|No xifrat i xifrat amb PSK| |psk_psk.png|Xifrat, basat en PSK|Xifrat, basat en PSK|Xifrat sense xifrar i xifrat en certificat| |psk_none_psk.png|Xifrat, basat en PSK|Sense xifrat i xifrat amb PSK|Xifrat basat en certificat| |cert_all.png|Xifrat, basat en certificat|Sense xifrat, PSK o xifrat basat en certificat|-|

Les connexions no s¨®n xifrades per defecte. El xifrat s'ha de configurar per a cada equip i proxy individualment.

zabbix_get i zabbix_sender amb xifrat

Veieu els manuals de zabbix_get et zabbix_sender per emprar el xifrat.

Suite de xifrat

Les suites de xifrat per defecte es configuren internament quan s'inicia Áú»¢¶Ä²© i abans de Áú»¢¶Ä²© 4.0.19, 4.4.7 no es poden configurar per l'usuari.

Des de Áú»¢¶Ä²© 4.0.19, les suites de xifrat configurades per l'usuari 4.4.7 tamb¨¦ s¨®n compatibles amb GnuTLS i OpenSSL. Els usuaris poden configurar suites de xifrat segons les seves pol¨ªtiques de seguretat. L'¨²s d'aquesta caracter¨ªstica ¨¦s opcional (les suites de xifrat predeterminades integrades encara funcionen).

Per a les biblioteques de xifrat compilades amb la configuraci¨® predeterminada, les regles integrades de Áú»¢¶Ä²© solen donar lloc a les seg¨¹ents suites de xifrat (en ordre de major a menor preced¨¨ncia):

Biblioteca Certificate Cipher Suite PSK Cipher Suite
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

Suites de xifrat configurades per l'usuari

Els criteris de selecci¨® de la suite de xifrat integrada es poden substituir per les suites de xifrat configurades per l'usuari.

Les suites de xifrat configurades per l'usuari ¨¦s una caracter¨ªstica per als usuaris avan?ats que entenen les suites de xifrat TLS, la seva seguretat i les conseq¨¹¨¨ncies dels errors, i que se senten c¨°modes amb la resoluci¨® de problemes de TLS.

Els criteris de selecci¨® de la suite de xifrat integrat es poden substituir mitjan?ant la configuraci¨® seg¨¹ent:

Substitueix l'¨¤mbit ±Ê²¹°ù¨¤³¾±ð³Ù°ù±ð Valor ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®
Selecci¨® de la suite de xifrat per als certificats OpenSSL 1.1.1 TLSCipherCert13 v¨¤lid per al protocol TLS 1.3 (els seus valors ??es passen a la funci¨® OpenSSL SSL\_CTX\_set\_ciphersuites()). Criteris de selecci¨® del conjunt de xifrat basat en certificats per a TLS 1.3

Nom¨¦s OpenSSL 1.1.1 o versi¨® posterior.
TLSCipherCert OpenSSL v¨¤lid per a TLS 1.2 o GnuTLS v¨¤lid. Els seus valors es passen a les funcions SSL\_CTX\_set\_cipher\_list() o gnutls\_priority\_init(), respectivament. Criteris de selecci¨® de la suite de xifrat basat en certificats per a TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL)
Selecci¨® de la suite de xifrat per a PSK TLSCipherPSK13 OpenSSL 1.1.1 v¨¤lid per al protocol TLS 1.3 (els seus valors ??es passen a la funci¨® OpenSSL SSL\_CTX\_set\_ciphersuites()). Criteris de selecci¨® de paquets de xifrat basats en PSK per a TLS 1.3

Nom¨¦s OpenSSL 1.1.1 o posterior.
TLSCipherPSK OpenSSL v¨¤lid per a TLS 1.2 o GnuTLS v¨¤lid. Els seus valors es passen a les funcions SSL\_CTX\_set\_cipher\_list() o gnutls\_priority\_init(), respectivament. Criteris de selecci¨® del conjunt de xifrat basat en PSK per a TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL)
Llista combinada de conjunts de xifrat per a certificat i PSK TLSCipherAll13 OpenSSL 1.1.1 v¨¤lid per al protocol TLS 1.3 (els seus valors es passen a la funci¨® OpenSSL SSL\_CTX\_set\_ciphersuites()). Criteris de selecci¨® de Ciphersuite per a TLS 1.3

Nom¨¦s OpenSSL 1.1.1 o posterior.
TLSCipherAll OpenSSL v¨¤lid per a TLS 1.2 o GnuTLS v¨¤lid. Els seus valors es passen respectivament a les funcions SSL\_CTX\_set\_cipher\_list() o gnutls\_priority\_init(). Criteris de selecci¨® de Ciphersuite per a TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL)

Per anul¡¤lar la selecci¨® de la suite de xifrat a les utilitats zabbix_get i zabbix_sender, empreu els par¨¤metres de la l¨ªnia d'ordres:

  • --tls-cipher13
  • --tls-cipher

Els nous par¨¤metres s¨®n opcionals. Si no s'especifica cap par¨¤metre, s'empra el valor per defecte intern. Si es defineix un par¨¤metre, no pot ¨¦sser buit.

Si no s'estableix un valor TLSCipher* a la biblioteca de xifrat, el servidor, el proxy o l'agent no s'inicien i es registra un error.

?s important entendre quan cada par¨¤metre ¨¦s aplicable.

Connexions sortints

El cas m¨¦s senzill ¨¦s per a les connexions sortints:

  • Per a connexions sortints amb certificat: empreu TLSCipherCert13 o TLSCipherCert
  • Per a connexions de sortida amb PSK: empreu TLSCipherPSK13 o TLSCipherPSK
  • En el cas de les utilitats zabbix_get i zabbix_sender, es poden emprar els par¨¤metres de l¨ªnia d'ordres --tls-cipher13 i --tls-cipher (el xifrat s'especifica sense ambig¨¹itats amb un --tls-connect)
Connexions entrants

?s una mica m¨¦s complicat amb les connexions entrants perqu¨¨ les regles s¨®n espec¨ªfiques dels components i de la configuraci¨®.

Per a l'agent Áú»¢¶Ä²©:

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de connexi¨® de l'agent °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de xifrat
TLSConect=cert TLSCipherCert,TLSCipherCert13
TLSConect=psk TLSCipherPSK,TLSCipherPSK13
TLSAccept=cert TLSCipherCert, TLSCipherCert13
TLSAccept=psk TLSCipherPSK, TLSCipherPSK13
TLSAccept=cert,psk TLSCipherAll,TLSCipherAll13

Per al servidor i proxy Áú»¢¶Ä²©:

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de connexi¨® °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de xifrat
Connexions sortints amb PSK TLSCipherPSK, TLSCipherPSK13
Connexions entrants amb certificats TLSCipherAll, TLSCipherAll13
Connexions entrants amb PSK si el servidor no t¨¦ certificat TLSCipherPSK, TLSCipherPSK13
Connexions entrants amb PSK si el servidor t¨¦ un certificat TLSCipherAll, TLSCipherAll13

Alguns patrons es poden veure a les dues taules anteriors:

  • TLSCipherAll i TLSCipherAll13 nom¨¦s es poden especificar si s'empra una llista combinada de conjunts de xifrat i basats en PSK. Hi ha dos casos en qu¨¨ aix¨° passa: servidor (proxy) amb un certificat configurat (les suites de xifrat PSK sempre es configuren al servidor, i al proxy si la biblioteca de xifrat admet PSK), agent configurat per acceptar connexions entrants basades en certificat i PSK.
  • en altres casos TLSCipherCert* i/o TLSCipherPSK* s¨®n suficients

Les taules seg¨¹ents mostren els valors predeterminats integrats de TLSCipher*. Poden ser un bon punt de partida per als vostres propis valors personalitzats.

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® 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 Els valors per defecte s¨®n diferents per a les versions anteriors d'OpenSSL (1.0.1, 1.0.2, 1.1.0), per a LibreSSL i si OpenSSL es compila sense suport PSK.

Exemples de suites de xifrat configurades per l'usuari

Veieu els exemples seg¨¹ents de suites de xifrat configurades per l'usuari tot seguit:

Proveu les cadenes de xifrat i permeteu nom¨¦s les suites de xifrat PFS

Per veure quines suites de xifrat s'han triat, heu d'establir 'DebugLevel=4' al fitxer de configuraci¨® o emprar l'opci¨® -vv per a zabbix_sender.

?s possible que es requereixi una mica d'experimentaci¨® amb els par¨¤metres TLSCipher* abans d'aconseguir els conjunts de xifrat desitjats. No ¨¦s pr¨¤ctic reiniciar el servidor, el proxy o l'agent Áú»¢¶Ä²© diverses vegades nom¨¦s per canviar la configuraci¨® de TLSCipher *. Les opcions m¨¦s convenients fan servir zabbix_sender o l'ordre openssl. Mostrem tots dos.

1. Emprant zabbix_sender.

Creem un fitxer de configuraci¨® de prova, per exemple /home/zabbix/test.conf, amb la sintaxi d'un fitxer 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

Us calen certificats de CA i d'agent i PSK v¨¤lids per a aquest exemple. Ajusteu els camins i els noms dels certificats i fitxers PSK per al vostre entorn.

Si no feu servir certificats, nom¨¦s PSK, podeu crear un fitxer de prova m¨¦s senzill:

  Hostname=nonexisting
         ServerActive=nonexisting
         
         TLSConnect=psk
         TLSPSKIdentity=nonexisting
         TLSPSKFile=/home/zabbix/agentd.psk

Les suites de xifrat seleccionades es poden veure executant zabbix_sender (exemple compilat amb 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

Aqu¨ª veieu les suites de xifrat seleccionades per defecte. Aquests valors predeterminats s'escullen per garantir la interoperabilitat amb els agents Áú»¢¶Ä²© que s'executen en sistemes amb versions anteriors d'OpenSSL (a partir de la 1.0.1).

Amb els sistemes m¨¦s nous, podeu optar per augmentar la seguretat permetent nom¨¦s unes quantes suites de xifrat, per exemple nom¨¦s suites de xifrat amb PFS (Perfect Forward Secrecy). Intentem permetre nom¨¦s les suites de xifrat amb PFS emprant par¨¤metres TLSCipher*.

El resultat no ser¨¤ interoperable amb sistemes que empren OpenSSL 1.0.1 i 1.0.2, si s'empra PSK. El xifrat basat en certificats hauria de funcionar.

Afegiu dues l¨ªnies al fitxer de configuraci¨® test.conf:

  TLSCipherCert=EECDH+aRSA+AES128
         TLSCipherPSK=kECDHEPSK+AES128

i provar de nou:

  $ 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 llistes de "suites de xifrat de certificat" i "suites de xifrat PSK" han canviat - S¨®n m¨¦s curtes que abans i nom¨¦s contenen conjunts de xifrat TLS 1.3 i conjunts de xifrat TLS 1.2 ECDHE-* com s'esperava.

2. TLSCipherAll i TLSCipherAll13 no es poden provar amb zabbix_sender; no afecten el valor "certificat i paquets de xifrat PSK" que es mostra a l'exemple anterior. Per modificar TLSCipherAll i TLSCipherAll13, heu d'experimentar amb l'agent, el proxy o el servidor.

Per tant, per permetre nom¨¦s les suites de xifrat PFS, ¨¦s possible que hagueu d'afegir fins a tres par¨¤metres

   TLSCipherCert=EECDH+aRSA+AES128
          TLSCipherPSK=kECDHEPSK+AES128
          TLSCipherAll=EECDH+aRSA+AES128:kECDHEPSK+AES128

a zabbix_agentd.conf, zabbix_proxy.conf i zabbix_server.conf si cadascun d'ells t¨¦ un certificat configurat i l'agent tamb¨¦ t¨¦ PSK.

Si el vostre entorn Áú»¢¶Ä²© nom¨¦s empra xifrat basat en PSK i cap certificat, nom¨¦s un:

   TLSCipherPSK=kECDHEPSK+AES128

Ara que enteneu com funciona, podeu provar la selecci¨® de la suite de xifrat fins i tot fora de Áú»¢¶Ä²©, amb l'ordre openssl. Provem els tres valors del par¨¤metre 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
         

?s possible que preferiu xifrat openssl amb l'opci¨® -V per obtindre una sortida m¨¦s detallada:

  $ 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 la mateixa manera, podeu provar les cadenes priorit¨¤ries per a 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
Passar d'AES128 a AES256

Áú»¢¶Ä²© empra AES128 per defecte per a les dades. Suposem que sou emprant certificats i voleu actualitzar a AES256, a OpenSSL 1.1.1.

Aix¨° es pot aconseguir afegint els par¨¤metres respectius seg¨¹ents a 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

Tot i que nom¨¦s s'empren conjunts de xifrat relacionats amb certificats, els par¨¤metres TLSCipherPSK* tamb¨¦ s'estableixen per evitar els seus valors predeterminats que inclouen xifrats menys segurs per a una interoperabilitat m¨¦s ¨¤mplia. Les suites de xifrat PSK no es poden desactivar completament al servidor/proxy.

I a zabbix_agentd.conf:

  TLSConnect=cert
         TLSAccept=cert
         TLSCAFile=/home/zabbix/ca.crt
         TLSCertFile=/home/zabbix/agent.crt
         TLSKeyFile=/home/zabbix/agent.key
         TLSCipherCert13=TLS_AES_256_GCM_SHA384
         TLSCipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384