Zabbix admite comunicaciones cifradas entre componentes de Zabbix mediante el protocolo Transport Layer Security (TLS) v.1.2 y 1.3 (según 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 se puede configurar para componentes individuales:
Los programas demonio Zabbix utilizan un puerto de escucha para conexiones entrantes cifradas y no cifradas. Agregar un cifrado no requiere abrir nuevos puertos en los firewalls.
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 usa 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 usen 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 host en Recopilación de datos → Hosts → <algún host> → pestaña Cifrado y el campo Conexiones al proxy en Administración → Proxies → <algún proxy> → pestaña Cifrado. Si falla el tipo de cifrado configurado para la conexión, 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 host en Recopilación de datos → Hosts → <algún host> → pestaña Cifrado y el campo Conexiones desde el proxy en Administración → Proxies → <algún proxy> → pestaña 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 host Conexiones desde el host está configurado en "Certificado", entonces solo se aceptarán conexiones cifradas basadas en certificados desde el agente (comprobaciones activas) y zabbix_sender (ítems trapper).
Lo más probable es que configure las conexiones entrantes y salientes para usar el mismo tipo de cifrado o ningún 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 host se muestra en el frontend de Zabbix, en Recopilación de datos → Hosts en la columna Cifrado del agente. Por ejemplo:
Ejemplo | Conexiones al host | Conexiones permitidas desde el host | Conexiones rechazadas desde el host |
---|---|---|---|
![]() |
Sin cifrar | Sin cifrar | Cifrado, 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 basado en certificado | - |
Las conexiones no están cifradas por defecto. El cifrado debe configurarse para cada host y proxy individualmente.
Consulte las páginas de manual de zabbix_get y zabbix_sender para usarlos con cifrado.
Los Ciphersuites de forma predeterminada se configuran internamente durante el inicio de Zabbix.
También se admiten conjuntos de cifrado configurados por el usuario para GnuTLS y OpenSSL. Los usuarios pueden configurar conjuntos de cifrado según sus políticas de seguridad. El uso de esta función es opcional (integrado los conjuntos de cifrado predeterminados todavía funcionan).
Para bibliotecas criptográficas compiladas con la configuración predeterminada Zabbix incorporada Las reglas generalmente dan como resultado los siguientes conjuntos de cifrado (en orden desde mayor a menor prioridad):
Biblioteca | Suites de cifrado de certificados | Suites de cifrado 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 del conjunto de cifrado incorporado se pueden anular con conjuntos de cifrado configurados por el usuario.
Los conjuntos de cifrado configurados por el usuario son una característica destinada para usuarios avanzados que entienden los conjuntos de cifrado TLS, su seguridad y consecuencias de los errores y quiénes se sienten cómodos con TLS solución de problemas.
Los criterios de selección del conjunto de cifrado incorporado se pueden anular utilizando el siguientes parámetros:
Anular alcance | Parámetro | Valor | Descripción |
---|---|---|---|
Selección de conjunto de cifrado para certificados | TLSCipherCert13 | OpenSSL 1.1.1 [cadenas de cifrado] válidas (https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) para el protocolo TLS 1.3 (sus valores se pasan a la función OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de conjunto de cifrado basado en certificados para TLS 1.3 Solo OpenSSL 1.1.1 o posterior. |
TLSCipherCert | OpenSSL válido cadenas de cifrado para TLS 1.2 o GnuTLS válido cadenas de prioridad. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de conjunto de cifrado basados en certificados para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Selección de conjunto de cifrado para PSK | TLSCipherPSK13 | OpenSSL 1.1.1 [cadenas de cifrado] válidas (https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) para el protocolo TLS 1.3 (sus valores se pasan a la función OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de conjunto de cifrado basado en PSK para TLS 1.3 Solo OpenSSL 1.1.1 o posterior. |
TLSCipherPSK | OpenSSL válido cadenas de cifrado para TLS 1.2 o GnuTLS válido cadenas de prioridad. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de conjunto de cifrado basado en PSK para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Lista de conjuntos de cifrado combinados para certificado y PSK | TLSCipherAll13 | OpenSSL 1.1.1 válido cadenas de cifrado para el protocolo TLS 1.3 (sus valores se pasan a la función OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de Ciphersuite para TLS 1.3 Solo OpenSSL 1.1.1 o posterior. |
TLSCipherAll | OpenSSL válido cadenas de cifrado para TLS 1.2 o GnuTLS válido cadenas de prioridad. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de Ciphersuite para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) |
Para anular la selección del conjunto de cifrado en zabbix_get y Utilidades zabbix_sender: utilice la parámetros de línea de comando:
--tls-cipher13
---tls-cipher
Los nuevos parámetros son opcionales. Si no se especifica un parámetro, el Se utiliza el valor predeterminado interno. Si se define un parámetro, no se puede vacío.
Si falla la configuración de un valor TLSCipher* en la biblioteca criptográfica, entonces el servidor, proxy o agente no se inicia y se registra un error.
Es importante comprender 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 inequívocamente con el parámetro --tls-connect
)Es un poco más complicado con las conexiones entrantes porque las reglas son específicas para componentes y configuración.
Para el agente 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 Zabbix:
Configuración de conexión | Configuración de cifrado |
---|---|
Conexiones salientes mediante PSK | TLSCipherPSK, TLSCipherPSK13 |
Conexiones entrantes mediante 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 ver algún 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 las versiones anteriores de OpenSSL (1.0.1, 1.0.2, 1.1.0), para LibreSSL y si OpenSSL está compilado sin soporte PSK.
Ejemplos de conjuntos de cifrado configurados por el usuario
Vea a continuación los siguientes ejemplos de conjuntos de cifrado configurados por el usuario:
Para ver qué conjuntos de cifrado se han seleccionado, debe configurar 'DebugLevel=4' en el archivo de configuración, o usar la opción -vv
para zabbix_sender.
Podría ser necesario experimentar con los parámetros TLSCipher*
antes de obtener los conjuntos de cifrado deseados. Es inconveniente reiniciar el servidor, proxy o agente Zabbix varias veces solo para modificar los parámetros TLSCipher*
. Las opciones más convenientes son usar zabbix_sender o el comando openssl
. Mostremos ambos.
1. Usando zabbix_sender.
Hagamos 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 de agente y CA válidos y PSK para este ejemplo. Ajuste las rutas y los nombres de los archivos PSK y certificados para su entorno.
Si no está utilizando certificados, sino sólo PSK, puede hacer un archivo de prueba más sencillo:
Hostname=nonexisting
ServerActive=nonexisting
TLSConnect=psk
TLSPSKIdentity=nonexisting
TLSPSKFile=/home/zabbix/agentd.psk
Los conjuntos de cifrado seleccionados 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í verá los conjuntos de cifrado seleccionados de forma predeterminada. Estos valores predeterminados se eligen para garantizar la interoperabilidad con los agentes Zabbix que se ejecutan en sistemas con versiones antiguas de OpenSSL (desde 1.0.1).
Con los sistemas más nuevos, puede optar por reforzar la seguridad permitiendo solo unos pocos conjuntos de cifrado, p.e. sólo conjuntos de cifrado con PFS (Perfect Forward Secreto). Intentemos permitir solo conjuntos de cifrado con PFS usando los parámetros TLSCipher*
.
Si se usa PSK, el resultado no será interoperable con los sistemas que usen OpenSSL 1.0.1 y 1.0.2. El cifrado basado en certificado debería funcionar.
Agregue dos líneas al archivo de configuración test.conf
:
y pruebe otra vez:
$ 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 "conjuntos de cifrado de certificados" y "conjuntos de cifrado PSK" han cambiado - son más cortas que antes y solo contienen conjuntos de cifrado TLS 1.3 y conjuntos de cifrado TLS 1.2 ECDHE-* como se esperaba.
2. TLSCipherAll y TLSCipherAll13 no se pueden probar con zabbix_sender; no afectan a los "certificados y conjuntos de cifrado PSK" valor mostrado en el ejemplo anterior. Para modificar TLSCipherAll y TLSCipherAll13 necesita experimentar con el agente, proxy o servidor.
Por lo tanto, para permitir solo conjuntos de cifrado PFS, es posible que deba 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 sólo cifrado basado en PSK y no en certificados, entonces solo uno:
Ahora que comprende cómo funciona, puede probar el conjunto de cifrado. seleccionado incluso fuera de Zabbix, con el comando openssl
. Vamos a probar los tres valores de parámetro 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
Es posible que prefiera ejecutar openssl ciphers
con la opción -V
para obtener una información 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, puedes 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 para los datos. Supongamos que usted están utilizando certificados y desean 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 sólo se utilizarán los conjuntos de cifrado relacionados con certificados , los parámetros TLSCipherPSK*
también se definen para evitar sus valores predeterminados que incluyen cifrados menos seguros para una interoperabilidad más amplia. Los conjuntos de cifrado PSK no se pueden desactivar completamente en el servidor/proxy.
Y en zabbix_agentd.conf
: