Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_guacamole_archlinux

Apache Guacamole Archlinux

Apache Guacamole ist ein Client-loses Remote-Desktop-Gateway. Es unterstützt Standardprotokolle wie SSH, VNC oder auch RDP. Es wird als clientlos bezeichnet, da keine Plugins oder keine Client-Software erforderlich sind.

Apache Guacamole - Architekturschaubild

* Quelle: Apache Guacamole - Implementation and architecture

Dank HTML5 wird nach der Installation von Apache Guacamole auf einem Server nur noch ein Webbrowser benötigt, um auf einen Server zuzugreifen zu können.

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Vorbereitung

Zur Installation von Apache Guacamole als AUR-Paket, müssen nachfolgende Vorbereitungen durchgeführt werden:

Die Einbindung des AUR-Repositories, kann wie in nachfolgenden internen Link beschrieben

durchgeführt werden.

Voraussetzungen

Als Voraussetzung für die Installation von Apache Guacamole sind folgende Komponenten erforderlich:

Installation

Zur Installation von Apache Guacamole werden nachfolgende Pakete benötigt:

  • guacamole-server - ist im AUR-Repository von ArchLinux - AUR
  • guacamole-client - ist im AUR-Repository von ArchLinux - AUR
  • terminus-font - ist im extra-Repository von ArchLinux - ohne funktioniert die Verwendung von SSH nicht!
  • libvncserver - ist im extra-Repository von ArchLinux

enthalten.

Optional kann auch nachfolgender Client-Connector für Apache Guacamole installiert werden:

  • freerdp - ist im extra-Repository von ArchLinux

enthalten.

Nachfolgende Apache Guacamole-Backend Installationen zur Authentifizierung sollen ebenfalls verwendet und installiert werden:

Installation: guacamole-server

Mit nachfolgendem Befehl, wird das Paket guacamole-server installiert:

# pikaur --noconfirm -S guacamole-server

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalte mit dem Paket guacamole-server installiert wurde.

# pikaur -Qil guacamole-server

Installierte Dateien

Installation: guacamole-client

:!: HINWEIS - Aufgrund aktueller Probleme bei der Installation via pikaur wird hier eine manuelle Installation des AUR-Repository-Paket guacamole-client durchgeführt!
Gitgub | actionless/pikaur The installation of a package does not work, because there may be a problem with systemd DynamicUsers. #621

Mit nachfolgendem Befehl wird ein Verzeichnis erstellt, in dem das AUR-Paket - guacamole-client installiert werden kann

# mkdir /var/cache/makepkg

Anschliessend sollen die Besitzrechte an dem Verzeichnis einem unprivilegiertem Benutzer - hier: klaus übertragen werden, da die spätere Ausführung des Befehls makepg nur durch einen unprivilegierten Benutzer erfolgen kann:

# chown klaus:klaus /var/cache/makepkg

Anschliessend soll wieder zum Benutzer, hier: klaus gewechselt werden, was mit nachfolgendem Befehl durchführt werden kann:

# exit
logout

Als Benutzer, hier: klaus kann nun in das Verzeichnis /var/cache/makepkg gewechselt werden:

$ cd /var/cache/makepkg

Mit nachfolgendem Befehl kann nun das AUR-Repository-Paket guacamole-client heruntergeladen werden:

$ git clone https://aur.archlinux.org/guacamole-client.git
Cloning into 'guacamole-client'...
remote: Enumerating objects: 95, done.
remote: Counting objects: 100% (95/95), done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 95 (delta 21), reused 95 (delta 21), pack-reused 0
Receiving objects: 100% (95/95), 21.66 KiB | 1.80 MiB/s, done.
Resolving deltas: 100% (21/21), done.

Anschliessend muss in das so neu entstandene Verzeichnis /var/cache/makepkg/guacamole-client mit nachfolgendem Befehl gewechselt werden:

$ cd /var/cache/makepkg/guacamole-client

Der nachfolgende Befehl listet den Inhalt des Verzeichnisses /var/cache/makepkg/guacamole-client auf:

$ ls -l
total 12
-rw-r--r-- 1 klaus klaus  495 Nov 17 13:23 guacamole-client.install
-rw-r--r-- 1 klaus klaus   48 Nov 17 13:23 guacamole.properties
-rw-r--r-- 1 klaus klaus 1692 Nov 17 13:23 PKGBUILD

Nachfolgender Befehl erzeugt nun das pacman-Paket, welches später, bewusst mit einem zweiten Befehl installiert werden soll:

:!: WICHTIG - Der verwendete Benutzer, hier: klaus muss das sudo-Recht besitzen!

$ makepkg -cCfs

Kompilierungsverlauf

Das erneute Auflisten des Inhalts des Verzeichnisses /var/cache/makepkg/guacamole-client, sollte nun die erstellten pacman-Pakete enthalten, was mit nachfolgendem Befehl überprüft werden kann:

$ ls -l
total 20400
-rw-r--r-- 1 klaus klaus 13506582 Nov 17 13:27 guacamole-client-1.5.3-1-any.pkg.tar.zst
-rw-r--r-- 1 klaus klaus  7365834 Nov 17 13:25 guacamole-client-1.5.3.tar.gz
-rw-r--r-- 1 klaus klaus      495 Nov 17 13:23 guacamole-client.install
-rw-r--r-- 1 klaus klaus       48 Nov 17 13:23 guacamole.properties
-rw-r--r-- 1 klaus klaus     1692 Nov 17 13:23 PKGBUILD

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Nachfolgemder Befehl führt nun die Installation des soeben erstellten pacman-Pakets durch:

# pacman -U /var/cache/makepkg/guacamole-client/guacamole-client-1.5.3-1-any.pkg.tar.zst

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket guacamole-client installiert wurden:

# pacman -Qil guacamole-client

Installierte Dateien

Installation: terminus-font

Mit nachfolgendem Befehl, werden die Pakete terminus-font installiert:

# pacman --noconfirm -S terminus-font

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalt mit dem Paket terminus-font installiert wurde.

# pacman -Qil terminus-font

Installierte Dateien

Installation: libvncserver

Mit nachfolgendem Befehl, wird das Paket libvncserver installiert:

# pacman --noconfirm -S libvncserver

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalte mit dem Paket libvncserver installiert wurde.

# pacman -Qil libvncserver

Installierte Dateien

guacd.service: Dienst/Deamon-Start einrichten

Um den Verbindungs-Daemon guacdvon Apache Guacamole, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable guacd.service
Created symlink /etc/systemd/system/multi-user.target.wants/guacd.service → /usr/lib/systemd/system/guacd.service.

Eine Überprüfung, ob beim Neustart des Server der guacd.service-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep -e guacd.service
guacd.service                              enabled         disabled

bzw.

# systemctl is-enabled guacd.service
enabled

MariaDB

Falls eine Installation des MariaDB-Datenbank-Servers, wie unter nachfolgendem Link beschrieben durchgeführt wurde

und wie ebenfalls unter nachfolgendem Link, die Sicherheitskonfiguration durchgeführt wurde

sind nachfolgende Konfiguration des MariaDB-Datenbank-Servers erforderlich.

Folgende Schritte sind in diesem Fall durchzuführen mit dem nachfolgend zu erstellenden Skripten durchzuführen:

  • eine Datenbank mit dem Namen guacamole anlegen
  • einen Benutzer mit dem Namen guacamole_user anlegen
  • ein Passwort das WasGeheimes lautet dem Benutzer guacamole_user zuweisen
  • dem Benutzer guacamole_user entsprechende Rechte für die Datenbank guacamole erteilen.

MariaDB: guacamole-auth-jdbc-bin

Mit nachfolgendem Befehl, wird das Paket guacamole-auth-jdbc-bin installiert:

# pikaur --noconfirm -S guacamole-auth-jdbc-bin

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalte mit dem Paket guacamole-auth-jdbc-bin installiert wurde.

# pikaur -Qil guacamole-auth-jdbc-bin

Installierte Dateien

MariaDB: guacamole-auth-jdbc-bin - Datenbank anlegen

Mit nachfolgendem Befehl soll nun eine SQL-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.

SQL-Datei Verwendungszweck
/tmp/create_database_guacamole.sql Erstellung einer Datenbank
# vim /tmp/create_database_guacamole.sql

Die SQL-Datei /tmp/create_database_guacamole.sql soll nachfolgenden Inhalt bekommen:

-- MariaDB-SQL-Script.
-- Create database guacamole
-- (c) Klaus Tachtler 2023.
-- /usr/bin/mariadb -h 127.0.0.1 -u root -p < <script.sql>
 
-- CREATE DATABASE guacamole;
CREATE DATABASE IF NOT EXISTS guacamole DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Abschließend wird mit nachfolgendem Befehl der Inhalt der SQL-Datei im laufendem Betrieb des MariaDB-Datenbank-Servers der Konfiguration des MariaDB-Datenbank-Servers hinzugefügt:

# /usr/bin/mariadb -h 127.0.0.1 -u root -p < /tmp/create_database_guacamole.sql
Enter password:

:!: WICHTIG - Es wird die Kenntnis des Passwortes für den Benutzer root vorausgesetzt!.

Mit nachfolgenden Befehlen kann nun überprüft werden, ob die vorhergehenden Schritte zur Einrichtung einer neuen Datenbank erfolgreich waren.

Nachfolgender Befehl ermöglicht die Anmeldung am MariaDB-Monitor:

# /usr/bin/mariadb -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 11.1.2-MariaDB Arch Linux
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

Nachfolgender Befehl listet den angelegten Remote-Benutzer mit allen Details auf:

MariaDB [(none)]> SHOW databases LIKE 'guacamole';
+----------------------+
| Database (guacamole) |
+----------------------+
| guacamole            |
+----------------------+
1 row in set (0.002 sec)
 
MariaDB [(none)]>

Nachfolgender Befehl beendet den MariaDB-Monitor:

MariaDB [(none)]> quit
Bye

MariaDB: guacamole-auth-jdbc-bin - Benutzer anlegen

Um ein Passwort im verschlüsselten Format für das Passwort-Feld der nachfolgenden SQL-Datei zu erstellen, kann nachfolgender Befehl genutzt werden.

:!: WICHTIG - Es wird die Kenntnis des Passwortes für den Benutzer root vorausgesetzt!.

# echo "SELECT PASSWORD('WasGeheimes');" | /usr/bin/mariadb -h 127.0.0.1 -u root -p
Enter password: 
PASSWORD('WasGeheimes')
*93890A39CF465F5564E165C85D0FC2335AF30CF4

Mit nachfolgendem Befehl soll nun eine SQL-Datei in nachfolgendem Verzeichnis, mit nachfolgendem Namen und nachfolgendem Inhalt erstellt werden.

SQL-Datei Verwendungszweck
/tmp/create_users_for_remote_access_to_database_guacamole.sql Erstellung eines Remote-Benutzers
# vim /tmp/create_users_for_remote_access_to_database_guacamole.sql

Die SQL-Datei /tmp/create_users_for_remote_access_to_database_guacamole.sql soll nachfolgenden Inhalt bekommen:

-- MariaDB-SQL-Script.
-- Create users for remote access to database guacamole. 
-- (c) Klaus Tachtler 2023.
-- /usr/bin/mariadb -h 127.0.0.1 -u root -p < <script.sql>
 
-- Use database.
USE mysql;
 
-- Create new users.
CREATE USER 'guacamole_user'@'10.0.0.100' IDENTIFIED BY PASSWORD '*93890A39CF465F5564E165C85D0FC2335AF30CF4';
CREATE USER 'guacamole_user'@'vml100.idmz.tachtler.net' IDENTIFIED BY PASSWORD '*93890A39CF465F5564E165C85D0FC2335AF30CF4';
 
-- Grant privileges for database guacamole to new users.
GRANT USAGE ON *.* TO 'guacamole_user'@'10.0.0.100' IDENTIFIED BY PASSWORD '*93890A39CF465F5564E165C85D0FC2335AF30CF4';
GRANT SELECT, INSERT, UPDATE, DELETE ON `guacamole`.* TO 'guacamole_user'@'10.0.0.100';
GRANT USAGE ON *.* TO 'guacamole_user'@'vml100.idmz.tachtler.net' IDENTIFIED BY PASSWORD '*93890A39CF465F5564E165C85D0FC2335AF30CF4';
GRANT SELECT, INSERT, UPDATE, DELETE ON `guacamole`.* TO 'guacamole_user'@'vml100.idmz.tachtler.net';
 
-- Make sure that priviliges are reloaded.
FLUSH PRIVILEGES;

Abschliessend wird mit nachfolgendem Befehl der Inhalt der SQL-Datei im laufendem Betrieb des MariaDB-Datenbank-Servers der Konfiguration des MariaDB-Datenbank-Servers hinzugefügt:

# /usr/bin/mariadb -h 127.0.0.1 -u root -p < /tmp/create_users_for_remote_access_to_database_guacamole.sql
Enter password:

Mit nachfolgenden Befehlen kann nun überprüft werden, ob die vorhergehenden Schritte zur Einrichtung eines Remote-Benutzers erfolgreich waren.

Nachfolgender Befehl ermöglicht die Anmeldung am MariaDB-Monitor:

# /usr/bin/mariadb -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 11.1.2-MariaDB Arch Linux
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

Nachfolgender Befehl listet den angelegten Remote-Benutzer mit allen Details auf:

MariaDB [(none)]> SELECT * FROM mysql.user WHERE User = 'guacamole_user';
+--------------------------+----------------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+---------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+---------+--------------+--------------------+
| Host                     | User           | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | Delete_history_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin                | authentication_string                     | password_expired | is_role | default_role | max_statement_time |
+--------------------------+----------------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+---------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+---------+--------------+--------------------+
| 10.0.0.100               | guacamole_user | *93890A39CF465F5564E165C85D0FC2335AF30CF4 | N           | N           | N           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | N          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            | N                      | N                   |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | *93890A39CF465F5564E165C85D0FC2335AF30CF4 | N                | N       |              |           0.000000 |
| vml100.idmz.tachtler.net | guacamole_user | *93890A39CF465F5564E165C85D0FC2335AF30CF4 | N           | N           | N           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | N          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            | N                      | N                   |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | *93890A39CF465F5564E165C85D0FC2335AF30CF4 | N                | N       |              |           0.000000 |
+--------------------------+----------------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+---------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+---------+--------------+--------------------+
2 rows in set (0.005 sec)

Nachfolgende Befehle listen die Rechte des Benutzers guacamole_user für die Datenbank guacamole auf:

MariaDB [(none)]> SHOW GRANTS FOR 'guacamole_user'@'10.0.0.100';
+------------------------------------------------------------------------------------------------------------------------+
| Grants for guacamole_user@10.0.0.100                                                                                   |
+------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `guacamole_user`@`10.0.0.100` IDENTIFIED BY PASSWORD '*93890A39CF465F5564E165C85D0FC2335AF30CF4' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `guacamole`.* TO `guacamole_user`@`10.0.0.100`                                 |
+------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.001 sec)
 
MariaDB [(none)]> SHOW GRANTS FOR 'guacamole_user'@'vml100.idmz.tachtler.net';
+--------------------------------------------------------------------------------------------------------------------------------------+
| Grants for guacamole_user@vml100.idmz.tachtler.net                                                                                   |
+--------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `guacamole_user`@`vml100.idmz.tachtler.net` IDENTIFIED BY PASSWORD '*93890A39CF465F5564E165C85D0FC2335AF30CF4' |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `guacamole`.* TO `guacamole_user`@`vml100.idmz.tachtler.net`                                 |
+--------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.001 sec)
 
MariaDB [(none)]>

Nachfolgender Befehl beendet den MariaDB-Monitor:

MariaDB [(none)]> quit
Bye

MariaDB: guacamole-auth-jdbc-bin - Tabellen anlegen

Um die benötigten Tabellen anlegen zu können, ist es erforderlich die entsprechenden Tabellendefinitionen zu verwenden.

Nachfolgende Dateien sind für die Anlage der Tabellen von Apache Guacamole in der zuvor auf dem Datenbank-Server MariaDB angelegten Datenbank guacamole wichtig:

  • /usr/share/guacamole/sql/mysql/schema/schema/001-create-schema.sql
  • /usr/share/guacamole/sql/mysql/schema/002-create-admin-user.sql

auch die Datei

  • /etc/guacamole/extensions/guacamole-auth-jdbc-mysql-1.5.3.jar

wird später noch zur Einbindung in den Apache Tomcat-Applikationsserver benötigt!

:!: WICHTIG - Zur Ausführung der SQL-Datei kann nachfolgender Befehl genutzt werden, welcher jedoch die Kenntnis des root-Passwort für die Datenbank voraussetzt!:

# /usr/bin/mariadb -h 127.0.0.1 -u root -p guacamole < /usr/share/guacamole/sql/mysql/schema/001-create-schema.sql
Enter password:  
# /usr/bin/mariadb -h 127.0.0.1 -u root -p guacamole < /usr/share/guacamole/sql/mysql/schemaschema/002-create-admin-user.sql
Enter password:

* Das Erscheinen keiner Fehlermeldung, bedeutet die korrekte Ausführung des jeweiligen Befehls!

Mit nachfolgenden Befehlen kann nun überprüft werden, ob die vorhergehenden Schritte zur Einrichtung der neuen Tabellen erfolgreich waren.

Nachfolgender Befehl ermöglicht die Anmeldung am MariaDB-Monitor:

# /usr/bin/mariadb -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 11.1.2-MariaDB Arch Linux
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

Nachfolgender Befehl listet die angelegten Tabellen auf:

MariaDB [(none)]> SHOW TABLES FROM guacamole;
+---------------------------------------+
| Tables_in_guacamole                   |
+---------------------------------------+
| guacamole_connection                  |
| guacamole_connection_attribute        |
| guacamole_connection_group            |
| guacamole_connection_group_attribute  |
| guacamole_connection_group_permission |
| guacamole_connection_history          |
| guacamole_connection_parameter        |
| guacamole_connection_permission       |
| guacamole_entity                      |
| guacamole_sharing_profile             |
| guacamole_sharing_profile_attribute   |
| guacamole_sharing_profile_parameter   |
| guacamole_sharing_profile_permission  |
| guacamole_system_permission           |
| guacamole_user                        |
| guacamole_user_attribute              |
| guacamole_user_group                  |
| guacamole_user_group_attribute        |
| guacamole_user_group_member           |
| guacamole_user_group_permission       |
| guacamole_user_history                |
| guacamole_user_password_history       |
| guacamole_user_permission             |
+---------------------------------------+
23 rows in set (0.001 sec)
 
MariaDB [(none)]>

Nachfolgender Befehl beendet den MariaDB-Monitor:

MariaDB [(none)]> quit
Bye

Apache Tomcat

Bevor die eigentliche Web-Applikation auf dem Apache Tomcat-Applikationsserver „deployed“ werden soll, müssen nachfolgende Rahmenbedingungen für den erfolgreichen Betrieb der Anwendung geschaffen werden.

Apache Tomcat: mysql-connector-java - Installation

Mit nachfolgendem Befehl, wird das Paket mysql-connector-java installiert:

# pikaur --noconfirm -S mysql-connector-java

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalte mit dem Paket mysql-connector-java installiert wurde.

# pikaur -Qil mysql-connector-java

Installierte Dateien

Apache Tomcat: mysql-connector-java.jar

Hier ist nun nachfolgende Datei für die Verbindung von Apache Tomcat zu dem Datenbank-Server MariaDB wichtig:

  • /usr/share/java/mysql-connector-java.jar

und muss in den Apache Tomcat-Applikationsserver wie folgt eingebunden werden:

# ln -s /usr/share/java/mysql-connector-java.jar /usr/share/java/tomcat9/mysql-connector-java.jar

Ob das Verlinken der Datei mysql-connector-java.jar erfolgreich durchgeführt wurde, kann durch Auflistung des Verzeichnisses mit nachfolgenden Befehl überprüft werden:

# ls -l /usr/share/java/tomcat9/mysql-connector-java.jar
lrwxrwxrwx 1 root root 40 Nov 17 20:17 /usr/share/java/tomcat9/mysql-connector-java.jar -> /usr/share/java/mysql-connector-java.jar

Apache Tomcat: /etc/guacamole/extensions

Nachfolgender Hinweis wurde unter anderen Hinweisen bei der Instalaltion von guacamole-auth-jdbc-bin angezeigt:

==> NOTE1: For a clean use of this package, remove the unnecessary jars of unused databases. 
Otherwise, you could see errors in client startup.
==>        For example, if you have MySQL:
==>          rm /etc/guacamole/extensions/guacamole-auth-jdbc-postgresql-VERSION.jar 
                /etc/guacamole/extensions/guacamole-auth-jdbc-sqlserver-VERSION.jar

Mit nachfolgendem Befehl können nun die nicht benötigten Datenbank-JDBC-Konnektoren entfernt werden, in diesem Falls sind das die nachfolgenden, da hier MariaDB zum Einsatz kommt:

# rm /etc/guacamole/extensions/guacamole-auth-jdbc-postgresql-*.jar /etc/guacamole/extensions/guacamole-auth-jdbc-sqlserver-*.jar

Ein Überprüfung, ob das Löschen der nicht benötigten Datenbank-JDBC-Konnektoren erfolgreich war, kann mit nachfolgendem Befehl überprüft werden:

# ls -l /etc/guacamole/extensions
total 10744
-rw-r--r-- 1 root root 10998186 Nov 17 15:23 guacamole-auth-jdbc-mysql-1.5.3.jar

Apache Tomcat: /etc/guacamole/guacamole.properties

Zum Abschluß der Einrichtung von Apache Guacamole und der Verbindung des Apache Tomcat-Applikationsserver zur MariaDB ist noch die Konfigurationsdatei mit dem Namen guacamole.properties im Verzeichnis /etc/guacamole/guacamole.properties mit nachfolgendem Befehl

# vim /etc/guacamole/guacamole.properties

wie folgt zu ergänzen: (Komplette Konfigurationsdatei):

# Tachtler
# default: guacd-hostname: localhost
guacd-hostname: 127.0.0.1
guacd-port:     4822
mysql-hostname: db.idmz.tachtler.net
mysql-database: guacamole
mysql-username: guacamole_user
mysql-password: WasGeheimes
mysql-port: 3306
mysql-driver: mysql
mysql-server-timezone: Europe/Berlin
mysql-default-max-connections-per-user: 0
mysql-default-max-group-connections-per-user: 0
mysql-absolute-max-connections: 0
mysql-user-required: true

zu erstellen.

:!: HINWEIS - Bitte die Anpassung beim Parameter guacd-hostname: 127.0.0.1 beachten!

Apache Tomcat: /usr/share/tomcat9/conf/server.xml

Wenn die Verbindung nicht direkt zum Apache Tomcat-Applikationsserver ermöglicht werden soll, sondern wie nachfolgend noch konfiguriert werden soll, über den Apache HTTP Server, sind nachfolgende Anpassungen noch erfordelrich.

Wenn sich der Apache Tomcat-Applikationsserver hinter einem Reverse-Proxy wie z.B. hier in diesem Fall der Apache HTTP Server befindet, ist die Remote-IP-Adresse des Clients, die er sieht, standardmäßig die des Proxys und nicht die des ursprünglichen Clients. Damit Anwendungen, die innerhalb von Apache Tomcat-Applikationsserver gehostet werden, wie Apache Guacamole, die tatsächliche IP-Adresse des Clients sehen können, muss sowohl den Reverse-Proxy als auch der Apache Tomcat-Applikationsserver konfiguriert werden.

Nachfolgende Anpassungen müssen an der Apache Tomcat-Applikationsserver Konfigurationsdatei:

  • /usr/share/tomcat9/conf/server.xml

durchgeführt werden:

(Nur relevanter Ausschnitt)

        <!-- New for Apache Guacamole -->
        <Valve className="org.apache.catalina.valves.RemoteIpValve"
               internalProxies="127.0.0.1"
               remoteIpHeader="x-forwarded-for"
               remoteIpProxiesHeader="x-forwarded-by"
               protocolHeader="x-forwarded-proto" />
        <Valve className="org.apache.catalina.valves.RemoteIpValve"
               internalProxies="::1"
               remoteIpHeader="x-forwarded-for"
               remoteIpProxiesHeader="x-forwarded-by"
               protocolHeader="x-forwarded-proto" />

*Quelle: Chapter 4. Proxying Guacamole

Apache Tomcat: /var/lib/tomcat9/webapps/guacamole.war

Das Wichtigste zum Schluss, die eigentliche Applikation, welche auf dem Apache Tomcat-Applikationsserver zu „deployen“ ist.

Dazu können die Besitzrechte an dem an der Datei mitgelieferten guacamole-1.5.3.war mit nachfolgendem Befehl entsprechend geändert werden:

# chown tomcat9:tomcat9 -R /usr/share/guacamole/guacamole.war

Jetzt muss nur noch die Web-Anwendung von Apache Guacamole auf den -Server Apache Tomcat-Applikationsserver „deployed“ werden, was durch kopieren der Datei guacamole.war nach /var/lib/tomcat9/webappsmit nachfolgendem Befehl erfolgen kann:

# cp -a /usr/share/guacamole/guacamole.war /var/lib/tomcat9/webapps/guacamole.war

Ob das Kopieren und „deployen“ der Datei guacamole.war erfolgreich durchgeführt wurde , kann durch Auflistung des Verzeichnisses mit nachfolgenden Befehl überprüft werden:

# ls -l /var/lib/tomcat9/webapps/ | grep guacamole
drwxr-xr-x 1 tomcat9 tomcat9      844 Nov 17 18:47 guacamole
-rwxr-xr-x 1 tomcat9 tomcat9 13631907 Nov 17 15:16 guacamole.war

Apache Webserver

Es soll anstelle der mitgelieferten Konfigurationsdatei in nachfolgendem Verzeichnis, mit nachfolgendem Namen:

  • /etc/httpd/conf/vhosts/guacamole.conf

ein virtueller Host im Apache HTTP Server eingerichtet werden.

Siehe dazu auch nachfolgende interne Links:

Apache Webserver: /etc/httpd/conf/vhosts/guacamole.conf

Zusätzlich ist die Einrichtung eines virtuellen Host mit nachfolgender Konfiguration erforderlich. Die Konfigurationsdatei sollte unter nachfolgendem Verzeichnis mit nachfolgendem Namen neu erstellt werden:

# mkdir /etc/httpd/conf/vhost
# vim /etc/httpd/conf/vhost/guacamole.conf

Der Inhalt der so neu erstellten Konfigurationsdatei für den virtuellen Host des Apache HTTPD Webserver könnt in etwa wie folgt aussehen:

(Komplette Konfigurationsdatei)

<VirtualHost *:80>
    ServerAdmin webmaster@tachtler.net
    ServerName guacamole.tachtler.net
    ServerPath /
 
    # ----------------------------------------------------------
    # Rewrite settings
    # Rewrite the requestet URI - PERMANENT - to HTTPS and leave
    # this virtual Host to the HTTPS variant of it.
    # ----------------------------------------------------------
    <IfModule rewrite_module>
        RewriteEngine On
        RewriteCond "%{HTTPS}" "!=on"
        RewriteRule "^(.*)$" "https://%{HTTP_HOST}%{REQUEST_URI}" [R=301,L]
    </IfModule>
 
    # ----------------------------------------------------------
    # Logging settings
    # ----------------------------------------------------------
    <IfModule log_config_module>
        ErrorLog /var/log/httpd/guacamole.tachtler.net_error.log
        SetEnvIF User-Agent "HAProxy" dontlog=yes
        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded=yes
        <IfModule logio_module>
            CustomLog /var/log/httpd/guacamole.tachtler.net_access.log combined_deflate_ssl "expr=(reqenv('forwarded') != 'yes' && reqenv('dontlog') != 'yes')"
            CustomLog /var/log/httpd/guacamole.tachtler.net_access.log combined_deflate_proxypass_ssl "expr=(reqenv('forwarded') == 'yes' && reqenv('dontlog') != 'yes')"
        </IfModule>
    </IfModule>
</VirtualHost>
 
<VirtualHost *:443>
    ServerAdmin webmaster@tachtler.net
    ServerName guacamole.tachtler.net
    ServerPath /
 
    # ----------------------------------------------------------
    # SSL settings
    # ----------------------------------------------------------
    <IfModule ssl_module>
        SSLEngine On
        SSLCertificateFile /etc/letsencrypt/live/tachtler.net/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/tachtler.net/privkey.pem
 
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory "/srv/http/cgi-bin">
            SSLOptions +StdEnvVars
        </Directory>
 
        BrowserMatch "MSIE [2-5]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    </IfModule>
 
    # ----------------------------------------------------------
    # Rewrite settings
    # Rewrite the requestet URI - PERMANENT - to HTTPS and leave
    # this virtual Host to the HTTPS variant of it.
    # ----------------------------------------------------------
    <IfModule rewrite_module>
        RewriteEngine On
        RewriteCond "%{HTTPS}" "!=on"
        RewriteRule "^(.*)$" "https://%{HTTP_HOST}%{REQUEST_URI}" [R=301,L]
    </IfModule>
 
    # ----------------------------------------------------------
    # Alias settings - The "/" must be at the end!
    # ----------------------------------------------------------
    <IfModule alias_module>
        Alias / "/var/lib/tomcat9/webapps/guacamole/"
    </IfModule>
 
    # ----------------------------------------------------------
    # Directory access settings
    # URL of https://servername/
    # ----------------------------------------------------------
    <Directory "/var/lib/tomcat9/webapps/guacamole">
        DirectoryIndex index.htm index.html
        Options +Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
 
    #ProxyPass /guacamole ajp://127.0.0.1:8009/guacamole flushpackets=on
    #ProxyPassReverse /guacamole ajp://127.0.0.1:8009/guacamole
 
    # - OR -
 
    <Location />
            ProxyPass http://127.0.0.1:8080/guacamole/ flushpackets=on
            ProxyPassReverse http://127.0.0.1:8080/guacamole/
    </Location>
 
    <Location /websocket-tunnel>
            ProxyPass ws://127.0.0.1:8080/guacamole/websocket-tunnel
            ProxyPassReverse ws://127.0.0.1:8080/guacamole/websocket-tunnel
    </Location>
 
    # ----------------------------------------------------------
    # Logging settings
    # ----------------------------------------------------------
    <IfModule log_config_module>
        ErrorLog /var/log/httpd/guacamole.tachtler.net_error.log
        SetEnvIf Request_URI "^/tunnel" forwarded
        SetEnvIF User-Agent "HAProxy" dontlog=yes
        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded=yes
        <IfModule logio_module>
            CustomLog /var/log/httpd/guacamole.tachtler.net_access.log combined_deflate_ssl "expr=(reqenv('forwarded') != 'yes' && reqenv('dontlog') != 'yes')"
            CustomLog /var/log/httpd/guacamole.tachtler.net_access.log combined_deflate_proxypass_ssl "expr=(reqenv('forwarded') == 'yes' && reqenv('dontlog') != 'yes')"
        </IfModule>
    </IfModule>
</VirtualHost> 

Erklärungen

  •         #ProxyPass /guacamole ajp://127.0.0.1:8009/guacamole flushpackets=on
            #ProxyPassReverse /guacamole ajp://127.0.0.1:8009/guacamole

:!: WICHTIG - Die Option flushpackets=on muss gesetzte werden!.

Die meisten Proxies, einschliesslich mod_proxy_ajp oder mod_jk des Apache HTTP Server, puffern alle über die Verbindung gesendeten Daten und warten, bis die Verbindung geschlossen ist, bevor sie diese Daten an den Client senden. Da der HTTP-Tunnel von Apache Guacamole auf dem Streaming von Daten an den Client über eine offene Verbindung beruht, blockiert eine übermässige Pufferung effektiv Apache Guacamole-Verbindungen und macht Apache Guacamole unbrauchbar.

  •         <Location />
                    ProxyPass http://127.0.0.1:8080/guacamole/ flushpackets=on
                    ProxyPassReverse http://127.0.0.1:8080/guacamole/
            </Location>

:!: WICHTIG - Die Option flushpackets=on muss gesetzte werden!.

Die meisten Proxies, einschliesslich mod_proxy des Apache HTTP Server, puffern alle über die Verbindung gesendeten Daten und warten, bis die Verbindung geschlossen ist, bevor sie diese Daten an den Client senden. Da der HTTP-Tunnel von Apache Guacamole auf dem Streaming von Daten an den Client über eine offene Verbindung beruht, blockiert eine übermässige Pufferung effektiv Apache Guacamole-Verbindungen und macht Apache Guacamole unbrauchbar.

  •         <Location /websocket-tunnel>
                    ProxyPass ws://127.0.0.1:8080/guacamole/websocket-tunnel
                    ProxyPassReverse ws://127.0.0.1:8080/guacamole/websocket-tunnel
            </Location>

:!: WICHTIG - Der Abschnitt Standort für /websocket-tunnel muss nach dem Abschnitt Standort für den Rest von Apache Guacamole platziert werden.

Der Apache HTTP Server wertet alle Location-Abschnitte aus, wobei dem letzten passenden Abschnitt Priorität eingeräumt wird. Wenn der Abschnitt /websocket-tunnel an erster Stelle steht, stimmt stattdessen der Abschnitt für / mit dem Abschnitt für / überein, und WebSocket wird nicht korrekt über den Proxy angesprochen.

  •         SetEnvIf Request_URI "^/tunnel" forwarded

Wenn der WebSocket nicht verfügbar ist, greift Apache Guacamole auf die Verwendung eines HTTP-basierten Tunnels zurück. Der Apache Guacamole-HTTP-Tunnel funktioniert, indem er einen kontinuierlichen Datenstrom über mehrere kurzlebige Ströme überträgt, von denen jeder mit einer separaten HTTP-Anforderung verknüpft ist. Standardmässig protokolliert der Apache HTTP Server jede dieser Anfragen, was zu einem ziemlich aufgeblähten Zugriffsprotokoll führt.

Apache Webserver: /etc/httpd/conf/httpd.conf

Damit die zuvor unter

neu erstellte Konfigurationsdatei auch durch den Apache HTTPD Webserver eingelesen wird, ist nachfolgende Ergänzung in der bereits bestehenden Konfigurationsdatei

  • /etc/httpd/conf/httpd.conf

wie folgt an entsprechender Stelle abzuändern:

# Tachtler
# default: #LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_module modules/mod_proxy.so 
# Tachtler
# default: #LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_http_module modules/mod_proxy_http.so  
# Tachtler
# default: #LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so  

wie folgt am Ende der Konfigurationsdatei hinzuzufügen:

# Load *.conf files in the "conf/vhost" directory, if any.
IncludeOptional conf/vhost/*.conf  

Apache Webserver: Neustart

Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Apache VHOST-Konfiguration angezogen werden:

# systemctl restart httpd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

guacd-Daemon: Erster Start

Danach kann der guacd-Server mit nachfolgendem Befehle gestartet werden:

# systemctl start guacd.service

Mit nachfolgendem Befehl kann der Status des Apache Guacamole-guacd-Dienstes/Daemons abgefragt werden:

# systemctl status guacd.service
● guacd.service - Guacamole Server
     Loaded: loaded (/usr/lib/systemd/system/guacd.service; enabled; preset: di>
     Active: active (running) since Fri 2023-11-17 19:17:24 CET; 12s ago
       Docs: man:guacd(8)
   Main PID: 56499 (guacd)
      Tasks: 1 (limit: 4655)
     Memory: 15.2M
        CPU: 17ms
     CGroup: /system.slice/guacd.service
             └─56499 /usr/bin/guacd -f

Nov 17 19:17:24 server systemd[1]: Started Guacamole Server.
Nov 17 19:17:24 server guacd[56499]: Guacamole proxy daemon (guacd) version 1.5>
Nov 17 19:17:24 server guacd[56499]: guacd[56499]: INFO:        Guacamole proxy>
Nov 17 19:17:24 server guacd[56499]: guacd[56499]: INFO:        Listening on ho>
Nov 17 19:17:24 server guacd[56499]: Listening on host 127.0.0.1, port 4822

Webbrowser: Erster Anmeldung

Falls alle vorhergehenden Konfiguration erfolgreich durchgeführt wurden, sollte eine Anmeldung im Webbrowser mit nachfolgender URL möglich sein:

und nachfolgender Anmeldebildschirm sollte zum Vorschein kommen:

Apache Guacamole - Anmeldung

Der administrative Benutzername und dessen Start-Passwort lauten wie folgt:

Feld Wert
Benutzername (Administrator) guacadmin
Passwort :!: Bitte ändern! guacadmin

LDAP

Falls eine Installation des OpenLDAP-Directory-Servers, wie unter nachfolgendem Link beschrieben durchgeführt wurde

sind nachfolgende Informationen erforderlich:

  • einen Benutzer mit dem Namen zur Abfrage des OpenLDAP-Directory-Servers
  • ein Passwort zum Zugriff auf den OpenLDAP-Directory-Server
  • die Zugriffsparameter auf den Baum des OpenLDAP-Directory-Servers

LDAP: guacamole-auth-ldap-bin

Mit nachfolgendem Befehl, wird das Paket guacamole-auth-ldap-bin installiert:

# pikaur --noconfirm -S guacamole-auth-ldap-bin

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalte mit dem Paket guacamole-auth-ldap-bin installiert wurde.

# pikaur -Qil guacamole-auth-ldap-bin

Installierte Dateien

LDAP: /etc/guacamole/guacamole.properties

Zum Abschluß der Einrichtung von Apache Guacamole und der Verbindung des Apache Tomcat-Applikationsserver zur MariaDB ist noch die Konfigurationsdatei mit dem Namen guacamole.properties im Verzeichnis /etc/guacamole/guacamole.properties mit nachfolgendem Befehl

# vim /etc/guacamole/guacamole.properties

wie folgt zu ergänzen: (Komplette Konfigurationsdatei):

# Tachtler
# default: guacd-hostname: localhost
guacd-hostname: 127.0.0.1
guacd-port:     4822
mysql-hostname: db.idmz.tachtler.net
mysql-database: guacamole
mysql-username: guacamole_user
mysql-password: WasGeheimes
mysql-port: 3306
mysql-driver: mysql
mysql-server-timezone: Europe/Berlin
mysql-default-max-connections-per-user: 0
mysql-default-max-group-connections-per-user: 0
mysql-absolute-max-connections: 0
mysql-user-required: true
ldap-hostname: ldap.idmz.tachtler.net
ldap-port: 636
ldap-encryption-method: ssl
ldap-search-bind-dn: cn=Ersatzbenutzer,dc=tachtler,dc=net
ldap-search-bind-password: geheim
ldap-user-base-dn: ou=People,dc=tachtler,dc=net
ldap-username-attribute: uid

zu erstellen.

:!: HINWEIS - Bitte die Anpassung beim Parameter guacd-hostname: 127.0.0.1 beachten!

LDAP: Guacamole Daemon - Neustart

Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Apache Guacamole Anderungen angezogen werden:

# systemctl restart guacd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

LDAP: Apache Webserver - Neustart

Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Apache VHOST-Konfiguration angezogen werden:

# systemctl restart httpd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

LDAP: Apache Tomcat - Neustart

Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Änderungen die auch den Apache Tomcat betreffen, angezogen werden:

# systemctl restart tomcat9.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

2FA-Konfiguration

Nachfolgend soll durch eine Erweiterung, die Nutzung eines zweiten Faktors zur Authentifizierung genutzt werden.

Eine mögliche Android-App zur Verwaltung der 2FA-Authentifizierung wäre z.B. die nachfolgende:

2FA: guacamole-auth-totp-bin

Mit nachfolgendem Befehl, wird das Paket guacamole-auth-totp-bin installiert:

# pikaur --noconfirm -S guacamole-auth-totp-bin

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welcher Inhalte mit dem Paket guacamole-auth-totp-bin installiert wurde.

# pikaur -Qil guacamole-auth-totp-bin

Installierte Dateien

2FA: /etc/guacamole/guacamole.properties

Zum Abschluß der Einrichtung von Apache Guacamole und der Verbindung des Apache Tomcat-Applikationsserver zur MariaDB ist noch die Konfigurationsdatei mit dem Namen guacamole.properties im Verzeichnis /etc/guacamole/guacamole.properties mit nachfolgendem Befehl

# vim /etc/guacamole/guacamole.properties

wie folgt zu ergänzen: (Komplette Konfigurationsdatei):

# Tachtler
# default: guacd-hostname: localhost
guacd-hostname: 127.0.0.1
guacd-port:     4822
mysql-hostname: db.idmz.tachtler.net
mysql-database: guacamole
mysql-username: guacamole_user
mysql-password: WasGeheimes
mysql-port: 3306
mysql-driver: mysql
mysql-server-timezone: Europe/Berlin
mysql-default-max-connections-per-user: 0
mysql-default-max-group-connections-per-user: 0
mysql-absolute-max-connections: 0
mysql-user-required: true
ldap-hostname: ldap.idmz.tachtler.net
ldap-port: 636
ldap-encryption-method: ssl
ldap-search-bind-dn: cn=Ersatzbenutzer,dc=tachtler,dc=net
ldap-search-bind-password: geheim
ldap-user-base-dn: ou=People,dc=tachtler,dc=net
ldap-username-attribute: uid
totp-issuer: Apache Guacamole (guacamole.tachtler.net)
totp-digits: 6
totp-period: 60
totp-mode: sha512

zu erstellen.

:!: HINWEIS - Bitte die Anpassung beim Parameter guacd-hostname: 127.0.0.1 beachten!

2FA: Guacamole Daemon - Neustart

Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Apache Guacamole Anderungen angezogen werden:

# systemctl restart guacd.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

2FA: Apache Tomcat - Neustart

Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Änderungen die auch den Apache Tomcat betreffen, angezogen werden:

# systemctl restart tomcat9.service

:!: HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !

2FA: Webbrowser - Anmeldung

Falls alle vorhergehenden Konfiguration erfolgreich durchgeführt wurden, sollte eine Anmeldung im Webbrowser mit nachfolgender URL möglich sein:

und nachfolgender Anmeldebildschirm sollte zum Vorschein kommen:

Apache Guacamole - Anmeldung

Der administrative Benutzername und dessen Start-Passwort lauten wie folgt:

Feld Wert
Benutzername (Administrator) guacadmin
Passwort :!: Bitte ändern, falls nicht schon geschehen! guacadmin

Anschliessend sollte nun einmalig zur Einrichtung, nachfolgende Anzeige erscheinen, in dem ein QR-Code zur Anzeige kommen sollte.

:!: HINWEIS - Bitte diesen QR-Code mit der z.B. der Android-App zur Verwaltung der 2FA-Authentifizierung wäre z.B. die nachfolgende:

einscannen und den dann angezeigten 6-stelligen Code in das Eingabefeld eingeben und die Schaltfläche [Weiter] mit der linken Maustaste drücken.

Apache Guacamole - 2FA-Anmeldung - QR-Code

Falls die Anmeldung bereits einmal erfolgreich durchgeführt wurde, erscheint nur noch nachfolgende Anzeige:

Apache Guacamole - 2FA-Anmeldung - nur Authetifikation

2FA: QR-Code zurücksetzen

Falls z.B. die Anwendungsdaten für die 2FA durch Verlust des Gerätes in dem die 2FA hinterlegt wurde nicht mehr zugänglich sein sollte, kann durch Löschung von nachfolgenden Einträgen in der Datenbank

  • guac-totp-key-confirmed
  • guac-totp-key-secret
  • guac-totp-reset

die erneute Anzeige des QR-Code erzwungen werden.

Dazu ist es erforderlich direkten Zugriff auf die Datenbank zu haben, was z.B. mit nachfolgendem Befehl auf dem Datenbank-Server realisiert werden kann:

# /usr/bin/mariadb -h 127.0.0.1 -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 11.1.2-MariaDB Arch Linux
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]>

Nachfolgende Abfrage ermittelt die gespeicherten 2FA:

MariaDB [(none)]> SELECT * FROM guacamole.guacamole_user_attribute;
+---------+-------------------------+----------------------------------------------------------------------------------------------------------+
| user_id | attribute_name          | attribute_value                                                                                          |
+---------+-------------------------+----------------------------------------------------------------------------------------------------------+
|       1 | guac-totp-key-confirmed | true                                                                                                     |
|       1 | guac-totp-key-secret    | ZTEWZH34E7CPODGBQOG5UHT4SMSFEN6M5ZDPTVSOHPYY9HOKOXPODRYDT7S2FJ7WUFWBBCTBP4IY2NRIJG765WGMGB3DU4GY4PCMODA= |
+---------+-------------------------+----------------------------------------------------------------------------------------------------------+
2 rows in set (0.002 sec)
 
MariaDB [(none)]>

Nachfolgender Befehl löscht die beiden „Attribute“ - aller Einträge - aus der Datenbank

MariaDB [(none)]> DELETE FROM guacamole.guacamole_user_attribute WHERE guacamole.guacamole_user_attribute.attribute_name LIKE "%guac-totp%";
Query OK, 2 rows affected (0.011 sec)
 
MariaDB [(none)]>

Zum Verlassen der interaktiven Datenbank-shell kann nachfolgender Befehl verwendet werden:

MariaDB [(none)]> quit
Bye

SSH: Verbindung einrichten

Nachfolgend soll nach einer erfolgreichen Anmeldung ein Beispiel für die Einrichtung einer Verbindung dargestellt werden.

Dazu ist nachfolgender Bildschirm direkt nach der erfolgreichen Anmeldung zu sehen, wobei noch keine Verbindung eingerichtet wurde:

Apache Guacamole - Startseite

Hier ist im rechts gelegenen [Menü] der [Menüpunkt] - [Einstellungen] auszuwählen, wonach nachfolgender Bildschirm zum Vorschein kommen sollte:

Apache Guacamole - Startseite - Einstellungen - Verbindungen

Hier ist nun die Schaltfläche [Neue Verbindung] mit der linken Maustaste zu drücken, wodurch nachfolgender Bildschirm zum Vorschein kommen sollte:

Apache Guacamole - Startseite - Einstellungen - Verbindungen - Neue Verbindung

Apache Guacamole - Startseite - Einstellungen - Verbindungen - Neue Verbindung - Speichern

Nachfolgend eine Tabelle, welche Einstellungen für eine Verbindung mittels SSH vorgenommen werden sollten:

Paramater Wert
Bearbeite Verbindung
Name: FQDN (evtl. Kurzform)
Standort: ROOT
Protokoll: SSH
Verbindungslimite
Maximale Anzahl Verbindungen:
Maximale Anzahl Verbindungen pro Benutzer:
Lastverteilung
Verbindungspriorität:
Nur Failover:
Guacamole Proxy Parameter (guacd)
Hostname:
Port:
Verschlüsselung:
Parameter
- Netzwerk
Hostname: FQDN wie im DNS, oder IP-Adresse
Port: 22
Öffentlicher Schlüssel des Hosts (Base64):
- Authentifizierung
Benutzername: Benutzer, mit einem SSH-Schlüssel-Paar
Passwort: [LEER, nur via SSH-Schlüssel]
Privater Schlüssel: Hier der private SSH-Schlüssel des Benutzers
Passphrase: [LEER lassen, dies erzwingt die Eingabe]
- Bildschirm
Farbschema: Weiß auf Schwarz
Schriftart: monospace
Schriftgröße: 10
Maximum scrollback size:
Nur-Lesen:
- Zwischenablage
Disable copying from terminal:
Disable pasting from client:
- Sitzung / Umgebung
Befehl ausführen:
Language/Locale ($LANG):
Time zone ($TZ):
Server keepalive Intervall:
- Terminalverhalten
Rücktaste:
Terminaltyp:
- Textaufzeichnung
Textaufzeichnungspfad:
Textaufzeichnungsname:
Textaufzeichnungspfad automatisch erzeugen:
- Bildschirmaufzeichnung
Aufzeichnungspfad:
Aufzeichnungsname:
Aufzeichnung der Anzeige deaktivieren:
Mausaufzeichnung deaktivieren:
Tastendrücke aufzeichnen:
Bildschirmaufzeichnungspfad automatisch erzeugen:
- SFTP
SFTP aktivieren:
SFTP-Wurzelverzeichnis:
Disable file download:
Disable file upload:
- Wake-on-LAN (WoL)
Send WoL packet:
MAC address of the remote host:
Broadcast address for WoL packet:
UDP port for WoL packet:
Host boot wait time:

Anschliessend sind mit der Schaltfläche [Speichern] die Änderungen zu übernehmen und die Startseite sollte mit einem Eintrag wieder erscheinen, wie nachfolgend dargestellt:

Apache Guacamole - Einstellungen - Verbindungen - Erste Verbindung

Um die Verbindung nutzen zu können, ist es erforderlich über das [Menü] den [Menüpunkt] - [Startseite] auszuwählen um so die Verbindung auswählen zu können, wie nachfolgende Bildschirmkopie zeigt:

Apache Guacamole - Startseite - Verbindungen

Abschliessend kann nun die so entstandene Verbindung durch Auswahl mit der linken Maustaste ausgewählt ud aufgerufen werden, wie nachfolgend dargestellt:

Apache Guacamole - Startseite - Verbindungen - Auswahl

Ein Aufruf via SSH, mit SSH-Schlüssel-Paar und Passphrase-Eingabe am Bildschirm, könnte dann wiefolgt aussehen:

Apache Guacamole - Startseite - Verbindungen - Aufruf

Wichtige Tastenkombination

Tastenkombination Beschreibung
[Strg]+[Alt]+[⇑ (Shift/Hochstelltaste)] Öffnet ein Einstellungs-Dialog-Fenster, über das auch Daten über die lokale Zwischenablage und der entfernten Zwischenablage ausgetauscht werden können
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/apache_guacamole_archlinux.txt · Zuletzt geändert: 2023/12/10 14:02 von klaus