Seite wählen

NETWAYS Blog

Icinga Web 2 trifft Guacamole

In meinem heutigen Blogpost geht es um Guacamole in Icinga Web 2 und die Frage, wie Guacamole in Icinga Web 2 implementiert werden kann. Aber was sind eigentlich Guacamole und Icinga Web 2?

Introducing Icinga Web 2

Icinga ist eine Open Source Verfügbarkeits-Monitoring Plattform, mit der man Server, Netzwerke und Applikationen überwachen kann. Hier bietet Icinga Web 2 eine Weboberfläche für Icinga, mit der man eine grafische Übersicht der Monitoring-Umgebung hat. Icinga Web 2 bietet anhand von Modulen weitere Funktionalitäten. Mit dem Director-Modul etwa kann man Hosts, Services und weitere Icinga-Objekte sowie die Konfiguration bearbeiten und pflegen.

Hallo Guacamole

Administratoren verwenden häufig mehrere Arten von Anwendungen, um sich mit Servern/Computern Remote zu verbinden. Hier bietet Guacamole einen einfachen Weg, denn Apache Guacamole ist eine Open Source Anwendung, die mehrere Standardprotokolle für den Fernzugriff (wie SSH, VNC und RDP) unterstützt. Und dies über einen Webbrowser, ganz ohne zusätzliche Tools oder Erweiterungen.

Umsetzung

Beim Überwachen von Systemen kommt es immer wieder vor, dass man sich auf den Systemen einloggen muss, um etwas zu fixen oder zu ändern. Klassischer Fall: Ein Dienst läuft plötzlich nicht mehr oder eine Änderung muss in einer Konfigurations-Datei oder den Firewall-Regeln eingesetzt werden. Diese wird je nach System mit verschiedenen Protokollen realisiert, etwa SSH für Linux-Systeme oder RDP für Windows Systeme. Im Folgenden werde ich Dir zeigen, dass man mithilfe von Guacamole einen Remote-Zugriff auf Linux und Windows Systeme in Icinga Web 2 erhalten kann. Und das mit nur einem Klick auf einen Link in Deinem Webbrowser!

Installation

Ich werde nicht auf detaillierte Installationsschritte von Icinga 2 bzw. Icinga Web 2 und Guacamole eingehen, da es hier hauptsächlich um die Implementation von Guacamole in Icinga Web 2 geht.

Für die Installation von Guacamole gibt es zwei Möglichkeiten: die native Installation mit dem Quellcode oder die Installation mit Docker. Hier habe ich die offizielle Dokumentation von Guacamole benutzt. Für die Installation von Icinga 2 und Icinga Web 2 empfehle ich Dir die docker-compose, die unser Icinga Team entwickelt hat.

Connection Konfiguration in Guacamole

Guacamole liest alle Benutzer und Verbindungen aus einer einzigen Datei namens user-mapping.xml. In dieser Datei werden die Benutzer definiert, die auf das Guacamole-Webinterface zugreifen dürfen. Außerdem die Server, zu denen eine Verbindung hergestellt werden soll und die Verbindungsmethode. Unten sieht man, wie diese Datei konfiguriert werden soll:

<user-mapping>
    # Benutzer Administrator
    <authorize username="admin" password="strongpass">

        # RDP-Remotedesktop-Verbindung für Windows-System
        <connection name="Windows-Host">
                <protocol>rdp</protocol>
                <param name="hostname">10.77.14.114</param >      => FQDN oder IP des Zielhost
                <param name="port">3389</param>                   => Port, Standard ist 3389
                <param name="username">user</param>               => Benutzername
                <param name="password">strongpass</param>         => Password für den Benutzer
                <param name="domain">TEST-VM</param>              => Domäne des Benutzer, ggf. Hostname des Ziels
                <param name="disable-audio">true</param>          => Audio-Übertragung deaktivieren
                <param name="server-layout">de-de-qwertz</param>  => mit deutscher Tastatur verbinden
                <param name="security">any</param>                => Wie die Daten verschlüsselt werden sollen
                <param name="ignore-cert">true</param>            => Alle Zertifikate akzeptieren
        </connection>

        # SSH-Verbindung für Linux-System
        <connection name="Linux-Host">
                <protocol>ssh</protocol>
                <param name="hostname">10.77.14.10</param>      
                <param name="port">22</param>                     
                <param name="username">user</param>             
                <param name="password">strongpass</param>        
        </connection>
    </authorize>
</user-mapping>

 

Nachdem die Konfiguration angepasst wurde, muss der Guacamole-Dienst neu gestartet werden. Zunächst loggen wir uns im Browser auf dem Guacamole Webinterface an. Unten sieht man die beiden Systemen, die konfiguriert wurden. Wenn Du auf einen von beiden System klickst, landest Du Remote auf dem System. Die URL, die im Browser angezeigt wird, ist die URL des jeweiligen Systems. Dieses wird später für den Eintrag von beiden Systemen auf Icinga Web 2 für den Remote-Zugriff benötigt.

Konfiguration in Icinga Web 2

Nachdem Icinga Web 2 installiert wurde, loggen wir uns in Icinga Web 2 ein. Für den Eintrag der Guacamole-URLs wird die Shared Navigation Option unter den icingaadmin-Enstellungen genutzt. Hier wird ein Name für die Navigation eingegeben, als Type kann man Service oder Host Actions auswählen (und so konfigurieren, wo die Navigation angezeigt werden soll). Ins Target Feld kann die Darstellungsart des Remote-Fensters gesetzt werden und in der Url wird die Guacamole-URL der Remote-Systeme eingetragen, die wir im Guacamole-Webinterface haben.

Nachdem Du für die URL eine Navigation definiert hast, siehst Du diese unter Overview > Hosts > Actions. Hier kannst Du mit einem Klick auf die Systeme Remote zugreifen.

Windows-Host

Linux-Host

Zusammenfassung

Guacamole bietet Dir eine große Flexibilität im Vergleich zu anderen Tools, da hier keine Client-Installation nötig ist und nur mit URLs gearbeitet wird, die man in verschiedenen Anwendungen einsetzen kann. Ich habe Dir hier eine Basis-Konfiguration für die Verbindung gezeigt. Es gibt zudem die Möglichkeit, diese mit z.B. SSH-Keys und weiteren Methoden zu verschlüsseln und dadurch eine sichere Verbindung für den Remote-Zugriff zu bauen.

Momentan können die URL-Eintragungen in Icinga Web 2 nur über Shared Navigation erfolgen, somit ist eine URL-Zuordnung zum jeweiligen System nicht möglich. Das kann trotzdem für relevante Systeme wie das Icinga-Master-System vorteilhaft sein.

Dieses Thema wird mich weiterhin beschäftigen und vielleicht zeige ich Euch in meinem nächsten Blogartikel dann die Lösung. 😉

Saeid Hassan-Abadi
Saeid Hassan-Abadi
Systems Engineer

Saeid hat im Juli 2022 seine Ausbildung als Fachinformatiker für Systemintegration bei uns abgeschloßen, und arbeitet nun in Operation-Team. Der gebürtige Perser hat in seinem Heimatland Iran Wirtschaftsindustrie-Ingenieurwesen studiert. Er arbeitet leidenschaftlich gerne am Computer und eignet sich gerne neues Wissen an. Seine Hobbys sind Musik hören, Sport treiben und mit seinen Freunden Zeit verbringen.

Multitab Remoteverbindungs-Manager

mRemote
Als ich letztens temp. von Linux auf Windows umstellen musste, waren die ersten Tage als Administrator doch sehr mühsam. Immer wieder das Putty auf machen, RDP vorbereiten und Co. Dazu fehlte mir die gewohnte Tab-Umgebung einer einfachen Linux Shell und deren Struktur zur Ordnung der ganzen Verbindungen. Nach ein paar Tagen hat mich das ganze dann so gestört, dass ich mich nach Alternativen umgeschaut habe. Denn das muss doch auch unter Windows irgendwie einfach unter einen Hut zu bekommen sein – und am besten auch kostenlos.
Fündig wurde ich dann bei einem eigentlich sehr alten Tool, welches sich mRemote nennt. Es bietet Windows Usern auf einer Open-Source Basis die Möglichkeit, gleich eine ganze Fülle von Verbindungsarten zentral zu Verwalten und zu Steuern. In der letzten freien Version werden folgende Protokolle unterstützt : RDP, VNC, ICA, SSH, Telnet, HTTP/S, Rlogin und Raw. Zus. bietet es auch einen integrierten Dateitransfer über SCP/SFTP an – also an sich eine Verbindung vieler Aufgaben in einem Programm.
Sehr zu erwähnen ist die Art und Weise, mit der man die ganzen Verbindungen Ordnen kann. Es gibt z.B. die Möglichkeit Verbindungen zu einer bestimmten Gruppe zusammenzufassen und diese dann in einem eigenen Sub-Tab zu betreiben. Diese wiederum kann man sogar an verschiedene Bereiche eines Bildschirms docken oder auf mehrere Monitore auftrennen und jederzeit frei verschieben. Experimentell kann man sogar die ganzen Verbindungen in einer Datenbank speichern um so die Verwaltung noch zu vereinfachen.
Die Erwähnung als ‚letzte freie Version‘ bezieht sich auf eine Zusammenlegung von mRemote mit dem Remote Desktop von visionapp. Neuer Features und Funktionen werden dann seit 2009 in einer kommerziellen Lösung weiter betrieben. Für Administrator, welche fest unter Windows arbeiten sicher ein nicht ganz unnützliches Tool. Und die Lizenzkosten halten sich auch auf einem sehr niedrigen Niveau.