Zabbix admite comunicaciones cifradas entre componentes de Zabbix utilizando el Protocolo Transport Layer Security (TLS) v.1.2 y 1.3 (según la biblioteca criptográfica). El cifrado basado en certificados y basado en claves precompartidas esta soportado.
El cifrado se puede configurar para las conexiones:
El cifrado es opcional y configurable para componentes individuales:
Los programas daemon de Zabbix utilizan un puerto de escucha para archivos cifrados y conexiones entrantes no cifradas. Agregar un cifrado no requiere abrir nuevos puertos en los firewalls.
Para admitir el cifrado, Zabbix debe compilarse y vincularse con una de las bibliotecas criptográficas compatibles:
tls_*()
no se utilizan. Los componentes de Zabbix compilados con LibreSSL no podrán usar PSK, sólo se pueden utilizar certificados.Puede obtener más información sobre la configuración de SSL para la interfaz de Zabbix consultando estas mejores prácticas.
La biblioteca se selecciona especificando la opción respectiva en secuencia de comandos "configure":
--with-gnutls[=DIR]
--with-openssl[=DIR]
(also used for 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
Se pueden compilar diferentes componentes de Zabbix con diferentes librerías criptográficas (por ejemplo, un servidor con OpenSSL, un agente con GnuTLS).
Si planea utilizar claves precompartidas (PSK), considere usar bibliotecas GnuTLS o OpenSSL 1.1.0 (o más reciente) en los componentes de Zabbix que utilizan PSK. Bibliotecas GnuTLS y OpenSSL 1.1.0 admite conjuntos de cifrado PSK con Perfect Forward Secreto. Las versiones anteriores de la libraría OpenSSL (1.0.1, 1.0.2c) también admiten PSK, pero los conjuntos de cifrado PSK disponibles no proporcionan Perfect Forward Secreto.
Las conexiones en Zabbix pueden usar:
Hay dos parámetros importantes que se utilizan para especificar el cifrado entre componentes de Zabbix:
TLSConnect
se utiliza en los archivos de configuración para el proxy Zabbix (en modo activo, especifica solo conexiones al servidor) y el agente Zabbix (para controles activos). En la interfaz de Zabbix, el equivalente de TLSConnect es el Campo Conexiones al equipo en Recopilación de datos → Equipos → <algún equipo> → pestaña Cifrado y el campo Conexiones al proxy en Administración → Proxies → <algún proxy> → pestaña Cifrado. Si el el tipo de cifrado configurado para la conexión falla, no se probarán ningún otro tipo de cifrado.
TLSAccept
se utiliza en los archivos de configuración para el proxy Zabbix (en modo pasivo, especifica solo conexiones desde el servidor) y agente Zabbix (para controles pasivos). En la interfaz de Zabbix, el equivalente de TLSAccept es el Conexiones desde el equipo en Recopilación de datos → Equipos → <algún equipo> → pestaña Cifrado y el campo Conexiones desde proxy en Administración → Proxies → <algún proxy> → pestaña Cifrado.
Normalmente se configura sólo un tipo de cifrado para los cifrados de las comunicaciones entrantes. Pero es posible que desee cambiar el tipo de cifrado, p. e. de sin cifrar a basado en certificados con un tiempo de inactividad y reversión mínimos. Para lograr esto:
TLSAccept=unencrypted,cert
en el archivo de configuración del agente y reinicie el agente ZabbixTLSAccept=cert
en el archivo de configuración del agente y reiniciar el agente Zabbix. Ahora el agente aceptará únicamente conexiones cifradas basadas en certificados. Se rechazarán las conexiones no cifradas y basadas en PSK.De manera similar funciona en servidor y proxy. Si en la interfaz de Zabbix en la configuración del equipo Conexiones desde el equipo está configurada en "Certificado", luego sólo se aceptarán conexiones cifradas basadas en certificados desde el agente (verificaciones activas) y zabbix_sender (métricas de captura).
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 asimétricamente, p.e. cifrado basado en certificado para conexiones entrantes y basado en PSK para conexiones salientes.
La configuración de cifrado para cada equipo se muestra en la interfaz 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 | Cifrado, certificado y cifrado 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, PSK o cifrado basado en certificado | - |
Las conexiones no están cifradas de forma predeterminada. El cifrado debe configurarse para cada equipo 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 y, antes de Zabbix 4.0.19, 4.4.7, no son configurables por el usuario.
Desde Zabbix 4.0.19, 4.4.7 también se incluyen conjuntos de cifrado configurados por el usuario compatibles con 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 ( los conjuntos de cifrado integrados predeterminados todavía funcionan).
Para bibliotecas criptográficas compiladas con la configuración predeterminada incorporada en Zabbix, las reglas generalmente dan como resultado los siguientes conjuntos de cifrado (en orden de 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 a usuarios avanzados que entienden los conjuntos de cifrado TLS, su seguridad y las consecuencias de los errores y quiénes se sienten cómodos con la solución de problemas de TLS.
Los criterios de selección del conjunto de cifrado incorporado se pueden anular utilizando los 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 del conjunto de cifrado basado 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 del 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 Servidor, proxy o agente Zabbix varias veces solo para modificar TLSCipher*
parámetros. 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 una solución más sencilla. archivo de prueba:
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 anteriores de OpenSSL (desde 1.0.1).
Con los sistemas más nuevos, puede optar por reforzar la seguridad permitiendo solo un pocos conjuntos de cifrado, p. sólo conjuntos de cifrado con PFS (Perfect Forward Secreto). Intentemos permitir solo conjuntos de cifrado con PFS usando Parámetros TLSCipher*
.
El resultado no será interoperable con los sistemas usando OpenSSL 1.0.1 y 1.0.2, si se usa PSK. Basado en certificado el cifrado 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 cortos 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 certificados, entonces solo uno:
Ahora que comprende cómo funciona, puede probar el conjunto de cifrado. selección 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 cifrados openssl
con la opción -V
para obtener una información más detallada. producción:
$ 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
: