Apache Guacamole è un gateway desktop remoto senza client. Supporta protocolli standard come VNC, RDP e SSH.
Viene chiamato clientless perché non sono richiesti plug-in o software client aggiuntivi.
Grazie a HTML5, una volta installato Guacamole su un server, tutto ciò di cui hai bisogno per accedere ai tuoi desktop è un browser web.
INSTALLAZIONE DELLE DIPENDENZE DI APACHE GUACAMOLE
Apache Guacamole ha molte dipendenze e ci occuperemo della maggior parte di esse in questo step.
Installare tutte le dipendenze di cui il nostro server Guacamole avrà bisogno con i seguenti comandi:
0 1 2 |
sudo apt update sudo apt install -y gcc nano vim curl wget g++ build-essential libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavformat-dev libavutil-dev \ libswscale-dev build-essential libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libpulse-dev libvorbis-dev libwebp-dev libwebsockets-dev libssl-dev libavcodec-dev |
INSTALLAZIONE DI FREERDP2
Installare FreeRDP2 con i seguenti comandi:
0 1 2 |
sudo add-apt-repository ppa:remmina-ppa-team/remmina-next-daily sudo apt update sudo apt install freerdp2-dev freerdp2-x11 -y |
INSTALLAZIONE DI OPENSSL
Ubuntu 22.04 viene fornito con OpenSSL 3.x e Guacamole richiede openssl 1.x per essere compilato e installato correttamente. Gli avvisi relativi a questo vengono trattati come errori e quindi il processo di compilazione fallirà. Di conseguenza è possibile disabilitare gli avvisi in modo che non vengano trattati come errori e compilare Guacamole su Ubuntu 22.04 oppure installare e configurare OpenSSL 1.1
Procedere all’installazione di OpenSSL 1.1.l. con i seguenti comandi in sequenza:
0 1 2 3 |
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz -P ~ sudo tar -xzf openssl-1.1.1l.tar.gz cd ~/openssl-1.1.1l sudo ./config |
Se è tutto OK dovremmo vedere una schermata come quella sovrastante
Continuare l’installazione con i seguenti comandi:
0 1 2 3 |
sudo make sudo make install sudo cp /usr/local/bin/openssl /usr/bin sudo ldconfig |
Per verificare che l’installazione di OpenSSL sia andata a buon fine digitare il seguente comando:
0 |
openssl version |
Dovremmo vedere una riga tipo questa: OpenSSL 1.1.1l 24 Aug 2021
INSTALLAZIONE DI JAVA
In questa sezione installeremo il contenitore servlet Java Apache Tomcat che eseguirà il file war Guacamole Java e quindi servirà il client Java Guacamole.
Poiché è in Java, bisogna prima di tutto installare Java con il seguente comando:
0 |
sudo apt install openjdk-17-jdk -y |
Dopo aver installato Java verificare la versione con il seguente comando:
0 |
java --version |
Dovremmo vedere le seguenti righe:
openjdk 17.0.5 2022-10-18
OpenJDK Runtime Environment (build 17.0.5+8-Ubuntu-2ubuntu122.04)
OpenJDK 64-Bit Server VM (build 17.0.5+8-Ubuntu-2ubuntu122.04, mixed mode, sharing)
CREAZIONE UTENTE DI SERVIZIO PER TOMCAT
Si consiglia di utilizzare un utente nel sistema diverso da root per eseguire le applicazioni.
Per Tomcat, creeremo un utente che verrà utilizzato per eseguire l’applicazione Tomcat con il seguente comando:
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
INSTALLAZIONE DI APACHE TOMCAT
Prima di procedere al download verificare l’ultima versione stabile sul seguente sito
https://downloads.apache.org/tomcat/
Durante la stesura si questo tutorial l’ultima versione stabile è la 9.0.70 come mostrato nell’immagine sovrastante.
ATTENZIONE: ho effettuato anche dei test di installazione con le versioni 10.1.4 e 11.0 ma purtroppo non è garantito il corretto funzionamento dell’applicatico Guacamole.
Eseguire il comando sottostante per scaricare la versione 9.0.70:
0 |
sudo wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.70/bin/apache-tomcat-9.0.70.tar.gz -P ~ |
Al termine del download, procedere con l’estrazione del file tar nella directory /opt/tomcat con i seguenti comandi:
0 1 2 3 |
sudo mkdir -p /opt/tomcat sudo tar -xzf apache-tomcat-9.0.70.tar.gz -C /opt/tomcat/ sudo mv /opt/tomcat/apache-tomcat-9.0.70 /opt/tomcat/tomcatapp sudo chown -R tomcat: /opt/tomcat |
Quindi rendere eseguibili tutti gli script della shell nella directory /opt/tomcat/tomcatapp/bin con il comando:
0 |
sudo find /opt/tomcat/tomcatapp/bin/ -type f -iname "*.sh" -exec chmod +x {} \; |
Aggiungere il servizio Systemd di Tomcat in modo da poter gestire facilmente avvio e arresto come altri servizi.
Creare un nuovo file denominato tomcat.service con il comando:
0 |
sudo nano /etc/systemd/system/tomcat.service |
Quindi inserire la seguente configurazione all’interno del file:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[Unit] Description=Tomcat 11 servlet container After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true" Environment="CATALINA_BASE=/opt/tomcat/tomcatapp" Environment="CATALINA_HOME=/opt/tomcat/tomcatapp" Environment="CATALINA_PID=/opt/tomcat/tomcatapp/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/tomcatapp/bin/startup.sh ExecStop=/opt/tomcat/tomcatapp/bin/shutdown.sh [Install] WantedBy=multi-user.target |
Salvare e chiudere il file di configurazione
Fare un reload del demone Systemd con il comando:
0 |
sudo systemctl daemon-reload |
Quindi avviare il servizio con il comando:
0 |
sudo systemctl enable --now tomcat |
Verificare lo stato del servizio Tomcat con il comando:
0 |
systemctl status tomcat |
Se è tutto ok dovremmo vedere una schernmata come quella sovrastante
INSTALLAZIONE DEL SERVER GUACAMOLE
Il Server Guacamole contiene tutti i componenti nativi lato server richiesti da Guacamole per connettersi ai desktop remoti.
Fornisce una libreria C comune, libguac, da cui dipendono tutti gli altri componenti nativi.
Collegarsi al seguente link quindi verificare l’ultima versione stabile di Guacamole
https://downloads.apache.org/guacamole/
Selezionare quindi la versione di Guacamole da installare
NOTA BENE: durante la stesura del seguente articolo l’ultima versione stabile è la 1.4.0
Scaricare l’ultima versione stabile di Guacamole con il seguente comando:
0 |
sudo wget https://downloads.apache.org/guacamole/1.4.0/source/guacamole-server-1.4.0.tar.gz -P ~ |
Estrarre il .tar con il comando:
0 |
tar xzf ~/guacamole-server-1.4.0.tar.gz |
Passare alla directory del codice sorgente del server Guacamole con il comando:
0 |
cd ~/guacamole-server-1.4.0 |
Quindi eseguire lo script di configurazione per verificare se manca qualche dipendenza richiesta e per adattare il server Guacamole al sistema in essere.
0 |
./configure --disable-guacenc --with-init-dir=/etc/init.d |
Al termine dell’esecuzione del comando dovremmo vedere un output come mostrato nell’immagine sovrastante con YES RDP, SSH, Telnet e VNC.
Eseguire quindi il seguente comando:
0 |
sudo make |
Quindi installare Guacamole con il comando:
0 |
sudo make install |
Creare i collegamenti necessari e memorizzare nella cache le librerie condivise più recenti trovate nella directory del server guacamole con il comando:
0 |
sudo ldconfig |
Fare un reload del demone Systemd con il comando:
0 |
sudo systemctl daemon-reload |
Abilitare il servizio guacd con il comando:
0 |
sudo systemctl enable guacd |
Quindi avviare il servizio guacd con il comando:
0 |
sudo systemctl start guacd |
Verirficare lo stato del servizio con il comando:
0 |
systemctl status guacd |
Se è tutto OK dovremmo vedere una schermata come quella sovrastante.
INSTALLAZIONE DEL CLIENT GUACAMOLE
Ci sono due file critici coinvolti nella distribuzione di Guacamole: guacamole.war, che è il file contenente l’applicazione web, e guacamole.properties, il file di configurazione principale per Guacamole. Il modo consigliato per configurare Guacamole prevede l’inserimento di questi file in posizioni standard e quindi la creazione di collegamenti simbolici ad essi in modo che Tomcat possa trovarli.
Il client Guacamole è disponibile come binario. Per installarlo, basta estrarlo dalla pagina di download dei binari di Guacamole come mostrato di seguito, copiarlo nella directory /etc/guacamole/ e rinominarlo allo stesso tempo.
0 1 2 |
sudo mkdir /etc/guacamole wget https://downloads.apache.org/guacamole/1.4.0/binary/guacamole-1.4.0.war -P ~ sudo mv ~/guacamole-1.4.0.war /etc/guacamole/guacamole.war |
Per installare il binario del client Guacamole, creare un collegamento simbolico del client guacamole alla directory webapps di Tomcat con il seguente comando:
0 |
sudo ln -s /etc/guacamole/guacamole.war /opt/tomcat/tomcatapp/webapps/ |
CONFIGURAZIONE DEL SERVER APACHE GUACAMOLE
Dopo l’installazione del demone del server Guacamole, è necessario definire come il client Guacamole si connetterà al server Guacamole (guacd) nel file di configurazione /etc/guacamole/guacamole.properties.
All’interno di questa configurazione bisogna semplicemente definire il nome host del server Guacamole, la porta, il file di configurazione della mappatura degli utenti, il provider di autenticazione.
GUACAMOLE_HOME è il nome dato alla directory di configurazione di Guacamole, che si trova in /etc/guacamole per impostazione predefinita. Tutti i file di configurazione, le estensioni, ecc. risiedono in questa directory.
Creare la variabile d’ambiente GUACAMOLE_HOME con i seguenti comandi:
0 1 |
echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/default/tomcat echo "export GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/profile |
CONFIGURAZIONE CONNESSIONI SERVER GUACAMOLE
Creare il file di configurazione /etc/guacamole/guacamole.properties con il comando:
0 |
sudo nano /etc/guacamole/guacamole.properties |
Quindi popolarlo come di seguito:
0 1 2 3 |
guacd-hostname: localhost guacd-port: 4822 user-mapping: /etc/guacamole/user-mapping.xml auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider |
Chiudere e salvare il file di configurazione.
Collegare la directory delle configurazioni di Guacamole alla directory del servlet Tomcat con i seguenti comandi:
0 1 |
sudo ln -s /etc/guacamole /opt/tomcat/tomcatapp/.guacamole sudo chown -R tomcat: /opt/tomcat |
CONFIGURAZIONE DEL METODO DI AUTENTICAZIONE IN GUACAMOLE
Il metodo di autenticazione predefinito di Guacamole legge tutti gli utenti e le connessioni da un singolo file chiamato user-mapping.xml.
In questo file è necessario definire gli utenti autorizzati ad accedere all’interfaccia web di Guacamole, i server a cui connettersi e il metodo di connessione.
Generare l’hash MD5 delle password per un utente che verrà utilizzato per accedere all’interfaccia utente web di Guacamole con il seguente comando:
0 |
echo -n Password-Da-Configurare | openssl md5 |
ATTENZIONE: al posto di Password-Da-Configurare inserire la password che si intende dare all’utente
Quindi segnarsi la password appena genarata nel seguente formato
(stdin)= 5a78e5b5a5b18c7773be02f44dda10c0
Procedere alla creazione del file di configurazione con il seguente comando:
0 |
sudo nano /etc/guacamole/user-mapping.xml |
Quindi popolare il file di configurazione come di seguito inserendo tutti i parametri relativi ai server, gli utenti e le password:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<user-mapping> <!-- Per-user authentication and config information --> <!-- A user using md5 to hash the password guacadmin user and its md5 hashed password below is used to login to Guacamole Web UI--> <!-- FIRST USER --> <authorize username="MasterAdmin" password="5a78e5b5a5b18c7773be02f44dda10c0" encoding="md5"> <!-- First authorized Remote connection --> <connection name="Server Linux Test"> <protocol>ssh</protocol> <param name="hostname">192.168.100.251</param> <param name="port">22</param> </connection> <!-- Second authorized remote connection --> <connection name="Windows Server 2022"> <protocol>rdp</protocol> <param name="hostname">192.168.100.246</param> <param name="port">3389</param> <param name="username">tech</param> <param name="ignore-cert">true</param> </connection> </authorize> <!-- SECOND USER --> <authorize username="GuestAdmin" password="5a78e5b5a5b18c7773be02f44dda10c0" encoding="md5"> <!-- First authorized remote connection --> <connection name="Windows Server 2019"> <protocol>rdp</protocol> <param name="hostname">10.10.10.5</param> <param name="port">3389</param> <param name="username">tech</param> <param name="ignore-cert">true</param> </connection> <!-- Second authorized Remote connection --> <connection name="RHEL 7 Maipo"> <protocol>ssh</protocol> <param name="hostname">172.25.169.26</param> <param name="port">22</param> </connection> </authorize> </user-mapping> |
Salvare e chiudere il file di configurazione
Riavviare il servizio Tomcat Guacd per rendere effettive le modifiche con il comando:
0 |
sudo systemctl restart tomcat guacd |
ACCESSO A GUACAMOLE DA INTERFACCIA WEB
Per accedere all’interfaccia web di Guacamole aprire da un qualsiasi browser il link
http://IP-O-NOME-SERVER:8080/guacamole
Inserire Username e Password create in precedenza (MasterAdmin e Password) quindi cliccare Entra
Se è tutto OK dovremmo vedere le due connessioni (RDP e SSH) create precedentemente nel file di configurazione come mostrato nell’immagine sovrastante.
Cliccare sul collegamento Windows Server 2022 per stabilire la connessione RDP e verificare il corretto funzionamento.
A questto punto è possibile editare il file di configurazione user-mapping.xml inserendo tutti i servers che intendiamo gestire.
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 commenti