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.
Las claves privadas se almacenan en texto sin formato en archivos legibles por los componentes de Zabbix durante el inicio
Las claves precompartidas se ingresan en la interfaz de Zabbix y se almacenan en la base de datos de Zabbix en texto sin formato
El cifrado integrado no protege las comunicaciones:
Entre el servidor web que ejecuta la interfaz de Zabbix y el navegador web del usuario
Entre la interfaz de Zabbix y el servidor Zabbix
Actualmente, cada conexión cifrada se abre con un protocolo de enlace TLS completo, no se implementan el almacenamiento en caché de sesiones ni los tickets
Agregar cifrado aumenta el tiempo para las verificaciones de elementos y las acciones, según la latencia de la red:
Por ejemplo, si el retraso del paquete es de 100 ms, entonces abrir una conexión TCP y enviar una solicitud no cifrada toma alrededor de 200 ms.
Con el cifrado, se agregan aproximadamente 1000 ms para establecer la conexión TLS;
Para admitir cifrado, Zabbix debe compilarse y vincularse con una de las bibliotecas de cifrado admitidas:
tls_*()
no se utilizan. Los componentes de Zabbix compilados con LibreSSL no podrán utilizar PSK, solo se pueden utilizar certificados.Puede obtener más información sobre cómo configurar SSL para la interfaz de Zabbix consultando estas mejores prácticas.
La biblioteca se selecciona especificando la opción respectiva en el 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
Se pueden compilar diferentes componentes de Zabbix con diferentes bibliotecas criptográficas (por ejemplo, un servidor con OpenSSL, un agente con GnuTLS).
Si planea utilizar claves precompartidas (PSK), considere utilizar bibliotecas GnuTLS u OpenSSL 1.1.0 (o más nuevas) en componentes Zabbix que utilicen PSK. Las bibliotecas GnuTLS y OpenSSL 1.1.0 soportan conjuntos de cifrados PSK con Perfect Forward Secrecy. Las versiones anteriores de la biblioteca OpenSSL (1.0.1, 1.0.2c) también admiten PSK, pero los conjuntos de cifrados PSK disponibles no proporcionan Perfect Forward Secrecy.
Las conexiones en Zabbix pueden utilizar:
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 de Zabbix (en modo activo, especifica solo conexiones al servidor) y el agente de Zabbix (para verificaciones activas). En la interfaz de Zabbix, el equivalente de TLSConnect es el campo Conexiones al host en la pestaña Configuración → Equipos → <algún equipo> → Cifrado y el campo Conexiones al proxy en la pestaña Administración → Proxies → <algún proxy> → Cifrado. Si el tipo de cifrado configurado para la conexión falla, no se probará ningún otro tipo de cifrado.
TLSAccept
se utiliza en los archivos de configuración para el proxy de Zabbix (en modo pasivo, especifica solo conexiones desde el servidor) y el agente de Zabbix (para verificaciones pasivas). En la interfaz de Zabbix, el equivalente de TLSAccept es el campo Conexiones desde el host en la pestaña Configuración → Equipos → <algún equipo> → Cifrado y el campo Conexiones desde el proxy en la pestaña Administración → Proxies → <algún proxy> → Cifrado.
Normalmente, se configura solo un tipo de cifrado para los cifrados entrantes. Pero es posible que desee cambiar el tipo de cifrado, por ejemplo, de no cifrado a basado en certificado con un tiempo de inactividad mínimo y posibilidad de reversión. 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á solo conexiones cifradas basadas en certificados. Las conexiones no cifradas y basadas en PSK serán rechazadas.De manera similar, funciona en el servidor y el proxy. Si en la interfaz de Zabbix en la configuración del host Conexiones desde el host está configurado en "Certificado", solo se aceptarán conexiones cifradas basadas en certificados del agente (controles activos) y zabbix_sender (elementos de captura).
Lo más probable es que configure las conexiones entrantes y salientes para que utilicen el mismo tipo de cifrado o ningún cifrado en absoluto. Pero técnicamente es posible configurarlo asimétricamente, por ejemplo, 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 Configuración → Equipos 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 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 | |
Encriptado, basado en certificado | Sin encriptar, PSK o cifrado basado en certificado | - |
Las conexiones no están encriptadas de manera predeterminada. El cifrado se debe configurar para cada equipo y proxy de manera individual.
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 (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 de conjuntos de cifrados integrados se pueden anular con conjuntos de cifrados configurados por el usuario.
Los conjuntos de cifrados configurados por el usuario son una función pensada para usuarios avanzados que comprenden los conjuntos de cifrados TLS, su seguridad y las consecuencias de los errores, y que están familiarizados con la resolución de problemas de TLS.
Los criterios de selección de conjuntos de cifrados integrados se pueden anular utilizando los siguientes parámetros:
Anular ámbito | Parámetro | Valor | Descripción |
---|---|---|---|
Selección de conjuntos de cifrados para certificados | TLSCipherCert13 | OpenSSL 1.1.1 cadenas de cifrado válidos para el protocolo TLS 1.3 (sus valores se pasan a la función OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de conjuntos de cifrados basados en certificados para TLS 1.3 Solo OpenSSL 1.1.1 o posterior. |
TLSCipherCert | OpenSSL cadenas de cifrado válidos para TLS 1.2 o GnuTLS cadenas de prioridad válidos. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de conjuntos de cifrados basados en certificados para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Selección de conjuntos de cifrados para PSK | TLSCipherPSK13 | 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 conjuntos de cifrados basados en PSK para TLS 1.3 Solo OpenSSL 1.1.1 o posterior. |
TLSCipherPSK | Cadenas de cifrado OpenSSL válidas [(https://www.openssl.org/docs/man1.1.1/man1/ciphers.html) para TLS 1.2 o cadenas de prioridad GnuTLS válidas [(https://gnutls.org/manual/html_node/Priority-Strings.html). Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de conjuntos de cifrados basados en PSK para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) | |
Lista de conjuntos de cifrados combinados para certificado y PSK | TLSCipherAll13 | Cadenas de cifrado OpenSSL 1.1.1 válidas para el protocolo TLS 1.3 (sus valores se pasan a la función OpenSSL SSL_CTX_set_ciphersuites() ). |
Criterios de selección de conjuntos de cifrados para TLS 1.3 Solo OpenSSL 1.1.1 o posterior. |
TLSCipherAll | Cadenas de cifrado OpenSSL válidas para TLS 1.2 o cadenas de prioridad GnuTLS válidas para TLS 1.2. Sus valores se pasan a las funciones SSL_CTX_set_cipher_list() o gnutls_priority_init() , respectivamente. |
Criterios de selección de conjuntos de cifrados para TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL) |
Para anular la selección de conjuntos de cifrados en las utilidades zabbix_get y zabbix_sender, utilice los parámetros de la 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 predeterminado interno. Si se define un parámetro, no puede estar vacío.
Si falla la configuración de un valor TLSCipher* en la biblioteca criptográfica, el servidor, el proxy o el agente no se iniciarán y se registrará un error.
Es importante comprender cuándo se aplica 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 los componentes y la configuración.
Para el agente de Zabbix:
Configuración de la conexión del agente | Configuración del 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 el proxy de Zabbix:
Configuración de la conexión | Configuración del cifrado |
---|---|
Conexiones salientes que utilizan PSK | TLSCipherPSK, TLSCipherPSK13 |
Conexiones entrantes que utilizan certificados | TLSCipherAll, TLSCipherAll13 |
Conexiones entrantes que utilizan PSK si el servidor no tiene certificado | TLSCipherPSK, TLSCipherPSK13 |
Conexiones entrantes que utilizan 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*
. Pueden ser un buen punto de partida para sus propios valores personalizados.
Parámetro | GnuTLS 3.6.12 |
---|---|
TLSCipherCert | NINGUNO:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVA-TODAS:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 |
TLSCipherPSK | NINGUNO:+VERS-TLS1.2:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVA-TODAS:+COMP-NULL:+SIGN-ALL |
TLSCipherAll | NINGUNO:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVA-TODO:+COMP-NULL:+SIGN-TODO:+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 compatibilidad con PSK.
Ejemplos de conjuntos de cifrados configurados por el usuario
Vea a continuación los siguientes ejemplos de conjuntos de cifrados configurados por el usuario:
Para ver qué conjuntos de cifrados se han seleccionado, debe establecer 'DebugLevel=4' en el archivo de configuración o utilizar la opción -vv
para zabbix_sender.
Puede que sea necesario experimentar un poco con los parámetros TLSCipher*
antes de obtener los conjuntos de cifrados deseados. Es inconveniente reiniciar el servidor, proxy o agente de Zabbix varias veces solo para modificar los parámetros TLSCipher*
. Hay opciones más convenientes que son usar zabbix_sender o el comando openssl
. Vamos a mostrar ambos.
1. Uso de zabbix_sender.
Creemos 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 de certificado y PSK para su entorno.
Si no está utilizando 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
Los conjuntos de cifrados 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í puede ver los conjuntos de cifrado seleccionados de forma predeterminada. Estos valores predeterminados se eligen para garantizar la interoperabilidad con agentes Zabbix que se ejecutan en sistemas con versiones anteriores de OpenSSL (a partir de 1.0.1).
Con sistemas más nuevos, puede optar por reforzar la seguridad al permitir solo unos pocos conjuntos de cifrados, por ejemplo, solo conjuntos de cifrados con PFS (Perfect Forward Secrecy). Intentemos permitir solo conjuntos de cifrados con PFS utilizando los parámetros TLSCipher*
.
El resultado no será interoperable con sistemas que utilicen OpenSSL 1.0.1 y 1.0.2, si se utiliza PSK. El cifrado basado en certificados debería funcionar.
Agregue dos líneas al archivo de configuración test.conf
:
y vuelva a realizar la prueba:
$ 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 cifrados de certificados" y "conjuntos de cifrados PSK" han cambiado: son más cortas que antes y solo contienen conjuntos de cifrados TLS 1.3 y conjuntos de cifrados ECDHE-* TLS 1.2, como se esperaba.
2. TLSCipherAll y TLSCipherAll13 no se pueden probar con zabbix_sender; no afectan el valor de "conjuntos de cifrados de certificados y PSK" que se muestra en el ejemplo anterior. Para modificar TLSCipherAll y TLSCipherAll13, debe experimentar con el agente, el proxy o el 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 solo cifrado basado en PSK y no certificados, entonces solo uno:
Ahora que comprende cómo funciona, puede probar la selección de conjuntos de cifrados incluso fuera de Zabbix, con el comando openssl
. Probemos 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
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 integrado 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 serán utilizados los conjuntos de cifrado relacionados con certificados , los parámetros TLSCipherPSK*
también se definen para evitar que sus valores predeterminados incluyan 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
: