GNU/Linux >> Tutoriales Linux >  >> Debian

Configurar Apache Guacamole Remote Desktop en Debian 10 Buster

Este tutorial le mostrará cómo configurar el escritorio remoto Guacamole en el servidor Debian 10. Guacamole es una puerta de enlace de escritorio remoto gratuita y de código abierto desarrollada por la fundación de software Apache.

Características del guacamole

  • Le permite acceder a su escritorio remoto desde un navegador web. No es necesario instalar ningún otro software en el lado del cliente.
  • Admite protocolos estándar como VNC, RDP, SSH y Kubernetes.
  • Las sesiones de VNC se pueden grabar gráficamente.
  • Inicio de sesión único con CAS, OpenID Connect o SAML 2.0
  • Wake-on-LAN
  • Administre fácilmente varias sesiones de escritorio remoto.
  • Admite la autenticación de dos factores TOTP.
  • Admite portapapeles (copiar y pegar) y transferencia de archivos a través de SFTP.
  • Admite entrada y salida de audio
  • y más.

Guacamole en sí no es un protocolo de escritorio remoto. Es un proxy entre el escritorio remoto y el cliente, por lo que el escritorio remoto se puede mostrar y controlar en un navegador web.

Paso 1:Cree el servidor de guacamole desde la fuente

Inicie sesión en su servidor Debian 10 e instale los paquetes de dependencia.

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

Descarga la última versión estable de guacamole-server.

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

Extraiga el archivo.

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

Cambie al directorio extraído.

cd guacamole-server-1.2.0

Configure el entorno de compilación.

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

Luego compila guacamole-server.

sudo make

Instale el servidor de guacamole.

sudo make install

Actualice la memoria caché del sistema de las bibliotecas instaladas.

sudo ldconfig

Vuelva a cargar systemd, para que pueda encontrar el guacd (Guacamole proxy daemon) servicio instalado en /etc/init.d/ directorio.

sudo systemctl daemon-reload

Inicie el guacd servicio.

sudo systemctl start guacd

Habilite el inicio automático en el momento del arranque.

sudo systemctl enable guacd

Comprueba su estado.

systemctl status guacd

Como puede ver, está activo (en ejecución) .

Guacd escucha en 127.0.0.1:4822 , como se puede mostrar con el ss utilidad.

sudo ss -lnpt | grep guacd

Paso 2:Instale la aplicación web Guacamole

La aplicación web de Guacamole está escrita en Java, por lo que debemos instalar un contenedor de Java Servlet como Apache Tomcat.

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

Apache Tomcat escuchará en el puerto 8080, como se puede mostrar con:

sudo ss -lnpt | grep java

Si tiene otro software que escucha en el puerto 8080, entonces Tomcat no puede vincularse al puerto 8080. Debe configurar el otro proceso para usar un puerto diferente, luego reinicie Tomcat (sudo systemctl restart tomcat9 ).

A continuación, descargue la aplicación web Guacamole.

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

Mueva el archivo al directorio de la aplicación web (/var/lib/tomcat9/webapps ) y cambie el nombre del archivo al mismo tiempo (elimine el número de versión).

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

Reinicie Tomcat y guacd.

sudo systemctl restart tomcat9 guacd

Paso 3:Configurar Guacamole

Cree un directorio de configuración para Guacamole.

sudo mkdir /etc/guacamole/

Cree un archivo de configuración.

sudo nano /etc/guacamole/guacamole.properties

Agregue las siguientes líneas en este archivo. Algunas personas podrían decir que no necesita agregar estas líneas porque son los valores predeterminados. Te muestro una configuración básica, para que puedas personalizarla cuando surja la necesidad.

# 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

Guarde y cierre el archivo. El módulo de autenticación predeterminado en Guacamole lee los nombres de usuario y las contraseñas de un archivo XML:/etc/guacamole/user-mapping.xml . Antes de crear este archivo, debemos generar un hash MD5 para su contraseña con el siguiente comando. Reemplace your_password con su contraseña preferida.

echo -n your_password | openssl md5

Salida de muestra:

(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517

A continuación, cree el archivo XML de asignación de usuarios.

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

Agregue las siguientes líneas. Aquí especificamos que el backend utilizará el protocolo VNC (Vritual Network Computing). Reemplace el nombre de usuario y el hash de la contraseña. Crearemos una contraseña de VNC más tarde.

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

Guarde y cierre el archivo. Reinicie Tomcat y guacd.

sudo systemctl restart tomcat9 guacd

Paso 4:Instale un entorno de escritorio en el servidor Debian 10

Como vamos a configurar un escritorio remoto, necesitamos un entorno de escritorio. Asegúrese de que su servidor tenga suficiente RAM antes de instalar un entorno de escritorio. Hay muchos entornos de escritorio. Descubrí que el entorno de escritorio ligero XFCE funciona bien en VNC, así que instálelo con el siguiente comando.

sudo apt update
sudo apt install xfce4 xfce4-goodies

Durante la instalación, es posible que se le pida que elija un administrador de pantalla predeterminado. Esta elección no importa mucho, porque no verá la pantalla de inicio de sesión en una sesión de VNC.

Dado que hay un entorno de escritorio ejecutándose en el servidor, se recomienda enfáticamente que use un firewall como UFW para restringir el acceso y abrir solo los puertos necesarios al público. Puede leer el siguiente tutorial para aprender a habilitar y usar UFW en Debian.

  • Cómo usar el cortafuegos UFW en Debian, Ubuntu, Linux Mint

Paso 5:Instale un servidor VNC en el servidor Debian 10

Hay varios software de servidor VNC disponibles para usuarios de Linux. Vamos a usar el servidor TigerVNC porque funciona mejor con Guacamole.

sudo apt install tigervnc-standalone-server

Ejecute el siguiente comando para iniciar el servidor VNC.

vncserver

Cuando TigerVNC se inicia por primera vez, le pide que configure una contraseña de VNC. Tenga en cuenta que la contraseña no debe tener más de 8 caracteres. Luego puede elegir si necesita una contraseña de solo lectura.

Ahora debes editar el /etc/guacamole/user-mapping.xml y cambie la contraseña de VNC. Luego reinicie Tomcat y guacd.

sudo systemctl restart tomcat9 guacd

El tigervnc-standalone-server el paquete se envía con un archivo /etc/X11/Xvnc-session que le dice a TigerVNC que inicie un servidor X cuando se inicie.

El servidor TigerVNC no se envía con ninguna unidad de servicio systemd. Para que se inicie en el momento del arranque, necesitamos crear una unidad de servicio systemd.

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

Agregue las siguientes líneas en el archivo. Reemplace el nombre de usuario con su nombre de usuario real.

[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

Guarde y cierre el archivo. Detenga la instancia actual del servidor VNC.

vncserver -kill :1

Inicie el servidor VNC con systemd.

sudo systemctl start [email protected]

Habilite el inicio automático en el momento del arranque.

sudo systemctl enable [email protected]

Compruebe su estado:

systemctl status [email protected]

Como puede ver, está activo (en ejecución).

Ahora TigerVNC Server escucha en el puerto 5901.

sudo ss -lnpt | grep vnc

Paso 6:configurar un proxy inverso para la aplicación web Guacamole

Apache Tomcat está escuchando en el puerto 8080. Para tener una manera fácil de acceder a la aplicación web Guacamole, podemos configurar un proxy inverso con Apache o Nginx, de modo que los usuarios finales puedan usar un nombre de dominio para acceder a la aplicación web. También nos permite instalar fácilmente un certificado TLS para cifrar la conexión.

Apache

Si prefiere usar Apache, instale Apache desde el repositorio de software predeterminado de Debian.

sudo apt install apache2

Para usar Apache como proxy inverso, debemos habilitar el proxy módulos y el módulo de cabecera.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

Luego cree un archivo de host virtual para Guacamole.

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

Agregue las siguientes líneas en el archivo. Reemplace guacamole.example.com con su propio nombre de dominio. Recuerde crear un registro A para el subdominio en su administrador de DNS. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.

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

Guarde y cierre el archivo. Pruebe la sintaxis.

sudo apachectl -t

Si Syntx está bien, habilite este host virtual.

sudo a2ensite guacamole.conf

Reiniciar Apache

sudo systemctl restart apache2

Ahora puede acceder a la página de inicio de sesión de Apache Guacamole a través de guacamole.example.com . Si ve el mensaje de "solicitud no válida" o un mensaje de error similar, podría significar que Apache Tomcat no puede vincularse al puerto 8080, porque este puerto ya está ocupado por otro proceso en el servidor. Debe configurar el otro proceso para usar un puerto diferente y luego reiniciar Tomcat.

Nginx

Si prefiere usar Nginx, instale Nginx desde el repositorio de software predeterminado de Debian.

sudo apt install nginx

Cree un archivo de bloqueo del servidor para Guacamole.

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

Agregue las siguientes líneas en el archivo. Reemplace guacamole.example.com con su propio nombre de dominio. Recuerde crear un registro A para el subdominio en su administrador de DNS. Si no tiene un nombre de dominio real, le recomiendo ir a NameCheap para comprar uno. El precio es bajo y brindan protección de privacidad whois gratis de por vida.

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

}

Guarde y cierre este archivo. Luego pruebe la configuración de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que el cambio surta efecto.

sudo systemctl reload nginx

Ahora puede acceder a la página de inicio de sesión de Apache Guacamole a través de guacamole.example.com . Si ve el mensaje de "solicitud no válida" o un mensaje de error similar, podría significar que Apache Tomcat no puede vincularse al puerto 8080, porque este puerto ya está ocupado por otro proceso en el servidor. Debe configurar el otro proceso para usar un puerto diferente y luego reiniciar Tomcat.

Habilitar HTTPS

Para cifrar el tráfico HTTP cuando visita la interfaz web de Guacamole, podemos habilitar HTTPS instalando un certificado TLS gratuito emitido por Let's Encrypt. Ejecute el siguiente comando para instalar el cliente Let's Encrypt (certbot) en Debian 10.

sudo apt install certbot

Si usa Apache, entonces necesita instalar el complemento Certbot Apache.

sudo apt install python3-certbot-apache

A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.

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

Si usa Nginx, también necesita instalar el complemento Certbot Nginx.

sudo apt install python3-certbot-nginx

A continuación, ejecute el siguiente comando para obtener e instalar el certificado TLS.

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

donde:

  • --nginx :use el complemento nginx.
  • --apache :Utilice el complemento de Apache.
  • --agree-tos :Acepto los términos del servicio.
  • --redirect :Forzar HTTPS por redirección 301.
  • --hsts :agregue el encabezado Strict-Transport-Security a cada respuesta HTTP. Obligar al navegador a usar siempre TLS para el dominio. Protege contra la eliminación de SSL/TLS.
  • --staple-ocsp :activa el grapado OCSP. Se grapa una respuesta OCSP válida al certificado que ofrece el servidor durante TLS.

Ahora se debe obtener el certificado e instalarlo automáticamente.

Y puede acceder a la interfaz web de Guacamole a través de HTTPS. (https://guacamole.ejemplo.com).

Después de iniciar sesión, podrá utilizar el escritorio remoto.

Conclusión

Espero que este tutorial le haya ayudado a configurar el escritorio remoto Apache Guacamole en el servidor Debian 10. Como siempre, si encuentra útil esta publicación, suscríbase a nuestro boletín gratuito para obtener más consejos y trucos. Cuídate 🙂


Debian
  1. Cómo establecer una dirección IP estática en Debian 10 Buster

  2. Cómo configurar RVM en Debian 10 Buster

  3. Cómo instalar VirtualBox 6.1 en Debian 10 (Buster)

  4. Cómo instalar ownCloud en Debian 10 (Buster)

  5. Instalar Apache en Debian 10

Cómo instalar Apache CouchDB en Debian 10 Buster

Cómo instalar Docker en Debian 10 Buster

Cómo instalar Tomcat en Debian 10 Buster

Cómo instalar Vagrant en Debian 10 Buster

Cómo instalar Apache Guacamole en Debian 11

Cómo instalar Apache en Debian 10