Cómo crear una pasarela de escritorio remoto mediante Apache Guacamole en AlmaLinux 9

Apache Guacamole es una pasarela de escritorio remoto gratuita y de código abierto que te permite conectarte a tu ordenador/servidor de forma remota utilizando distintos protocolos como SSH, RDP y VNC. Apache Guacamole está mantenido por Apache Software Foundation, y licenciado con Apache License 2.0.

Apache Guacamole es una pasarela de escritorio remoto sin cliente. Puedes acceder a Apache Guacamole utilizando sólo un navegador web desde cualquier lugar y en cualquier momento. Se recomienda utilizar Apache Guacamole si tienes varios sistemas operativos remotos con distintos protocolos, como Windows con RDP, sistema Linux con VNC y SSH.

En esta guía, te guiaremos a través de la instalación de Apache Guacamole como Pasarela de Escritorio Remoto en una máquina AlmaLinux 9. Instalarás Apache Guacamole con el servidor de base de datos MariaDB, Nginx como proxy inverso, y luego asegurarás la instalación con SSL de Letsencrypt.

Requisitos previos

Antes de empezar, asegúrate de que tienes lo siguiente:

  • Un servidor AlmaLinux 9 – Esta demo utiliza una máquina AlmaLinux con el nombre de host guacamole-alma9.
  • Un usuario no root que tenga privilegios para ejecutar sudo.
  • Un nombre de dominio apuntando a la dirección IP del servidor.

Configurar repositorios

El primer paso que debes hacer es configurar repositorios adicionales en tu servidor AlmaLinux. Debes añadir el repositorio EPEL, y habilitar el repositorio CRB (Code Ready Builder), que es el sustituto de PowerTools en RHEL 8, luego debes añadir el repositorio RPMFusion.

Ejecuta el siguiente comando dnf para instalar algunas dependencias básicas y el repositorio EPEL en tu sistema. Introduce y para confirmar la instalación y pulsa INTRO.

sudo dnf install wget nano epel-release dnf-utils

instalar dependencias básicas

Ahora ejecuta el siguiente comando para habilitar el repositorio AlmaLinux CRB (Code Ready Builder). En RHEL 8, este repositorio se llama PowerTools, y desde RHEL 9, el nombre ha cambiado a CRB.

sudo dnf config-manager --set-enabled crb

A continuación, ejecuta el siguiente comando para añadir el repositorio RPMFusion a tu sistema AlmaLinux. Este repositorio proporciona el paquete ffmpeg-devel, necesario para Apache Guacamole.

sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm

Introduce y para confirmar la instalación y pulsa ENTER para continuar.

activar el repositorio CRB e instalar RPMFusion

Instalación de dependencias

Con los repositorios añadidos a tu sistema, ahora puedes proceder a instalar las dependencias de los paquetes para Apache Guacamole. Instalarás los siguientes paquetes:

  • Dependencias básicas para compilar e instalar guacd.
  • Java y Apache Tomcat para ejecutar la aplicación web Apache Guacamole, que está basada en Java.
  • Servidor de base de datos MariaDB que se utilizará como autenticación de usuarios para Apache Guacamole.
  • Servidor web Nginx como reverso para la aplicación web Apache Guacamole.
  • Certbot para asegurar el acceso a Apache Guacamole.

Instalación de dependencias para compilar guacd

Ejecuta el siguiente comando dnf para instalar las dependencias de los paquetes que se utilizarán para compilar guacd. Introduce y para confirmar la instalación y pulsa ENTER.

sudo dnf install cairo-devel libjpeg-turbo-devel libjpeg-devel libpng-devel libtool libuuid-devel uuid-devel make cmake ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel compat-openssl11 libvorbis-devel libwebp-devel libgcrypt-devel

instalar dependencias

Introduce también y para añadir la clave GPG del repositorio RPMFusion y EPEL.

aceptar clave gpg

Instalación de Java y Apache Tomcat

Ahora, ejecuta el siguiente comando para instalar Java 11 y Apache Tomcat 9 en tu servidor AlmaLinux. Ambas versiones de paquetes son compatibles con Apache Guacamole, por lo que puedes instalar ambos paquetes desde el repositorio appstream de AlmaLinux.

sudo dnf install java-11-openjdk-devel tomcat

Introduce y cuando se te pida, y pulsa ENTER.

instalar java y apache tomcat

Una vez instalados Java y Apache Tomcat, ejecuta el siguiente comando java para verificar la versión de Java. Deberías ver que Java OpenJDK 11 está instalado en tu sistema.

java --version

verifica la versión de java

Ahora ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio tomcat.

sudo systemctl start tomcat
sudo systemctl enable tomcat

A continuación, verifica el servicio tomcat para asegurarte de que se está ejecutando.

sudo systemctl status tomcat

Si el servidor tomcat se está ejecutando, la salida debería estar activa (en ejecución).

verificar el estado de tomcat

Instalación del servidor MariaDB

Apache Guacamole admite varios métodos de autenticación, como la autenticación de base de datos, la autenticación LDAP, Radius, SAML y OpenID. En esta demostración, utilizarás la autenticación de base de datos a través del servidor MariaDB para Apache Guacamole.

Introduce el siguiente comando dnf para instalar el servidor MariaDB. Cuando se te solicite, introduce y para confirmar y pulsa INTRO.

sudo dnf install mariadb-server

instalar mariadb

A continuación, ejecuta el siguiente comando para iniciar y habilitar el servicio mariadb.

sudo systemctl start mariadb
sudo systemctl enable mariadb

A continuación, verifica el servicio mariadb para asegurarte de que se está ejecutando.

sudo systemctl status mariadb

La salida debe estar activa (en ejecución ) cuando el estado de mariadb es en ejecución.

verificar mariadb

Instalar Nginx y Certbot

Ahora vas a instalar Nginx, que se utilizará como proxy inverso para la aplicación cliente de Apache Guacamole, y Certbot para generar certificados SSL y proteger Apache Guacamole.

Ejecuta el siguiente comando dnf para instalar Nginx y Certbot en tu sistema.

sudo dnf install nginx certbot python3-certbot-nginx

Introduce y para confirmar la instalación y pulsa ENTER.

instalar nginx certbot

Una vez finalizada la instalación, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio Nginx.

sudo systemctl start nginx
sudo systemctl enable nginx

A continuación, verifica el servicio Nginx para asegurarte de que se está ejecutando.

sudo systemctl status nginx

La salida active (running) indica que Nginx se está ejecutando.

start enable verify nginx

Configurar Firewalld

Con las dependencias de los paquetes instaladas, el siguiente paso será configurar el firewalld y abrir los protocolos HTTP y HTTPS.

Ejecuta el siguiente comando para abrir los protocolos HTTP y HTTPS en tu servidor AlmaLinux. A continuación, recarga firewalld para aplicar los cambios.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Ahora, ejecuta el siguiente comando firewall-cmd para verificar la lista de reglas habilitadas en firewalld.

sudo firewall-cmd --list-all

En la sección de protocolos, deberías ver habilitados los protocolos HTTP y HTTPS.

Configurar la base de datos MariaDB

En la siguiente sección, asegurarás la instalación de tu servidor MariaDB mediante la utilidad mariadb-secure-installation y, a continuación, crearás una nueva base de datos MariaDB y un nuevo usuario para Apache Guacamole.

En primer lugar, protegerás el servidor MariaDB mediante la utilidad mariadb-secure-installation. Ejecútala para asegurar la instalación de tu servidor MariaDB.

sudo mariadb-secure-installation

Durante el proceso, introduce y para aplicar la configuración o n para no. A continuación se indican algunas configuraciones de MariaDB que vas a establecer:

  • ¿Cambiar la autenticación raíz de MariaDB a unix_socket? Introduce n.
  • ¿Cambiar la contraseña de root de MariaDB? Introduce y, luego escribe una nueva contraseña y repite.
  • ¿Desactivar el inicio de sesión remoto para el usuario root? Introduce y.
  • ¿Eliminar la prueba de base de datos por defecto? Vuelve a introducir y.
  • ¿Eliminar el usuario anónimo por defecto? Introduce y para confirmar.
  • ¿Recargar los privilegios de la tabla para aplicar los cambios? Introduce y.

A continuación, inicia sesión en el servidor MariaDB utilizando el comando cliente mariadb que se indica a continuación como usuario root. Cuando se te pida la contraseña, introduce la contraseña de root de MariaDB o pulsa ENTER.

sudo mariadb -u root -p

Una vez conectado, ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario para Apache Guacamole. En esta demostración, crearás una nueva base de datos guacamoledb, un usuario guacamole, con la contraseña GuacamolePassword.

CREATE DATABASE guacamoledb;
CREATE USER 'guacamole'@'localhost' IDENTIFIED BY 'GuacamolePassword';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamoledb.* TO 'guacamole'@'localhost';
FLUSH PRIVILEGES;

crear base de datos y usuario

A continuación, ejecuta la siguiente consulta para verificar los privilegios del usuario guacamole.

SHOW GRANTS FOR 'guacamole'@'localhost';
quit

Asegúrate de que el usuario guacamole puede SELECT, INSERT, UPDATE y DELETE en la base de datos guacamoledb.

mostrar privilegios de usuario

Instalación del servidor Apache Guacamole

Apache Guacamole consta de dos componentes:

  • guacd: Un protocolo de escritorio remoto arbitrario que puede conectarse a RDP, SSH, VNC y otros.
  • Aplicación Web Guacamole: Contenedor de servlets Java que es el front-end de Apache Guacamole que puede ejecutarse dentro de Apache Tomcat.

Completa los siguientes pasos para instalar tanto la aplicación guacd como el servlet Java Guacamole.

Compilación e instalación de guacd

Mueve el directorio de trabajo a /usr/src y descarga el código fuente del servidor Apache Guacamole utilizando wget.

cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.5.2/source/guacamole-server-1.5.2.tar.gz

Una vez descargado, extrae el archivo guacamole-server-1.5.2.tar.gz y deberías obtener el nuevo directorio guacamole-server-1.5.2. Entra en él mediante cd.

tar -xf guacamole-server-1.5.2.tar.gz
cd guacamole-server-*/

Ahora, ejecuta el siguiente comando para configurar la instalación. En esta demostración, utilizarás un parámetro adicional –with-systemd-dir=, que creará automáticamente un nuevo archivo de servicio guacd.

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

configurar la instalación

Una vez finalizado el proceso de configuración, asegúrate de que todo tiene el estado sí para el estado de la biblioteca, el soporte de protocolos y los servicios/herramientas.

módulos de configuración

A continuación, ejecuta el siguiente comando para compilar e instalar el servidor Apache Guacamole guacd.

sudo make && sudo make install

compila e instala guacd

Una vez finalizada la instalación, ejecuta el siguiente comando para recargar la caché de la base de datos para las bibliotecas del sistema.

sudo ldconfig

A continuación, crea un nuevo directorio de configuración /etc/guacamole y crea la configuración de guacd /etc/guacamole/guacd.conf utilizando el editor nano.

sudo mkdir -p /etc/guacamole/
sudo nano /etc/guacamole/guacd.conf

Introduce la siguiente configuración para ejecutar el servicio guacd en localhost con el puerto 4822.

[server]
bind_host = 127.0.0.1
bind_port = 4822

Guarda el archivo y sal de él cuando hayas terminado.

A continuación, ejecuta el siguiente comando systemctl para recargar el gestor systemd.

sudo systemctl daemon-reload

A continuación, inicia y habilita el servicio guacd de Apache Guacamole mediante el siguiente comando.

sudo systemctl start guacd
sudo systemctl enable guacd

empezar a activar guacd

Por último, ejecuta el siguiente comando para comprobar el servicio guacd y asegurarte de que se está ejecutando.

sudo systemctl status guacd

Tras una instalación correcta, deberías obtener una salida del servicio guacd con el estado activo (en ejecución).

verificar servicio guacd

Además, también puedes verificar el servicio guacd asegurándote del puerto 4822 en tu sistema.

ss -tulpn | grep 4822

La salida debería mostrar el servicio guacd ejecutándose en localhost con el puerto 4822.

comprobación del puerto guacd

Instalación de la aplicación web Apache Guacamole

Con el guacd instalado, ahora instalarás la aplicación web Apache Guacamole, que es una aplicación Java servlet.

La aplicación web Apache Guacamole puede instalarse manualmente compilándola desde el código fuente o instalándola mediante el paquete .war. En esta demostración, instalarás la aplicación web Apache Guacamole mediante el archivo .war.

Desplázate al directorio /usr/src y descarga la aplicación web Apache Guacamole mediante el comando wget.

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

Una vez descargada, ejecuta el siguiente comando para copiar el archivo descargado guacamole-1.5.2. war al directorio de aplicaciones web de Apache Tomcat /var/lib/tomcat/webapps. Con esto, podrás acceder a la aplicación web Apache Guacamole a través de la ruta URL /guacamole.

sudo cp guacamole-1.5.2.war /var/lib/tomcat/webapps/guacamole.war

Ahora reinicia el servicio tomcat utilizando el siguiente comando para aplicar los cambios.

sudo systemctl restart tomcat

Configuración de Apache Guacamole con autenticación MariaDB

En primer lugar, ejecuta el siguiente comando para crear nuevos directorios adicionales extensions y lib dentro del directorio /etc/guacamole/. A continuación, crea una nueva variable de entorno GUACAMOLE_HOME en la configuración de Apache Tomcat /etc/sysconfig/tomcat.

sudo mkdir -p /etc/guacamole/{extensions,lib}
echo "GUACAMOLE_HOME=/etc/guacamole" | sudo tee -a /etc/sysconfig/tomcat

Ahora dirígete al directorio /usr/src y descarga la extensión de base de datos Guacamole mediante el comando wget que se indica a continuación.

cd /usr/src
wget https://downloads.apache.org/guacamole/1.5.2/binary/guacamole-auth-jdbc-1.5.2.tar.gz

Una vez descargado, extrae el archivo guacamole-auth-jdbc-1.5.2.tar.gz mediante el comando tar. A continuación, mueve la extensión de base de datos de Guacamole al directorio /etc/guacamole/extensions/.

tar -xf guacamole-auth-jdbc-1.5.2.tar.gz
sudo mv guacamole-auth-jdbc-1.5.2/mysql/guacamole-auth-jdbc-mysql-1.5.2.jar /etc/guacamole/extensions/

A continuación, desplázate al directorio guacamole-auth-jdbc-1.5.2/mysql/schema e importa el esquema de base de datos de Apache Guacamole a la base de datos guacamoledb.

cd guacamole-auth-jdbc-1.5.2/mysql/schema
cat *.sql | mariadb -u root -p guacamoledb

Introduce la contraseña de tu usuario root de MariaDB cuando te lo pida y pulsa INTRO.

Ahora, desplázate de nuevo al directorio /usr/src y descarga el conector MySQL para la aplicación Java mediante wget.

cd /usr/src
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.33.tar.gz

Una vez descargado, extrae el archivo mysql-connector-j-8.0.33.tar.gz y mueve el conector MySQL Java al directorio /etc/guacamole/lib/.

tar -xf mysql-connector-j-8.0.33.tar.gz
sudo mv mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /etc/guacamole/lib/

Ahora crea una nueva configuración de Apache Guacamole /etc/guacamole/guacamole. properties utilizando el editor nano.

sudo nano /etc/guacamole/guacamole.properties

Introduce los datos del usuario y la contraseña de la base de datos MariaDB para tu instalación de Apache Guacamole.

# MySQL properties
mysql-hostname: localhost
mysql-database: guacamoledb
mysql-username: guacamole
mysql-password: GuacamolePassword

Guarda y cierra el archivo cuando hayas terminado.

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio tomcat y aplicar los cambios a la aplicación web Apache Guacamole.

sudo systemctl restart tomcat

Has llegado con éxito a la fase en la que Apache Guacamole está funcionando con la autenticación MariaDB. El servicio guacd se ejecuta en localhost con el puerto 4822, y la aplicación web Apache Guacamole se ejecuta dentro de Apache Tomcat y es accesible a través de la ruta URL /guacamole.

Configurar Nginx como proxy inverso

En la siguiente sección, configurarás Nginx como proxy inverso para Apache Guacamole. También asegurarás tu instalación implementando HTTPS con Letsencrypt.

Abre la configuración de Apache Tomcat /etc/tomcat/server.x ml utilizando el siguiente comando del editor nano.

sudo nano /etc/tomcat/server.xml

Dentro de la sección `<Host name=»localhost» appBase=»webapps»`, añade una nueva configuración para habilitar el proxy inverso en Apache Tomcat.

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

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando para reiniciar el servicio tomcat y aplicar los cambios.

sudo systemctl restart tomcat

A continuación, crea una nueva configuración de bloque de servidor Nginx /etc/nginx/conf.d/guacamole.conf utilizando el editor nano.

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

Inserta la siguiente configuración de bloque de servidor y asegúrate de cambiar el nombre de dominio.

server {
    listen 80;
    server_name guacamole.hwdomain.io;
access_log /var/log/nginx/guacamole-access.log;
error_log /var/log/nginx/guacamole-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;
access_log off;
}
}

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando para asegurarte de que tienes la configuración de Nginx adecuada y reinicia Nginx para aplicar los cambios.

sudo nginx -t
sudo systemctl restart nginx

Si la configuración de Nginx es correcta, deberías obtener una salida de sintaxis es correcto – la prueba se ha realizado correctamente.

configurar proxy inverso nginx

Por último, ejecuta el siguiente comando certbot para asegurar tu instalación de Apache Guacamole mediante Letsencrypt. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en este comando.

sudo certbot --nginx --agree-tos --no-eff-email  --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.hwdomain.io

Cuando finalice el proceso, podrás acceder a Apache Guacamole a través de una conexión HTTPS. Además, la redirección automática de HTTP a HTTPS está activada por defecto a través de Letsencrypt.

Acceder a Apache Guacamole

Inicia tu navegador web y visita el nombre de dominio de tu instalación de Apache Guacamole (es decir: https://guacamole.hwdomain.io). Accede mediante el usuario por defecto guacadmin y la contraseña guacadmin.

iniciar sesión en apache guacamole

Cuando todo vaya bien, deberías ver el panel de usuario de Apache Guacamole.

salpicadero de guacamole

Ahora haz clic en el menú Admin y en Configuración. Crearás una nueva conexión en Apache Guacamole.

ajustes guacamole

Selecciona la pestaña Conexiones y haz clic en el botón Crear una nueva conexión.

crear nueva conexión

En la sección EDITAR CONEXIÓN, introduce el nombre de la conexión y selecciona el protocolo al que quieres conectarte. En esta demostración, crearás una nueva conexión testssh con el protocolo SSH.

nombre y protocolo de la conexión

En la sección PARÁMETROS, introduce la dirección IP y el puerto del host de destino y, a continuación, el nombre de usuario y la contraseña del host de destino.

datos del anfitrión

Desplázate hacia abajo y haz clic en Guardar para confirmar.

A continuación, vuelve al panel de inicio de usuario y deberías ver que se ha creado la conexión testssh. Haz clic en la conexión testssh para conectarte al host de destino.

se crea la conexión

Si tienes éxito, deberías estar conectado al host de destino como se muestra a continuación:

Acceso SSH a través de Apache Guacamole

Conclusión

¡Buen trabajo! Has instalado con éxito Apache Guacamole como Pasarela de Escritorio Remoto en una máquina AlmaLinux 9. Has instalado Apache Guacamole con autenticación MariaDB de base de datos y proxy inverso Nginx. Además, también has asegurado el despliegue mediante SSL de letsencrypt. Ahora puedes empezar a acceder fácilmente a tus servidores o escritorios a través de la aplicación web Apache Guacamole.

También te podría gustar...