2 Verwendung von Pre-Shared Keys

Übersicht

Jeder Pre-Shared Key (PSK) in Zabbix ist tatsächlich ein Paar aus:

  • einer nicht geheimen PSK-Identitätszeichenfolge,
  • einem geheimen PSK-Zeichenfolgenwert.

Die PSK-Identitätszeichenfolge ist eine nicht leere UTF-8-Zeichenfolge. Zum Beispiel „PSK ID 001 Zabbix agentd“. Es handelt sich um einen eindeutigen Namen, mit dem dieser spezifische PSK von Zabbix-Komponenten referenziert wird. Geben Sie keine sensiblen Informationen in der PSK-Identitätszeichenfolge an – sie wird unverschlüsselt über das Netzwerk übertragen.

Der PSK-Wert ist eine schwer zu erratende Zeichenfolge aus hexadezimalen Ziffern, zum Beispiel „e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9“.

Größenbeschränkungen

In Zabbix gibt es Größenbeschränkungen für PSK-Identität und -Wert; in einigen Fällen kann eine Kryptobibliothek niedrigere Grenzwerte haben:

Komponente Maximale Größe der PSK-Identität Minimale Größe des PSK-Werts Maximale Größe des PSK-Werts
Zabbix 128 UTF-8-Zeichen 128 Bit (16-Byte-PSK, eingegeben als 32 hexadezimale Ziffern) 2048 Bit (256-Byte-PSK, eingegeben als 512 hexadezimale Ziffern)
GnuTLS 128 Byte (kann UTF-8-Zeichen enthalten) - 2048 Bit (256-Byte-PSK, eingegeben als 512 hexadezimale Ziffern)
OpenSSL 1.0.x, 1.1.0 127 Byte (kann UTF-8-Zeichen enthalten) - 2048 Bit (256-Byte-PSK, eingegeben als 512 hexadezimale Ziffern)
OpenSSL 1.1.1 127 Byte (kann UTF-8-Zeichen enthalten) - 512 Bit (64-Byte-PSK, eingegeben als 128 hexadezimale Ziffern)
OpenSSL 1.1.1a und höher 127 Byte (kann UTF-8-Zeichen enthalten) - 2048 Bit (256-Byte-PSK, eingegeben als 512 hexadezimale Ziffern)

Das Zabbix Frontend erlaubt die Konfiguration einer bis zu 128 Zeichen langen PSK-Identitätszeichenfolge und eines bis zu 2048 Bit langen PSK, unabhängig von den verwendeten Kryptobibliotheken.
Wenn einige Zabbix-Komponenten niedrigere Grenzwerte unterstützen, liegt es in der Verantwortung des Benutzers, PSK-Identität und -Wert mit einer für diese Komponenten zulässigen Länge zu konfigurieren.
Das Überschreiten der Längenbeschränkungen führt zu Kommunikationsfehlern zwischen Zabbix- Komponenten.

Bevor der Zabbix Server sich mit dem Agent über PSK verbindet, sucht der Server die für diesen Agent in der Datenbank konfigurierte PSK-Identität und den PSK-Wert nach (tatsächlich im Konfigurationscache). Beim Empfang einer Verbindung verwendet der Agent die PSK-Identität und den PSK-Wert aus seiner Konfigurationsdatei. Wenn beide Parteien dieselbe PSK-Identitätszeichenfolge und denselben PSK-Wert haben, kann die Verbindung erfolgreich sein.

Jede PSK-Identität darf nur mit genau einem Wert verknüpft sein. Es liegt in der Verantwortung des Benutzers sicherzustellen, dass es keine zwei PSKs mit derselben Identitätszeichenfolge, aber unterschiedlichen Werten gibt. Andernfalls kann dies zu unvorhersehbaren Fehlern oder Unterbrechungen der Kommunikation zwischen Zabbix- Komponenten führen, die PSKs mit dieser PSK-Identitätszeichenfolge verwenden.

PSK generieren

Zum Beispiel kann ein 256-Bit-PSK (32 Byte) mit den folgenden Befehlen generiert werden:

  • mit OpenSSL:
<!-- -->
  $ openssl rand -hex 32
  af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429
  • mit 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

Beachten Sie, dass "psktool" oben eine Datenbankdatei mit einer PSK-Identität und der zugehörigen PSK erzeugt. Zabbix erwartet in der PSK-Datei jedoch nur eine PSK, daher sollten die Identitätszeichenfolge und der Doppelpunkt (':') aus der Datei entfernt werden.

PSK für die Server-Agent-Kommunikation konfigurieren (Beispiel)

Schreiben Sie auf dem Agent-Host den PSK-Wert in eine Datei, zum Beispiel /home/zabbix/zabbix_agentd.psk. Die Datei muss den PSK in der ersten Textzeile enthalten, zum Beispiel:

1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Setzen Sie die Zugriffsrechte für die PSK-Datei so, dass sie nur vom Benutzer Zabbix lesbar ist.

Bearbeiten Sie die TLS-Parameter in der Agent-Konfigurationsdatei zabbix_agentd.conf, zum Beispiel setzen Sie:

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

Der Agent wird sich mit dem Server verbinden (aktive Prüfungen) und vom Server sowie von zabbix_get nur Verbindungen akzeptieren, die PSK verwenden. Die PSK-Identität lautet "PSK 001".

Starten Sie den Agent neu. Nun können Sie die Verbindung mit zabbix_get testen, zum Beispiel:

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

(Um Ausfallzeiten zu minimieren, lesen Sie nach, wie der Verbindungstyp in Connection encryption management geändert wird.)

Konfigurieren Sie die PSK-Verschlüsselung für diesen Agent im Zabbix Frontend:

  • Gehen Sie zu: Datenerfassung → Hosts
  • Wählen Sie den Host aus und klicken Sie auf den Reiter Encryption

Beispiel:

psk\_config.png

Alle erforderlichen Eingabefelder sind mit einem roten Sternchen markiert.

Wenn der Konfigurations-Cache mit der Datenbank synchronisiert ist, verwenden die neuen Verbindungen PSK. Prüfen Sie die Logdateien von Server und Agent auf Fehlermeldungen.

Konfiguration von PSK für die Kommunikation zwischen Server und aktivem Proxy (Beispiel)

Schreiben Sie auf dem Proxy den PSK-Wert in eine Datei, zum Beispiel /home/zabbix/zabbix_proxy.psk. Die Datei muss den PSK in der ersten Textzeile enthalten, zum Beispiel:

e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Setzen Sie die Zugriffsrechte für die PSK-Datei so, dass sie nur vom Zabbix-Benutzer lesbar ist.

Bearbeiten Sie die TLS-Parameter in der Proxy-Konfigurationsdatei zabbix_proxy.conf, und setzen Sie zum Beispiel:

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

Der Proxy wird sich mit dem Server unter Verwendung von PSK verbinden. Die PSK-Identität wird "PSK 002" sein.

(Um Ausfallzeiten zu minimieren, lesen Sie, wie der Verbindungstyp in der Verwaltung der Verbindungsverschlüsselung geändert wird.)

Konfigurieren Sie PSK für diesen Proxy im Zabbix Frontend. Gehen Sie zu Administration→Proxies, wählen Sie den Proxy aus und öffnen Sie den Reiter "Encryption". Markieren Sie unter "Connections from proxy" PSK. Fügen Sie in das Feld "PSK identity" "PSK 002" und "in das Feld "PSK" "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" ein. Klicken Sie auf "Update".

Starten Sie den Proxy neu. Er wird dann PSK-basierte verschlüsselte Verbindungen zum Server verwenden. Prüfen Sie die Logdateien von Server und Proxy auf Fehlermeldungen.

Für einen passiven Proxy ist das Verfahren sehr ähnlich. Der einzige Unterschied: Setzen Sie TLSAccept=psk in der Proxy-Konfigurationsdatei und setzen Sie im Zabbix Frontend "Connections to proxy" auf PSK.