[comment]: # ({822969ff-822969ff})
# 17. Xifrat

[comment]: # ({/822969ff-822969ff})

[comment]: # ({d6be984e-0b118c23})
#### 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:

- Entre el servidor Zabbix, el proxy Zabbix, l'agent Zabbix, servidor web Zabbix, les utilitats zabbix\_sender i zabbix\_get
- A la base de dades de Zabbix [des del frontend i del servidor/proxy de Zabbix](/manual/appendix/install/db_encrypt)

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.

[comment]: # ({/d6be984e-0b118c23})

[comment]: # ({bdc6b202-bdc6b202})
#### 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](/manual/discovery/network_discovery). 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.

[comment]: # ({/bdc6b202-bdc6b202})

[comment]: # ({d41057a0-ba7ecc58})
#### 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. Tingueu en compte que 3.0.x és compatible des de Zabbix 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 Zabbix compilats amb LibreSSL no podran emprar PSK, només es poden emprar certificats.

:::notetip
Podeu trobar més informació sblre com configurar SSL per la interfície de Zabbix seguint aquestes [bones pràctiques](/manual/installation/requirements/best_practices).
:::

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*).

::: noteimportant
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](https://en.wikipedia.org/wiki/Forward_secrecy#Perfect_forward_secrecy_.28PFS.29).
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.
:::

[comment]: # ({/d41057a0-ba7ecc58})

[comment]: # ({fd653e17-2d0e2b80})
#### Gestió del xifrat de les connexions

Les connexions a Zabbix poden emprar:

- sense xifrat (per defecte)
- [Xifrat basat en certificat RSA](/manual/encryption/using_certificates)
- [Xifrat basat en PSK](/manual/encryption/using_pre_shared_keys)

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 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 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 *Configuració → 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](../../assets/en/manual/encryption/none_none.png)|No xifrat|No xifrat|Xifrat, certificat i xifrat basat en PSK|
|![cert\_cert.png](../../assets/en/manual/encryption/cert_cert.png)|Xifrat, basat en certificats|Xifrat, basat en certificats|No xifrat i xifrat amb PSK|
|![psk\_psk.png](../../assets/en/manual/encryption/psk_psk.png)|Xifrat, basat en PSK|Xifrat, basat en PSK|Xifrat sense xifrar i xifrat en certificat|
|![psk\_none\_psk.png](../../assets/en/manual/encryption/psk_none_psk.png)|Xifrat, basat en PSK|Sense xifrat i xifrat amb PSK|Xifrat basat en certificat|
|![cert\_all.png](../../assets/en/manual/encryption/cert_all.png)|Xifrat, basat en certificat|Sense xifrat, PSK o xifrat basat en certificat|\-|

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

[comment]: # ({/fd653e17-2d0e2b80})

[comment]: # ({ad15e6ff-ad15e6ff})
#### zabbix\_get i zabbix\_sender amb xifrat

Veieu els manuals de [zabbix\_get](/manpages/zabbix_get) et [zabbix\_sender](/manpages/zabbix_sender) per emprar el xifrat.

[comment]: # ({/ad15e6ff-ad15e6ff})

[comment]: # ({f01b1501-be2996e2})
#### Suite de xifrat

Les suites de xifrat per defecte es configuren internament quan s'inicia Zabbix i abans de Zabbix 4.0.19, 4.4.7 no es poden configurar per l'usuari.

Des de Zabbix 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](#user-configured_ciphersuites) 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<br>TLS\_ECDHE\_RSA\_AES\_128\_CBC\_SHA256<br>TLS\_ECDHE\_RSA\_AES\_128\_CBC\_SHA1<br>TLS\_RSA\_AES\_128\_GCM\_SHA256<br>TLS\_RSA\_AES\_128\_CBC\_SHA256<br>TLS\_RSA\_AES\_128\_CBC\_SHA1|TLS\_ECDHE\_PSK\_AES\_128\_CBC\_SHA256<br>TLS\_ECDHE\_PSK\_AES\_128\_CBC\_SHA1<br>TLS\_PSK\_AES\_128\_GCM\_SHA256<br>TLS\_PSK\_AES\_128\_CBC\_SHA256<br>TLS\_PSK\_AES\_128\_CBC\_SHA1|
|*OpenSSL 1.0.2c*|ECDHE-RSA-AES128-GCM-SHA256<br>ECDHE-RSA-AES128-SHA256<br>ECDHE-RSA-AES128-SHA<br>AES128-GCM-SHA256<br>AES128-SHA256<br>AES128-SHA|PSK-AES128-CBC-SHA|
|*OpenSSL 1.1.0*|ECDHE-RSA-AES128-GCM-SHA256<br>ECDHE-RSA-AES128-SHA256<br>ECDHE-RSA-AES128-SHA<br>AES128-GCM-SHA256<br>AES128-CCM8<br>AES128-CCM<br>AES128-SHA256<br>AES128-SHA<br>|ECDHE-PSK-AES128-CBC-SHA256<br>ECDHE-PSK-AES128-CBC-SHA<br>PSK-AES128-GCM-SHA256<br>PSK-AES128-CCM8<br>PSK-AES128-CCM<br>PSK-AES128-CBC-SHA256<br>PSK-AES128-CBC-SHA|
|*OpenSSL 1.1.1d*|TLS\_AES\_256\_GCM\_SHA384<br>TLS\_CHACHA20\_POLY1305\_SHA256<br>TLS\_AES\_128\_GCM\_SHA256<br>ECDHE-RSA-AES128-GCM-SHA256<br>ECDHE-RSA-AES128-SHA256<br>ECDHE-RSA-AES128-SHA<br>AES128-GCM-SHA256<br>AES128-CCM8<br>AES128-CCM<br>AES128-SHA256<br>AES128-SHA|TLS\_CHACHA20\_POLY1305\_SHA256<br>TLS\_AES\_128\_GCM\_SHA256<br>ECDHE-PSK-AES128-CBC-SHA256<br>ECDHE-PSK-AES128-CBC-SHA<br>PSK-AES128-GCM-SHA256<br>PSK-AES128-CCM8<br>PSK-AES128-CCM<br>PSK-AES128-CBC-SHA256<br>PSK-AES128-CBC-SHA|

[comment]: # ({/f01b1501-be2996e2})

[comment]: # ({8731bb52-b5e04652})
#### 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.

::: noteimportant
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|Paràmetre|Valor|Descripció|
|--|--|-------|------|
|Selecció de la suite de xifrat per als certificats OpenSSL 1.1.1|TLSCipherCert13|[Cadenes de xifrat](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) 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<br><br>Només OpenSSL 1.1.1 o versió posterior.|
|^|TLSCipherCert|[Cadenes de xifrat](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) OpenSSL vàlid per a TLS 1.2 o [cadenes de prioritat](https://gnutls.org/manual/html_node/Priority-Strings.html) 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|[Cadenes de xifrat](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) 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<br><br>Només OpenSSL 1.1.1 o posterior.|
|^|TLSCipherPSK|[Cadenes de xifrat](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) OpenSSL vàlid per a TLS 1.2 o [cadenes de prioritat](https://gnutls.org/manual/html_node/Priority-Strings.html) 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](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) 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<br><br>Només OpenSSL 1.1.1 o posterior.|
|^|TLSCipherAll|[Cadenes de xifrat](https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) OpenSSL vàlid per a TLS 1.2 o [cadenes prioritàries](https://gnutls.org/manual/html_node/Priority-Strings.html) 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](/manpages/zabbix_get) i [zabbix\_sender](/manpages/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.

[comment]: # ({/8731bb52-b5e04652})

[comment]: # ({ca5e66e4-a74c28c7})
##### 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`)

[comment]: # ({/ca5e66e4-a74c28c7})

[comment]: # ({08b6eac5-3edf3b2b})
##### 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:

- [Provant les cadenes de xifrat i només permetent les suites de xifrat PFS](#testing_cipher_strings_and_allowing_only_pfs_ciphersuites)
- [Canvi d'AES128 a AES256](#switching_from_aes128_to_aes256)

[comment]: # ({/08b6eac5-3edf3b2b})

[comment]: # ({52b821c4-bfb4ef88})

##### 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`. 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 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*`.

::: noteimportant
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 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

[comment]: # ({/52b821c4-bfb4ef88})

[comment]: # ({a549cda7-a549cda7})
##### 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

::: noteimportant
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

[comment]: # ({/a549cda7-a549cda7})
