Checkmk: Shell-Zugriff im Dashboard
So richtet Ihr eine Shell, samt Rechten für OMD, direkt im Checkmk-Dashboard ein.
Checkmk läuft komplett im Browser, aber mal ehrlich, ab und an wird doch der Terminal angeworfen. Klar kann man sich mal eben auf den Server SSHen, aber warum den Browser verlassen? Ein Webserver läuft ja eh, also kann man auch gleich eine Shell per PHP aufsetzen.
PHP Shell und Dashboard
Zunächst zum Dashboard: Über das Dashlet Custom URL lassen sich wunderbar Views oder einzelne Graphen aus dem Monitoring auf Übersichtsseiten übernehmen. Auch externe Webseiten oder -dienste können darüber verwendet werden, allerdings machen das Webseiten-Richtlinien und Sicherheitsmechanismen in Browsern schwierig bis unmöglich. Aber interne URLs vom selben Server sind problemlos möglich.
PHP Shell ist, mit eigenen Worten, "eine Shell verpackt in einem PHP-Skript," vor allem zum Warten von Webseiten gedacht. Die Shell bietet nicht denselben Komfort wie ein normales Terminal-Fenster, vor allem, da sie nicht interaktiv ist. Aber selbst sudo-/Admin-Rechte lassen sich nutzen, um beispielsweise per OMD Checkmk-Instanzen zu steuern.
Wer einen echten Ersatz für eine SSH-Verbindung sucht, könnte sich zum Beispiel shellinabox anschauen, das einen eigenen Server beinhaltet - was die Integration in Checkmk aber eben wieder erschwert.
Im Folgenden seht Ihr die nötigen Schritte, um OMD im Dashboard nutzen zu können: PHP Shell aufsetzen, OMD-Rechte konfigurieren, Dashlet einstellen und ins Dashboard einfügen.
1. PHP Shell aufsetzen
Das Open-Source-Programm ist erfreulich simpel gehalten: Ihr müsst einfach das heruntergeladene Archiv in den Dokumenten-Root-Ordner des Webservers entpacken - unter Debian, Ubuntu und vielen anderen Systemen mit Apache-Webserver ist das standardmäßig /var/www/html. Es genügt also (beispielhaft):
cd /var/www/html
sudo tar -xzf /home/mirco/Downloads/phpshell-2.6.tar.gz
Anschließend könnt Ihr im Browser die Login-Seite aufrufen, also beispielsweise 192.168.178.101/phpshell-2.6/phpshell.php. Wenn diese Seite kommt, ist alles in Ordnung.
Einloggen könnt Ihr Euch noch nicht, da es kein Standard-Login gibt. Einen User erstellt Ihr über 192.168.178.101/phpshell-2.6/pwhash.php. Der Name sagt es schon: Das Passwort wird über das Skript pwhash.php verschlüsselt und dann als Hash in der Konfigurationsdatei config.php gespeichert, die trotz ihres Namens eine reine INI-Datei ist.
Nun könnt Ihr Euch einloggen und Befehle eingeben. Jetzt geht es an die Rechte: Die Shell läuft über den Webserver-User, unter Debian zum Beispiel www-data - und der hat freilich keine Root-Rechte und ist auch kein Sudoer. Benutzer per su zu wechseln ist auch nicht drin, da nicht interaktiv.
Also werden www-data über die sudoers-Datei schlicht Zugriffsrechte ohne Passworteingabe für OMD eingeräumt:
sudo visudo
öffnet die Datei im Standardeditor; fügt dann folgende Zeile hinzu:
www-data ALL=(ALL) NOPASSWD: /usr/bin/omd
Anschließend lassen sich Befehle wie sudo omd status in der PHP-Shell nutzen.
2. Dashboard konfigurieren
Die Konfiguration, hier unter Checkmk 2.0, ist ebenfalls straight forward:
- Dashboard aufrufen/erstellen: Customize/Dashboards
- Dashlet hinzufügen: Add/Custom URL
- URL festlegen: 192.168.178.101/phpshell-2.6/phpshell.php
- Eigener Frame: Option Render in iframe aktivieren
Nun habt Ihr Shell-Zugriff im Dashboard - zum Starten eigener Skripte genügt das allemal.
Achtung: Was hier außen vor bleibt ist natürlich der Aspekt Sicherheit, nicht in jedem Szenario ist diese Variante einer Shell oder der Rechtevergabe angebracht! Allerdings lässt sich PHP Shell auch via SSH nutzen.