Ricerca nel sito web

Come installare Apache Guacamole su Debian 11


Su questa pagina

  1. Prerequisiti
  2. Installazione delle dipendenze di compilazione
  3. Installazione di Apache Tomcat 9
  4. Compilazione del server Guacamole
  5. Impostazione di Guacamole-Server
  6. Installazione dell'applicazione Web client Guacamole
  7. Imposta il proxy inverso Nginx per Guacamole
  8. Verifica l'installazione di Apache Guacamole
  9. Conclusione

Apache Guacamole è un gateway desktop remoto gratuito e open source che ti consente di connetterti al tuo computer/server da remoto utilizzando diversi protocolli come SSH, RDP e VNC. Apache Guacamole è gestito da Apache Software Foundation e concesso in licenza con Apache License 2.0. =div-gpt-ad-howtoforge_com-box-3-0;var ffid=1;var alS=1002%1000;var container=document.getElementById(slotId);container.style.width=100%;var ins=document .createElement(ins);ins.id=slotId+-asloaded;ins.className=adsbygoogle ezasloaded;ins.dataset.adClient=pid;ins.dataset.adChannel=cid;if(ffid==2){ins.dataset.fullWidthResponsive =vero;}

Apache Guacamole è un gateway desktop remoto senza client. Puoi accedere ad Apache Guacamole utilizzando solo un browser Web da qualsiasi luogo e in qualsiasi momento. L'utilizzo di Apache Guacamole è consigliato se si dispone di più sistemi operativi remoti con protocolli diversi, come Windows con RDP, sistema Linux con VNC e SSH.

In questo tutorial, installerai e configurerai Apache Guacamole su Debian 11 Bullseye. Ciò include l'installazione di alcune dipendenze dei pacchetti e Apache Tomcat 9, quindi la creazione del server Guacamole e l'installazione dell'applicazione Java, l'applicazione web Guacamole. Alla fine, configurerai Nginx come proxy inverso per l'applicazione web Guacamole che ti consente di accedere ai tuoi server da qualsiasi luogo, purché tu disponga di un browser web.

Prerequisiti

Per completare questo tutorial, avrai bisogno dei seguenti requisiti:

  • Un server con almeno 2 GB di RAM che esegue Debian 11 Bullseye.
  • Un utente utente o non root con privilegi di root.
  • Conoscenza di base del nano editor. Oppure puoi usare il tuo editor preferito come vim.

Installazione delle dipendenze di compilazione

All'inizio, installerai alcune dipendenze di build per costruire il server Apache Guacamole. Ciò include alcuni pacchetti di base come libvncserver-dev che abilita il supporto per il protocollo VNC, libssh2-1 per il protocollo SSH, freerdp2-dev per il protocollo RDP e libwebsockets-dev per il supporto Kubernetes.

Per considerazione, non installerai libtelnet-dev per i supporti Telnet. Questo perché telnet è considerato un protocollo vecchio e non sicuro.

1. Ora aggiorna l'elenco dei pacchetti eseguendo il comando apt di seguito.

sudo apt update

2. Successivamente, installare le dipendenze per la creazione del server Apache Guacamole eseguendo il seguente comando.

sudo apt install -y freerdp2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libcairo2-dev libjpeg62-turbo-dev libjpeg-dev libpng-dev libtool-bin libpango1.0-dev libpango1.0-0 libssh2-1 libwebsockets16 libwebsocketpp-dev libossp-uuid-dev libssl-dev libwebp-dev libvorbis-dev libpulse-dev libwebsockets-dev libvncserver-dev libssh2-1-dev openssl

Il completamento di questo comando potrebbe richiedere del tempo, a seconda della connessione Internet del server.

Installazione di Apache Tomcat 9

Dopo aver installato le dipendenze di compilazione, installerai Apache Tomcat 9. Questo pacchetto è necessario per l'applicazione web Guacamole, che è un'applicazione web scritta in Java.

1. Esegui il seguente comando per installare Apache Tomcat 9 sul tuo sistema.

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

2. Dopo aver installato Apache Tomcat 9, avviare e abilitare il servizio Apache Tomcat eseguendo il comando seguente. Sui sistemi basati su Debian, Apache Tomcat 9 viene fornito con il servizio chiamato tomcat9.

sudo systemctl enable --now tomcat9

3. Ora, se tutto sembra a posto, verifica lo stato del servizio Tomcat9 eseguendo il comando seguente.

sudo systemctl status tomcat9

Riceverai il seguente output. Assicurati che il servizio Tomcat9 sia attivo (in esecuzione).

Compilazione del server Guacamole

In questa sezione scaricherai e compilerai il Guacamole-server. Questo è il componente principale di Apache Guacamole, che contiene librerie per la connessione a server e desktop remoti. Il server Guacamole contiene la libreria C libguacd e tutte le librerie per i protocolli supportati, oltre al cuore di Guacamole, guacd.

Il guacd gestisce tutte le connessioni client che vengono incanalate dall'applicazione Web guacamole, quindi si connette a server e desktop remoti per loro conto. Costruendo e compilando Guacamole-server, avrai un nuovo servizio guacd sul tuo sistema.

1. Inizia navigando nella directory di lavoro fino a /usr/src. Tutto il codice sorgente per la costruzione e la compilazione va in questa directory.

cd /usr/src

2. Ora scaricherai il codice sorgente del server Guacamole eseguendo il comando wget di seguito. Assicurati di controllare la pagina di download di Guacamole e di copiare l'ultima versione di Guacamole-server. Al momento della stesura di questo articolo, l'ultima versione è la 1.3.0.

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

3. Quindi, estrai il codice sorgente e otterrai una nuova directory guacamole-server-VERSION-NUMBER. Naviga in quella directory.

tar -xzvf guacamole-server-1.3.0.tar.gz
cd guacamole-server-*/

4. Ora verifica tutti i requisiti di sistema per la creazione del server Guacamole e configura il tuo ambiente eseguendo il seguente comando. L'opzione --with-systemd-dir=/etc/systemd/system/ viene utilizzata per impostare il file di servizio systemd, che sarà disponibile nella directory /etc/systemd/system/ .

./configure --with-systemd-dir=/etc/systemd/system/

Riceverai un output simile a questo:

------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------

   Library status:

     freerdp2 ............ yes
     pango ............... yes
     libavcodec .......... yes
     libavformat.......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... no
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebsockets ....... yes
     libwebp ............. yes
     wsock32 ............. no

   Protocol support:

      Kubernetes .... yes
      RDP ........... yes
      SSH ........... yes
      Telnet ........ no
      VNC ........... yes

   Services / tools:

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

   FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
   Init scripts: no
   Systemd units: /etc/systemd/system/

Type "make" to compile guacamole-server.

Dai un'occhiata alle sezioni Stato librerie e Supporto protocollo. È possibile regolare i supporti del protocollo installando dipendenze e librerie aggiuntive.

5. Quindi, compila e installa Guacamole-server eseguendo il comando seguente.

make
make install

Il processo di compilazione e installazione potrebbe richiedere del tempo per essere completato.

6. Ora, dopo che tutto è stato completato, esegui il seguente comando per applicare tutte le nuove librerie di sistema.

sudo ldconfig

In questa sezione, hai installato il pacchetto Guacamole-server. Successivamente, creerai alcune configurazioni necessarie per il server Guacamole.

Configurazione del server Guacamole

Per far funzionare Guacamole-server, devi creare la directory di configurazione /etc/guacamole/, quindi creare un nuovo file guacamole.properties come configurazione predefinita di Guacamole-server, file logback.xml per il sistema di registrazione Guacamole e il file user-mapping.xml per definire l'autenticazione degli utenti Guacamole e le connessioni a server e desktop remoti.

1. Per iniziare, eseguire il seguente comando per creare una nuova directory /etc/guacamole/ all'interno delle directory aggiuntive extensions e lib all'interno. Quindi aggiungi la variabile d'ambiente GUACAMOLE_HOME=/etc/guacamole al file /etc/default/tomcat9. Questo dirà al contenitore servlet Tomcat 9 di cercare la directory GUACAMOLE_HOME in /etc/guacamole/.

mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9

2. Ora crea la configurazione principale guacamole.properties utilizzando nano o il tuo editor preferito.

sudo nano /etc/guacamole/guacamole.properties

Inserisci la seguente configurazione:

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

# user mapping and user connections
user-mapping:    /etc/guacamole/user-mapping.xml

  • L'opzione guacd-hostname definisce il nome host o l'indirizzo IP su cui verrà eseguito il servizio guacd. Questo tutorial usa localhost per eseguire il servizio guacd.
  • L'opzione guacd-port definisce la porta predefinita per il servizio guacd. Questo tutorial utilizza la porta 4822 per il servizio guacd.
  • L'opzione user-mapping definisce la configurazione del file per l'autenticazione degli utenti e un elenco di connessioni disponibili. Questo tutorial utilizza il file /etc/guacamole/user-mapping.xml per definire utenti e connessioni per il server Guacamole. Potresti essere interessato a utilizzare un altro metodo di autenticazione, controlla la documentazione di Guacamole.

Salva e chiudi il file.

3. Successivamente, crea una nuova configurazione loogback.xml per la registrazione e il debug. Per impostazione predefinita, Guacamole accederà solo alla console. L'utilizzo di questa configurazione consente a Guacamole di accedere tramite il framework di registrazione Logback.

sudo nano /etc/guacamole/logback.xml

Aggiungere le seguenti righe di configurazione.

<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>

Salva e chiudi il file di configurazione.

4. Ora genererai un nuovo hash della password md5 e creerai un nuovo file per l'autenticazione e le connessioni dell'utente Guacamole.

Eseguire il seguente comando per generare l'hash della password md5. E assicurati di cambiare la password con la tua password complessa.

echo -n StrongPasswordUserJohnDoe | openssl md5

Riceverai un output della password con hash mod5. Copialo nella tua nota.

(stdin)= aca22211ffcfb8aa8ad7627195ad4fce

5. Successivamente, crea un nuovo file user-mapping.xml utilizzando nano editor.

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

Immettere le seguenti configurazioni. E assicurati di cambiare il nome utente e la password. Inoltre, dai un'occhiata alla sezione ... e aggiungi i dettagli della tua connessione a server o desktop.

<user-mapping>

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

        <!-- First authorized connection -->
        <connection name="SSH localhost">
            <protocol>ssh</protocol>
            <param name="hostname">localhost</param>
            <param name="port">22</param>
            <param name="username">johndoe</param>
            <param name="password">SSHPASSWORD</param>
        </connection>

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

        <!-- Third 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>

Salva e chiudi il file.

Ora hai completato la configurazione di Guacamole-server. Successivamente, installerai e configurerai l'applicazione web Guacamole, che è l'applicazione web che vedrai sul tuo browser.

Installazione dell'applicazione Web client Guacamole

In questa sezione, installerai l'applicazione web Guacamole sul tuo sistema. Questo può essere fatto scaricando il file binario compilato dell'applicazione web Guacamole e distribuendolo nella directory webaps di Tomcat.

1. Naviga nella tua directory di lavoro fino a /usr/src e scarica l'applicazione web compilata di Guacamole .war usando il comando wget. Assicurati di visitare la pagina di download di Guacamole e di copiare il collegamento per l'ultima versione dell'applicazione Web Guacamole.

cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war

2. Ora, distribuisci l'applicazione binaria Java guacamole-VERSION.war nella directory Tomcat /var/lib/tomcat9/webapps/ eseguendo il seguente comando. Ciò rende l'applicazione Web Guacamole accessibile tramite il contenitore servlet Apache Tomcat.

sudo cp guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war

3. Successivamente, riavviare il servizio Tomcat 9 per applicare una nuova applicazione Web.

sudo systemctl restart tomcat9

4. Successivamente, avvia e abilita il servizio guacd eseguendo il comando seguente.

sudo systemctl enable --now guacd

Quindi verificalo utilizzando il seguente comando.

sudo systemctl status guacd

Riceverai l'output come lo screenshot qui sotto.

A questo punto, hai completato l'installazione dell'applicazione Guacamole-server (backend) e dell'applicazione web Guacamole (front-end). Successivamente, configurerai Nginx come proxy inverso per l'applicazione Web Guacamole.

Configura Nginx Reverse proxy per Guacamole

In questa sezione installerai il server web Nginx e lo configurerai come proxy inverso per l'applicazione web Guacamole. Ciò ti consente di impostare il nome di dominio per la tua applicazione Web Guacamole e di proteggerlo con certificati SSL.

1. Per iniziare, esegui il seguente comando apt per installare i pacchetti Nginx.

sudo apt install nginx -y

2. Dopo aver installato tutti i pacchetti Nginx, crea un nuovo file host virtuale guacamole nella directory /etc/nginx/sites-available. Tutte le configurazioni relative al proxy inverso Guacamole verranno archiviate in questo file.

sudo nano /etc/nginx/sites-available/guacamole

Immettere questa seguente configurazione. E assicurati di modificare il nome di dominio e il percorso dei certificati SSL. Questo esempio utilizza il dominio example.io con la chiave privata SSL privkey.pem e la chiave pubblica fullchain.pem e i certificati bot disponibili su la directory /etc/letsencrypt/live/exmaple.io/.

server {
    listen      80;
    server_name example.io;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
    listen      443 ssl http2;
    server_name example.io;

    root /var/www/html;
    index index.html;

    location / {
       try_files $uri $uri/ =404;
    }

    ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;

    access_log /var/log/nginx/guacamole-access.log;
    error_log /var/log/nginx/guacamole-error.log;

    location /guacamole/ {
        proxy_pass http://127.0.0.1:8080/guacamole/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        access_log off;
    }
}

Salva e chiudi il file.

3. Ora, attiva il file host virtuale guacamole creando un nuovo collegamento simbolico alla directory /etc/nginx/sites-enabled/. Quindi verifica tutte le configurazioni Nginx per verificare se ci sono errori di sintassi.

sudo ln -s /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
sudo nginx -t

Riceverai un output Syntax OK, il che significa che la configurazione non ha errori.

4. Successivamente, riavviare il servizio Nginx per applicare una nuova configurazione, quindi verificarne lo stato eseguendo il seguente comando.

sudo systemctl restart nginx
sudo systemtl status nginx

Riceverai l'output simile allo screenshot qui sotto. Il servizio Nginx è attivo (in esecuzione).

5. Inoltre, se si desidera distribuire l'applicazione Web Guacamole in diversi sub-URL, modificare l'opzione location /guacamole/ { ... } in new path location /new-path/ { ... } e aggiungi l'opzione proxy_cookie_path al tuo nuovo percorso come di seguito.

location /new-path/ {
    proxy_pass http://127.0.0.1:8080/guacamole/;
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_cookie_path /guacamole/ /new-path/;
    access_log off;
}

In questa sezione, hai completato l'installazione e la configurazione di Nginx come proxy inverso per l'applicazione web Guacamole. A questo punto, l'installazione di Apache Guacamole è completata ed è accessibile dal tuo nome di dominio.

Verificare l'installazione di Apache Guacamole

In questa sezione verificherai l'installazione di Apache Guacamole.

Prima di tutto, apri il tuo browser web e digita il nome di dominio per la tua installazione di Guacamole con il percorso predefinito /guacamole.

Ora vedrai la pagina di accesso di Guacamole qui sotto. Inserisci il nome utente e la password che hai configurato nel file user-mapping.xml, quindi fai clic sul pulsante Accedi.

Dopo aver effettuato l'accesso, vedrai un elenco di connessioni definite per i tuoi utenti.

Fare clic sul nome della connessione per connettersi al server di destinazione. Questo esempio si collegherà al server locale con il protocollo SSH.

Ora vedrai una nuova sessione di terminale ssh sul tuo server.

Conclusione

Congratulazioni! In questo tutorial, hai imparato come installare Apache Guacamole su Debian 11 Bullseye. Inoltre, hai imparato come configurare l'autenticazione utente e le connessioni utilizzando il file di configurazione user-mapping.xml e configurare Nginx come proxy inverso per l'applicazione web Guacamole, che ti consente di eseguire Guacamaloe utilizzando il nome di dominio e proteggerlo utilizzando i certificati SSL.