2 Gebruik van vooraf gedeelde sleutels

Overzicht

Elke vooraf gedeelde sleutel (PSK) in Zabbix is eigenlijk een paar van:

  • een niet-geheim PSK identiteitssnaar,
  • een geheime PSK waarde.

De PSK identiteitssnaar is een niet-lege UTF-8 snaar. Bijvoorbeeld, "PSK ID 001 Zabbix agentd". Het is een unieke naam waarnaar deze specifieke PSK wordt verwezen door Zabbix-componenten. Plaats geen gevoelige informatie in de PSK identiteitssnaar - deze wordt onversleuteld over het netwerk verzonden.

De PSK waarde is een moeilijk te raden snaar van hexadecimale cijfers, bijvoorbeeld, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".

Groottebeperkingen

Er zijn groottebeperkingen voor PSK-identiteit en -waarde in Zabbix, in sommige gevallen kan een cryptobibliotheek een lagere limiet hebben:

Component Maximale grootte PSK-identiteit Minimale grootte PSK-waarde Maximale grootte PSK-waarde
Zabbix 128 UTF-8 karakters 128-bit (16-byte PSK, ingevoerd als 32 hexadecimale cijfers) 2048-bit (256-byte PSK, ingevoerd als 512 hexadecimale cijfers)
GnuTLS 128 bytes (kan UTF-8 karakters bevatten) - 2048-bit (256-byte PSK, ingevoerd als 512 hexadecimale cijfers)
OpenSSL 1.0.x, 1.1.0 127 bytes (kan UTF-8 karakters bevatten) - 2048-bit (256-byte PSK, ingevoerd als 512 hexadecimale cijfers)
OpenSSL 1.1.1 127 bytes (kan UTF-8 karakters bevatten) - 512-bit (64-byte PSK, ingevoerd als 128 hexadecimale cijfers)
OpenSSL 1.1.1a en later 127 bytes (kan UTF-8 karakters bevatten) - 2048-bit (256-byte PSK, ingevoerd als 512 hexadecimale cijfers)

De Zabbix-frontend staat configuratie toe tot 128 tekens lange PSK-identiteitssnaar en een PSK van 2048 bits, ongeacht de gebruikte cryptobibliotheken.
Als sommige Zabbix-componenten lagere limieten ondersteunen, is het de verantwoordelijkheid van de gebruiker om de PSK-identiteit en -waarde te configureren met de toegestane lengte voor deze componenten.
Het overschrijden van de lengtelimieten kan leiden tot communicatiefouten tussen Zabbix-componenten.

Voordat de Zabbix-server verbinding maakt met een agent met behulp van PSK, zoekt de server de PSK-identiteit en -waarde op die is geconfigureerd voor die agent in de database (eigenlijk in de configuratiecache). Bij het ontvangen van een verbinding gebruikt de agent de PSK-identiteit en -waarde uit zijn configuratiebestand. Als beide partijen dezelfde PSK-identiteitssnaar en PSK-waarde hebben, kan de verbinding slagen.

Elke PSK-identiteit moet worden gekoppeld aan slechts één waarde. Het is de verantwoordelijkheid van de gebruiker om ervoor te zorgen dat er geen twee PSK's zijn met dezelfde identiteitssnaar maar met verschillende waarden. Als dit niet wordt gedaan, kan dit leiden tot onvoorspelbare fouten of verstoringen van de communicatie tussen Zabbix-componenten die PSK's gebruiken met deze PSK-identiteitssnaar.

PSK genereren

Bijvoorbeeld, een 256-bit (32 bytes) PSK kan worden gegenereerd met de volgende commando's:

  • met OpenSSL:
  $ openssl rand -hex 32
         af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
  • met GnuTLS:
  $ psktool -u psk_identiteit -p database.psk -s 32
         Genereren van een willekeurige sleutel voor gebruiker 'psk_identiteit'
         Sleutel opgeslagen in database.psk
         
         $ cat database.psk 
         psk_identiteit:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Merk op dat "psktool" hierboven een databasebestand genereert met een PSK-identiteit en zijn bijbehorende PSK. Zabbix verwacht alleen een PSK in het PSK-bestand, dus de identiteitssnaar en de dubbele punt (':') moeten uit het bestand worden verwijderd.

Configureren van PSK voor communicatie tussen server en agent (voorbeeld)

Op het agent-hostsysteem, schrijf de PSK-waarde in een bestand, bijvoorbeeld, /home/zabbix/zabbix_agentd.psk. Het bestand moet de PSK bevatten in de eerste tekstregel, bijvoorbeeld:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Stel de toegangsrechten voor het PSK-bestand in - het moet alleen leesbaar zijn voor de Zabbix-gebruiker.

Bewerk de TLS-parameters in het configuratiebestand van de agent, zabbix_agentd.conf, bijvoorbeeld, stel in:

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

De agent zal verbinding maken met de server (actieve controles) en alleen verbindingen accepteren van de server en zabbix_get die PSK gebruiken. De PSK-identiteit zal "PSK 001" zijn.

Herstart de agent. Nu kunt u de verbinding testen met behulp van zabbix_get, bijvoorbeeld:

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

(Om de downtime te minimaliseren, zie hoe u het verbindinstype kunt wijzigen in Beheer van vercijfering van verbindingen).

Configureer PSK-versleuteling voor deze agent in de Zabbix-frontend:

  • Ga naar: Configuratie → Hosts
  • Selecteer de host en klik op het tabblad Encryptie

Voorbeeld:

psk_config.png

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

Wanneer de configuratiecache is gesynchroniseerd met de database, zullen de nieuwe verbindingen PSK gebruiken. Controleer de logbestanden van de server en de agent op foutmeldingen.

Configuratie van PSK voor communicatie tussen server en actieve proxy (voorbeeld)

Op de proxy, schrijf de PSK-waarde in een bestand, bijvoorbeeld, /home/zabbix/zabbix_proxy.psk. Het bestand moet de PSK bevatten in de eerste tekstregel, bijvoorbeeld:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Stel de toegangsrechten voor het PSK-bestand in - het moet alleen leesbaar zijn voor de Zabbix-gebruiker.

Bewerk de TLS-parameters in het configuratiebestand van de proxy, zabbix_proxy.conf, bijvoorbeeld, stel in:

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

De proxy zal verbinding maken met de server met behulp van PSK. De PSK-identiteit zal "PSK 002" zijn.

(Om de downtime te minimaliseren, zie hoe u het verbindinstype kunt wijzigen in Beheer van vercijfering van verbindingen).

Configureer PSK voor deze proxy in de Zabbix-frontend. Ga naar Beheer→Proxies, selecteer de proxy, ga naar het tabblad "Encryptie". Markeer bij "Verbindingen van proxy" PSK. Plak in het veld "PSK-identiteit" de tekst "PSK 002" en "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" in het veld "PSK". Klik op "Bijwerken".

Herstart de proxy. Deze zal beginnen met het gebruiken van met PSK versleutelde verbindingen naar de server. Controleer de logbestanden van de server en de proxy op foutmeldingen.

Voor een passieve proxy is de procedure zeer vergelijkbaar. Het enige verschil - stel TLSAccept=psk in het configuratiebestand van de proxy in en stel "Verbindingen naar proxy" in de Zabbix-frontend in op PSK.