Apache Guacamole un sistema di remote desktop HTML5

Un sistema di Remote Desktop funzionante nei browser compatibili con HTML5.

Per anni ho cercato una soluzione remote desktop che mi permettesse un accesso tramite browser alle mie postazioni di lavoro dislocate in vari luoghi fisici. Questo compito non è stato affatto facile, però alla fine ho trovato una soluzione che offre un elevato grado di flessibilità, sia in termini di configurazione che in termini di sicurezza. Tutto ciò è stato possibile anche grazie alla standardizzazione di HTML5.

Il motivo che mi ha spinto a studiare, adottare e personalizzare Apache Guamacole, è stato quello di avere una interfaccia di accesso:

  • con alti standard di sicurezza;
  • con un qualsiasi dispositivo dotato di browser compatibile con HTML5;
  • da qualsiasi luogo.

Queste caratteristiche sembrano gestibili con tantissimi strumenti di accesso remoto con interfaccia HTML – quasi sempre a pagamento come ad esempio LogMeIn e tantissimi altri – io però ero alla ricerca di un prodotto da poter configurare ed adattare pienamente alle mie esigenze, localizzandolo all’interno della mia infrastruttura IT senza dover dipendere da servizi e prodotti terzi a pagamento.

Per me Apache Guacamole si è dimostrato un prodotto altamente affidabile!

Apache Guacamole è composto da più componenti, ma come risultato finale fornisce:

  • un’interfaccia WEB da localizzare dietro ad un proprio server WEB;
  • uno strumento di connessione remota ad altri dispositivi con protocolli standard come VNC, RDP e SSH accessibili dalla propria rete;
  • una soluzione professionale open source gratuita.

Ho iniziato ad usare Apache Guacamole quasi per caso e, vista la sua affidabilità e duttilità, l’ho proposto a diversi clienti. Grazie a questo prodotto moltissimi miei clienti hanno potuto superare, senza troppe difficoltà, i tempi duri del lockdown causato dalla pandemia da Covid-19.


Adesso vediamo insieme una possibile soluzione implementativa, indicando i punti di forza della sicurezza di questa piattaforma. Segue un’illustrazione della metodologia operativa del sistema nel suo insieme, con l’impiego di Apache Guacamole.

Guacamole un sistema di remote desktop HTML5
Illustrazione dello schema di funzionamento del sistema Apache Guacamole.
  1. L’utente apre il browser sulla propria postazione di lavoro (Firefox Mozilla, Google Chrome, ecc), inserisce l’url di accesso al server web che funge da punto di accesso (Gateway) ad Apache Guacamole. Dopo aver eseguito l’accesso si avrà a disposizione l’interfaccia di accesso alla postazione di lavoro, come la scrivania nel caso di un collegamento ad un PC Windows;
  2. Una volta autenticato nel sistema, l’utente impartirà una direttiva (esempio collegati al sito…) questa istruzione verrà inoltrata dal sistema Apache Guacamole, che funge da gateway, alla postazione di lavoro virtuale;
  3. Le istruzioni impartite tramite la pagina web vengono inoltrate alla postazione di lavoro remota;
  4. La risposta della postazione di lavoro remota viene interpretata dal sistema Guacamole;
  5. Viene trasmessa al server web che funge da elemento intermedio tra Guacamole e il browser dell’utente/operatore;
  6. Il risultato viene visualizzazione sul browser dell’operatore della sua postazione di lavoro fisica.

Ovviamente ci sono degli aspetti da chiarire per meglio comprendere i vari livelli di sicurezza sottintesi nello schema precedente:

  1. La connessione tra l’operatore ed il server web avviene tramite protocollo HTTPS che consente di avere un canale cifrato e sicuro di comunicazione tra l’operatore e la sua postazione di lavoro;
  2. Le comunicazioni tra il server web, Guacamole e le postazioni di lavoro interconnesse a Guacamole avvengo all’interno di un rete LAN e/o WAN sotto il diretto controllo dell’organizzazione. Nel caso in cui fosse necessario una comunicazione con postazioni collegate tramite rete WAN, verrebbero impiegati VPN o canali cifrati.

Quindi il sistema illustrato, basato su Guacamole, consente di avere un accesso alle proprie postazioni di lavoro da qualsiasi luogo, in piena tranquillità e totale sicurezza. Non è necessario portarsi nulla dietro, ma semplicemente ricordarsi l’url di accesso e le credenziali.

Con Guacamole poi, è possibile aver accesso a molteplici postazioni, e questo consente di poter operare su diverse postazioni di lavoro usando un’unica interfaccia di accesso.

Un altro grandissimo vantaggio di Apache Gaucamole è la sua implementazione che consente di essere implementata anche con strumenti come docker.


Segue un esempio di compose docker che consente di avere il componente facilmente implementabile:

version: '3.5'
# networks
# create a network 'guacnetwork_compose' in mode 'bridged'
networks:
  guacnetwork_compose:
    driver: bridge
# services
services:
  # guacd
  guacd:
    container_name: guacd_compose
    image: guacamole/guacd:latest
    networks:
      guacnetwork_compose:
    restart: always
    volumes:
    - /data/repository/guacamole/drive:/drive:rw
    - /data/repository/guacamole/record:/record:rw
  # postgres
  postgres:
    container_name: postgres_guacamole_compose
    environment:
      PGDATA: /var/lib/postgresql/data/guacamole
      POSTGRES_DB: 
      POSTGRES_PASSWORD: 
      POSTGRES_USER: 
    image: postgres:latest
    networks:
      guacnetwork_compose:
    restart: always
    volumes:
    - /data/repository/guacamole/init:/docker-entrypoint-initdb.d:ro
    - /data/repository/guacamole/data:/var/lib/postgresql/data:rw

  # guacamole
  guacamole:
    container_name: guacamole_compose
    depends_on:
    - guacd
    - postgres
    environment:
      GUACD_HOSTNAME: guacd
      POSTGRES_DATABASE: 
      POSTGRES_HOSTNAME: postgres
      POSTGRES_PASSWORD: 
      POSTGRES_USER: 
    image: guacamole/guacamole:latest
    links:
    - guacd
    networks:
      guacnetwork_compose:
    ports:
    - 8080:8080/tcp
    restart: always

In questo modo si ottiene un sistema Apache Guacamole pronto all’uso, eventualmente replicabile e duplicabile.

Il file di configurazione riporta i componenti principali del sistema Apache Guacamole, che rappresenta l’ambiente composto da:

  • un database realizzato con Postgres;
  • l’applicativo guacd che è il proxy lato server nativo utilizzato dall’applicazione web Apache Guacamole;
  • l’applicativo Guacamole che è un gateway desktop remoto senza client:
    • Supporta protocolli standard come VNC e RDP;
    • Non richiede plug-in o software client per instaurare le connessione VNC o RDP.

Questo sistema nel suo complesso può essere visto come un elemento atomico accedibile dall’esterno attraverso la porta TCP 8080.

Per ottenere un sistema completo che consente di raggiungere il risultato illustrato prima è necessario aggiungere un po’ di componenti accessori come server web, router, firewall, concentratori VPN ecc.

Questi componenti di contorno sono elementi sistemistici che non tolgono nulla ad Apache Guacamole ma consentono di isolarlo adeguatamente in una bolla di sicurezza da implementare per ottenere un livello di sicurezza adeguato.

Questo sito raccoglie dati statistici anonimi sulla navigazione attraverso i cookie, nel rispetto della tua privacy. Informativa Cookie Policy