Wie man ein Remotedesktop-Gateway über Apache Guacamole unter AlmaLinux 9 erstellt

Apache Guacamole ist ein kostenloses und quelloffenes Remote-Desktop-Gateway, mit dem du dich aus der Ferne über verschiedene Protokolle wie SSH, RDP und VNC mit deinem Computer/Server verbinden kannst. Apache Guacamole wird von der Apache Software Foundation verwaltet und steht unter der Apache License 2.0.

Apache Guacamole ist ein clientloses Remote-Desktop-Gateway. Du kannst auf Apache Guacamole nur mit einem Webbrowser zugreifen, und zwar von überall und zu jeder Zeit. Der Einsatz von Apache Guacamole empfiehlt sich, wenn du mehrere entfernte Betriebssysteme mit unterschiedlichen Protokollen verwendest, z. B. Windows mit RDP, Linux-Systeme mit VNC und SSH.

In dieser Anleitung führen wir dich durch die Installation von Apache Guacamole als Remote Desktop Gateway auf einem AlmaLinux 9 Rechner. Du installierst Apache Guacamole mit dem MariaDB-Datenbankserver, Nginx als Reverse Proxy und sicherst die Installation mit SSL von Letsencrypt.

Voraussetzungen

Bevor du beginnst, musst du sicherstellen, dass du Folgendes hast:

  • Einen AlmaLinux 9 Server – Diese Demo verwendet einen AlmaLinux Rechner mit dem Hostnamen guacamole-alma9.
  • Einen Nicht-Root-Benutzer, der sudo-Rechte hat.
  • Ein Domainname, der auf die IP-Adresse des Servers zeigt.

Einrichten der Repositories

Der erste Schritt, den du tun musst, ist, zusätzliche Repositories auf deinem AlmaLinux Server einzurichten. Du musst das EPEL-Repository hinzufügen und das CRB (Code Ready Builder)-Repository aktivieren, das die PowerTools auf RHEL 8 ersetzt.

Führe den folgenden dnf-Befehl aus, um einige grundlegende Abhängigkeiten und das EPEL-Repository auf deinem System zu installieren. Gib y ein, um die Installation zu bestätigen, und drücke dann ENTER.

sudo dnf install wget nano epel-release dnf-utils

grundlegende Abhängigkeiten installieren

Führe nun den folgenden Befehl aus, um das AlmaLinux CRB (Code Ready Builder) Repository zu aktivieren. In RHEL 8 heißt dieses Repository PowerTools und seit RHEL 9 wurde der Name in CRB geändert.

sudo dnf config-manager --set-enabled crb

Als Nächstes führst du den folgenden Befehl aus, um das RPMFusion-Repository zu deinem AlmaLinux-System hinzuzufügen. Dieses Repository enthält das Paket ffmpeg-devel, das von Apache Guacamole benötigt wird.

sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm

Gib y ein, um die Installation zu bestätigen und drücke ENTER, um fortzufahren.

CRB-Repository aktivieren und RPMFusion installieren

Installieren der Abhängigkeiten

Nachdem du die Repositories zu deinem System hinzugefügt hast, kannst du nun die Paketabhängigkeiten für Apache Guacamole installieren. Du wirst die folgenden Pakete installieren:

  • Grundlegende Abhängigkeiten zum Kompilieren und Installieren von guacd.
  • Java und Apache Tomcat für den Betrieb der Apache Guacamole Webanwendung, die auf Java basiert.
  • MariaDB-Datenbankserver, der zur Benutzerauthentifizierung für Apache Guacamole verwendet wird.
  • Nginx-Webserver als Reverse für die Apache Guacamole-Webanwendung.
  • Certbot zur Sicherung des Zugriffs auf Apache Guacamole.

Installation der Abhängigkeiten für die Kompilierung von guacd

Führe den folgenden dnf-Befehl aus, um die Paketabhängigkeiten zu installieren, die für die Kompilierung von guacd benötigt werden. Gib y ein, um die Installation zu bestätigen und drücke ENTER.

sudo dnf install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel libtool libuuid-devel uuid-devel make cmake ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel compat-openssl11 libvorbis-devel libwebp-devel libgcrypt-devel

Installieren von Abhängigkeiten

Gib außerdem y ein, um den GPG-Schlüssel von RPMFusion und dem EPEL-Repository hinzuzufügen.

gpg-Schlüssel akzeptieren

Installation von Java und Apache Tomcat

Führe nun den folgenden Befehl aus, um Java 11 und Apache Tomcat 9 auf deinem AlmaLinux Server zu installieren. Beide Paketversionen werden von Apache Guacamole unterstützt, du kannst also beide Pakete aus dem AlmaLinux Appstream Repository installieren.

sudo dnf install java-11-openjdk-devel tomcat

Gib y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER.

java und apache tomcat installieren

Nachdem Java und Apache Tomcat installiert sind, führe den folgenden Java-Befehl aus, um die Java-Version zu überprüfen. Du solltest sehen, dass Java OpenJDK 11 auf deinem System installiert ist.

java --version

Java-Version überprüfen

Führe nun den folgenden systemctl-Befehl aus, um den Tomcat-Dienst zu starten und zu aktivieren.

sudo systemctl start tomcat
sudo systemctl enable tomcat

Überprüfe dann den Tomcat-Dienst, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status tomcat

Wenn der Tomcat-Server läuft, sollte die Ausgabe aktiv (running) sein.

den Katerstatus überprüfen

Installation von MariaDB Server

Apache Guacamole unterstützt mehrere Authentifizierungsmethoden, darunter Datenbankauthentifizierung, LDAP-Authentifizierung, Radius, SAML und OpenID. In dieser Demo wirst du die Datenbankauthentifizierung über den MariaDB-Server für Apache Guacamole verwenden.

Gib den folgenden dnf-Befehl ein, um den MariaDB-Server zu installieren. Wenn du dazu aufgefordert wirst, gibst du zur Bestätigung y ein und drückst ENTER.

sudo dnf install mariadb-server

mariadb installieren

Als Nächstes führst du den folgenden Befehl aus, um den Dienst mariadb zu starten und zu aktivieren.

sudo systemctl start mariadb
sudo systemctl enable mariadb

Überprüfe dann den mariadb-Dienst, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status mariadb

Die Ausgabe sollte aktiv (running) sein, wenn der Status von mariadb running ist.

verifiziere mariadb

Installation von Nginx und Certbot

Jetzt installierst du Nginx, das als Reverse Proxy für die Apache Guacamole-Client-Anwendung verwendet wird, und Certbot, das SSL-Zertifikate generiert und Apache Guacamole sichert.

Führe den folgenden dnf-Befehl aus, um Nginx und Certbot auf deinem System zu installieren.

sudo dnf install nginx certbot python3-certbot-nginx

Gib y ein, um die Installation zu bestätigen und drücke ENTER.

nginx certbot installieren

Sobald die Installation abgeschlossen ist, führe den Befehl systemctl aus, um den Nginx-Dienst zu starten und zu aktivieren.

sudo systemctl start nginx
sudo systemctl enable nginx

Überprüfe dann den Nginx-Dienst, um sicherzustellen, dass der Dienst läuft.

sudo systemctl status nginx

Die Ausgabe active (running) zeigt an, dass Nginx läuft.

start enable verify nginx

Firewalld konfigurieren

Wenn die Paketabhängigkeiten installiert sind, richtest du im nächsten Schritt die Firewalld ein und öffnest die HTTP- und HTTPS-Protokolle.

Führe den folgenden Befehl aus, um HTTP- und HTTPS-Protokolle auf deinem AlmaLinux-Server zu öffnen. Lade dann die Firewalld neu, um die Änderungen zu übernehmen.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Führe nun den Befehl firewall-cmd aus, um die Liste der aktivierten Regeln in firewalld zu überprüfen.

sudo firewall-cmd --list-all

Im Abschnitt „Protokolle“ sollten sowohl HTTP- als auch HTTPS-Protokolle aktiviert sein.

Einrichten der MariaDB-Datenbank

Im folgenden Abschnitt wirst du deine MariaDB-Serverinstallation mit dem Dienstprogramm mariadb-secure-installation sichern und dann eine neue MariaDB-Datenbank und einen neuen Benutzer für Apache Guacamole erstellen.

Zunächst sicherst du den MariaDB-Server mit dem Dienstprogramm mariadb-secure-installation. Führe es aus, um deine MariaDB Serverinstallation zu sichern.

sudo mariadb-secure-installation

Gib während des Prozesses y ein, um die Konfiguration zu übernehmen, oder n für no. Im Folgenden findest du einige MariaDB-Konfigurationen, die du einrichten wirst:

  • Die MariaDB Root-Authentifizierung auf unix_socket umstellen? Gib n ein.
  • MariaDB Root-Passwort einrichten? Gib y ein, gib dann ein neues Passwort ein und wiederhole den Vorgang.
  • Remote-Anmeldung für den Root-Benutzer deaktivieren? Gib y ein.
  • Standard-Datenbanktest entfernen? Gib erneut y ein.
  • Anonymen Standardbenutzer entfernen? Gib zur Bestätigung y ein.
  • Tabellenberechtigungen neu laden, um die Änderungen zu übernehmen? Gib y ein.

Melde dich als Nächstes mit dem unten stehenden Befehl mariadb client als Benutzer root am MariaDB-Server an. Wenn du zur Eingabe des Passworts aufgefordert wirst, gibst du das MariaDB-Root-Passwort ein oder drückst ENTER.

sudo mariadb -u root -p

Sobald du eingeloggt bist, führe die folgenden Abfragen aus, um eine neue Datenbank und einen neuen Benutzer für Apache Guacamole zu erstellen. In dieser Demo erstellst du eine neue Datenbank guacamoledb, den Benutzer guacamole und das Passwort GuacamolePassword.

CREATE DATABASE guacamoledb;
CREATE USER 'guacamole'@'localhost' IDENTIFIED BY 'GuacamolePassword';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamoledb.* TO 'guacamole'@'localhost';
FLUSH PRIVILEGES;

Datenbank und Benutzer anlegen

Als Nächstes führst du die folgende Abfrage aus, um die Berechtigungen des Benutzers guacamole zu überprüfen.

SHOW GRANTS FOR 'guacamole'@'localhost';
quit

Stelle sicher, dass der Benutzer guacamole SELECT, INSERT, UPDATE und DELETE in der Datenbank guacamoledb ausführen kann.

Benutzerprivilegien anzeigen

Installation von Apache Guacamole Server

Der Apache Guacamole besteht aus zwei Komponenten:

  • guacd: Ein beliebiges Remote-Desktop-Protokoll, das sich mit RDP, SSH, VNC und anderen verbinden kann.
  • Guacamole Webanwendung: Java-Servlet-Container, der das Front-End von Apache Guacamole darstellt und innerhalb von Apache Tomcat ausgeführt werden kann.

Führe die folgenden Schritte aus, um sowohl guacd als auch die Guacamole Java Servlet-Anwendung zu installieren.

Kompilieren und Installieren von guacd

Verschiebe das Arbeitsverzeichnis nach /usr/src und lade den Quellcode des Apache Guacamole Servers mit wget herunter.

cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.5.2/source/guacamole-server-1.5.2.tar.gz

Nach dem Herunterladen entpackst du die Datei guacamole-server-1.5.2.tar.gz und solltest das neue Verzeichnis guacamole-server-1.5.2 erhalten. Wechsle mit cd dorthin.

tar -xf guacamole-server-1.5.2.tar.gz
cd guacamole-server-*/

Führe nun den folgenden Befehl aus, um die Installation zu konfigurieren. In dieser Demo verwendest du einen zusätzlichen Parameter –with-systemd-dir=, der automatisch eine neue Dienstdatei guacd erstellt.

./configure --with-systemd-dir=/etc/systemd/system/

Installation konfigurieren

Wenn der Konfigurationsprozess abgeschlossen ist, stelle sicher, dass alles den Status yes für den Bibliotheksstatus, die Protokollunterstützung und die Dienste/Werkzeuge hat.

Konfigurationsmodule

Als nächstes führst du den folgenden Befehl aus, um den Apache Guacamole Server guacd zu kompilieren und zu installieren.

sudo make && sudo make install

guacd kompilieren und installieren

Sobald die Installation abgeschlossen ist, führe den folgenden Befehl aus, um den Datenbank-Cache für die Systembibliotheken neu zu laden.

sudo ldconfig

Erstelle dann ein neues Konfigurationsverzeichnis /etc/guacamole und erstelle die guacd-Konfiguration /etc/guacamole/guacd.conf mit dem Editor nano.

sudo mkdir -p /etc/guacamole/
sudo nano /etc/guacamole/guacd.conf

Füge die folgende Konfiguration ein, um den guacd-Dienst auf localhost mit Port 4822 auszuführen.

[server]
bind_host = 127.0.0.1
bind_port = 4822

Speichere und beende die Datei, wenn du fertig bist.

Als Nächstes führst du den Befehl systemctl aus, um den systemd Manager neu zu laden.

sudo systemctl daemon-reload

Starte und aktiviere dann den Apache Guacamole guacd Dienst mit dem unten stehenden Befehl.

sudo systemctl start guacd
sudo systemctl enable guacd

start enable guacd

Zum Schluss führst du den folgenden Befehl aus, um den guacd-Dienst zu überprüfen und sicherzustellen, dass er läuft.

sudo systemctl status guacd

Nach erfolgreicher Installation solltest du eine Ausgabe des guacd-Dienstes mit dem Status aktiv (läuft) erhalten.

Überprüfe den Guacd-Service

Außerdem kannst du den guacd-Dienst auch überprüfen, indem du den Port 4822 auf deinem System sicherstellst.

ss -tulpn | grep 4822

Die Ausgabe sollte zeigen, dass der guacd-Dienst auf localhost mit Port 4822 läuft.

guacd port prüfen

Installation der Apache Guacamole Webanwendung

Nach der Installation von guacd installierst du nun die Apache Guacamole-Webanwendung, die eine Java-Servlet-Anwendung ist.

Die Apache Guacamole-Webanwendung kann manuell installiert werden, indem du sie aus dem Quellcode kompilierst oder sie über das .war-Paket installierst. In dieser Demo wirst du die Apache Guacamole-Webanwendung über die .war-Datei installieren.

Wechsle in das Verzeichnis /usr/src und lade die Apache Guacamole-Webanwendung mit dem Befehl wget herunter.

cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.5.2/binary/guacamole-1.5.2.war

Nach dem Download kopierst du die heruntergeladene Datei guacamole-1.5.2.war mit dem folgenden Befehl in das Apache Tomcat Webapps-Verzeichnis /var/lib/tomcat/webapps. Damit kannst du die Apache Guacamole-Webanwendung über die Pfad-URL /guacamole aufrufen.

sudo cp guacamole-1.5.2.war /var/lib/tomcat/webapps/guacamole.war

Starte nun den Tomcat-Dienst mit dem unten stehenden Befehl neu, um die Änderungen zu übernehmen.

sudo systemctl restart tomcat

Apache Guacamole mit MariaDB-Authentifizierung konfigurieren

Führe zunächst den folgenden Befehl aus, um neue zusätzliche Verzeichnisse extensions und lib innerhalb des Verzeichnisses /etc/guacamole/ anzulegen. Anschließend erstellst du eine neue Umgebungsvariable GUACAMOLE_HOME in der Apache Tomcat-Konfiguration /etc/sysconfig/tomcat.

sudo mkdir -p /etc/guacamole/{extensions,lib}
echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/sysconfig/tomcat

Wechsle nun in das Verzeichnis /usr/src und lade die Guacamole-Datenbankerweiterung mit dem unten stehenden wget-Befehl herunter.

cd /usr/src
wget https://downloads.apache.org/guacamole/1.5.2/binary/guacamole-auth-jdbc-1.5.2.tar.gz

Nach dem Download entpackst du die Datei guacamole-auth-jdbc-1.5.2.tar.gz mit dem Befehl tar. Verschiebe dann die Guacamole-Datenbankerweiterung in das Verzeichnis /etc/guacamole/extensions/.

tar -xf guacamole-auth-jdbc-1.5.2.tar.gz
sudo mv guacamole-auth-jdbc-1.5.2/mysql/guacamole-auth-jdbc-mysql-1.5.2.jar /etc/guacamole/extensions/

Wechsle dann in das Verzeichnis guacamole-auth-jdbc-1.5.2/mysql/schema und importiere das Apache Guacamole Datenbankschema in die Datenbank guacamoledb.

cd guacamole-auth-jdbc-1.5.2/mysql/schema
cat *.sql | mariadb -u root -p guacamoledb

Gib das Passwort deines MariaDB-Root-Benutzers ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER.

Wechsle nun wieder in das Verzeichnis /usr/src und lade den MySQL-Konnektor für die Java-Anwendung über wget herunter.

cd /usr/src
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.33.tar.gz

Nach dem Download entpackst du die Datei mysql-connector-j-8.0.33.tar.gz und verschiebst den MySQL-Java-Connector in das Verzeichnis /etc/guacamole/lib/.

tar -xf mysql-connector-j-8.0.33.tar.gz
sudo mv mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /etc/guacamole/lib/

Erstelle nun mit dem nano-Editor eine neue Apache Guacamole-Konfiguration /etc/guacamole/guacamole.properties.

sudo nano /etc/guacamole/guacamole.properties

Füge die Details des MariaDB-Datenbankbenutzers und das Passwort für deine Apache Guacamole-Installation ein.

# MySQL properties
mysql-hostname: localhost
mysql-database: guacamoledb
mysql-username: guacamole
mysql-password: GuacamolePassword

Speichere und schließe die Datei, wenn du fertig bist.

Zum Schluss führst du den Befehl systemctl aus, um den Tomcat-Dienst neu zu starten und die Änderungen in der Apache Guacamole-Webanwendung zu übernehmen.

sudo systemctl restart tomcat

Du hast erfolgreich erreicht, dass Apache Guacamole mit der MariaDB-Authentifizierung läuft. Der guacd-Dienst läuft auf localhost mit Port 4822, und die Apache Guacamole-Webanwendung läuft innerhalb des Apache Tomcat und ist über den URL-Pfad /guacamole erreichbar.

Nginx als Reverse Proxy konfigurieren

Im folgenden Abschnitt wirst du Nginx als Reverse Proxy für Apache Guacamole einrichten. Außerdem sicherst du deine Installation, indem du HTTPS mit Letsencrypt implementierst.

Öffne die Apache Tomcat-Konfiguration /etc/tomcat/server.xml mit dem folgenden nano-Editor-Befehl.

sudo nano /etc/tomcat/server.xml

Füge im Abschnitt `<Host name=“localhost“ appBase=“webapps“` eine neue Konfiguration hinzu, um den Reverse Proxy für Apache Tomcat zu aktivieren.

<Host name="localhost"  appBase="webapps"
    unpackWARs="true" autoDeploy="true">

<Valve className=“org.apache.catalina.valves.RemoteIpValve“
internalProxies=“127.0.0.1″
remoteIpHeader=“x-forwarded-for“
remoteIpProxiesHeader=“x-forwarded-by“
protocolHeader=“x-forwarded-proto“ />

Speichere die Datei und beende den Editor.

Führe nun den folgenden Befehl aus, um den Tomcat-Dienst neu zu starten und die Änderungen zu übernehmen.

sudo systemctl restart tomcat

Als nächstes erstellst du mit dem nano-Editor eine neue Nginx-Serverblockkonfiguration /etc/nginx/conf.d/guacamole.conf.

sudo nano /etc/nginx/conf.d/guacamole.conf

Füge die folgende Serverblockkonfiguration ein und achte darauf, den Domainnamen zu ändern.

server {
    listen 80;
    server_name guacamole.hwdomain.io;
access_log /var/log/nginx/guacamole-access.log;
error_log /var/log/nginx/guacamole-error.log;

location / {

proxy_pass http://127.0.0.1:8080/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
access_log off;
}
}

Speichere die Datei und beende den Editor.

Führe nun den folgenden Befehl aus, um sicherzustellen, dass deine Nginx-Konfiguration korrekt ist und starte Nginx neu, um die Änderungen zu übernehmen.

sudo nginx -t
sudo systemctl restart nginx

Wenn du Nginx richtig konfiguriert hast, solltest du die Ausgabe syntax is ok – test is successful erhalten.

nginx Reverse Proxy konfigurieren

Zum Schluss führst du den Befehl certbot aus, um deine Apache Guacamole-Installation mit Letsencrypt zu sichern. Achte darauf, dass du den Domainnamen und die E-Mail-Adresse in diesem Befehl änderst.

sudo certbot --nginx --agree-tos --no-eff-email  --redirect --hsts --staple-ocsp --email alice@hwdomain.io -d guacamole.hwdomain.io

Wenn der Vorgang abgeschlossen ist, kannst du auf Apache Guacamole über eine HTTPS-Verbindung zugreifen. Außerdem ist die automatische Umleitung von HTTP zu HTTPS über Letsencrypt standardmäßig aktiviert.

Zugriff auf Apache Guacamole

Starte deinen Webbrowser und rufe den Domainnamen deiner Apache Guacamole-Installation auf (z. B. https://guacamole. hwdomain.io). Melde dich mit dem Standardbenutzer guacadmin und dem Passwort guacadmin an.

Anmeldung bei Apache Guacamole

Wenn alles reibungslos funktioniert, solltest du das Apache Guacamole Benutzer-Dashboard sehen.

Guacamole-Armaturenbrett

Klicke nun auf das Menü Admin und dann auf Einstellungen. Du wirst eine neue Verbindung zu Apache Guacamole erstellen.

Einstellungen Guacamole

Wähle die Registerkarte Verbindungen und klicke auf die Schaltfläche Eine neue Verbindung erstellen.

neue Verbindung erstellen

Im Bereich VERBINDUNG BEARBEITEN gibst du den Verbindungsnamen ein und wählst das Protokoll aus, mit dem du dich verbinden willst. In dieser Demo wirst du eine neue Verbindung testssh mit dem Protokoll SSH erstellen.

Verbindungsname und Protokoll

Im Abschnitt PARAMETER gibst du die IP-Adresse und den Port des Zielhosts ein und gibst dann den Benutzernamen und das Passwort des Zielhosts ein.

Gastgeber-Details

Scrolle nach unten und klicke zur Bestätigung auf Speichern.

Als Nächstes kehrst du zum Benutzer-Home-Dashboard zurück und solltest sehen, dass die Verbindung testssh erstellt wurde. Klicke auf die Verbindung testssh, um dich mit dem Zielhost zu verbinden.

Verbindung wird erstellt

Wenn die Verbindung erfolgreich war, solltest du wie folgt mit dem Zielhost verbunden sein:

SSH-Zugang über Apache Guacamole

Fazit

Gut gemacht! Du hast Apache Guacamole erfolgreich als Remote Desktop Gateway auf einem AlmaLinux 9 Rechner installiert. Du hast Apache Guacamole mit der Datenbank MariaDB Authentifizierung und Nginx Reverse Proxy installiert. Außerdem hast du den Einsatz über SSL von letsencrypt abgesichert. Jetzt kannst du ganz einfach über die Apache Guacamole Webanwendung auf deine Server oder Desktops zugreifen.

Das könnte dich auch interessieren …