This is a translation of the original English documentation page. Help us make it better.

2 Par clés pré-partagées (PSK)

Aperçu

Chaque clé pré-partagée (PSK) de Zabbix est en fait une paire de :

  • chaîne d'identité PSK non secrète,
  • valeur de chaîne PSK secrète.

La chaîne d'identité PSK est une chaîne UTF-8 non vide. Par exemple, "PSK ID 001 Zabbix agentd". C'est un nom unique par lequel ce composant PSK spécifique est désigné par les composants Zabbix. Ne placez pas d'informations sensibles dans la chaîne d'identité PSK - elles sont transmises non cryptées sur le réseau.

La valeur PSK est une chaîne de caractères hexadécimaux difficile à deviner, par exemple "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".

Limites de taille

Il existe des limites de taille pour l'identité et la valeur PSK dans Zabbix, dans certains cas, une bibliothèque de chiffrement peut avoir une limite inférieure :

Composant Taille maximale de l'identité PSK Taille minimale de la valeur PSK Taille maximale de la valeur PSK
Zabbix 128 UTF-8 caractères 128-bit (PSK 16 octets, saisi sous la forme de 32 chiffres hexadécimaux) 2048-bit (PSK de 256 octets, saisi sous la forme de 512 chiffres hexadécimaux)
GnuTLS 128 octets (peut inclure des caractères UTF-8) - 2048 bits (PSK de 256 octets, entré sous la forme de 512 chiffres hexadécimaux)
OpenSSL 1.0.x, 1.1.0 127 octets (peut inclure des caractères UTF-8) - 2048 bits (PSK de 256 octets, entré sous la forme de 512 chiffres hexadécimaux)
OpenSSL 1.1.1 127 octets (peut inclure des caractères UTF-8) - 512 bits (PSK de 64 octets, saisis sous la forme de 128 chiffres hexadécimaux)
OpenSSL 1.1.1a et suivants 127 octets (peut inclure des caractères UTF-8) - 2 048 bits (PSK de 256 octets, saisis sous la forme de 512 chiffres hexadécimaux)

L'interface Zabbix permet de configurer une chaîne d'identité PSK de 128 caractères maximum et une PSK de 2 048 bits, quelles que soient les bibliothèques de chiffrement utilisées.
Si certains composants Zabbix prennent en charge des limites inférieures, il est de la responsabilité de l'utilisateur de configurer l'identité et la valeur PSK avec la longueur autorisée pour ces composants.
Le dépassement des limites de longueur entraîne des échecs de communication entre les composants Zabbix.

Avant que le serveur Zabbix ne se connecte à l'agent à l'aide de PSK, le serveur recherche l'identité PSK et la valeur PSK configurées pour cet agent dans la base de données (en fait dans le cache de configuration). Lors de la réception d'une connexion, l'agent utilise l'identité PSK et la valeur PSK de son fichier de configuration. Si les deux parties ont la même chaîne d'identité PSK et la même valeur PSK, la connexion peut réussir.

Chaque identité PSK doit être associée à une seule valeur. Il est de la responsabilité de l'utilisateur de s'assurer qu'il n'y a pas deux PSK avec la même chaîne d'identité mais des valeurs différentes. Ne pas le faire peut entraîner des erreurs imprévisibles ou des interruptions de communication entre les composants Zabbix utilisant des PSK avec cette chaîne d'identité PSK.

Génération de PSK

Par exemple, un PSK de 256 bits (32 octets) peut être généré à l'aide des commandes suivantes :

  • avec OpenSSL :

$ openssl rand -hex 32 af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429

  • avec GnuTLS :

$ psktool -u psk_identity -p database.psk -s 32 Generating a random key for user 'psk_identity' Key stored to database.psk

$ cat database.psk psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Notez que la commande "psktool" ci-dessus génère un fichier de base de données avec une identité PSK et son PSK associé. Zabbix ne prévoit qu'un PSK dans le fichier PSK. Par conséquent, la chaîne d'identité et les deux-points (':') doivent être supprimés du fichier.

Configuration de PSK pour la communication serveur-agent (exemple)

Sur l'hôte de l'agent, écrire la valeur PSK dans un fichier, par exemple, /home/zabbix/zabbix_agentd.psk. Le fichier doit contenir un PSK dans la première chaîne de texte, par exemple :

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Définir les droits d’accès au fichier PSK - il ne doit être lisible que par l’utilisateur Zabbix.

Modifier les paramètres TLS dans le fichier de configuration de l'agent zabbix_agentd.conf, par exemple, définir :

TLSConnect=psk TLSAccept=psk TLSPSKFile=/home/zabbix/zabbix_agentd.psk TLSPSKIdentity=PSK 001

L'agent se connecte au serveur (vérifications actives) et accepte à partir du serveur et de la commande zabbix_get uniquement les connexions utilisant PSK. L'identité PSK sera "PSK 001".

Redémarrer l'agent. Maintenant, vous pouvez tester la connexion en utilisant la commande zabbix_get, par exemple :

$ 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

(Pour minimiser les temps d'interruption, modifier le type de connexion comme décrit dans Gestion du chiffrement de la connexion).

Configurer le chiffrement PSK pour cet agent dans l'interface Zabbix :

  • Aller dans : Configuration → Hôtes
  • Sélectionner l'hôte et cliquer sur l'onglet Chiffrement

Exemple :

psk_config.png

Tous les champs de saisie obligatoires sont marqués d'un astérisque rouge.

Dès lors que le cache de configuration est synchronisé avec la base de données, les nouvelles connexions utilisent PSK. Vérifier les fichiers journaux du serveur et de l'agent à la recherche de messages d'erreur.

Configuration de PSK pour le serveur - communication d'un proxy actif (exemple)

Sur le proxy, écrivez la valeur PSK dans un fichier, par exemple, /home/zabbix/zabbix_proxy.psk. Le fichier doit contenir le PSK dans la première chaîne de texte, par exemple :

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Définir les droits d’accès au fichier PSK - il ne doit être lisible que par l’utilisateur Zabbix.

Modifier les paramètres TLS dans le fichier de configuration de proxy zabbix_proxy.conf, par exemple, définir :

TLSConnect=psk TLSPSKFile=/home/zabbix/zabbix_proxy.psk TLSPSKIdentity=PSK 002

Le proxy se connecte au serveur en utilisant PSK. L'identité PSK sera "PSK 002".

(Pour minimiser les temps d'interruption, modifier le type de connexion comme décrit dans Gestion du chiffrement de la connexion).

Configurer PSK pour ce proxy dans l'interface Zabbix. Aller dans Administration → Proxies, sélectionner le proxy et aller dans l'onglet "Chiffrement". Dans "Connexions du proxy", cocher PSK. Coller dans le champ "Identité PSK" "PSK 002" et "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" dans le champ "PSK". Cliquez sur "Actualiser".

Redémarrer le proxy. Il commencera à utiliser des connexions au serveur chiffrées basées sur PSK. Vérifiez les fichiers journaux du serveur et du proxy à la recherche de messages d'erreur.

Pour un proxy passif, la procédure est similaire. La seule différence est - définir TLSAccept=psk dans le fichier de configuration du proxy et définir "Connexions du proxy" dans l'interface Zabbix à PSK.