Ricerca nel sito web

Come installare e utilizzare Apache Guacamole Remote Desktop su Rocky Linux 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa le librerie
  4. Passaggio 3 - Installa Apache Tomcat
    1. Installa Java
    2. Crea utente Tomcat
    3. Scarica Tomcat
    4. Crea un file Systemd Unit e avvia Tomcat

    1. Configura l'autenticazione del database Apache Guacamole
    2. Configura il file delle proprietà di Guacamole

    1. Configura Tomcat per la connessione al proxy inverso
    2. Installa Nginx

    1. Crea un nuovo utente amministratore

    Apache Guacamole è un gateway desktop remoto gratuito, open source, clientless. Supporta protocolli standard come SSH, RDP e VNC. Non ha bisogno di plugin e client di terze parti per funzionare. Puoi accedere alla tua macchina utilizzando un gateway basato sul web. Può essere messo dietro un server proxy che ti consente di accedere ai tuoi server da qualsiasi parte del mondo.

    Il guacamole è composto da due componenti:

    • guacamole-server contiene tutti i componenti nativi lato server richiesti da Guacamole per connettersi ai desktop remoti. guacd è il demone proxy che viene eseguito sul server Guacamole, accetta le connessioni degli utenti e quindi le connette ai desktop remoti.
    • guacamole-client contiene tutti i componenti Java e Javascript di Guacamole che compongono l'applicazione web in cui gli utenti possono connettersi ai loro desktop.

    In questo tutorial imparerai come installare e utilizzare Apache Guacamole su un server basato su Rocky Linux 8. Imparerai anche come usarlo per connetterti a un desktop remoto. Installeremo Guacamole costruendo dal suo codice sorgente.

    Prerequisiti

    • A server running Rocky Linux 8 with a minimum of 2GB RAM and 2 CPU Cores.

    • A domain name for the helpdesk pointing to the server. For our tutorial, we will use the uvdesk.example.com domain.

    • A non-root based user with sudo privileges.

    • Make sure everything is updated.

      $ sudo dnf update
      
    • Install basic utility packages. Some of them may already be installed.

      $ sudo dnf install wget curl nano unzip yum-utils -y
      

    Passaggio 1: configurare il firewall

    Il primo passo è configurare il firewall. Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.

    $ sudo firewall-cmd --state
    running
    

    Il firewall funziona con zone diverse e la zona pubblica è quella predefinita che utilizzeremo. Elenca tutti i servizi e le porte attive sul firewall.

    $ sudo firewall-cmd --permanent --list-services
    

    Dovrebbe mostrare il seguente output.

    cockpit dhcpv6-client ssh
    

    Consenti porte HTTP e HTTPS.

    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --permanent --add-service=https
    

    Ricontrolla lo stato del firewall.

    $ sudo firewall-cmd --permanent --list-services
    

    Dovresti vedere un output simile.

    cockpit dhcpv6-client http https ssh
    

    Ricarica il firewall per abilitare le modifiche.

    $ sudo firewall-cmd --reload
    

    Passaggio 2: installa le librerie

    Prima di installare le librerie, dobbiamo installare il repository EPEL e abilitare il repository PowerTools.

    $ sudo dnf install epel-release -y
    $ sudo dnf config-manager --set-enabled powertools
    

    Il primo passo è installare le librerie necessarie per costruire Guacamole. Installa le librerie richieste.

    $ sudo dnf install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel libtool libuuid-devel uuid-devel make cmake
    

    Le dipendenze di cui sopra sono obbligatorie, il che significa che senza di esse Guacamole non può essere costruito. È possibile installare alcune dipendenze facoltative per aggiungere il supporto per vari protocolli e funzionalità.

    Ma prima, devi abilitare RPMFusion Free Repository perché contiene il pacchetto ffmpeg-devel.

    $ sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
    

    Installa le dipendenze facoltative.

    $ sudo dnf install ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel compat-openssl10 libvorbis-devel libwebp-devel libgcrypt-devel
    

    Passo 3 - Installa Apache Tomcat

    Per il nostro tutorial, installeremo Apache Tomcat 9, che richiede Java 8 e versioni successive per funzionare.

    Installa Java

    Installeremo OpenJDK 11, l'implementazione open source della piattaforma Java.

    Eseguire il seguente comando per installare OpenJDK.

    $ sudo dnf install java-11-openjdk-devel
    

    Verificare l'installazione.

    $ java -version
    openjdk 11.0.14 2022-01-18 LTS
    OpenJDK Runtime Environment 18.9 (build 11.0.14+9-LTS)
    OpenJDK 64-Bit Server VM 18.9 (build 11.0.14+9-LTS, mixed mode, sharing)
    

    Crea utente Tomcat

    Successivamente, crea un utente per il servizio Tomcat. Imposteremo /opt/tomcat come home directory.

    $ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
    

    Scarica Tomcat

    L'ultima versione di Tomcat v10 può essere scaricata dalla sua pagina di download. Al momento della stesura di questo tutorial, v9.0.59 è l'ultima versione disponibile. Controlla l'ultima versione prima di scaricare Tomcat.

    Usa wget per scaricare Tomcat.

    $ TVERSION=9.0.59
    $ wget https://dlcdn.apache.org/tomcat/tomcat-9/v${TVERSION}/bin/apache-tomcat-${TVERSION}.tar.gz
    

    Estrai il file nella directory /opt/tomcat.

    $ sudo tar -xf apache-tomcat-${TVERSION}.tar.gz --strip-components=1 -C /opt/tomcat/
    

    Cambia la proprietà della directory all'utente Tomcat.

    $ sudo chown -R tomcat:tomcat /opt/tomcat
    

    Crea un file di unità Systemd e avvia Tomcat

    Crea e apri il file /etc/systemd/system/tomcat.service per la modifica.

    $ sudo nano /etc/systemd/system/tomcat.service
    

    Incolla il seguente codice.

    [Unit]
    Description=Apache Tomcat 9 Servlet container
    Wants=network.target
    After=network.target
    
    [Service]
    Type=forking
    User=tomcat
    Group=tomcat
    
    Environment="JAVA_HOME=/usr/lib/jvm/jre"
    Environment="JAVA_OPTS=-Djava.awt.headless=true"
    Environment="CATALINA_BASE=/opt/tomcat"
    Environment="CATALINA_HOME=/opt/tomcat"
    Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
    Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
    
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    Salvare il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.

    Ricarica il demone del servizio per abilitare il servizio Tomcat.

    $ sudo systemctl daemon-reload
    

    Abilita e avvia il servizio Tomcat.

    $ sudo systemctl enable tomcat --now
    

    Controlla lo stato del servizio.

    $ sudo systemctl status tomcat
    ? tomcat.service - Apache Tomcat 9 Servlet container
       Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
       Active: active (running) since Wed 2022-03-09 09:48:38 UTC; 8s ago
      Process: 25308 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
     Main PID: 25315 (java)
        Tasks: 29 (limit: 11412)
       Memory: 154.9M
       CGroup: /system.slice/tomcat.service
               ??25315 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties ..
    
    Mar 09 09:48:38 guacamole systemd[1]: Starting Apache Tomcat 9 Servlet container...
    Mar 09 09:48:38 guacamole systemd[1]: Started Apache Tomcat 9 Servlet container.
    

    Passaggio 4: scarica e crea Guacamole

    È possibile ottenere la versione 1.4.0. Scarica il codice sorgente di Guacamole.

    $ GVERSION=1.4.0
    $ wget https://downloads.apache.org/guacamole/${GVERSION}/source/guacamole-server-${GVERSION}.tar.gz
    

    Estrai l'archivio e passa alla directory appena creata.

    $ tar -xzf guacamole-server-${GVERSION}.tar.gz
    $ cd guacamole-server-${GVERSION}/
    

    Esegui il comando configure per determinare quali librerie sono disponibili e selezionare i componenti per la compilazione.

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

    La directory /etc/systemd/system/ è dove verrà installato lo script di avvio durante il processo di compilazione per configurare Guacamole in modo che si avvii automaticamente all'avvio.

    Otterrai il seguente output al completamento con successo.

    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    ...
    
    ------------------------------------------------
    guacamole-server version 1.4.0
    ------------------------------------------------
    
       Library status:
    
         freerdp2 ............ yes
         pango ............... yes
         libavcodec .......... yes
         libavformat.......... yes
         libavutil ........... yes
         libssh2 ............. yes
         libssl .............. yes
         libswscale .......... yes
         libtelnet ........... yes
         libVNCServer ........ yes
         libvorbis ........... yes
         libpulse ............ yes
         libwebsockets ....... yes
         libwebp ............. yes
         wsock32 ............. no
    
       Protocol support:
    
          Kubernetes .... yes
          RDP ........... yes
          SSH ........... yes
          Telnet ........ yes
          VNC ........... yes
    
       Services / tools:
    
          guacd ...... yes
          guacenc .... yes
          guaclog .... yes
    
       FreeRDP plugins: /usr/lib64/freerdp2
       Init scripts: no
       Systemd units: /etc/systemd/system/
    
    Type "make" to compile guacamole-server.
    

    Se non hai alcune librerie installate, vedrai no invece di yes nell'output. Ma se manca una libreria critica, il comando fallirà. Per controllare più opzioni di configurazione, eseguire il comando ./configure --help.

    Compilare e installare il server Guacamole utilizzando i seguenti comandi.

    $ make && sudo make install
    

    Eseguire il comando seguente per aggiornare la cache di sistema delle librerie installate.

    $ sudo ldconfig
    

    Ricarica il demone del servizio.

    $ sudo systemctl daemon-reload
    

    Abilita e avvia il servizio Guacamole.

    $ sudo systemctl enable guacd --now
    

    Verificare lo stato del servizio.

    $ sudo systemctl status guacd
    ? guacd.service - Guacamole Server
       Loaded: loaded (/etc/systemd/system/guacd.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2022-03-10 09:13:41 UTC; 7s ago
         Docs: man:guacd(8)
     Main PID: 85349 (guacd)
        Tasks: 1 (limit: 11181)
       Memory: 10.8M
       CGroup: /system.slice/guacd.service
               ??85349 /usr/local/sbin/guacd -f
    
    Mar 10 09:13:41 guacamole systemd[1]: Started Guacamole Server.
    Mar 10 09:13:41 guacamole guacd[85349]: Guacamole proxy daemon (guacd) version 1.4.0 started
    Mar 10 09:13:41 guacamole guacd[85349]: guacd[85349]: INFO:        Guacamole proxy daemon (guacd) version 1.4.0 started
    Mar 10 09:13:41 guacamole guacd[85349]: guacd[85349]: INFO:        Listening on host ::1, port 4822
    Mar 10 09:13:41 guacamole guacd[85349]: Listening on host ::1, port 4822
    

    Passo 5 - Installa Guacamole Client

    Ora che hai installato il server, il passo successivo è installare il client.

    Crea la directory di configurazione per Guacamole.

    $ sudo mkdir /etc/guacamole
    

    A differenza del server Guacamole, il client Guacamole è disponibile in codice sorgente e in formato binario. Per il nostro tutorial, scaricheremo il binario. Puoi, tuttavia, scegliere di creare il client dall'origine.

    Scarica il binario del client Guacamole dal sito web.

    $ sudo wget https://downloads.apache.org/guacamole/${GVERSION}/binary/guacamole-${GVERSION}.war -O /etc/guacamole/guacamole.war
    

    Il comando precedente scarica e copia il file binario Guacamole nella directory /etc/guacamole.

    Affinché il client funzioni, deve essere distribuito dalla directory Tomcats, che è $CATALINA_HOME/webapps/. Nel passaggio 3, impostiamo /opt/tomcat come $CATALINA_HOME.

    Esegui il seguente comando per creare un collegamento simbolico da /etc/guacamole/guacamole.war alla directory webapps di Tomcat.

    $ sudo ln -s /etc/guacamole/guacamole.war /opt/tomcat/webapps/
    

    Cambia l'autorizzazione dell'app in utente tomcat.

    $ sudo chown -R tomcat:tomcat /opt/tomcat/webapps
    

    Crea il file di configurazione dell'applicazione web in /etc/guacamole/guacd.conf.

    $ sudo nano /etc/guacamole/guacd.conf
    

    Incolla il seguente codice al suo interno. Sostituisci your_server_IP con l'indirizzo IP pubblico del tuo server.

    #
    # guacd configuration file
    #
    
    [daemon]
    
    #pid_file = /var/run/guacd.pid
    log_level = info
    
    [server]
    
    bind_host = your_server_IP
    bind_port = 4822
    
    #
    # The following parameters are valid only if
    # guacd was built with SSL support.
    #
    
    # [ssl]
    
    # server_certificate = /etc/ssl/certs/guacd.crt
    # server_key = /etc/ssl/private/guacd.key
    

    Salvare il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.

    Riavvia il server Guacamole e Tomcat per applicare le modifiche.

    $ sudo systemctl restart tomcat guacd
    

    Passo 6 - Installa e configura MySQL

    Apache Guacamole offre vari tipi di metodi di autenticazione. A scopo di test, è sufficiente una semplice autenticazione basata su password. Ma per gli ambienti di produzione, dobbiamo implementare un metodo di autenticazione più forte e migliore. Qui implementeremo l'autenticazione basata su database utilizzando MySQL.

    Installa MySQL.

    $ sudo dnf install mysql-server
    

    Abilita e avvia il servizio MySQL.

    $ sudo systemctl enable mysqld --now
    

    Installazione sicura di MySQL.

    $ sudo mysql_secure_installation
    

    Per il primo passaggio, ti verrà chiesto se desideri configurare il plug-in Validate Password, che puoi utilizzare per testare la sicurezza della tua password MySQL. Scegli Y per procedere. Ti verrà chiesto di scegliere il livello di convalida della password nel passaggio successivo. Scegli 2 che è il livello più forte e richiederà che la tua password sia lunga almeno otto caratteri e includa un mix di caratteri maiuscoli, minuscoli, numerici e speciali.

    Securing the MySQL server deployment.
    
    Connecting to MySQL using a blank password.
    
    VALIDATE PASSWORD COMPONENT can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD component?
    
    Press y|Y for Yes, any other key for No: Y
    
    There are three levels of password validation policy:
    
    LOW    Length >= 8
    MEDIUM Length >= 8, numeric, mixed case, and special characters
    STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
    
    Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
    

    Ti verrà chiesto di scegliere una password di root nel passaggio successivo. Scegli una password complessa che soddisfi i requisiti del plug-in di convalida della password. Nel passaggio successivo, ti verrà chiesto se continuare con la password scelta. Premi y per continuare.

    Please set the password for root here.
    
    New password:
    
    Re-enter new password:
    
    Estimated strength of the password: 100
    Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
    

    Premi Y e poi il tasto INVIO per tutti i seguenti prompt per rimuovere gli utenti anonimi e il database di test, disabilitare i login root e caricare le nuove regole impostate.

    ...
    Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
    Success.
    ...
    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
    Success.
    ...
    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
     - Dropping test database...
    Success.
     - Removing privileges on test database...
    Success.
    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.
    ...
    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
    Success.
    All done!
    

    Inserisci la shell MySQL. Inserisci la tua password di root per continuare.

    $ mysql -u root -p
    

    Crea un utente guacamole_user. Assicurati che la password soddisfi i requisiti impostati in precedenza.

    mysql> CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'Your_password2';
    

    Crea il database guacamole_db.

    mysql> CREATE DATABASE guacamole_db;
    

    Concedi all'utente i privilegi sul database guacamole_db.

    mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
    

    Esci dalla shell.

    mysql> exit
    

    Passaggio 7: configurare Apache Guacamole

    La directory di configurazione di Guacamoles è definita dalla variabile GUACAMOLE_HOME. Tutti i file di configurazione, le estensioni, ecc. si trovano in questa directory. Il file /etc/guacamole/guacamole.properties memorizza tutte le configurazioni e le impostazioni per Guacamole e le sue estensioni.

    Le estensioni e le librerie richiedono directory aggiuntive. Creali.

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

    Imposta la variabile home Guacamole e salvala nel file di configurazione /etc/default/tomcat.

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

    Configurare l'autenticazione del database Apache Guacamole

    Abbiamo già impostato il database per Guacamole nel passaggio precedente. Dobbiamo scaricare il plug-in di autenticazione JDBC Guacamole e la libreria MySQL Java Connector per completare la configurazione.

    Scarica il Guacamole JDBC Plugin dal suo sito web.

    $ cd ~
    $ wget https://downloads.apache.org/guacamole/${GVERSION}/binary/guacamole-auth-jdbc-${GVERSION}.tar.gz
    

    Estrai il plugin nella directory /etc/guacamole/extensions.

    $ tar -xf guacamole-auth-jdbc-${GVERSION}.tar.gz
    $ sudo mv guacamole-auth-jdbc-${GVERSION}/mysql/guacamole-auth-jdbc-mysql-${GVERSION}.jar /etc/guacamole/extensions/
    

    Il passaggio successivo consiste nell'importare lo schema SQL nel database MySQL. Passa alla directory del plugin estratto.

    $ cd guacamole-auth-jdbc-${GVERSION}/mysql/schema
    

    Importa i file dello schema in MySQL.

    $ cat *.sql | mysql -u root -p guacamole_db
    

    Scarica il connettore MySQL Java. Prendi il file di archivio indipendente dalla piattaforma. Al momento della stesura di questo tutorial, l'ultima versione disponibile è la 8.0.28.

    $ cd ~
    $ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.28.tar.gz
    

    Estrai l'archivio e copiane il contenuto nella directory /etc/guacamole/lib.

    $ tar -xf mysql-connector-java-8.0.28.tar.gz
    $ sudo mv mysql-connector-java-8.0.28/mysql-connector-java-8.0.28.jar /etc/guacamole/lib/
    

    Configura il file delle proprietà di Guacamole

    Crea il file /etc/guacamole/guacamole.properties e aprilo per modificarlo.

    $ sudo nano /etc/guacamole/guacamole.properties
    

    Incolla il seguente codice al suo interno. Sostituisci your_server_ip con l'indirizzo IP pubblico del tuo server.

    guacd-hostname: your_server_ip
    guacd-port:     4822
    
    # MySQL properties
    mysql-hostname: localhost
    mysql-database: guacamole_db
    mysql-username: guacamole_user
    mysql-password: Your_password2
    

    Salvare il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.

    Collega la directory di configurazione di Guacamole alla directory del servlet Tomcat.

    $ sudo ln -s /etc/guacamole /opt/tomcat/.guacamole
    

    Riavvia Tomcat per abilitare l'autenticazione del database. Non è necessario riavviare guacd perché è completamente indipendente dall'applicazione web e non gestisce in alcun modo guacamole.properties o l'autenticazione del database .

    $ sudo systemctl restart tomcat
    

    Passaggio 8: installa SSL

    Per installare un certificato SSL utilizzando Lets Encrypt, è necessario installare lo strumento Certbot. Certbot richiede il repository EPEL per l'installazione, ma possiamo procedere direttamente con l'installazione poiché l'abbiamo già installato in precedenza.

    Eseguire i seguenti comandi per installare Certbot.

    $ sudo dnf install certbot
    

    Genera il certificato SSL.

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d guacamole.example.com
    

    Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/guacamole.example.com sul tuo server.

    Genera un certificato di gruppo Diffie-Hellman.

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

    Crea una directory webroot di verifica per il rinnovo automatico di Lets Encrypt.

    $ sudo mkdir -p /var/lib/letsencrypt
    

    Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, per prima cosa, crea il file /etc/cron.daily/certbot-renew e aprilo per modificarlo.

    $ sudo nano /etc/cron.daily/certbot-renew
    

    Incolla il seguente codice.

    #!/bin/sh
    certbot renew --cert-name guacamole.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.

    $ sudo chmod +x /etc/cron.daily/certbot-renew
    

    Passaggio 9: installare e configurare Nginx come proxy inverso

    Configura Tomcat per la connessione con proxy inverso

    Prima di installare Nginx, dobbiamo configurare Tomcat per passare attraverso l'indirizzo IP remoto fornito dal proxy inverso Nginx.

    Apri il file /opt/tomcat/conf/server.xml per la modifica.

    $ sudo nano /opt/tomcat/conf/server.xml
    

    Individuare la seguente riga nel file.

    <Host name="localhost"  appBase="webapps" 
                unpackWARs="true" autoDeploy="true">
    

    Modifica la riga incollando il codice aggiuntivo sotto di essa, in modo che assomigli al seguente.

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    
            <Valve className="org.apache.catalina.valves.RemoteIpValve"
                   internalProxies="127.0.0.1"
                   remoteIpHeader="x-forwarded-for"
                   remoteIpProxiesHeader="x-forwarded-by"
                   protocolHeader="x-forwarded-proto" />
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Installa Nginx

    Rocky Linux 8.5 viene fornito con l'ultima versione stabile di Nginx. Installalo usando il seguente comando.

    $ sudo dnf module install nginx:1.20
    

    Verificare l'installazione.

    $ nginx -v
    nginx version: nginx/1.20.1
    

    Abilita il servizio Nginx.

    $ sudo systemctl enable nginx
    

    Crea e apri il file /etc/nginx/conf.d/guacamole.conf per la modifica.

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

    Incolla il seguente codice al suo interno.

    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  guacamole.example.com;
    
        access_log  /var/log/nginx/guacamole.access.log;
        error_log   /var/log/nginx/guacamole.error.log;
        
        # SSL
        ssl_certificate      /etc/letsencrypt/live/guacamole.example.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/guacamole.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/guacamole.example.com/chain.pem;
        ssl_session_timeout  5m;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        resolver 8.8.8.8;
    
        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;
          client_max_body_size 1g;
          access_log off;
      }
    }
    # enforce HTTPS
    server {
        listen       80;
        listen       [::]:80;
        server_name  guacamole.example.com;
        return 301   https://$host$request_uri;
    }
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

    Apri il file /etc/nginx/nginx.conf per la modifica.

    $ sudo nano /etc/nginx/nginx.conf
    

    Aggiungere la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;.

    server_names_hash_bucket_size  64;
    

    Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

    Verificare la sintassi del file di configurazione di Nginx.

    $ sudo nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    Correggi l'autorizzazione SELinux per consentire a Nginx di effettuare connessioni di rete.

    $ sudo setsebool -P httpd_can_network_connect 1
    

    Avvia il servizio Nginx per abilitare la nuova configurazione.

    $ sudo systemctl start nginx
    

    Riavvia il server Tomcat per applicare la modifica alla configurazione.

    $ sudo systemctl restart tomcat
    

    Passaggio 10: accesso a Guacamole

    Apri l'URL https://guacamole.example.com nel tuo browser e verrai accolto con la seguente schermata.

    Inserisci guacadmin come nome utente e guacadmin come password e fai clic su Accedi per procedere.

    Crea un nuovo utente amministratore

    È necessario creare un nuovo utente ed eliminare l'utente esistente per motivi di sicurezza. Per farlo, fai clic su guacadmin in alto a destra e fai clic sul menu Impostazioni dal menu a discesa.

    Passa alla scheda Utenti e fai clic sul pulsante Nuovo utente per iniziare.

    Inserisci i tuoi dati e seleziona tutte le autorizzazioni.

    Fai clic su Salva al termine. Disconnettersi dall'utente guacadmin e riconnettersi utilizzando l'utente appena creato.

    Torna alla schermata degli utenti. selezionare l'utente guacadmin da modificare e fare clic sul pulsante Elimina in basso per eliminare l'utente.

    Passaggio 11: come utilizzare il guacamole

    Per il nostro tutorial, ti mostreremo come connettersi a un server utilizzando il protocollo SSH.

    Vai al menu Impostazioni di Guacamole e seleziona Connessioni. Nella schermata Connessioni, premi il pulsante Nuova connessione.

    Scegli un nome per la connessione e seleziona SSH come protocollo dal menu a discesa.

    Nella sezione Parametri, inserisci l'indirizzo IP del tuo server come nome host, 22 come porta (o se hai una porta SSH personalizzata, usa quella) e il tuo nome utente. Se utilizzi l'autenticazione basata su password, inserisci la password dell'utente o incolla la chiave privata. Inserisci la passphrase per la chiave privata se la stai utilizzando.

    Se desideri abilitare eventuali impostazioni aggiuntive, fallo. Fare clic su Salva per completare l'aggiunta della connessione.

    Torna alla dashboard e fai clic sul nome della connessione in Tutte le connessioni e verrai indirizzato al terminale SSH.

    Conclusione

    Questo conclude il nostro tutorial sull'installazione e l'utilizzo di Apache Guacamole per creare una connessione SSH su un server basato su Rocky Linux 8. Se hai domande, pubblicale nei commenti qui sotto.