2 Uso de claves precompartidas
Descripción general
Cada clave precompartida (PSK) en Zabbix es en realidad un par de:
- cadena de identidad PSK no secreta,
- valor de cadena PSK secreta.
La cadena de identidad PSK es una cadena UTF-8 no vacía. Por ejemplo, "PSK ID 001 Zabbix agentd". Es un nombre único por el cual los componentes de Zabbix se refieren a esta PSK específica. No incluya información sensible en la cadena de identidad PSK: se transmite por la red sin cifrar.
El valor PSK es una cadena difícil de adivinar de dígitos hexadecimales, por ejemplo, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".
Límites de tamaño
Existen límites de tamaño para la identidad y el valor de PSK en Zabbix; en algunos casos, una biblioteca de cifrado puede tener un límite inferior:
| Componente | Tamaño máximo de identidad PSK | Tamaño mínimo de valor PSK | Tamaño máximo de valor PSK |
|---|---|---|---|
| Zabbix | 128 caracteres UTF-8 | 128 bits (PSK de 16 bytes, introducido como 32 dígitos hexadecimales) | 2048 bits (PSK de 256 bytes, introducido como 512 dígitos hexadecimales) |
| GnuTLS | 128 bytes (puede incluir caracteres UTF-8) | - | 2048 bits (PSK de 256 bytes, introducido como 512 dígitos hexadecimales) |
| OpenSSL 1.0.x, 1.1.0 | 127 bytes (puede incluir caracteres UTF-8) | - | 2048 bits (PSK de 256 bytes, introducido como 512 dígitos hexadecimales) |
| OpenSSL 1.1.1 | 127 bytes (puede incluir caracteres UTF-8) | - | 512 bits (PSK de 64 bytes, introducido como 128 dígitos hexadecimales) |
| OpenSSL 1.1.1a y posteriores | 127 bytes (puede incluir caracteres UTF-8) | - | 2048 bits (PSK de 256 bytes, introducido como 512 dígitos hexadecimales) |
El frontend de Zabbix permite configurar una cadena de identidad PSK de hasta 128 caracteres y un PSK de hasta 2048 bits, independientemente de las bibliotecas de cifrado utilizadas.
Si algunos componentes de Zabbix admiten límites inferiores, es responsabilidad del usuario configurar la identidad y el valor de PSK con la longitud permitida para estos componentes.
Superar los límites de longitud provoca fallos de comunicación entre los componentes de Zabbix.
Antes de que el servidor Zabbix se conecte al agent usando PSK, el server busca la identidad y el valor de PSK configurados para ese agent en la base de datos (en realidad, en la caché de configuración). Al recibir una conexión, el agent utiliza la identidad y el valor de PSK de su archivo de configuración. Si ambas partes tienen la misma cadena de identidad PSK y el mismo valor de PSK, la conexión puede tener éxito.
Cada identidad PSK debe emparejarse con un solo valor. Es responsabilidad del usuario asegurarse de que no haya dos PSK con la misma cadena de identidad pero con valores diferentes. No hacerlo puede provocar errores impredecibles o interrupciones en la comunicación entre los componentes de Zabbix que utilicen PSK con esta cadena de identidad.
Generando PSK
Por ejemplo, se puede generar una PSK de 256 bits (32 bytes) utilizando los siguientes comandos:
- con OpenSSL:
<!-- -->
$ openssl rand -hex 32
af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
- con GnuTLS:
<!-- -->
$ psktool -u psk_identity -p database.psk -s 32
Generando una clave aleatoria para el usuario 'psk_identity'
Clave almacenada en database.psk
$ cat database.psk
psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb
Tenga en cuenta que "psktool" genera un archivo de base de datos con una identidad PSK y su PSK asociada. Zabbix espera solo una PSK en el archivo PSK, por lo que la cadena de identidad y los dos puntos (':') deben eliminarse del archivo.
Configuración de PSK para la comunicación server-agent (ejemplo)
En el host del agent, escriba el valor de PSK en un archivo, por ejemplo,
/home/zabbix/zabbix_agentd.psk. El archivo debe contener la PSK en la primera
cadena de texto, por ejemplo:
1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
Establezca los permisos de acceso al archivo PSK; debe ser legible solo por el usuario Zabbix.
Edite los parámetros TLS en el archivo de configuración del agent zabbix_agentd.conf,
por ejemplo, establezca:
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001
El agent se conectará al server (comprobaciones activas) y aceptará del server
y de zabbix_get solo conexiones que utilicen PSK. La identidad PSK será "PSK
001".
Reinicie el agent. Ahora puede probar la conexión usando zabbix_get,
por ejemplo:
zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/home/zabbix/zabbix_agentd.psk
(Para minimizar el tiempo de inactividad, vea cómo cambiar el tipo de conexión en Gestión del cifrado de conexión).
Configure el cifrado PSK para este agent en el frontend de Zabbix:
- Vaya a: Recopilación de datos → Hosts
- Seleccione el host y haga clic en la pestaña Encryption
Ejemplo:

Todos los campos de entrada obligatorios están marcados con un asterisco rojo.
Cuando la caché de configuración se sincronice con la base de datos, las nuevas conexiones utilizarán PSK. Revise los archivos de registro del server y del agent para ver si hay mensajes de error.
Configuración de PSK para la comunicación server - proxy activo (ejemplo)
En el proxy, escriba el valor de PSK en un archivo, por ejemplo,
/home/zabbix/zabbix_proxy.psk. El archivo debe contener la PSK en la primera
cadena de texto, por ejemplo:
e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9
Establezca los permisos de acceso al archivo PSK: solo debe poder ser leído por el usuario Zabbix.
Edite los parámetros TLS en el archivo de configuración del proxy zabbix_proxy.conf, por
ejemplo, establezca:
TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002
El proxy se conectará al server usando PSK. La identidad PSK será "PSK 002".
(Para minimizar el tiempo de inactividad, vea cómo cambiar el tipo de conexión en Gestión del cifrado de conexiones).
Configure la PSK para este proxy en el frontend de Zabbix. Vaya a
Administration→Proxies, seleccione el proxy y abra la pestaña "Encryption". En
"Connections from proxy" marque PSK. Pegue "PSK 002" en el campo "PSK identity" y
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" en el
campo "PSK". Haga clic en "Update".
Reinicie el proxy. Empezará a usar conexiones cifradas basadas en PSK hacia el server. Revise los archivos de registro del server y del proxy para detectar mensajes de error.
Para un proxy pasivo, el procedimiento es muy similar. La única diferencia:
establezca TLSAccept=psk en el archivo de configuración del proxy y configure "Connections to
proxy" en el frontend de Zabbix como PSK.