Die Situation ist wie folgt: der Zabbix Server in Version 3.0.4 läuft zum monitoren im LAN das per dynamischer IP-Adresse an das WAN angebunden ist.
Ziel soll es sein, einen Server im Internet / WAN, der eine öffentliche IP-Adresse besitzt, als Host zum überwachen aufzunehmen.
Beide Systeme laufen unter Debian Jessie.
Das Problem ist die dynamsiche IP-Adresse des Netzwerkes in dem sich der Zabbix Server befindet. Dadurch kann der Zabbix Agent auf dem Server im Internet den Zabbix Server nicht per Hostnamen auflösen oder per IP-Adresse permanent erreichen und verifizieren. Ein Host XY denied tritt ein. Lösungen sind nun eine VPN-Verbindung oder aber das was ich gleich beschreiben werden, eine permanente SSH-Verbindung mittels autossh.
AutoSSH ist ein Tool das es ermöglicht eine SSH Verbindung permanent und automatisch (SSH-Tunnel) mit einem Remotehost aufzubauen, bzw. seit Version 1.3 einen Port des Remotehosts lokal anzusprechen. Damit kann das Terminal geschlossen werden, wobei die SSH Sitzung bestehen bleibt. Dies kann man z.B. nutzen um den Zabbix Agent auf einem Host anzusprechen, wo es ansonsten nicht gehen würde. Mehr Infos und das Tool unter: http://www.harding.motd.ca/autossh/
Vorbereitung
Wie bereits erwähnt geht es hier in erster Linie um die Verwendung des Tools AutoSSH und da es nicht zum Umfang der Installation unter Debian gehört, muss es installiert werden. Die Installation erfolgt in diesem Szenario auf dem Zabbix Server.
AutoSSH als Paket installieren
OS | Install method |
---|---|
Debian / Ubuntu | $ sudo apt-get install autossh |
CentOS / Fedora / RHEL | $ sudo yum install autossh |
ArchLinux | $ sudo pacman -S autossh |
FreeBSD | # pkg install autossh or # cd /usr/ports/security/autossh/ && make install clean |
OSX | $ brew install autossh |
AutoSSH vom Source
# wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
# gunzip -c autossh-1.4e.tgz | tar xvf –
# cd autossh-1.4e
# ./configure
# make
# make install
AutoSSH Parameter
# autossh [-V] [-M monitor_port[:port]] [-f] [-o] [SSH-Options]
- V = zeigt die Version an z.B. autossh 1.4d
- M = Monitoring Port der für die Aufrechterhaltung der Verbindung genutzt wird, eigentlihc sind es 2 Ports, der angegebene und der Echo-Port, beide sollten unbenutzt und offen sein, Bsp: -M 2000, an diesem werden Pakete gesendet, auf dem 20001 (port+1) wird auf die Antwort gewartet, es kann auch der Default Port 7 als Echoport für inetd echo service genutzt werden
- f = stellt sicher das der SSH Tunnel im Hintergrund als Prozess läuft und das Terminal geschlossen werden kann ohne die Verbindung zu verlieren
- SSH-Options = z.B. Angabe des Remotehost
- o = ExitOnForwardFailure=yes, ist bei einem Port Forward sinnvoll, damit im Falle einer Verbindungsunterbrechung durch autossh, der selbe Port wieder verwendet wird, da die Unterbrechung ansonsten vom Client als noch bentutzt angesehen wird
- weitere Infos unter # man autossh
AutoSSH Monitoring Port
Wie bereits beschrieben wird der Monitoring Port von autossh zum aufrechterhalten der Verbindung genutzt, was nicht all zu schwer einzurichten ist. Da ich kein Freund von unnötigt offenen Ports bin und diese hier dazu zählen, greife ich lieber auf die Methode mittels „ServerAliveInterval“ und „ServerAliveCountMax“ zurück.
- ServerAliveInterval = Sekunden die der Client wartet bevor er ein Null-Paket zum Server sendet damit die Verbindung aufrecht erhalten bleibt (Default: 30)
- ServerAliveCountMax = Anzahl der Server Alive Nachrichten die der Client sendet, ohne eine Antwort vom Server zu erhalten, wenn das Limit erreicht wurde, wird ssh die Verbindung trennen und die Sessione beenden (Default: 3)
Damit diese Methode funktioniert muss der Monitoring-Port auf 0 = deaktiviert werden.
AutoSSH Verbindung herstellen
Bevor autossh verwendet wird, sollte sicher gestellt werden, dass die grundsätzliche Verbindung mittels SSH funktioniert. Da ich hier autossh mittels Zertifikat (public/private key) nutzen werde, sollte dieses bereits erstellt und entsprechend mittels SSH funktionieren. Eine Anleitung gibt es hier http://taste-of-it.de/debian-ssh-tunnel-mittels-zertifikat-und-ohne-passwort-authentifizieren/.
Die Verbindung vom Zabbix Server zum Zabbix Agent sieht nun wie folgt aus, wobei ich den Default Port 10050 des Agents auf dem Server mit dem ungenutzten Port 10550 verbinde:
# autossh -fM 0 -o ServerAliveInterval 30 -o ServerAliveCountMax 3 -L 10550:localhost:10050 root@zabbix-agent-server-hostname
AutoSSH Verwalten
Da autossh ein Script ist, wir es als Prozess laufen und kann dementsprechend auch behandelt werden.
AutoSSH Verbindung kontrollieren
Auf dem Zabbix Server, also dort wo die AutoSSH Verbindung läuft, ausführen:
# ps aux rep autossh
root 17692 0.0 0.1 4232 1328 ? Ss 13:52 0:00 /usr/lib/autossh/autossh -M 0 -o ServerAliveInterval 30 -o ServerAliveCountMax 3 -L 10550:localhost:10050 root@zabbix-agent-server
AutoSSH Verbindung beenden
Dementsprechend kann der Prozess wie jeder andere auch beendet werden:
# kill -9 17692
AutoSSH mittels config Datei
AutoSSH ist neben dem obigen Befehl auch im Stande über eine Konfigurationsdatei zu arbeiten. Wenn man mehrere dieser SSH-Tunnel aufbaut kann diese Art ganz hilfreich und vor allem übersichtlich sein.
- # vim ~/.ssh/config
- mit folgendem Inhalt
Host ZAName
HostName zabbix-agent-server
User root
Port 22
IdentityFile ~/.ssh/id_rsa-zabbix@server
LocalForward 10055 localhost:10050
ServerAliveInterval 30
ServerAliveCountMax 3
- mit folgendem Inhalt
Der Aufruf erfolgt nun wie folgt:
# autossh -M 0 -f -T -N ZAName
Zabbix Host mit AutoSSH Agent konfigurieren
Hier das, beste, es ist nichts anderes wie mit allen anderen Hosts im LAN siehe hier: http://taste-of-it.de/zabbix-3-neuen-host-hinzufuegen/
Thats it !
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.
Pingback:Zabbix Ssh Login – LoginManual.com