Zabbix SSH-Tunnel verwenden

In vielen Situation sind Routing und Firewallregeln so, wie man sie gerade braucht. Man möchte einen Host per Zabbix überwachen, aber der Zabbix-Server kann den Zabbix-Agenten nicht per Netzwerk erreichen.

Oder Sie möchten eine Gruppe von Hosts per passivem Zabbix-Proxy überwachen, doch der Proxy hat keine feste IP.

In diesen Fällen können SSH-Tunnel helfen.

Wenn ein Zabbix-Agent oder ein Zabbix-Proxy den Zabbix-Server erreichen kann, dann kann er per SSH einen sogenannten "reverse tunnel" aufbauen. Der SSH Client baut eine Verbindung zum Server auf und öffnet dort einen Port, der alle Verbindungen an diesen Port an einen Port auf den Client weiterleitet.

Unter Linux/Unix

SSH Beispiel

Führen Sie folgende Kommando auf einem Host aus, auf welchem auf Port 10050 der Zabbix-Agent lauscht.

zabbix-client:~# ssh -R10550:127.0.0.1:10050 root@zabbix-server.tld

Schauen Sie dann auf dem Zabbix-Server nach, ob sich dort der Port 10550 geöffnet hat.

zabbix-server:~# netstat -ln|grep 10550
tcp        0      0 127.0.0.1:10550         0.0.0.0:*               LISTEN

Wir haben mit SSH einen rückwärtigen Tunnel aufgebaut, der den lokalen Port 10050 des Clients an den Port 10550 des Servers weiterleitet.

Für den dauerhaften und produktiven Einsatz taugt dieser Tunnel aber nicht, denn wir haben im Terminal ein Login auf dem entfernten Host. Schließen wir das Terminal, ist der Tunnel weg. Und startet der Server neu, wird der Tunnnel auch nicht automatisch aufgebaut.

autossh

Damit SSH-Tunnel dauerhaft und automatisch gestartet werden, gibt es das Programm autossh.

Den Tunnel für den Zabbix-Agenten aus dem oben genannten Beispiel können wir mit autossh wie folgt aufbauen

autossh -2 -fN -M20016 -R10550:127.0.0.1:10050 root@zabbix-server.tld

Der Tunnel wird dann im Hintergrund und ohne Login gestartet. Autossh beobachtet ständig, ob der Tunnel noch verfügbar ist und baut ihn ggf. wieder neu auf.

  • Die Option "-2" veranlasst autossh nur Verbindungen über SSH Protokollversion 2 aufzubauen.
  • Die Option "-f" schickt autossh sofort in einen Hintergrundprozess. Das bedeutet, es erfolgt keine Ausgabe im Terminal. Dies setzt voraus, dass SSH-Keys zur Authentifizierung hinterlegt wurden, denn autossh kann keine Passworteingabe verarbeiten.
  • Die Option "-M" gibt den sogenannten Monitoringport an. Über diesen Port sendet der Client Testdaten an den Server, um den Tunnel permanent zu testen. Geben Sie einen beliebigen ungenutzten Port als Monitoringport an.
Fügen Sie das autossh-Kommando in die Datei /etc/rc.local ein, damit die SSH-Tunnel nach dem Neustart des Systems automatisch aufgebaut werden.

SSH Tunnel unter Microsoft Windows

plink

Putty, der kostenlose SSH Client für Windows, bringt ein Programm plink.exe mit, welches zum Aufbauen von SSH-Tunneln unter Windows genutzt werden kann.

Den Tunnel aus dem ersten Beispiel bauen Sie unter Windows wie folgt auf:

plink.exe -R 10555:127.0.0.1:10050 -l root zabbix-server.tld

Auch hier bleibt ein Terminal mit einem Login zurück. Beim Schließen der Eingabeaufforderung ist der Tunnel weg.

SSH Tunnel Client

Die Funktion von autossh kann unter Windows das Programm SSH Tunnel Client erfüllen. Für den nicht kommerziellen Einsatz ist das Programm kostenlos. Download

Der Download von SSH Tunnel Client enthält bereits plink.exe.

SSH Tunnel Client kann die Tunnel sofort beim Start von Windows aufbauen und "abgerissene" Tunnel wieder herstellen.

Das Weiterleiten des lokalen Ports 10050 an den Port 10550 des Servers konfigurieren Sie wie folgt.

SSH Tunnel sind auch unter Windows möglich.
Sowohl plink als auch SSH Tunnel Client erwarten die SSH Schlüssel Datei (Private Key) zum Authentifizieren ohne Passwort im Putty-Format. Dateien die mit Openssh erzeugt wurden, müssen mit den Programm puttygen.exe konvertiert werden.
SSH Tunnel Client zeigt immer an, dass die Verbindung erfolgreich aufgebaut wurde, auch wenn dies nicht der Fall ist, zum Beispiel weil der private Schlüssel falsch ist. Schauen Sie während des Verbindungsaufbaus vorsichtshalber auf dem Server in die Datei /var/log/auth.log. Dort erkennen Sie zuverlässig, ob die Verbindung aufgebaut wurde, oder nicht.