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 tekens 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 tekens bevatten) - 2048-bit (256-byte PSK, ingevoerd als 512 hexadecimale cijfers)
OpenSSL 1.0.x, 1.1.0 127 bytes (kan UTF-8 tekens bevatten) - 2048-bit (256-byte PSK, ingevoerd als 512 hexadecimale cijfers)
OpenSSL 1.1.1 127 bytes (kan UTF-8 tekens bevatten) - 512-bit (64-byte PSK, ingevoerd als 128 hexadecimale cijfers)
OpenSSL 1.1.1a en later 127 bytes (kan UTF-8 tekens bevatten) - 2048-bit (256-byte PSK, ingevoerd als 512 hexadecimale cijfers)

De Zabbix-frontend staat configuratie toe tot een PSK-identiteitsreeks van 128 tekens 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 een toegestane lengte voor deze componenten.
Het overschrijden van de lengtebeperkingen kan leiden tot communicatiestoringen tussen Zabbix-componenten.

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

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 identiteitsreeks maar verschillende waarden. Het niet naleven van deze regel kan leiden tot onvoorspelbare fouten of verstoringen van de communicatie tussen Zabbix-componenten die PSK's gebruiken met deze PSK-identiteitsreeks.

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.

PSK configureren voor communicatie tussen server en agent (voorbeeld)

Op de host van de agent, schrijf de PSK-waarde in een bestand, bijvoorbeeld /home/zabbix/zabbix_agentd.psk. Het bestand moet de PSK bevatten in de eerste tekstreeks, bijvoorbeeld:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

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

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

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

De agent zal verbinding maken met de server (actieve checks) en alleen verbindingen accepteren van de server en zabbix_get met behulp van PSK. De PSK-identiteit wordt "PSK 001".

Herstart de agent. Nu kun je 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 je het verbindingsstype kunt wijzigen in Beheer van vercijferde verbindingen).

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

  • Ga naar: Gegevensverzameling → Hosts
  • Selecteer de host en klik op het tabblad Versleuteling

Voorbeeld:

psk_config.png

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

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

PSK configureren 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 tekstreeks, bijvoorbeeld:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

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

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

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 wordt "PSK 002".

(Om de downtime te minimaliseren, zie hoe je het verbindingsstype kunt wijzigen in Beheer van vercijferde verbindingen).

Configureer PSK voor deze proxy in de Zabbix frontend. Ga naar Administratie → Proxies, selecteer de proxy, ga naar het tabblad "Versleuteling". Markeer bij "Verbindingen van proxy" PSK. Plak in het veld "PSK-identiteit" "PSK 002" en in het veld "PSK" "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9". 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 proxy op foutmeldingen.

Voor een passieve proxy is de procedure erg vergelijkbaar. Het enige verschil is dat je TLSAccept=psk instelt in het configuratiebestand van de proxy en "Verbindingen naar proxy" in de Zabbix frontend instelt op PSK.