Website-Icon RDR-IT

Guacamole: Verwalten Sie den Zugriff auf Ihre IT-Umgebung

In diesem Tutorial erkläre ich, wie man Guacamole unter Ubuntu installiert, den Zugriff auf Geräte konfiguriert und verwendet.

Bevor ich mich mit der Technik befasse, werde ich Ihnen zunächst Apache Guacamole vorstellen und insbesondere, warum Sie es implementieren sollten.

Was ist Guacamole?

Nein, ich werde in diesem Tutorial nicht über das Avocadosauce-Rezept sprechen. Genauer gesagt werden wir über Apache Guacamole sprechen, eine clientlose Remote-Desktop-Gateway-Lösung.

Um Ihnen eine einfache Vorstellung von Apache Guacamole zu geben: Es handelt sich um eine kostenlose Open-Source-Lösung, mit der Sie den Fernzugriff über ein Webportal auf verschiedenen Geräten einrichten können.

Zum Zeitpunkt der Erstellung dieses Tutorials werden die folgenden Protokolle unterstützt:

Über das Webportal ist es möglich, mehrere Benutzer und Verbindungen zu verwalten, sie in Gruppen zu gruppieren, Zugriffsbeschränkungen (Zeitplan, Anzahl der Verbindungen usw.) zu konfigurieren und die Sitzungen auf Video aufzuzeichnen.

Guacamole wird oft als eine Lösung dargestellt, die man „zu Hause“ nutzt, um mit einem Browser auf den Computer zugreifen zu können…

Ich werde mich auf den professionellen Einsatz konzentrieren, um eine „Bastion“-/PAM-Lösung (Privileged Access Management) zu implementieren.

Verwendung von Guacamole im professionellen Umfeld

Was mich hier interessiert, ist, warum und wie man Guacamole im professionellen Umfeld einsetzt, um den Zugang zu Anbietern zu verwalten und diese abzusichern.

Viele Unternehmen stehen heute vor dem Problem, Dienstleister zu verwalten und ihnen vor allem Zugriff auf ein möglichst sicheres Informationssystem zu ermöglichen.

Die Lösung ist Bastion, eine Softwarelösung für den Fernzugriff, die dies verwaltet, indem sie Konten verwaltet, deren Zugriff einschränkt und verschiedene Sicherheitsebenen hinzufügt.

Das Problem bei Bastionslösungen sind ihre Kosten, die schnell zu einem echten Hindernis für ihre Einführung werden können.

Ohne eine starke Lösung tun Unternehmen weiterhin, was sie können, und „unterwerfen“ sich häufig den Arbeitsmethoden der Dienstleister:

Guacamole wird es uns ermöglichen, diese Probleme teilweise anzugehen:

Wie Guacamole funktioniert

Ich werde hier nicht im Detail auf die Funktionsweise von Guacamole eingehen. Hier ist ein Diagramm, das Ihnen helfen soll, sich ein Bild zu machen:

Apache Guacamole besteht aus zwei Hauptbestandteilen:

Jetzt werden wir sehen, wie man Guacamole installiert.

Guacamole: Installation

Für dieses Tutorial habe ich eine Neuinstallation von Ubuntu Server 20.04 verwendet.

In diesem Tutorial verknüpfen wir Guacamole mit MySQL, um Benutzerkonten und Verbindungen zu verwalten.

Zunächst installieren wir die verschiedenen Voraussetzungen auf dem Server.

Da Guacamole kompiliert werden muss, müssen Sie make installieren.

sudo apt install make -y

Standardmäßig ist make nicht auf der Ubuntu Server 20.04-Version installiert

Jetzt installieren wir die Voraussetzungen mit dem folgenden Befehl:

sudo apt install gcc g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libssl-dev libvorbis-dev libwebp-dev libpango1.0-dev libwebsockets-dev libpulse-dev -y

Wenn Sie weitere Informationen zu den Voraussetzungen wünschen, wird hier alles erklärt: Chapter 2. Installing Guacamole natively (apache.org)

Guacamole-Server installieren

Wir werden nun die erste Guacamole-Serverkomponente installieren.

Zum Zeitpunkt der Erstellung dieses Tutorials ist die verfügbare Version von Guacamole 1.3.0

Laden Sie das Archiv auf den Server hoch:

wget https://downloads.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz

Entpacken Sie das Archiv:

tar xzf guacamole-server-1.3.0.tar.gz

Gehen Sie in den Ordner, der gerade entpackt wurde:

cd guacamole-server-1.3.0/

Wir prüfen nun mithilfe von configure, ob alle notwendigen Abhängigkeiten auf dem Server installiert sind:

sudo ./configure --with-init-dir=/etc/init.d

Weitere Hilfe erhalten Sie mit dem folgenden Befehl: ./configure –help

Wenn alles in Ordnung ist, sollten Sie alle Protokolle auf Ja setzen.

Jetzt werden wir den Guacamole-Server kompilieren und anschließend installieren.

Zusammenstellung:

sudo make

Einrichtung :

sudo make install

Führen Sie nun den Befehl ldconfig aus, um die verschiedenen Verknüpfungen mit den Bibliotheken zu erstellen.

sudo ldconfig

Aktivieren Sie den Dienst:

sudo systemctl enable guacd

Starten Sie den guacd-Dienst:

sudo systemctl start guacd

Servicestatus prüfen (optional):

systemctl status guacd

Der Serverteil von Guacamole ist betriebsbereit.

Installation des Guacamole-Clients

Der Client, der die HTML5-Schnittstelle bereitstellt und Tomcat benötigt.

Installieren Sie Tomcat auf dem Server mit dem folgenden Befehl:

sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y

Überprüfen Sie, ob der Tomcat-Server funktioniert:

systemctl status tomcat9 

Erstellen Sie einen Ordner, in dem wir die Konfiguration und den Client speichern:

sudo mkdir /etc/guacamole

Jetzt laden wir den Client herunter und speichern ihn in dem Ordner, den wir gerade erstellt haben:

sudo wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war -O /etc/guacamole/guacamole.war

Sie müssen einen symbolischen Link zu Tomcat9 WebApps erstellen, um „die Nutzung des Clients zu aktivieren“.

sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat9/webapps/

Damit die Anwendung vollständig bereitgestellt werden kann, müssen Sie die Dienste neu starten:

sudo systemctl restart tomcat9
sudo systemctl restart guacd

Von dort aus sollte das Authentifizierungsfenster erscheinen und Sie gehen zur URL: http://IP_SERVER:8080/guacamole

Guacamole-Server|Client: Konfiguration

Nachdem die Hauptdienste nun installiert sind, müssen Sie alles konfigurieren, damit sie zusammenarbeiten.

Erstellen Sie die Ordner „extensions“ und „lib“ im Ordner /etc/guacamole:

sudo mkdir /etc/guacamole/{extensions,lib}

Fügen Sie eine Umgebungsvariable hinzu:

Lösung 1:

sudo echo "GUACAMOLE_HOME=/etc/guacamole"  /etc/default/tomcat9

Lösung 2:

echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/default/tomcat

Lösung 3:

Öffnen Sie die Datei /etc/default/tomcat9 mit nano und fügen Sie die Variable hinzu:

 sudo nano /etc/default/tomcat9

Fügen Sie am Ende der Datei Folgendes hinzu:

GUACAMOLE_HOME=/etc/guacamole

Von hier aus erklären die meisten Tutorials in einer Grundkonfiguration, wie man den Client mit dem Server konfiguriert und wie man eine Zuordnungsdatei verwaltet. Zur Erinnerung habe ich in der Einleitung erklärt, dass wir MySQL/MariaDB verwenden werden

Installieren Sie MariaDB oder MySQL auf dem Server:

sudo apt install mariadb-server mariadb-client

Wir müssen nun einen Benutzer und die Datenbank erstellen. Wir beginnen mit der Verbindung zum Datenbankserver:

sudo mysql

Führen Sie die folgenden Anfragen aus, um zumindest das Passwort zu ändern:

CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'P@$sW0rd';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
FLUSH PRIVILEGES;
quit;

Laden Sie die MySQL-Erweiterung für Guacamole herunter:

wget http://apache.mirror.digionline.de/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz

Entpacken Sie das Archiv:

tar -vfx guacamole-auth-jdbc-1.3.0.tar.gz

Fügen Sie der erstellten Datenbank die erforderlichen Tabellen hinzu:

cat guacamole-auth-jdbc-1.3.0/mysql/schema/*.sql | sudo mysql guacamole_db

Installation der Erweiterung:

sudo cp guacamole-auth-jdbc-1.3.0/mysql/guacamole-auth-jdbc-mysql-1.3.0.jar /etc/guacamole/extensions/

Laden Sie den JDBC-Treiber herunter:

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.13.tar.gz

Entpacken Sie das Archiv:

tar xvzf mysql-connector-java-8.0.13.tar.gz

Installieren (kopieren) Sie den Treiber für Guacamole:

sudo cp mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar /etc/guacamole/lib/

Wir können nun mit der Konfiguration des Clients für die Verwendung der Datenbank fortfahren.

Erstellen Sie die Konfigurationsdatei:

sudo nano /etc/guacamole/guacamole.properties

Fügen Sie die folgende Konfiguration hinzu und passen Sie sie an Ihre Umgebung an (mysql-):

# Hostname and Guacamole server port
guacd-hostname: localhost
guacd-port: 4822

# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: P@$sW0rd

Die Konfiguration ist abgeschlossen. Verknüpfen Sie den Konfigurationsordner mit Tomcat:

sudo ln -s /etc/guacamole /usr/share/tomcat9/.guacamole

Dienste neu starten:

sudo systemctl restart tomcat9
sudo systemctl restart guacd

Optional: Erstellen Sie im Ordner /var einen Guacamole-Ordner zum Speichern von Videoaufzeichnungen

sudo mkdir /var/guacamole

Die grundlegende Installation und Konfiguration ist abgeschlossen. Jetzt erfahren Sie, wie Sie Guacamole verwenden.

Verwendung von Guacamole

Um über einen Webbrowser auf Guacamole zuzugreifen, rufen Sie zur Erinnerung die Adresse auf: http://IP_SERVER:8080/guacamole

Die Standardkennungen sind: guacadmin:guacadmin

Sobald die Verbindung hergestellt ist, gelangen Sie zu einer Seite, auf der normalerweise die zuletzt verwendeten Verbindungen und die Verbindungen angezeigt werden, die der Benutzer verwenden kann.

Um auf die Guacamole-Konfiguration zuzugreifen, klicken Sie auf den Benutzernamen 1, um das Menü zu erweitern, und klicken Sie auf Einstellungen 2.

Zu Beginn erkläre ich Ihnen die Verwendung von Guacamole auf logische Weise und zeige Ihnen nicht direkt die Verwendung.

Zur Erinnerung: Das Ziel besteht darin, Zugang zu externen Dienstleistern zu ermöglichen, daher werde ich meine Gruppen auf dieses Thema ausrichten.

Erstellen Sie eine Verbindungsgruppe

Das erste, was wir sehen werden, ist die Erstellung einer Verbindungsgruppe.

Gehen Sie im Navigationsmenü auf Verbindung 1.

Im Moment ist diese Ansicht leer, später finden wir alle konfigurierten Verbindungen sowie die verschiedenen Gruppen.

Das Ziel besteht nun darin, eine Baumstruktur zu erstellen, um die Dienstanbieterverbindungen zu organisieren.

Was ich Ihnen hier zeige, dient als Beispiel, es steht Ihnen dann frei, es an Ihre Bedürfnisse anzupassen.

Ich werde zunächst eine Anbietergruppe erstellen, in der ich dann Untergruppen erstellen werde, die einen Anbieter darstellen.

Klicken Sie auf die Schaltfläche Neue Gruppe 1.

Nommer le groupe 1, Location laisser ROOT 2 et Type laisser Organizational 3. Cliquer sur le bouton Save 4 pour créer le groupe.

Die Gruppe wird erstellt und ist in der Liste der Verbindungen sichtbar. Wenn wir sie aufklappen, sehen wir, dass wir Verbindungen und Untergruppen hinzufügen können. Klicken Sie auf Neue Gruppe 1.

Benennen Sie die Stammgruppe mit 1 (hier der Name des Anbieters mit dem Präfix GC). Das Feld „Standort“ ist bereits ausgewählt und belassen Sie den Typ „Organisatorisch“. Klicken Sie auf Speichern 2.

Die Gruppe wird hinzugefügt.

Zur Veranschaulichung des Tutorials habe ich eine zweite Gruppe von Verbindungen hinzugefügt, um mehrere Anbieter zu simulieren.

Erstellen Sie eine Benutzergruppe

Benutzergruppen ermöglichen die Gruppierung von Benutzerkonten in einer Gruppe, um einfacher auf ihre Daten zuzugreifen, anstatt Benutzer für Benutzer zu verwalten.

Gehen Sie zum Menü Gruppe 1 und klicken Sie auf Neue Gruppe 2.

Benennen Sie die Gruppe 1, überprüfen Sie die mit dem Dienstanbieter verknüpften Verbindungsgruppen 2 und klicken Sie auf Speichern 3.

Eine Überprüfung der übergeordneten Gruppen ist unbedingt erforderlich, andernfalls ist kein Zugriff auf die Verbindungen möglich.

In der Konfiguration einer Gruppe ist es möglich, Guacamole administrative Rechte hinzuzufügen.

Die Gruppe wird hinzugefügt.

Ich habe auch eine zweite Gruppe hinzugefügt.

Fügen Sie eine neue Verbindung hinzu

Bevor Sie erklären, wie eine Verbindung hinzugefügt wird, müssen Sie sich eine Verbindung als Zugriff auf Geräte mit einer bestimmten Konfiguration vorstellen. Daher ist es normal, mehrere Verbindungen mit unterschiedlichen Parametern zum selben Server zu haben, abhängig vom Zugang und den Informationen, die Sie Ihrem Dienstanbieter geben möchten.

Gehen Sie zum Menü Verbindungen 1. Um eine Verbindung hinzuzufügen, klicken Sie auf mehrere Möglichkeiten. Klicken Sie auf die Schaltfläche Neue Verbindung 2 oder auf Neue Verbindung 2, die sich auf Gruppenebene befindet.

Konfigurieren Sie eine RDP-Verbindung

Die erste Verbindung, die wir konfigurieren, ist der RDP-Zugriff auf einen Windows-Server.

Da die Verbindungsparameter zahlreich sind, werde ich sie blockweise betrachten.

Benennen Sie zunächst die Verbindung 1 und wählen Sie das RDP-Protokoll 2 aus.

Das Feld „Standort“ ist bereits ausgewählt, nachdem Sie auf Gruppenebene auf „Neue Verbindung“ geklickt haben

Im Abschnitt CONCURRENCY LIMITS ist es möglich, die Anzahl gleichzeitiger Verbindungen zu begrenzen. Im Kontext einer RDP-Verbindung, bei der die Kennungen übergeben werden, hat dies keine Auswirkungen, da derselbe Benutzer die Verbindung nicht mehrmals öffnen kann. gleiche Sitzung.

Wir überspringen die Teile LOAD BALANCING und GUACAMOLE PROXY PARAMETERS (GUACD), die bei komplexen Installationen mit mehreren Servern konfiguriert werden müssen.

Wir konzentrieren uns nun auf den PARAMETER-Teil. Auch hier werde ich nicht alle verfügbaren Optionen wiederholen, ich lasse Sie sie durchsuchen und Sie werden sehen, dass wir alle Parameter des RDP-Clients (RDS-Gateway) konfigurieren können , Umleitungsperipheriegeräte, Leistung usw.).

Ich werde es auf ein Minimum beschränken und Sie bei Bedarf Ihre eigenen Tests durchführen lassen.

Geben Sie im Abschnitt Netzwerk den Namen oder die IP-Adresse von Host 1 sowie Port 2 (3389) für RDP an.

Im Abschnitt „Authentifizierung“ geben wir direkt das Konto an, das für die Verbindung verwendet werden soll, wodurch die Weitergabe dieser Informationen an den Dienstanbieter vermieden wird. Geben Sie den Benutzernamen 1 und das Passwort 2 ein, wählen Sie „Beliebig“ 3 für das Feld „Sicherheitsmodus“ und aktivieren Sie das Kontrollkästchen „Serverzertifikat ignorieren“ 4.

Das letzte Konfigurationselement, das ich Ihnen zeige, ist die Aufzeichnung der Sitzung im Abschnitt „Bildschirmaufzeichnung“. Geben Sie im Feld Aufnahmepfad 1 den Speicherort an, an dem sie gespeichert werden sollen (/var/guacamole/), und geben Sie dann im Feld Aufnahmename 2 den Namen der Aufnahme an.

Speichern Sie die Verbindung, indem Sie auf die Schaltfläche Speichern 1 klicken.

Die Verbindung wird hinzugefügt und in der Verbindungsgruppe gespeichert.

Konfigurieren Sie eine SSH-Verbindung

Genauso wie bei der SSH-Verbindung beschränke ich mich auf das Minimum, bei den restlichen Parametern lasse ich Sie schauen.

Benennen Sie die Verbindung 1 und wählen Sie das SSH-Protokoll 2 aus.

Geben Sie im Netzwerkteil den Host 1 (IP oder FQDN) ein und geben Sie den Port (22) 2 an.

Geben Sie im Abschnitt „Authentifizierung“ das Benutzer- und Passwortpaar 1 gemäß Ihrer Richtlinie an.

Wie bei einer RDP-Verbindung ist es im Abschnitt „Bildschirmaufzeichnung“ möglich, die Videoaufzeichnung der Verbindungssitzung zu konfigurieren.

Zum Abschluss klicken Sie auf Speichern 1.

La connexion SSH est ajouté et dans le groupe.


Für das Tutorial habe ich auch Verbindungen zum zweiten Anbieter hinzugefügt, diesmal jedoch ohne Angabe der Identifikatoren.

Bearbeiten Sie eine Verbindung

Um eine bestehende Verbindung zu ändern, klicken Sie einfach darauf, Sie gelangen dann zum gleichen Formular wie beim Hinzufügen einer Verbindung. Nachdem Sie die Änderungen vorgenommen haben, klicken Sie auf Speichern.

Weisen Sie Verbindungen Gruppen zu

Dieser Vorgang ist erforderlich, damit Benutzer auf Verbindungen zugreifen können.

Diese Manipulation hat mich verrückt gemacht, weil die Vererbung nicht automatisch erfolgt

Kehren Sie zur Benutzergruppenverwaltung 1 zurück und klicken Sie dann auf die Gruppe, die Sie bearbeiten möchten 2.

Überprüfen Sie im Abschnitt Verbindungen 1 die zuvor erstellten Verbindungen 2 und klicken Sie auf Speichern 3.

Einen Benutzer (Anbieter) hinzufügen

Jetzt erfahren Sie, wie Sie einen Benutzer hinzufügen und ihn direkt einer Gruppe zuweisen.

Gehen Sie zur Benutzerverwaltung 1 und klicken Sie auf die Schaltfläche Neuer Benutzer 2.

Was die anderen Elemente betrifft, werde ich mich auf die erforderlichen Felder konzentrieren.

Geben Sie die Kontokennung 1 und das Passwort 2 (x2) ein, überprüfen Sie im Abschnitt GRUPPEN die Gruppe(n), zu der der Benutzer 3 gehört, und klicken Sie auf Speichern 4 .

Der Benutzer wird hinzugefügt.

Wiederholen Sie die Vorgänge für die anderen Konten und Dienstanbieter.

Verbindung/Nutzung mit einem Dienstanbieterkonto

Nachdem wir nun alles konfiguriert haben, müssen wir nur noch unsere „Bastion“-Lösung testen.

Melden Sie sich mit einem Dienstanbieterkonto an:

Wenn für das Konto nur eine Verbindung konfiguriert werden muss, wird diese direkt hergestellt.

Wir gelangen auf eine Seite, auf der wir die letzten Verbindungen sehen können (derzeit leer) und darunter die Liste der verfügbaren Verbindungen.

Erweitern Sie die Verbindungen und klicken Sie auf eine Verbindung, um eine Verbindung herzustellen (ich beginne mit der RDP-Verbindung).

Warten Sie, während die Verbindung zum Server hergestellt wird…

Die Verbindung wird in RDP auf dem Server aufgebaut, ohne dass eine Kennung angegeben werden muss.

Tipp: Während einer Sitzung ist es möglich, über ein „verstecktes“ Menü zwischen mehreren Verbindungen zu navigieren oder zur Startseite zurückzukehren, nutzen Sie die Tastenkombination Strg+Alt+Umschalt, um es anzuzeigen.

Für die SSH-Verbindung ist es ähnlich:


Zurück auf der Startseite des Benutzerkontos sehen wir dieses Mal die zuletzt verwendeten Verbindungen.


Wenn mehrere Sitzungen gleichzeitig geöffnet sind, ist ein schneller Wechsel durch einen Klick unten links auf dem Bildschirm möglich.

Verfolgen Sie die Sitzungen

Der Vorteil der Implementierung einer Bastion-Lösung besteht auch darin, die Sitzungen zu verfolgen. Guacamole bietet uns zwei Lösungen.

Aktuelle Sitzungen

Es ist möglich, aktuelle Sitzungen von der Verwaltung aus zu überwachen, indem Sie zum Menü „Aktive Sitzungen“ gehen.

In dieser Ansicht können Sie aktuelle Verbindungen mit der Option zum Abmelden sehen und das Beste: Sie können live verfolgen und interagieren, indem Sie auf den Verbindungsnamen klicken.

Nachfolgend finden Sie eine Aufnahme mit Live-Überwachung einer Verbindung:

Sitzungsverlauf

Der Sitzungsverlauf ist an mehreren Stellen verfügbar:

Die Anmeldevideos

Wenn Sie die Sitzungsaufzeichnung aktiviert haben, erkläre ich Ihnen, wie Sie diese verwenden.

Zur Erinnerung: Die Speicherung wurde im Ordner /var/guacamole konfiguriert.

So sehen die Dateien aus:

Standardmäßig können die Dateien nicht verwendet werden, sie müssen mit dem folgenden Befehl in eine Videodatei umgewandelt werden:

guacenc -s 1280x720 -r 20000000 -f file-name

Nach der Konvertierung haben wir eine Datei im m4v-Format.

Für 10 Minuten habe ich eine 40 MB große Datei

Sie müssen nur noch die Datei herunterladen und mit einem VLC-Player ansehen.

Abschluss

Sie wissen jetzt, wie Sie mit Guacamole eine kostenlose Bastion-/PAM-Lösung einrichten. Dies ist eine gute Lösung, um mit der Sicherung des Zugriffs zu beginnen, wenn keine Lösung vorhanden ist, und ermöglicht es Ihnen, den Bedarf wirklich einzuschätzen, bevor Sie eine kostenpflichtige Lösung erwerben.

In diesem Tutorial habe ich mich auf den Anbieterzugriff konzentriert, aber es ist auch möglich, ihn für alle Administratoren zu verwenden, um den IS zu verwalten und die Verwendung von VPN, Remotedesktop-Gateway usw. zu vermeiden.

Durch die Einrichtung eines doppelten Authentifizierungssystems ist es möglich, das Sicherheitsniveau einfach und kostenlos zu erhöhen.

Vor der externen Bereitstellung empfehle ich Ihnen dringend, einen Apache2- oder Nginx-Reverse-Proxy auf dem Server zu konfigurieren, um Guacamole über das HTTPS-Protokoll zu veröffentlichen.

Die mobile Version verlassen