Zabbix admite comunicaciones cifradas entre los componentes de Zabbix utilizando el protocolo Transport Layer Security (TLS) v.1.2 y 1.3 (dependiendo de la biblioteca de cifrado). Se admite el cifrado basado en certificados y en claves precompartidas.
El cifrado se puede configurar para conexiones:
El cifrado es opcional y configurable para componentes individuales:
Los programas demonio de Zabbix utilizan un único puerto de escucha para conexiones entrantes cifradas y no cifradas. Agregar un cifrado no requiere abrir nuevos puertos en los cortafuegos.
Para soportar cifrado, Zabbix debe ser compilado y enlazado con una de las bibliotecas criptográficas soportadas:
tls_*()
específicas de LibreSSL. Los componentes de Zabbix compilados con LibreSSL no podrán usar PSK, solo se pueden usar certificados.Puede obtener más información sobre cómo configurar SSL para el frontend de Zabbix consultando estas mejores prácticas.
La biblioteca se selecciona especificando la opción respectiva al script "configure":
--with-gnutls[=DIR]
--with-openssl[=DIR]
(también se utiliza para LibreSSL)Por ejemplo, para configurar las fuentes para el servidor y el agente con OpenSSL puede usar algo como:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl
Diferentes componentes de Zabbix pueden ser compilados con diferentes bibliotecas criptográficas (por ejemplo, un servidor con OpenSSL, un agente con GnuTLS).
Si planea usar claves precompartidas (PSK), considere usar las bibliotecas GnuTLS o OpenSSL 1.1.0 (o más recientes) en los componentes de Zabbix que utilicen PSK. Las bibliotecas GnuTLS y OpenSSL 1.1.0 soportan suites de cifrado PSK con Perfect Forward Secrecy. Las versiones anteriores de la biblioteca OpenSSL (1.0.1, 1.0.2c) también soportan PSK, pero las suites de cifrado PSK disponibles no proporcionan Perfect Forward Secrecy.
Las conexiones en Zabbix pueden usar:
Hay dos parámetros importantes que se utilizan para especificar el cifrado entre los componentes de Zabbix:
TLSConnect
se utiliza en los archivos de configuración para el proxy de Zabbix (en modo activo, especifica solo las conexiones al servidor) y el agente de Zabbix (para comprobaciones activas). En el frontend de Zabbix, el equivalente de TLSConnect es el campo Conexiones al equipo en la pestaña Recopilación de datos → Equipos → <algún equipo> → Cifrado y el campo Conexiones al proxy en Administración → Proxies → <algún proxy> → Cifrado. Si el tipo de cifrado configurado para la conexión falla, no se intentarán otros tipos de cifrado.
TLSAccept
se utiliza en los archivos de configuración para el proxy de Zabbix (en modo pasivo, especifica solo las conexiones desde el servidor) y el agente de Zabbix (para comprobaciones pasivas). En el frontend de Zabbix, el equivalente de TLSAccept es el campo Conexiones desde el equipo en la pestaña Recopilación de datos → Equipos → <algún equipo> → Cifrado y el campo Conexiones desde el proxy en Administración → Proxies → <algún proxy> → Cifrado.
Normalmente, solo se configura un tipo de cifrado para las conexiones entrantes. Pero puede que desee cambiar el tipo de cifrado, por ejemplo, de sin cifrar a basado en certificados con el mínimo tiempo de inactividad y posibilidad de reversión. Para lograr esto:
TLSAccept=unencrypted,cert
en el archivo de configuración del agente y reinicie el agente de ZabbixTLSAccept=cert
en el archivo de configuración del agente y reiniciar el agente de Zabbix. Ahora el agente solo aceptará conexiones cifradas basadas en certificados. Las conexiones sin cifrar y basadas en PSK serán rechazadas.De manera similar, funciona en el servidor y el proxy. Si en el frontend de Zabbix en la configuración del equipo Conexiones desde el equipo se establece en "Certificado", entonces solo se aceptarán conexiones cifradas basadas en certificados desde el agente (comprobaciones activas) y zabbix_sender (métricas trapper).
Lo más probable es que configure las conexiones entrantes y salientes para usar el mismo tipo de cifrado o sin cifrado. Pero técnicamente es posible configurarlo de forma asimétrica, por ejemplo, cifrado basado en certificados para las conexiones entrantes y basado en PSK para las salientes.
La configuración de cifrado para cada equipo se muestra en el frontend de Zabbix, en Recopilación de datos → Equipos en la columna Cifrado del agente. Por ejemplo:
Ejemplo | Conexiones al equipo | Conexiones permitidas desde el equipo | Conexiones rechazadas desde el equipo |
---|---|---|---|
![]() |
Sin cifrar | Sin cifrar | Cifradas, cifrado basado en certificado y basado en PSK |
![]() |
Cifrado, basado en certificado | Cifrado, basado en certificado | Sin cifrar y cifrado basado en PSK |
![]() |
Cifrado, basado en PSK | Cifrado, basado en PSK | Sin cifrar y cifrado basado en certificado |
![]() |
Cifrado, basado en PSK | Sin cifrar y cifrado basado en PSK | Cifrado basado en certificado |
![]() |
Cifrado, basado en certificado | Sin cifrar, cifrado basado en PSK o certificado | - |
Las conexiones no están cifradas por defecto. El cifrado debe configurarse para cada equipo y proxy individualmente.
Consulte las páginas del manual de zabbix_get y zabbix_sender para usarlos con cifrado.
Las ciphersuites por defecto se configuran internamente durante el inicio de Zabbix.
También se admiten ciphersuites configuradas por el usuario para GnuTLS y OpenSSL. Los usuarios pueden configurar ciphersuites de acuerdo con sus políticas de seguridad. El uso de esta función es opcional (las ciphersuites predeterminadas integradas siguen funcionando).
Para las bibliotecas criptográficas compiladas con la configuración predeterminada, las reglas integradas de Zabbix normalmente resultan en las siguientes ciphersuites (en orden de mayor a menor prioridad):
Biblioteca | Ciphersuites de certificado | Ciphersuites 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 |
Los criterios de selección de cifras integrados pueden ser sobrescritos con cifras TLS configuradas por el usuario.
Las cifras TLS configuradas por el usuario son una característica destinada a usuarios avanzados que entienden las cifras TLS, su seguridad y las consecuencias de los errores, y que se sienten cómodos con la resolución de problemas de TLS.
Los criterios de selección de cifras integrados pueden ser sobrescritos utilizando los siguientes parámetros:
Ámbito de sobrescritura | Parámetro | Valor | Descripción |
---|---|---|---|
Selección de cifras para certificados | TLSCipherCert13 | Cadenas de cifras válidas de OpenSSL 1.1.1 para el protocolo TLS 1.3 (sus valores se pasan a la función de OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de cifras basados en certificados para TLS 1.3 Sólo OpenSSL 1.1.1 o superior. |
TLSCipherCert | Cadenas de cifras válidas de OpenSSL para TLS 1.2 o cadenas de prioridad válidas de GnuTLS. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de cifras basados en certificados para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Selección de cifras para PSK | TLSCipherPSK13 | Cadenas de cifras válidas de OpenSSL 1.1.1 para el protocolo TLS 1.3 (sus valores se pasan a la función de OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de cifras basados en PSK para TLS 1.3 Sólo OpenSSL 1.1.1 o superior. |
TLSCipherPSK | Cadenas de cifras válidas de OpenSSL para TLS 1.2 o cadenas de prioridad válidas de GnuTLS. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de cifras basados en PSK para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Lista combinada de cifras para certificado y PSK | TLSCipherAll13 | Cadenas de cifras válidas de OpenSSL 1.1.1 para el protocolo TLS 1.3 (sus valores se pasan a la función de OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de cifras para TLS 1.3 Sólo OpenSSL 1.1.1 o superior. |
TLSCipherAll | Cadenas de cifras válidas de OpenSSL para TLS 1.2 o cadenas de prioridad válidas de GnuTLS. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de cifras para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) |
Para sobrescribir la selección de cifras en las utilidades zabbix_get y zabbix_sender, utilice los parámetros de línea de comandos:
--tls-cipher13
--tls-cipher
Los nuevos parámetros son opcionales. Si no se especifica un parámetro, se utiliza el valor interno por defecto. Si se define un parámetro, no puede estar vacío.
Si la configuración de un valor TLSCipher* en la biblioteca criptográfica falla, el servidor, proxy o agente no se iniciará y se registrará un error.
Es importante entender cuándo es aplicable cada parámetro.
El caso más simple son las conexiones salientes:
--tls-cipher13
o --tls-cipher
(el cifrado se especifica de manera inequívoca con un parámetro --tls-connect
)Es un poco más complicado con las conexiones entrantes porque las reglas son específicas para los componentes y la configuración.
Para el agente de Zabbix:
Configuración de conexión del agente | Configuración de cifrado |
---|---|
TLSConnect=cert | TLSCipherCert, TLSCipherCert13 |
TLSConnect=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert | TLSCipherCert, TLSCipherCert13 |
TLSAccept=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert,psk | TLSCipherAll, TLSCipherAll13 |
Para el servidor y proxy de Zabbix:
Configuración de conexión | Configuración de cifrado |
---|---|
Conexiones salientes usando PSK | TLSCipherPSK, TLSCipherPSK13 |
Conexiones entrantes usando certificados | TLSCipherAll, TLSCipherAll13 |
Conexiones entrantes usando PSK si el servidor no tiene certificado | TLSCipherPSK, TLSCipherPSK13 |
Conexiones entrantes usando PSK si el servidor tiene certificado | TLSCipherAll, TLSCipherAll13 |
Se puede observar un patrón en las dos tablas anteriores:
Las siguientes tablas muestran los valores predeterminados integrados de TLSCipher*
. Podrían ser un buen punto de partida para sus propios valores personalizados.
Parámetro | 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ámetro | 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 Los valores predeterminados son diferentes para versiones anteriores de OpenSSL (1.0.1, 1.0.2, 1.1.0), para LibreSSL y si OpenSSL se compila sin soporte para PSK.
Ejemplos de suites de cifrado configuradas por el usuario
Vea a continuación los siguientes ejemplos de suites de cifrado configuradas por el usuario:
Para ver qué suites de cifrado se han seleccionado, debe establecer 'DebugLevel=4' en el archivo de configuración, o usar la opción -vv
para zabbix_sender.
Puede ser necesario experimentar con los parámetros TLSCipher*
antes de obtener las suites de cifrado deseadas. Es incómodo reiniciar el servidor, proxy o agente de Zabbix varias veces solo para ajustar los parámetros TLSCipher*
. Opciones más convenientes son usar zabbix_sender o el comando openssl
. Mostraremos ambos.
1. Usando zabbix_sender.
Vamos a crear un archivo de configuración de prueba, por ejemplo /home/zabbix/test.conf
, con la sintaxis de un archivo 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
Necesita certificados CA y de agente válidos y PSK para este ejemplo. Ajuste las rutas y nombres de los archivos de certificados y PSK para su entorno.
Si no está usando certificados, sino solo PSK, puede crear un archivo de prueba más simple:
Hostname=nonexisting
ServerActive=nonexisting
TLSConnect=psk
TLSPSKIdentity=nonexisting
TLSPSKFile=/home/zabbix/agentd.psk
Las suites de cifrado seleccionadas se pueden ver ejecutando zabbix_sender (ejemplo compilado con 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í puede ver las suites de cifrado seleccionadas por defecto. Estos valores por defecto se eligen para garantizar la interoperabilidad con agentes Zabbix que se ejecutan en sistemas con versiones antiguas de OpenSSL (desde 1.0.1).
Con sistemas más nuevos puede optar por reforzar la seguridad permitiendo solo unas pocas suites de cifrado, por ejemplo, solo suites de cifrado con PFS (Perfect Forward Secrecy). Probemos permitir solo suites de cifrado con PFS usando los parámetros TLSCipher*
.
El resultado no será interoperable con sistemas que usen OpenSSL 1.0.1 y 1.0.2, si se usa PSK. El cifrado basado en certificados debería funcionar.
Agregue dos líneas al archivo de configuración test.conf
:
y pruebe de nuevo:
$ 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
Las listas de "certificate ciphersuites" y "PSK ciphersuites" han cambiado: son más cortas que antes, conteniendo solo suites de cifrado TLS 1.3 y TLS 1.2 ECDHE-* como se esperaba.
2. TLSCipherAll y TLSCipherAll13 no se pueden probar con zabbix_sender; no afectan al valor de "certificate and PSK ciphersuites" mostrado en el ejemplo anterior. Para ajustar TLSCipherAll y TLSCipherAll13 debe experimentar con el agente, proxy o servidor.
Por lo tanto, para permitir solo suites de cifrado PFS puede que necesite agregar hasta tres parámetros
TLSCipherCert=EECDH+aRSA+AES128
TLSCipherPSK=kECDHEPSK+AES128
TLSCipherAll=EECDH+aRSA+AES128:kECDHEPSK+AES128
a zabbix_agentd.conf, zabbix_proxy.conf y zabbix_server_conf si cada uno de ellos tiene un certificado configurado y el agente también tiene PSK.
Si su entorno Zabbix utiliza solo cifrado basado en PSK y no certificados, entonces solo uno:
Ahora que entiende cómo funciona, puede probar la selección de la suite de cifrado incluso fuera de Zabbix, con el comando openssl
. Probemos los tres valores de parámetros 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
Puede preferir openssl ciphers
con la opción -V
para una salida 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 manera similar, puede probar las cadenas de prioridad para GnuTLS:
$ gnutls-cli -l --priority=NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509
Cipher suites for NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509
TLS_ECDHE_RSA_AES_128_GCM_SHA256 0xc0, 0x2f TLS1.2
TLS_ECDHE_RSA_AES_128_CBC_SHA256 0xc0, 0x27 TLS1.2
Protocols: VERS-TLS1.2
Ciphers: AES-128-GCM, AES-128-CBC
MACs: AEAD, SHA256
Key Exchange Algorithms: ECDHE-RSA
Groups: GROUP-SECP256R1, GROUP-SECP384R1, GROUP-SECP521R1, GROUP-X25519, GROUP-X448, GROUP-FFDHE2048, GROUP-FFDHE3072, GROUP-FFDHE4096, GROUP-FFDHE6144, GROUP-FFDHE8192
PK-signatures: SIGN-RSA-SHA256, SIGN-RSA-PSS-SHA256, SIGN-RSA-PSS-RSAE-SHA256, SIGN-ECDSA-SHA256, SIGN-ECDSA-SECP256R1-SHA256, SIGN-EdDSA-Ed25519, SIGN-RSA-SHA384, SIGN-RSA-PSS-SHA384, SIGN-RSA-PSS-RSAE-SHA384, SIGN-ECDSA-SHA384, SIGN-ECDSA-SECP384R1-SHA384, SIGN-EdDSA-Ed448, SIGN-RSA-SHA512, SIGN-RSA-PSS-SHA512, SIGN-RSA-PSS-RSAE-SHA512, SIGN-ECDSA-SHA512, SIGN-ECDSA-SECP521R1-SHA512, SIGN-RSA-SHA1, SIGN-ECDSA-SHA1
Zabbix utiliza AES128 como valor predeterminado incorporado para los datos. Supongamos que está utilizando certificados y desea cambiar a AES256, en OpenSSL 1.1.1.
Esto se puede lograr agregando los parámetros respectivos en 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
Aunque solo se utilizarán los conjuntos de cifrado relacionados con certificados, también se definen los parámetros TLSCipherPSK*
para evitar sus valores predeterminados que incluyen cifrados menos seguros para una mayor interoperabilidad. Los conjuntos de cifrado PSK no se pueden deshabilitar completamente en servidor/proxy.
Y en zabbix_agentd.conf
: