Apache Guacamole – Client

Published by Lello on

Dopo aver installato la parte server di Apache Guacamole, procediamo all’installazione del client. Il client di Apache Guacamole conterrà tutti i componenti Java/JavaScript che compongono l’applicazione Web, servita al client tramite HTML5.

I componenti che compongono l’applicazione client sono:

  • guacamole
  • guacamole-common
  • guacamole-ext
  • guacamole-common-js

Questa applicazione client è quella che si connette alla parte server di Apache Guacamole, la quale effettuerà la reale connessione al desktop remoto.

Guacamole client è un’applicazione Java, per cui avremo bisogno di un servlet container per poterlo eseguire. In questo esempio installeremo Apache Tomcat quale Java container, ma se ne avete altri a disposizione (IBM WebSphere, RedHat Jboss, Oracle WebLogic, …) potete usare quelli.

La versione di Apache Tomcat disponibile nei repo di AlmaLinux, al momento dell scrittura di questo articolo, è la versione 9.0.65.

Ricordo brevemente che Apache Tomcat 9 e 10 sono prodotti equivalenti; l’unica differenza è rappresentata dai nomi dei pacchetti per tutte le api implementate, che passano da javax.* a jakarta.* .

Questa modifica è dovuta a motivi legali coinvolti nel trasferimento di Java EE da Orcale Corp. a Eclipse Foundation.

# dnf -y install tomcat tomcat-admin-webapps tomcat-el-3.0-api tomcat-servlet-4.0-api tomcat-native mod_jk 
# Creiamo la variabile di ambiente GUACAMOLE_HOME;
# echo "GUACAMOLE_HOME=/etc/guacamole" | tee -a /etc/default/tomcat
# cd /etc/guacamole
# wget https://downloads.apache.org/guacamole/1.4.0/binary/guacamole-1.4.0.war -O /var/lib/tomcat/webapps/guacamole.war

Prima di avviare tomcat, prepariamo i file di configurazione necessari ad Apache Guacamole; tutti questi file sono contenuti all’interno della directory GUACAMOLE_HOME (/etc/guacamole):

guacamole.properties

Questo è il file di configurazione principale di Guacamole. All’interno troveremo le modalità di connesione al proxy guacd e le estensioni di autenticazione installate.

Definiamo un file di properties basico: inseriamo al suo interno l’indirizzo IP per la connessione al proxy e il file che conterrà utenti e connessioni:

# cat << EOF > guacamole.properties
guacd-hostname: localhost
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xml
EOF

user-mapping.xml

Contiene gli utenti e le connessioni che possono utilizzare.

Vedremo nel prossimo post come modificare il metodo di autenticazione, passando da un’autenticazione basata su file ad un’autenticazione basata su database (o meglio, ad una combinazione delle due).

È inoltre possibile utilizzare altri tipi di back-end quali ad esempio LDAP. Inoltre, grazie alle API, è possibile fornire autenticazioni personalizzate.

Creiamo una password per il nostro utente di amministrazione (user=admin, password=adminpwd) ed inseriamolo nel nostro file di esempio; associamo a tale utente due connessioni di test, una VNC ed una SSH:

# echo -n adminpwd|openssl md5
MD5(stdin)= 0a14de5a76e5e14758b04c209f266726

# cat << EOF > user-mapping.xml
<user-mapping>
    <authorize
		username="admin"
                password="0a14de5a76e5e14758b04c209f266726"
		encoding="md5">	
        <!-- First authorized connection -->
        <connection name="Test1">
            <protocol>vnc</protocol>
            <param name="hostname">test1.anthesia.lan</param>
            <param name="port">5901</param>
            <param name="password">VNC_PASSWORD</param>
        </connection>
        <!-- Second authorized connection -->
        <connection name="Test2">
            <protocol>ssh</protocol>
            <param name="hostname">test2.anthesia.lan</param>
            <param name="port">22</param>
            <param name="username">myuser</param>
            <param name="password">mypasswd</param>
        </connection>
    </authorize>
</user-mapping>
EOF

Se il file user-mapping associa una sola connessione all’utente, al momento in cui l’utente si autenticherà al server Guacamole, verrà avviata automaticamente quella connessione.

logback.xml

In questo file definiamo il logging di Guacamole. Se il file non esiste, Guacamole effettuerà solo il logging della console. Se ad esempio volessimo effettuare il debug, all’interno del file inseriremo:

# cat << EOF > logback.xml
<configuration>
    <!-- Appender for debugging -->
    <appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- Log at DEBUG level -->
    <root level="debug">
        <appender-ref ref="GUAC-DEBUG"/>
    </root>
</configuration>
EOF

extensions/

Questa directory, che si trova dentro la directory di configurazione, conterrà tutte le estensioni di Guacamole. Guacamole caricherà automaticamente tutti i .jar file all’interno di questa directory all’avvio.

lib/

Questa directory conterrà le librerie richieste da qualsiasi estensione di Guacamole. Troveremo ad esempio in questa directory i driver per connettersi ad un database (MySQL/MariaDB, PostgreSQL, MS SQL).

Dopo aver creato i necessari file di configurazione, non ci resta che abilitare tomcat:

# systemctl enable --now tomcat

Guacamole rileggerà i file contenuti in GUACAMOLE_HOME e relative sottodirectory (librerie ed estensioni) solo durante l’avvio; per questo motivo, affinchè qualunque modifica abbia effetto, sarà necessario riavviare Tomcat.

Non è necessario riavviare guacd in quanto totalmente indipendente dall’applicazione.

Colleghiamoci al server guacamole ed inseriamo le credenziali admin/adminpwd:

Apache Guacamole - Login

Nella schermata di login potremo vedere le due connessioni che abbiamo creato nel file user-mapping.xml; cliccando su una delle sessioni (ad esempio Test2), LA SESSIONE VERRÀ APERTA NEL BROWSER !!!

Nel prossimo articolo, vedremo come modificare la configurazione di guacamole per affiancare all’autenticazione degli utenti e la gestione delle connessioni basate su file, quella effettuata tramite database. Questa opzione ci permetterà di aggiungere nuove ed importanti funzionalità.

Apache Guacamole – Server Apache Guacamole – DataBase

2 Comments

Apache Guacamole - Server - Anthesia.NET · 05/02/2023 at 15:20

[…] Apache Guacamole – Client → […]

Apache Guacamole - Database - Anthesia.NET · 05/02/2023 at 18:50

[…] ← Apache Guacamole – Client […]

Comments are closed.