Site icon RDR-IT

Guacamole: gestisci l’accesso al tuo ambiente IT

In questo tutorial spiegherò come installare Guacamole su Ubuntu, configurare l’accesso ai dispositivi e utilizzarlo.

Prima di entrare negli aspetti tecnici, vorrei presentarvi Apache Guacamole e spiegarvi in ​​particolare perché dovreste implementarlo.

Cos’è il guacamole?

No, in questo tutorial non vi parlerò della ricetta della salsa di avocado, per essere più precisi, parleremo di Apache Guacamole che è una soluzione clientless per gateway desktop remoto.

Per darti una semplice introduzione ad Apache Guacamole, si tratta di una soluzione Open Source gratuita che consente di impostare l’accesso remoto tramite un portale web su diversi dispositivi.

Al momento della stesura di questo tutorial, sono supportati i seguenti protocolli:

Attraverso il portale web è possibile gestire più utenti e connessioni, raggrupparli in gruppi, configurare vincoli di accesso (tempo, numero di connessioni, ecc.) e registrare le sessioni su video.

Il guacamole viene spesso presentato come una soluzione da usare a casa per poter accedere al computer tramite un browser…

Mi concentrerò sull’uso professionale per impostare una soluzione “bastion” / PAM (Privileged Access Management)

Utilizzo del guacamole in un ambiente professionale

Ciò che mi interessa qui è perché e come utilizzare Guacamole in un ambiente professionale per gestire l’accesso ai fornitori di servizi e proteggerli.

Oggi molte aziende si trovano ad affrontare il problema di come gestire i fornitori di servizi e, soprattutto, di come garantire loro l’accesso al sistema informativo più sicuro possibile.

La soluzione è Bastion, una soluzione software di accesso remoto che ti consentirà di gestire tutto questo gestendo gli account, limitandone l’accesso e aggiungendo vari livelli di sicurezza.

Il problema delle soluzioni bastion è il loro costo, che può rapidamente trasformarsi in un vero ostacolo alla loro adozione.

Senza una soluzione di bastione, le aziende continuano a fare ciò che possono e spesso si “sottopongono” alle modalità operative dei fornitori di servizi:

Il guacamole ci permetterà di rispondere in parte a queste problematiche:

Come funziona il guacamole

Non entrerò nei dettagli su come funziona il Guacamole, ecco uno schema per darvi un’idea:

Apache Guacamole è composto da 2 componenti principali:

Adesso vedremo come installare Guacamole.

Guacamole: Installazione

Per questo tutorial ho utilizzato una nuova installazione di Ubuntu Server 20.04.

In questo tutorial collegheremo Guacamole a MySQL per gestire gli account utente e le connessioni.

Per iniziare, installeremo i vari prerequisiti sul server.

Poiché è necessario compilare Guacamole, è necessario installare make.

sudo apt install make -y

Di default make non è installato sulla versione Ubuntu Server 20.04

Adesso installeremo i prerequisiti utilizzando il comando seguente:

sudo apt install gcc g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libssl-dev libvorbis-dev libwebp-dev libpango1.0-dev libwebsockets-dev libpulse-dev -y

Se vuoi maggiori informazioni sui prerequisiti, qui è spiegato tutto : Chapter 2. Installing Guacamole natively (apache.org)

Installazione di Guacamole-Server

Adesso installeremo il primo componente del server guacamole.

Al momento della stesura di questo tutorial, la versione disponibile di Guacamole è 1.3.0

Carica l’archivio sul server:

wget https://downloads.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz

Decomprimi l’archivio:

tar xzf guacamole-server-1.3.0.tar.gz

Vai alla cartella appena decompressa:

cd guacamole-server-1.3.0/

Verificheremo ora che tutte le dipendenze necessarie siano installate sul server utilizzando configure:

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

Paltro ottieni aiuto esegui comando : ./configure --help

Se tutto è a posto, tutti i protocolli dovrebbero essere impostati su yes.

Adesso compileremo e installeremo Guacamole-Server.

Compilazione::

sudo make

Facilità :

sudo make install

Ora eseguiamo il comando ldconfig per creare i diversi collegamenti con le librerie.

sudo ldconfig

Attiva il servizio:

sudo systemctl enable guacd

Avviare il servizio guacd:

sudo systemctl start guacd

Controllare lo stato del servizio (facoltativo):

systemctl status guacd

La parte server di Guacamole è operativa.

Installazione di Guacamole-Client

Il client che fornisce l’interfaccia HTML5 e necessita di Tomcat.

Sul server installare Tomcat utilizzando il comando seguente:

sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y

Verificare che il server Tomcat sia in esecuzione:

systemctl status tomcat9 

Creiamo una cartella dove memorizzeremo la configurazione e il client:

sudo mkdir /etc/guacamole

Ora scaricheremo il client e lo memorizzeremo nella cartella appena creata:

sudo wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war -O /etc/guacamole/guacamole.war

È necessario creare un collegamento simbolico a Tomcat9 WebApps per “abilitare l’utilizzo del client”

sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat9/webapps/

Affinché l’applicazione possa essere completamente distribuita, è necessario riavviare i servizi:

sudo systemctl restart tomcat9
sudo systemctl restart guacd

Da lì, dovrebbe apparire la finestra di autenticazione. Vai all’URL: http://IP_SERVER:8080/guacamole

Guacamole-Server|Client: configurazione

Ora che i servizi principali sono installati, dobbiamo configurare tutto per farli funzionare insieme.

Crea le cartelle extensions e lib nella cartella /etc/guacamole:

sudo mkdir /etc/guacamole/{extensions,lib}

Aggiungere una variabile d’ambiente:

Soluzione 1:

sudo echo "GUACAMOLE_HOME=/etc/guacamole"  /etc/default/tomcat9

Soluzione 2 :

echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/default/tomcat

Soluzione 3 :

Aprire il file /etc/default/tomcat9 con nano e aggiungere la variabile:Aprire il file /etc/default/tomcat9 con nano e aggiungere la variabile:

 sudo nano /etc/default/tomcat9

Alla fine del file aggiungere:

GUACAMOLE_HOME=/etc/guacamole

Da qui in poi, nella configurazione di base, la maggior parte dei tutorial spiega come configurare il client con il server e come gestire un file di mapping. Come promemoria, nell’introduzione ho spiegato che utilizzeremo MySQL/MariaDB

Installa MariaDB o MySQL sul server:

sudo apt install mariadb-server mariadb-client

Ora dobbiamo creare un utente e il database, iniziamo connettendoci al server del database:

sudo mysql

Esegui le query seguenti per modificare almeno la password:

CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'P@$sW0rd';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
FLUSH PRIVILEGES;
quit;

Scarica l’estensione mysql per Guacamole:

wget http://apache.mirror.digionline.de/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz

Decomprimi l’archivio:

tar vfx guacamole-auth-jdbc-1.3.0.tar.gz

Aggiungere le tabelle necessarie al database creato:

cat guacamole-auth-jdbc-1.3.0/mysql/schema/*.sql | sudo mysql guacamole_db

Installazione dell’estensione:

sudo cp guacamole-auth-jdbc-1.3.0/mysql/guacamole-auth-jdbc-mysql-1.3.0.jar /etc/guacamole/extensions/

Scarica il driver JDBC:

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.13.tar.gz

Decomprimi l’archivio:

tar xvzf mysql-connector-java-8.0.13.tar.gz

Installa (copia) il driver per Guacamole:

sudo cp mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar /etc/guacamole/lib/

Ora possiamo passare alla configurazione del client per l’utilizzo del database.

Creare il file di configurazione:

sudo nano /etc/guacamole/guacamole.properties

Aggiungi la configurazione sottostante adattandola al tuo ambiente (mysql-):

# Hostname and Guacamole server port
guacd-hostname: localhost
guacd-port: 4822

# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: P@$sW0rd

La configurazione è completa, collega la cartella di configurazione a Tomcat:

sudo ln -s /etc/guacamole /usr/share/tomcat9/.guacamole

Riavviare i servizi:

sudo systemctl restart tomcat9
sudo systemctl restart guacd

Facoltativo: creare una cartella guacamole nella cartella /var per archiviare le registrazioni video

sudo mkdir /var/guacamole

L’installazione e la configurazione di base sono completate, ora vedremo come utilizzare Guacamole.

Utilizzo del guacamole

Ricordiamo che per accedere a Guacamole da un browser web, vai all’indirizzo: http://IP_SERVER:8080/guacamole

Le credenziali predefinite sono: guacadmin:guacadmin

Una volta connessi, si arriva a una pagina che normalmente mostra le ultime connessioni utilizzate e le connessioni che l’utente può utilizzare.

Per accedere alle impostazioni di Guacamole, clicca sul nome utente 1 per aprire il menu a discesa e clicca su Impostazioni 2.

Per cominciare, ti spiegherò come utilizzare il Guacamole in modo logico, senza mostrartene l’uso diretto.

L’obiettivo, come promemoria, è quello di fornire accesso a fornitori di servizi esterni, quindi baserò i miei gruppi su questo aspetto.

Crea un gruppo di connessione

La prima cosa che vedremo è la creazione di un gruppo di connessione.

Nel menu di navigazione vai su Connessione 1.

Per il momento questa vista è vuota, più avanti troveremo tutte le connessioni configurate e i diversi gruppi.

L’obiettivo ora sarà quello di creare una struttura ad albero per organizzare le connessioni dei fornitori di servizi.

Quello che vi mostro qui è un esempio, poi siete liberi di adattarlo alle vostre esigenze.

Per prima cosa creerò un gruppo Provider, nel quale poi creerò dei sottogruppi che rappresenteranno un provider.

Fare clic sul pulsante Nuovo gruppo 1.

Assegna al gruppo il nome 1, la posizione leave ROOT 2 e il tipo leave Organizational 3. Fare clic sul pulsante Salva 4 per creare il gruppo.

Il gruppo è creato ed è visibile nell’elenco delle connessioni; se lo espandiamo, vediamo che possiamo aggiungere connessioni e sottogruppi. Fare clic su Nuovo gruppo 1.

Per quanto riguarda il gruppo radice, rinominare il gruppo 1 (qui il nome del provider preceduto da GC), il campo Posizione è già selezionato e lasciare il tipo Organizzativo. Fare clic su Salva 2.

Il gruppo è stato aggiunto.

Per illustrare il tutorial, ho aggiunto un secondo gruppo di connessioni per simulare più provider.

Crea un gruppo di utenti

I gruppi di utenti ti permetteranno di raggruppare gli account utente in un gruppo, in modo da poter accedere ai loro dati più facilmente, anziché doverli gestire utente per utente.

Vai al menu Gruppo 1 e clicca su Nuovo gruppo 2.

Assegnare al gruppo il nome 1, selezionare i gruppi di connessione collegati al provider 2 e fare clic su Salva 3.

È fondamentale controllare i gruppi padre, altrimenti non sarà possibile accedere alle connessioni.

In una configurazione di gruppo è possibile aggiungere diritti di amministrazione su Guacamole.

Il gruppo è stato aggiunto.

Ho aggiunto anche un secondo gruppo.

Aggiungi una nuova connessione

Prima di spiegare come aggiungere una connessione, è necessario pensare a una connessione come a un accesso a un dispositivo con una configurazione particolare. Pertanto, è normale avere più connessioni con parametri diversi allo stesso server, a seconda degli accessi e delle informazioni che si desidera fornire al proprio fornitore di servizi.

Andare al menu Connessioni 1, per aggiungere una connessione, tra le varie possibilità, cliccare sul pulsante Nuova connessione 2 o su Nuova connessione 2 che si trova a livello di gruppo.

Configurare una connessione RDP

La prima connessione che configureremo è un accesso RDP a un server Windows.

Poiché i parametri di connessione sono molti, considererò ciascuno di essi come un blocco.

Iniziamo assegnando alla connessione il nome 1 e selezionando il protocollo RDP 2.

Per quanto riguarda il campo Posizione, avendo cliccato su Nuovo Connetti a livello di gruppo, è già selezionato

Nella sezione LIMITI DI CONCORRENZA è possibile limitare il numero di connessioni simultanee, nel contesto di una connessione RDP dove vengono passati gli identificatori, questo non avrà alcun impatto perché lo stesso utente non potrà aprire la connessione più volte . stessa sessione.

Saltiamo le parti LOAD BALANCING e GUACAMOLE PROXY PARAMETERS (GUACD), che devono essere configurate nelle installazioni complesse con più server.

Ci concentreremo ora sulla parte PARAMETRI, anche qui non passerò in rassegna tutte le opzioni disponibili, vi lascio sfogliarle e potrete vedere che possiamo configurare tutti i parametri del client RDP (RDS Gateway, Periferiche di reindirizzamento, Prestazioni …).

Li limiterò al minimo e ti lascerò effettuare i tuoi test, se necessario.

Nella sezione Rete, indicare il nome o l’indirizzo IP dell’host 1 e la porta 2 (3389) per RDP.

Nella sezione Autenticazione indicheremo direttamente l’account da utilizzare per la connessione, evitando così di dover comunicare questa informazione al fornitore del servizio. Inserisci il nome utente 1 e la password 2, seleziona Qualsiasi 3 per il campo Modalità di sicurezza e seleziona la casella Ignora certificato server 4.

L’ultimo elemento di configurazione che ti mostrerò è la registrazione della sessione nella sezione Registrazione dello schermo. Nel campo Percorso di registrazione 1 indica la posizione in cui verranno archiviati (/var/guacamole/) e poi indica il nome della registrazione nel campo Nome registrazione 2.

Salvare la connessione cliccando sul pulsante Salva 1.

La connessione viene aggiunta e memorizzata nel gruppo di connessioni.

Configurare una connessione SSH

Come per la connessione SSH, mi limiterò al minimo, per il resto dei parametri lascio a voi la scelta.

Assegnare alla connessione il nome 1 e selezionare il protocollo SSH 2.

Nella sezione Rete, immettere l’host 1 (IP o FQDN) e indicare la porta (22) 2.

Nella sezione Autenticazione, indica la coppia utente e password 1 in base alla tua policy.

Per quanto riguarda la connessione RDP, nella sezione Registrazione Schermo è possibile configurare la registrazione video della sessione di connessione.

Per concludere, clicca su Salva 1.

La connessione SSH è stata aggiunta e inserita nel gruppo.


Per il tutorial ho aggiunto anche le connessioni al secondo provider, ma questa volta senza indicare gli identificatori.

Modifica una connessione

Per modificare una connessione esistente, è sufficiente cliccarci sopra e si aprirà lo stesso modulo usato per aggiungere una connessione. Dopo aver apportato le modifiche, fare clic su Salva.

Assegnare connessioni ai gruppi

Questa operazione è obbligatoria affinché gli utenti possano avere accesso alle connessioni.

Questa manipolazione mi ha fatto perdere la testa, perché l’ereditarietà non è automatica.

Ritornare alla gestione del gruppo utenti 1 quindi fare clic sul gruppo da modificare 2.

Nella sezione Connessioni 1, seleziona le connessioni create in precedenza 2 e clicca su Salva 3.

Aggiungi un utente (provider)

Ora vedremo come aggiungere un utente e assegnarlo direttamente a un gruppo.

Vai a Gestione utenti 1 e clicca sul pulsante Nuovo utente 2.

Per quanto riguarda gli altri elementi, mi concentrerò sui campi obbligatori.

Inserisci l’ID account 1 e la password 2 (x2), nella sezione GRUPPI, seleziona il/i gruppo/i a cui appartiene l’utente 3 e clicca su Salva 4> >.

L’utente è stato aggiunto.

Ripetere i passaggi per gli altri account e fornitori di servizi.

Accedi/Utilizza con un account del fornitore di servizi

Ora che abbiamo configurato tutto, non ci resta che testare la nostra soluzione “bastione”.

Accedi con un account del fornitore di servizi:

Se nell’account è configurata una sola connessione, questa viene stabilita direttamente.

Arriviamo a una pagina dove possiamo vedere le connessioni recenti (attualmente vuota) e sotto l’elenco delle connessioni disponibili.

Espandi le connessioni e clicca su una per connetterti (inizierò con la connessione RDP).

Attendi la connessione al server…

La connessione al server avviene tramite RDP, senza dover fornire alcun identificativo.

Suggerimento: durante una sessione è possibile navigare tra più connessioni o tornare alla home page tramite un menu “nascosto”. Per visualizzarlo, utilizzare la combinazione di tasti Ctrl+Alt+Maiusc.

Per la connessione SSH è simile:


Tornando alla home page dell’account utente, questa volta vediamo le ultime connessioni utilizzate.


Se sono aperte più sessioni contemporaneamente, è possibile passare rapidamente da una sessione all’altra cliccando in basso a sinistra dello schermo.

Segui le sessioni

L’interesse nell’impostare una soluzione Bastion è anche quello di seguire le sessioni, Guacamole ci offre due soluzioni.

Sessioni correnti

È possibile monitorare le sessioni in corso dall’amministrazione andando al menu Sessioni attive.

Da questa visualizzazione è possibile vedere le connessioni in corso con la possibilità di chiudere una sessione e, ciliegina sulla torta, seguire la diretta e interagire cliccando sul nome della connessione.

Di seguito è riportata un’acquisizione con il monitoraggio della visualizzazione live di una connessione:

Cronologia della sessione

La cronologia della sessione è disponibile in diversi punti:

Registrazioni video

Se hai abilitato la registrazione delle sessioni, ti spiegherò come utilizzarla.

Ricordiamo che lo storage è stato configurato nella cartella /var/guacamole.

Ecco come appaiono i file:

Di default i file non sono utilizzabili, devono essere convertiti in file video utilizzando il comando seguente:

guacenc -s 1280x720 -r 20000000 -f file-name

Una volta convertito, avremo un file in formato m4v.

Per 10 minuti ho un file da 40 MB

Non resta che scaricare il file e visualizzarlo con un lettore come VLC.

Conclusione

Ora sai come impostare una soluzione Bastion/PAM gratuita con Guacamole. È una buona soluzione per iniziare a proteggere l’accesso quando non è disponibile alcuna soluzione e ti consente di valutare realmente la necessità prima di acquistare una soluzione a pagamento.

In questo tutorial mi sono concentrato sull’accesso del fornitore di servizi, ma è anche possibile utilizzarlo per tutti gli amministratori per gestire l’IS ed evitare l’uso di VPN, Remote Desktop Gateway, ecc.

È possibile aumentare facilmente e gratuitamente il livello di sicurezza impostando un sistema di autenticazione a due fattori.

Prima di procedere con la distribuzione esterna, ti consiglio vivamente di configurare un proxy inverso Apache2 o Nginx sul server per pubblicare Guacamole tramite protocollo HTTPS.

Exit mobile version