Zabbix Verschluesselte Verbindungen

Zabbix 3 erforderlich

Erst ab der Version 3 kann die Kommunikation zwischen Zabbix-Server, den Agenten und Proxys verschlüsselt erfolgen. Wenn Sie die Zabbix-Komponenten selbst kompiliert haben, müssen Sie eine der Optionen --with-openssl, --with-gnutls oder --with-mbedtls verwendet haben. Es reicht nicht aus, nur den Zabbix-Server mit Transport Layer Security (TLS) zu kompilieren. Auch Zabbix-Agent und Zabbix-Proxy – wenn eingesetzt – müssen mit TLS-Support kompiliert werden.

Werfen Sie einen Blick in das Logfile des Zabbix-Servers. Dort meldet Zabbix bei jedem Start, welche Optionen zur Verfügung stehen. Achten Sie auf die Zeile „TLS support“.

 30625:20151124:180159.055 Starting Zabbix Server. Zabbix 3.0.0
 30625:20151124:180159.055 ****** Enabled features ******
 30625:20151124:180159.055 SNMP monitoring:           YES
 30625:20151124:180159.055 IPMI monitoring:           YES
 30625:20151124:180159.055 Web monitoring:            YES
 30625:20151124:180159.055 VMware monitoring:         YES
 30625:20151124:180159.055 SMTP authentication:       YES
 30625:20151124:180159.055 Jabber notifications:       NO
 30625:20151124:180159.055 Ez Texting notifications:  YES
 30625:20151124:180159.055 ODBC:                      YES
 30625:20151124:180159.055 SSH2 support:              YES
 30625:20151124:180159.055 IPv6 support:               NO
 30625:20151124:180159.055 TLS support:               YES
 30625:20151124:180159.055 ******************************

Pre-Shared Keys verwenden

Die schnellste und einfachste Möglichkeit, eine verschlüsselte Verbindung zwischen zwei Zabbix-Komponenten herzustellen, ist die Verwendung von sogenannten vorher vereinbarten Schlüsseln (Pre-Shared Keys) oder kurz PSK bezeichnet. Ein auf PSK-basierendes Verschlüsselungsverfahren, bei denen die Schlüssel vor der Kommunikation beiden Teilnehmern bekannt sein müssen, ist ein symmetrische Verfahren. PSK-Verschlüsselung hat den Vorteil, dass sie zwischen zwei bekannten Teilnehmern wesentlich einfacher zu realisieren ist als asymmetrische Verschlüsselung basierend auf einem Public-Key-Verfahren. Ob der Schlüsselaustausch symmetrisch oder asymmetrisch erfolgt, hat keine Auswirkung auf die Stärke oder Sicherheit der Verschlüsselung.

Im Zabbix-Server müssen Sie für jeden Agenten oder Proxy einen eigenen Schlüssel hinterlegen. Die Verwendung eines zentralen Schlüssels ist nicht möglich. Das Hinterlegen von Pre-Shared-Keys in einem User-Makro ist in der Version Zabbix 3.0 ebenfalls nicht möglich. Selbstverständlich können Sie für mehrere Komponenten denselben Key eintragen.

Neben dem Pre-Shared-Key müssen Sie für jeden Schlüssel einen Schlüsselbezeichner (TLSPSKIdentity) vergeben. Schlüssel und Bezeichner bilden ein Paar. Nur wenn Server und Agent oder Proxy dasselbe Paar verwenden, kommt die Verbindung zustande.

Legen Sie einen zufälligen PSK-Key an:

openssl rand -hex 48 -out /etc/zabbix/key.psk
chown zabbix:zabbix /etc/zabbix/key.psk
chmod 0400 /etc/zabbix/key.psk

Tragen Sie in der Konfiguration des Agenten oder Proxys folgende Optionen ein:

TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=Key1
TLSPSKFile=/etc/zabbix/key.psk

Übertragen Sie nun den Inhalt der Datei /etc/zabbix/key.psk beispielsweise über die Zwischenablage in das Webfrontend des Zabbix-Servers. Im Reiter „Encyption|PSK“ aktivieren Sie die Verschlüsselung für einen Host oder Proxy.

Aktivierung der Verschlüsselung

Wenn Sie „No encryption“ und „PSK“ aktivieren, versucht der Zabbix-Server zuerst eine verschlüsselte Verbindung herzustellen. Scheitert dies, wird eine unverschlüsselte Verbding verwendet, sofern der Agent oder Proxy dies erlaubt.

Sie legen sowohl im Server als auch auf Agent und Proxy fest, ob und welche Verschlüsselung erlaubt oder erforderlich ist. Dazu finden Sie den folgenden Block in der Konfigurationsdatei vom Zabbix-Agent oder -Proxy:

### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS is used
# Default:
TLSAccept=unencrypted
Wenn eine unverschlüsselte Verbindung zustande kommt, findet auch keine Authentifizierung statt.
Kontrolle über den Status der Verschlüsselung
Wenn Sie auf dem Zabbix-Server oder dem Agenten nur verschlüsselte Verbindungen akzeptieren, müssen auch die Kommandozeilenwerkzeuge zabbix_sender und zabbix_get verschlüsselt Daten abrufen oder senden. Ab Version 3 verfügen beide Tools über Parameter zur Angabe des Pre-Shared Keys und der TLSPSKIdentity.

Zertifikate verwenden

Die mitgelieferte Standard-Konfiguration des Zabbix-Agenten ist so gut wie selbsterklärend. Das Einrichten einer eigenen Zertifikatsstelle und die Verwaltung von SSL-Zertifikaten ist kein zabbix-spezifisches Thema. Deshalb sei an dieser Stelle auf die zahlreichen Anleitungen und Tutorials im Internet verwiesen, beispielsweise auf das OpenSSL PKI Tutorial v1.1