17. Xifrat

Vista general

Zabbix admet comunicacions xifrades entre components Zabbix 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 Zabbix 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 Zabbix durant l'inici
  • Les claus precompartides s'introdueixen a la interfície Zabbix i s'emmagatzemen a la base de dades de Zabbix en text sense format
  • El xifrat integrat no protegeix les comunicacions: - Entre el servidor web que executa la interfície Zabbix i el navegador web de l'usuari - Entre la interfície Zabbix i el servidor Zabbix
  • 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 Zabbix fetes per la descoberta de la xarxa no es xifraran i si l'agent Zabbix és configurat per rebutjar connexions no xifrades, aquestes comprovacions fallaran.

CompilarZabbix amb suport de xifrat

Per donar suport al xifrat, Zabbix 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.
  • 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 Zabbix compilats amb LibreSSL no podran emprar PSK, només es poden emprar certificats.

Podeu obtindre més informació sobre com configurar SSL per a la interfície Zabbix consultant aquestes pràctiques recomanades.

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 Zabbix 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 Zabbix mitjançant PSK. Les biblioteques GnuTLS i OpenSSL 1.1.0 admeten suites de xifrat PSK amb Perfect Forward Secrecy. 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 Zabbix poden emprar:

S'empren dos paràmetres importants per especificar el xifrat entre components Zabbix:

  • 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 Zabbix (en mode actiu, només especifica les connexions del servidor) i l'agent Zabbix (per a comprovacions actives). A la interfície de Zabbix, l'equivalent de TLSConnect és el camp Connexions a l'equip a Configuració → 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 Zabbix (en mode passiu, només especifica connexions des del servidor) i l'agent Zabbix (per a comprovacions passives). A la interfície de Zabbix, l'equivalent de TLSAccept és el camp Connexions des de l'equip a la pestanya Configuració → 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 xifrats 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 Zabbix
  • 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 Zabbix a la pestanya Configuració → 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 Zabbix. 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 Zabbix, 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 Zabbix, a Recull de dades → 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 Zabbix.

Les suites de xifrat configurades per l'usuari 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 Zabbix 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:

Àmbit de substitució Paràmetre Valor Descripció
Selecció de la suite de xifrat per als certificats OpenSSL 1.1.1 TLSCipherCert13 Cadenes de xifrat 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 Cadenes de xifrat OpenSSL vàlid per a TLS 1.2 o cadenes de prioritat GnuTLS vàlid. Els seus valors es passen a les 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 Cadenes de xifrat 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 Cadenes de xifrat OpenSSL vàlid per a TLS 1.2 o cadenes de prioritat 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 Cadenes de xifrat 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 Cadenes de xifrat OpenSSL vàlid per a TLS 1.2 o cadenes de prioritat 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 Zabbix:

Configuració de connexió de l'agent Configuració 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 Zabbix:

Configuració de connexió Configuració 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.

Configuració 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
Paràmetre 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 Zabbix diverses vegades només per canviar la configuració de TLSCipher*. Les opcions més convenients fan servir zabbix_sender o l'ordre openssl. Us els ensenyem 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 Zabbix 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 proveu 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 Zabbix 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 Zabbix, 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

Zabbix 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