Áú»¢¶Ä²© admite comunicaciones cifradas entre componentes de Áú»¢¶Ä²© 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 Áú»¢¶Ä²© utilizan un puerto de escucha para conexiones entrantes cifradas y no cifradas. Agregar un cifrado no requiere abrir nuevos puertos en los firewalls.
Para admitir el cifrado, Áú»¢¶Ä²© debe compilarse y vincularse con una de las bibliotecas criptogr¨¢ficas compatibles:
tls_*()
no se utilizan. Los componentes de Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© que utilizan PSK. Bibliotecas GnuTLS y OpenSSL 1.1.0 admite conjuntos de cifrado PSK con . 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 Áú»¢¶Ä²© pueden usar:
Hay dos par¨¢metros importantes que se utilizan para especificar el cifrado entre componentes de Áú»¢¶Ä²©:
TLSConnect
se utiliza en los archivos de configuraci¨®n para el proxy Áú»¢¶Ä²© (en modo activo, especifica solo conexiones al servidor) y el agente Áú»¢¶Ä²© (para controles activos). En la interfaz de Áú»¢¶Ä²©, 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 Áú»¢¶Ä²© (en modo pasivo, especifica solo conexiones desde el servidor) y agente Áú»¢¶Ä²© (para controles pasivos). En la interfaz de Áú»¢¶Ä²©, 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 Áú»¢¶Ä²©TLSAccept=cert
en el archivo de configuraci¨®n del agente y reiniciar el agente Áú»¢¶Ä²©. 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²©, 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 Áú»¢¶Ä²©.
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 Áú»¢¶Ä²© 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 | ±Ê²¹°ù¨¢³¾±ð³Ù°ù´Ç | Valor | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|---|---|
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 para TLS 1.2 o GnuTLS v¨¢lido . 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 para TLS 1.2 o GnuTLS v¨¢lido . 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 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 para TLS 1.2 o GnuTLS v¨¢lido . 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 Áú»¢¶Ä²© :
°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô de conexi¨®n del agente | °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨®²Ô 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 conexi¨®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.
±Ê²¹°ù¨¢³¾±ð³Ù°ù´Ç | 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 |
±Ê²¹°ù¨¢³¾±ð³Ù°ù´Ç | 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²© 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 Áú»¢¶Ä²©, 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
Áú»¢¶Ä²© 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
: