Installazione di Apache Guacamole su Ubuntu 16.04

15 Aprile 2018 0 Di Alessandro Scamporrino

Apache Guacamole è gateway per desktop remoto, un applicazione web basata su HTML5 per connettersi ad un PC tramite un broweser web utilizzando i protocolli rdp, vnc, ssh o telnet senza la necessità di installare un client sul proprio PC. Permette di collegarsi da remoto al proprio PC praticamente dovunque e con qualsiasi dispoditivo.

L’applicazione è composta da due parti.

Il Server, il motore che effettua il collegamento con i PC remoti.

Il Client, la parte che, tramite il protocollo HTML5  e Java, permette all’utente di poter comunicare con il server e collegarsi al PC remoto utilizzando un browser web.

1. Note Preliminari

Per il Server devono essere installate le librerie dei protocolli per la connessione ai PC ed altre per il funzionamento base.

Mentre il Client, realizzato con tecnologia JSP, necessita del Web Application Server Apache Tomcat.

Nota: Se non avete già installato Apache Tomcat potete seguire la nostra guida cliccando qui.

2. Prequisiti

Aggiorniamo il sistema con il comando:

sudo apt-get update && apt-get -y upgrade

Riavviamo il sistema:

sudo reboot

Le seguenti librerie sono necessarie per avere le funzionalità complete del server di Guacamole:

apt-get -y install libwebp-dev libvorbis-dev libssl-dev libpulse-dev libvncserver-dev libtelnet-dev libssh2-1-dev libpango1.0-dev libfreerdp-dev libavcodec-dev libavutil-dev libswscale-dev libossp-uuid-dev libpng12-dev libjpeg-turbo8-dev libcairo2-dev maven

3. Installazione di Guacamole-server

Scarichiamo il sorgente del server:

cd /tmp
wget http://apache.panu.it/guacamole/0.9.14/source/guacamole-server-0.9.14.tar.gz

Lo estraiamo dall’archivio compresso ed entriamo nella cartella estratta:

tar zxvf guacamole-server-0.9.14.tar.gz
cd guacamole-server-0.9.14

Lanciamo il comando configure per iniziare la compilazione del server aggiungendo il suffisso –with-init-dir=/etc/init.d per indicare la cartella dove aggiungere l’init del servizio:

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

Terminata l’elaborazione verrà mostrato all’utente una lista delle librerie e dei protocolli trovati sul sistema, se tutte le dipendenze sono state installate correttamente vi verrà mostrato un messaggio di questo tipo:

------------------------------------------------
guacamole-server version 0.9.14
------------------------------------------------

   Library status:

     freerdp ............. yes
     pango ............... yes
     libavcodec .......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebp ............. yes
     wsocks32 ............ no

   Protocol support:

      RDP ....... yes
      SSH ....... yes
      Telnet .... yes
      VNC ....... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes

   Init scripts: /etc/init.d

Type "make" to compile guacamole-server.

Adesso lanciamo l’installazione tramite i comandi:

sudo make && sudo make install

Conclusa l’installazione eseguire il comando:

sudo ldconfig

Questo comando serve per far ricaricare al sistema operativo le librerie dinamiche.

Per verificare se tutto è andato a buon fine provate ad eseguire l’init del servizio:

sudo /etc/init.d/guacd start

Ottenendo il messaggio seguente:

Starting guacd: guacd[8196]: INFO: Guacamole proxy daemon (guacd) version 0.9.14 started
SUCCESS

Il server risulta ora installato nel vostro sistema.

4. Installazione di Guacamole-client

Scarichiamo il file sorgente:

cd /tmp
wget http://it.apache.contactlab.it/guacamole/0.9.14/source/guacamole-client-0.9.14.tar.gz

Scompattiamo il pacchetto e spostiamoci sulla cartella estratta:

tar zxvf guacamole-client-0.9.14.tar.gz
cd guacamole-client-0.9.14

Compiliamo l’app per Tomcat con il comando:

sudo mvn package

Ottenendo un risultato simile a questo:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] guacamole-common
[INFO] guacamole-ext
[INFO] guacamole-common-js
[INFO] guacamole
[INFO] guacamole-auth-jdbc
[INFO] guacamole-auth-jdbc-base
[INFO] guacamole-auth-jdbc-mysql
[INFO] guacamole-auth-jdbc-postgresql
[INFO] guacamole-auth-ldap
[INFO] guacamole-auth-noauth
[INFO] guacamole-client
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] guacamole-common ................................... SUCCESS [  7.566 s]
[INFO] guacamole-ext ...................................... SUCCESS [  5.594 s]
[INFO] guacamole-common-js ................................ SUCCESS [  1.249 s]
[INFO] guacamole .......................................... SUCCESS [  8.474 s]
[INFO] guacamole-auth-jdbc ................................ SUCCESS [  0.592 s]
[INFO] guacamole-auth-jdbc-base ........................... SUCCESS [  2.548 s]
[INFO] guacamole-auth-jdbc-mysql .......................... SUCCESS [  2.557 s]
[INFO] guacamole-auth-jdbc-postgresql ..................... SUCCESS [  1.990 s]
[INFO] guacamole-auth-ldap ................................ SUCCESS [  1.314 s]
[INFO] guacamole-auth-noauth .............................. SUCCESS [  0.961 s]
[INFO] guacamole-client ................................... SUCCESS [  1.721 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 34.701 s
[INFO] Finished at: 2015-06-08T17:03:15-07:00
[INFO] Final Memory: 34M/340M
[INFO] ------------------------------------------------------------------------

Il pacchetto si trova nella cartella guacamole/target. Non resta che depositare il pacchetto estratto nella cartella webapps di Tomcat.

sudo mv guacamole/target/guacamole-0.9.14.war <tomcat-webapps-dir>/webapps/guacamole.war

Riavviamo il servizio di Tomcat per attivare l’app nel App Server Web:

sudo systemctl restart tomcat && sudo /etc/init.d/guacd restart

5. Configurazione Autenticazione Base

Dobbiamo ora configurare Guacamole per poter essere utilizzato, spiegherò qui come configurare l’autenticazione predefinita, tramite il file: user-mapping.xml.

Creiamo le cartelle necessarie:

sudo mkdir /etc/guacamole
sudo mkdir /etc/guacamole/extensions
sudo mkdir /etc/guacamole/lib

Creiamo a questo punto il file di configurazione:

sudo nano /etc/guacamole/guacamole.properties

Copiando e incollando il codice seguente:

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822

#Autenticazione
user-mapping: /etc/guacamole/user-mapping.xml

Creaiamo ora il file user-mapping.xml:

sudo nano /etc/guacamole/user-mapping.xml

E copiamo il codice riportato sotto:

<user-mapping>
	
    <!-- Per-user authentication and config information -->
    <authorize username="USERNAME" password="PASSWORD">
        <protocol>vnc</protocol>
        <param name="hostname">localhost</param>
        <param name="port">5900</param>
        <param name="password">VNCPASS</param>
    </authorize>

    <!-- Another user, but using md5 to hash the password
         (example below uses the md5 hash of "PASSWORD") -->
    <authorize 
            username="guacadmin"
            password="5cbd438413e8e3ca0e14e200fde621a9"
            encoding="md5">

        <!-- First authorized connection -->
        <connection name="localhost">
            <protocol>vnc</protocol>
            <param name="hostname">localhost</param>
            <param name="port">5900</param>
            <param name="password">VNCPASS</param>
        </connection>

        <!-- Second authorized connection -->
        <connection name="otherhost">
            <protocol>vnc</protocol>
            <param name="hostname">otherhost</param>
            <param name="port">5900</param>
            <param name="password">VNCPASS</param>
        </connection>

    </authorize>

</user-mapping>

Ogni utente viene specificato con un tag <authorize> corrispondente. Questo tag contiene tutte le connessioni autorizzate per quell’utente, ciascuna contrassegnata da un tag <connection>. Ogni tag <connection> contiene un protocollo corrispondente e un set di parametri specifici del protocollo, specificati rispettivamente con i tag <protocol> e <param>.

Utente e password standard sono guacadmin guacadmin.

 6. Attivazione del servizio

Per abilitare il servizio in avvio automatico al boot digitare il comando:

/lib/systemd/systemd-sysv-install enable guacd

Riavviamo il servizio di Tomcat per attivare le modifiche:

sudo systemctl restart tomcat && sudo /etc/init.d/guacd restart