2 Verwendung von Pre-Shared Keys

Übersicht

Jeder Pre-Shared Key (PSK) in Zabbix besteht tatsächlich aus einem Paar von:

  • 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“. Sie ist ein eindeutiger Name, unter dem dieser spezifische PSK von den Zabbix-Komponenten referenziert wird. Fügen Sie keine vertraulichen Informationen in die PSK-Identitätszeichenfolge ein – sie wird unverschlüsselt über das Netzwerk übertragen.

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

Verwenden Sie niemals die in der Dokumentation angegebenen Beispiel-PSK-Werte in Produktionsumgebungen. Generieren Sie stattdessen einen eindeutigen, kryptografisch sicheren PSK.

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 der 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 über PSK eine Verbindung zum Agent herstellt, sucht der Server in der Datenbank nach der für diesen Agent konfigurierten PSK-Identität und dem PSK-Wert (tatsächlich im Konfigurationscache). Beim Empfang einer Verbindung verwendet der Agent die PSK-Identität und den PSK-Wert aus seiner Konfigurationsdatei. Wenn beide Seiten 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.

Generierung von PSK

Zum Beispiel kann ein 256-Bit-PSK (32 Bytes) 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.

Konfigurieren von PSK für die Kommunikation zwischen Server und Agent (Beispiel)

Schreiben Sie auf dem Host des Agents den oben generierten PSK-Wert in eine Datei, zum Beispiel /home/zabbix/zabbix_agentd.psk. Die Datei muss den PSK-Wert in der ersten Zeile enthalten.

Legen Sie die Zugriffsrechte für die PSK-Datei fest – sie darf nur für den Zabbix-Benutzer lesbar sein.

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

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

Der Agent stellt eine Verbindung zum Server her (aktive Prüfungen) und akzeptiert vom Server und von zabbix_get nur Verbindungen, die PSK verwenden. Die PSK-Identität lautet „PSK 001“.

Starten Sie den Agent neu. Jetzt 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, wie Sie den Verbindungstyp unter Verbindungsverschlüsselung verwalten ändern.)

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

  • Gehen Sie zu: Datensammlung → Hosts
  • Wählen Sie den Host aus und klicken Sie auf die Registerkarte Verschlüsselung

Beispiel:

psk\_config.png

Alle Pflichtfelder sind mit einem roten Sternchen gekennzeichnet.

Wenn der Konfigurations-Cache mit der Datenbank synchronisiert wurde, verwenden neue Verbindungen PSK. Überprü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 Benutzer Zabbix 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 mithilfe von PSK mit dem Server verbinden. Die PSK-Identität wird "PSK 002" sein.

(Zur Minimierung von Ausfallzeiten lesen Sie, wie der Verbindungstyp in 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 in "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 stellen Sie im Zabbix Frontend "Connections to proxy" auf PSK ein.