GNU/Linux >> Linux Esercitazione >  >> Debian

Configura il desktop remoto Apache Guacamole su Debian 10 Buster

Questo tutorial ti mostrerà come configurare il desktop remoto Guacamole sul server Debian 10. Guacamole è un gateway desktop remoto open source gratuito sviluppato da Apache Software Foundation.

Caratteristiche del guacamole

  • Ti permette di accedere al tuo desktop remoto da un browser web. Non è necessario installare altro software sul lato client.
  • Supporta protocolli standard come VNC, RDP, SSH e Kubernetes.
  • Le sessioni VNC possono essere registrate graficamente.
  • Single Sign-on con CAS, OpenID Connect o SAML 2.0
  • Wake-on-LAN
  • Gestisci facilmente più sessioni di desktop remoto.
  • Supporta l'autenticazione a due fattori TOTP.
  • Supporta gli appunti (copia e incolla) e il trasferimento di file tramite SFTP.
  • Supporta input e output audio
  • e altro.

Guacamole stesso non è un protocollo desktop remoto. È un proxy tra il desktop remoto e il client, quindi il desktop remoto può essere visualizzato e controllato in un browser web.

Passaggio 1:crea il server Guacamole dall'origine

Accedi al tuo server Debian 10 e installa i pacchetti di dipendenze.

sudo apt install build-essential libcairo2-dev libjpeg62-turbo-dev libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev libpulse-dev libvorbis-dev libwebp-dev libssl-dev libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev libavformat-dev

Scarica l'ultima versione stabile di guacamole-server.

wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz

Estrai l'archivio.

tar -xvf guacamole-server-1.2.0.tar.gz

Passa alla directory estratta.

cd guacamole-server-1.2.0

Configura l'ambiente di compilazione.

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

Quindi compila guacamole-server.

sudo make

Installa il server guacamole.

sudo make install

Aggiorna la cache di sistema delle librerie installate.

sudo ldconfig

Ricarica systemd, in modo che possa trovare il guacd (Demone proxy Guacamole) installato in /etc/init.d/ directory.

sudo systemctl daemon-reload

Avvia il guacd servizio.

sudo systemctl start guacd

Abilita l'avvio automatico all'avvio.

sudo systemctl enable guacd

Controlla il suo stato.

systemctl status guacd

Come puoi vedere, è attivo (in esecuzione) .

Guacd è in ascolto su 127.0.0.1:4822 , come può essere mostrato con il ss utilità.

sudo ss -lnpt | grep guacd

Fase 2:installa l'applicazione Web Guacamole

L'applicazione web Guacamole è scritta in Java, quindi è necessario installare un container Java Servlet come Apache Tomcat.

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

Apache Tomcat ascolterà sulla porta 8080, come mostrato con:

sudo ss -lnpt | grep java

Se hai altro software in ascolto sulla porta 8080, Tomcat non può collegarsi alla porta 8080. Devi configurare l'altro processo per utilizzare una porta diversa, quindi riavvia Tomcat (sudo systemctl restart tomcat9 ).

Quindi, scarica l'applicazione web Guacamole.

wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war

Sposta il file nella directory dell'applicazione Web (/var/lib/tomcat9/webapps ) e contemporaneamente rinomina il file (cancella il numero di versione).

sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war

Riavvia Tomcat e guacd.

sudo systemctl restart tomcat9 guacd

Fase 3:Configura Guacamole

Crea una directory di configurazione per Guacamole.

sudo mkdir /etc/guacamole/

Crea un file di configurazione.

sudo nano /etc/guacamole/guacamole.properties

Aggiungi le seguenti righe in questo file. Alcune persone potrebbero dire che non è necessario aggiungere queste righe perché sono i valori predefiniti. Ti mostro una configurazione di base, così puoi personalizzarla quando se ne presenta la necessità.

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

# Auth provider class (authenticates user/pass combination, needed if using the provided login screen)
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
basic-user-mapping: /etc/guacamole/user-mapping.xml

Salva e chiudi il file. Il modulo di autenticazione predefinito in Guacamole legge nomi utente e password da un file XML:/etc/guacamole/user-mapping.xml . Prima di creare questo file, dobbiamo generare un hash MD5 per la tua password con il seguente comando. Sostituisci your_password con la tua password preferita.

echo -n your_password | openssl md5

Esempio di output:

(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517

Quindi, crea il file XML di mappatura utente.

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

Aggiungi le seguenti righe. Qui specifichiamo che il backend utilizzerà il protocollo VNC (Vritual Network Computing). Sostituisci il nome utente e l'hash della password. Creeremo una password VNC in seguito.

<user-mapping>

    <!-- Per-user authentication and config information -->
    <authorize
         username="your_preferred_username"
         password="1060b7b46a3bd36b3a0d66e0127d051"
         encoding="md5">
      
       <connection name="default">
         <protocol>vnc</protocol>
         <param name="hostname">localhost</param>
         <param name="port">5901</param>
         <param name="password">vnc_password</param>
       </connection>
    </authorize>

</user-mapping>

Salva e chiudi il file. Riavvia Tomcat e guacd.

sudo systemctl restart tomcat9 guacd

Fase 4:Installa un ambiente desktop sul server Debian 10

Poiché stiamo per configurare un desktop remoto, abbiamo bisogno di un ambiente desktop. Assicurati che il tuo server abbia abbastanza RAM prima di installare un ambiente desktop. Esistono molti ambienti desktop. Ho scoperto che l'ambiente desktop XFCE leggero funziona bene in VNC, quindi installalo con il seguente comando.

sudo apt update
sudo apt install xfce4 xfce4-goodies

Durante l'installazione, ti potrebbe essere chiesto di scegliere un display manager predefinito. Questa scelta non ha molta importanza, perché non vedrai la schermata di accesso in una sessione VNC.

Poiché sul server è in esecuzione un ambiente desktop, si consiglia vivamente di utilizzare un firewall come UFW per limitare l'accesso e aprire al pubblico solo le porte necessarie. Puoi leggere il seguente tutorial per imparare come abilitare e usare UFW su Debian.

  • Come utilizzare UFW Firewall su Debian, Ubuntu, Linux Mint

Fase 5:installa un server VNC su Debian 10 Server

Sono disponibili diversi software per server VNC per gli utenti Linux. Utilizzeremo il server TigerVNC perché funziona meglio con Guacamole.

sudo apt install tigervnc-standalone-server

Esegui il comando seguente per avviare il server VNC.

vncserver

Quando TigerVNC si avvia per la prima volta, ti chiede di impostare una password VNC. Si noti che la password non deve contenere più di 8 caratteri. Quindi puoi scegliere se hai bisogno di una password di sola visualizzazione.

Ora dovresti modificare il /etc/guacamole/user-mapping.xml file e modificare la password VNC. Quindi riavvia Tomcat e guacd.

sudo systemctl restart tomcat9 guacd

Il tigervnc-standalone-server il pacchetto viene fornito con un file /etc/X11/Xvnc-session che dice a TigerVNC di avviare un server X all'avvio.

Il server TigerVNC non viene fornito con alcuna unità di servizio systemd. Per farlo partire all'avvio, dobbiamo creare un'unità di servizio systemd.

sudo nano /etc/systemd/system/[email protected]

Aggiungi le seguenti righe nel file. Sostituisci il nome utente con il tuo vero nome utente.

[Unit]
Description=a wrapper to launch an X server for VNC
After=syslog.target network.target

[Service]
Type=forking
User=username
Group=username
WorkingDirectory=/home/username

ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Salva e chiudi il file. Arresta l'istanza del server VNC corrente.

vncserver -kill :1

Avvia il server VNC con systemd.

sudo systemctl start [email protected]

Abilita l'avvio automatico all'avvio.

sudo systemctl enable [email protected]

Controlla il suo stato:

systemctl status [email protected]

Come puoi vedere, è attivo (in esecuzione).

Ora il server TigerVNC è in ascolto sulla porta 5901.

sudo ss -lnpt | grep vnc

Passaggio 6:configurare un proxy inverso per l'applicazione Web Guacamole

Apache Tomcat è in ascolto sulla porta 8080. Per avere un modo semplice per accedere all'applicazione web Guacamole, possiamo configurare un proxy inverso con Apache o Nginx, così gli utenti finali potranno utilizzare un nome di dominio per accedere all'applicazione web. Ci consente inoltre di installare facilmente un certificato TLS per crittografare la connessione.

Apache

Se preferisci usare Apache, installa Apache dal repository del software Debian predefinito.

sudo apt install apache2

Per utilizzare Apache come proxy inverso, dobbiamo abilitare il proxy moduli e il modulo di intestazione.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Quindi crea un file host virtuale per Guacamole.

sudo nano /etc/apache2/sites-available/guacamole.conf

Aggiungi le seguenti righe nel file. Sostituisci guacamole.example.com con il tuo nome di dominio. Ricorda di creare un record A per il sottodominio nel tuo gestore DNS. Se non hai un vero nome di dominio, ti consiglio di andare su NameCheap per acquistarne uno. Il prezzo è basso e offrono protezione della privacy a chi è gratuita per tutta la vita.

<VirtualHost *:80>
      ServerName guacamole.example.com

      ErrorLog ${APACHE_LOG_DIR}/guacamole_error.log
      CustomLog ${APACHE_LOG_DIR}/guacamole_access.log combined

      <Location />
          Require all granted
          ProxyPass http://localhost:8080/guacamole/ flushpackets=on
          ProxyPassReverse http://localhost:8080/guacamole/
      </Location>

     <Location /websocket-tunnel>
         Require all granted
         ProxyPass ws://localhost:8080/guacamole/websocket-tunnel
         ProxyPassReverse ws://localhost:8080/guacamole/websocket-tunnel
     </Location>

     Header always unset X-Frame-Options
</VirtualHost>

Salva e chiudi il file. Verifica la sintassi.

sudo apachectl -t

Se Syntx è ok, abilita questo host virtuale.

sudo a2ensite guacamole.conf

Riavvia Apache

sudo systemctl restart apache2

Ora puoi accedere alla pagina di accesso di Apache Guacamole tramite guacamole.example.com . Se vedi la "richiesta non valida" o un messaggio di errore simile, potrebbe significare che Apache Tomcat non può collegarsi alla porta 8080, perché questa porta è già occupata da un altro processo sul server. Dovresti configurare l'altro processo per utilizzare una porta diversa, quindi riavviare Tomcat.

Nginx

Se preferisci usare Nginx, installa Nginx dal repository del software Debian predefinito.

sudo apt install nginx

Crea un file di blocco del server per Guacamole.

sudo nano /etc/nginx/conf.d/guacamole.conf

Aggiungi le seguenti righe nel file. Sostituisci guacamole.example.com con il tuo nome di dominio. Ricorda di creare un record A per il sottodominio nel tuo gestore DNS. Se non hai un vero nome di dominio, ti consiglio di andare su NameCheap per acquistarne uno. Il prezzo è basso e offrono protezione della privacy a chi è gratuita per tutta la vita.

server {
        listen 80;
        listen [::]:80;
        server_name guacamole.example.com;

        access_log  /var/log/nginx/guac_access.log;
        error_log  /var/log/nginx/guac_error.log;

        location / {
                    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/ /;
        }

}

Salva e chiudi questo file. Quindi testa la configurazione di Nginx.

sudo nginx -t

Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.

sudo systemctl reload nginx

Ora puoi accedere alla pagina di accesso di Apache Guacamole tramite guacamole.example.com . Se vedi la "richiesta non valida" o un messaggio di errore simile, potrebbe significare che Apache Tomcat non può collegarsi alla porta 8080, perché questa porta è già occupata da un altro processo sul server. Dovresti configurare l'altro processo per utilizzare una porta diversa, quindi riavviare Tomcat.

Abilita HTTPS

Per crittografare il traffico HTTP quando visiti l'interfaccia web di Guacamole, possiamo abilitare HTTPS installando un certificato TLS gratuito emesso da Let's Encrypt. Esegui il comando seguente per installare il client Let's Encrypt (certbot) su Debian 10.

sudo apt install certbot

Se usi Apache, devi installare il plugin Certbot Apache.

sudo apt install python3-certbot-apache

Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com

Se usi Nginx, devi anche installare il plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com

Dove:

  • --nginx :usa il plugin nginx.
  • --apache :usa il plugin Apache.
  • --agree-tos :Accetta i termini di servizio.
  • --redirect :Forza HTTPS tramite reindirizzamento 301.
  • --hsts :aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP. Forzare il browser a utilizzare sempre TLS per il dominio. Difende dallo stripping SSL/TLS.
  • --staple-ocsp :Abilita la pinzatura OCSP. Una risposta OCSP valida viene pinzata al certificato offerto dal server durante TLS.

Il certificato dovrebbe ora essere ottenuto e installato automaticamente.

E puoi accedere all'interfaccia web di Guacamole tramite HTTPS. (https://guacamole.example.com).

Dopo aver effettuato l'accesso, potrai utilizzare il desktop remoto.

Preparazione

Spero che questo tutorial ti abbia aiutato a configurare il desktop remoto Apache Guacamole sul server Debian 10. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere ulteriori suggerimenti e trucchi. Abbi cura di 🙂


Debian
  1. Come impostare un indirizzo IP statico su Debian 10 Buster

  2. Come configurare RVM su Debian 10 Buster

  3. Come installare VirtualBox 6.1 su Debian 10 (Buster)

  4. Come installare ownCloud su Debian 10 (Buster)

  5. Installa Apache su Debian 10

Come installare Apache CouchDB su Debian 10 Buster

Come installare Docker su Debian 10 Buster

Come installare Tomcat su Debian 10 Buster

Come installare Vagrant su Debian 10 Buster

Come installare Apache Guacamole su Debian 11

Come installare Apache su Debian 10