Apache Guacamole : su pasarela de acceso remoto todo en uno para RDP, SSH, etc.
Table of Contents
I. Introducción
En este tutorial, aprenderemos a instalar y configurar Apache Guacamole, una solución gratuita y de código abierto que puede configurarse como bastión de administración, pasarela de acceso o servidor de rebote. Se utilizará una máquina Debian 12 para alojar la aplicación.
El servidor Apache Guacamole se utilizará como punto único de entrada para acceder a los servidores y equipos de la infraestructura, ya sea a través de los protocolos RDP, SSH, VNC y Telnet, o incluso Kubernetes. Ya sean externas o internas, las conexiones a los servidores pasarán necesariamente por el host de Apache Guacamole.
En el ejemplo siguiente, el host Apache Guacamole se sitúa en DMZ, ya que debe ser accesible desde el exterior. El acceso desde el exterior no es obligatorio, ya que podría imponerse una conexión VPN a la red corporativa antes de permitir la conexión a la interfaz de Guacamole. Del mismo modo, para publicar el host Guacamole en Internet, se recomienda utilizar un proxy inverso en el extremo frontal (el cortafuegos podría muy bien realizar esta función), que también permitiría pasar flujos en HTTPS.

Apache Guacamole se convierte en un elemento central de la infraestructura, actuando como puerta de enlace para administrar las máquinas. Ten por seguro que es posible tener varios hosts de Apache Guacamole para distribuir la carga y garantizar una alta disponibilidad.
Por último, también hay que adaptar las reglas del cortafuegos: el host de Apache Guacamole debe ser el único capaz de conectarse mediante RDP/SSH/VNC/Etc. a las máquinas de la infraestructura.
II. Características principales de Apache Guacamole
Apache Guacamole integra varias funciones atractivas que nos permitirán controlar mejor el acceso a los servidores de nuestra infraestructura.
- Centralizar y realizar un seguimiento de las conexiones: quién, cuándo, dónde, cuánto tiempo, desde dónde
- No hay que instalar ningún cliente pesado, ya que el acceso está basado en la web gracias a HTML5
- Autenticación multifactor para el acceso mediante código TOTP
- Autenticación SSO, compatible con SAML, OpenID Connect, CAS y LDAP
- Grabaciones de vídeo de las sesiones, es decir, cuando se utiliza una conexión
- Gestión de autorizaciones para el acceso a la conexión, por grupo o por usuario
Para aquellos que utilicen Azure, Apache Guacamole representa una alternativa a Azure Bastion. Si te interesa este tema, lee este artículo:
III. Instalación de Apache Guacamole en Debian
A. Instalación de los requisitos previos de Apache Guacamole
En primer lugar, necesitamos instalar un conjunto de paquetes que son esenciales para que Apache Guacamole funcione correctamente. Algunos paquetes son específicos para ciertas funciones, como las conexiones RDP. Esta lista de dependencias se puede encontrar en la documentación.
En la máquina Debian, empezamos instalando estas famosas dependencias con el siguiente comando:
apt-get update
apt-get install build-essential libcairo2-dev libjpeg62-turbo-dev libpng-dev libtool-bin uuid-dev libossp-uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev

Esperamos tranquilamente a que termine la instalación.
La parte "cliente" de Apache Guacamole requiere la instalación de un servidor Tomcat, pero eso lo haremos más adelante.
Para instalar desde una cuenta de usuario, sin utilizar directamente la cuenta "root", instale "sudo" y añada un usuario al grupo correspondiente. El ejemplo siguiente da permisos al usuario "flo":
apt-get install sudo
usermod -aG sudo flo
A continuación, anteponga "sudo" a cualquier comando que requiera elevación de privilegios.
sudo apt-get update
B. Compilar e instalar el servidor Apache Guacamole
La parte "Servidor" de Apache Guacamole debe descargarse y compilarse localmente para su instalación. Se utilizará la última versión, es decir, la 1.5.2. Para identificar la última versión, puede seguir estos dos enlaces:
Vaya al directorio "/tmp" y descargue el archivo tar.gz:
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.5/source/guacamole-server-1.5.5.tar.gz
Más adelante, cuando haya una nueva versión de Apache Guacamole, tendrás que volver a consultar la URL anterior (y otras en el resto de este artículo).
Una vez finalizada la descarga, descomprima el archivo tar.gz y desplácese al directorio resultante:
tar -xzf guacamole-server-1.5.5.tar.gz
cd guacamole-server-1.5.5/
Ejecutamos el siguiente comando para preparar la compilación, lo que nos permitirá comprobar la presencia de dependencias:
sudo ./configure --with-systemd-dir=/etc/systemd/system/
Antes de continuar, comprobamos la salida de este comando. Normalmente, las bibliotecas principales que necesitamos están en "yes". Así:

Fíjate bien en la salida del comando anterior, para comprobar si hay algún error. Si obtiene un error especificando "guacenc_video_alloc", esto está vinculado al componente "guacenc" utilizado para crear grabaciones en formato de vídeo (vinculado a FFmpeg). En este caso, puede ejecutar de nuevo el comando anterior, desactivando este componente:
sudo ./configure --with-systemd-dir=/etc/systemd/system/ --disable-guacenc
A continuación, compila el código fuente de guacamole-server:
sudo make
Por último, instalamos el componente Guacamole Server:
sudo make install

La parte del servidor de Apache Guacamole ya está instalada.
Pero hay otros pasos que dar...
El siguiente comando se utiliza para actualizar los enlaces entre guacamole-server y las bibliotecas (este comando no devuelve ningún resultado):
sudo ldconfig
A continuación, iniciaremos el servicio "guacd " correspondiente a Guacamole y habilitaremos su arranque automático. El primer comando se utiliza para registrar el nuevo servicio.
sudo systemctl daemon-reload
sudo systemctl enable --now guacd
Por último, comprobamos el estado del servidor Apache Guacamole :
sudo systemctl status guacd

C. Crear directorio de configuración
El último paso antes de pasar a la parte cliente de Apache Guacamole es crear el árbol de configuración de Apache Guacamole. Esto nos dará el directorio "/etc/guacamole", con los subdirectorios "extensions" y "lib". Los necesitaremos más adelante para configurar el almacenamiento de datos en una base de datos MariaDB / MySQL.
sudo mkdir -p /etc/guacamole/{extensions,lib}
D. Instalar Cliente Guacamole (Web App)
Para la Web App correspondiente a Apache Guacamole, y por tanto la parte cliente, necesitamos un servidor Tomcat 9. Debo destacar que Tomcat 10, distribuido por defecto a través de los repositorios de Debian 12, no está soportado por Apache Guacamole. Necesitamos añadir el repositorio Debian 11 a nuestra máquina Debian 12 para poder descargar los paquetes correspondientes para Tomcat 9.
Vamos a añadir un nuevo archivo fuente para Apt. Cree el siguiente archivo:
sudo nano /etc/apt/sources.list.d/bullseye.list
Añade esta línea, guarda y cierra el archivo.
deb http://deb.debian.org/debian/ bullseye main
Actualizar la caché de paquetes :
sudo apt-get update
Instale los paquetes Tomcat 9 en Debian 12 con este comando:
sudo apt-get install tomcat9 tomcat9-admin tomcat9-common tomcat9-user

A continuación, vamos a descargar la última versión de la Web App de Apache Guacamole desde el repositorio oficial (el mismo lugar que para la parte del servidor). Nos situamos en "/tmp" y descargamos la Web App, lo que equivale a descargar un fichero con extensión ".war". Aquí se descarga la versión 1.5.5.
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-1.5.5.war
Una vez descargado el archivo, lo movemos a la librería Web App de Tomcat9 con este comando :
sudo mv guacamole-1.5.5.war /var/lib/tomcat9/webapps/guacamole.war
A continuación, reiniciamos los servicios Tomcat9 y Guacamole:
sudo systemctl restart tomcat9 guacd
El cliente Apache Guacamole ya está instalado.
E. Base de datos MariaDB para autenticación
Este último paso antes de empezar a usar Apache Guacamole consiste en desplegar MariaDB Server (o MySQL Server, como prefiera) en Debian, para que Apache Guacamole se apoye en una base de datos. Esta base de datos se utilizará para almacenar toda la información de la aplicación.
Empezaremos instalando el paquete MariaDB Server:
sudo apt-get install mariadb-server
A continuación, ejecutamos el siguiente script para asegurar nuestra instancia (cambiar la contraseña de root, deshabilitar el acceso anónimo, etc.).
sudo mysql_secure_installation
Una vez completado este paso, nos conectaremos como root a nuestra instancia MariaDB:
mysql -u root -p
Esto es útil para crear una base de datos y un usuario dedicado para Apache Guacamole. Los siguientes comandos crean la base de datos "guacadb", con el usuario "guaca_nachos" y la contraseña "P@ssword!" (adapte estos valores). Este usuario tiene algunos derechos sobre la base de datos.
CREATE DATABASE guacadb; CREATE USER'guaca_nachos'@'localhost' IDENTIFIED BY'P@ssword!'; GRANT SELECT,INSERT,UPDATE,DELETE ON guacadb.* TO'guaca_nachos'@'localhost'; FLUSH PRIVILEGES; EXIT;

El siguiente paso es añadir la extensión MySQL a Apache Guacamole, junto con el conector correspondiente. Algunos archivos más para descargar de Internet.
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-auth-jdbc-1.5.5.tar.gz
A continuación, descomprima el archivo tar.gz resultante:
tar -xzf guacamole-auth-jdbc-1.5.5.tar.gz
Mueva el archivo de extensión ".jar" al directorio"/etc/guacamole/extensions/" creado anteriormente:
sudo mv guacamole-auth-jdbc-1.5.5/mysql/guacamole-auth-jdbc-mysql-1.5.5.jar /etc/guacamole/extensions/
A continuación, descarga el conector MySQL del sitio web de MySQL (tanto si utilizas MariaDB como MySQL).
Utilice el siguiente enlace para localizar el enlace a la última versión seleccionando "Platform Independent" (Plataforma independiente) y, a continuación, haga clic en el botón "Download" (Descargar) para obtener el "Compressed TAR Archive" (Archivo TAR comprimido).

Se carga otra página, copie el enlace en "No gracias, inicie mi descarga". Para la versión actual, 8.0.33, el enlace está incluido en el siguiente orden.
Inicia la descarga:
cd /tmp
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-9.1.0.tar.gz
A continuación, descomprima el archivo tar.gz:
tar -xzf mysql-connector-j-9.1.0.tar.gz
Copie (o mueva) el archivo .jar del conector al directorio "lib" de Apache Guacamole:
sudo cp mysql-connector-j-9.1.0/mysql-connector-j-9.1.0.jar /etc/guacamole/lib/
Las dependencias están desplegadas, pero aún no hemos terminado la integración con MariaDB.
Necesitamos importar la estructura de la base de datos de Apache Guacamole a nuestra base de datos "guacadb". Para ello, importaremos todos los archivos SQL ubicados en el directorio "guacamole-auth-jdbc-1.5.5/mysql/schema/". Es necesario introducir la contraseña de root de MariaDB para realizar la importación.
cd guacamole-auth-jdbc-1.5.5/mysql/schema/
cat *.sql | mysql -u root -p guacadb

Una vez hecho esto, crearemos y editaremos el archivo "guacamole.properties" para declarar la conexión a MariaDB. Este archivo se puede utilizar para otros parámetros según sea necesario.
sudo nano /etc/guacamole/guacamole.properties
En este fichero, inserte las líneas siguientes, adaptando las tres últimas líneas con sus valores:
# MySQL mysql-hostname: 127.0.0.1 mysql-port: ¡3306 mysql-database: guacadb mysql-username: guaca_nachos mysql-password: P@ssword!
Guarde y cierre el archivo.
Mientras estamos en configuración, edite el archivo "guacd.conf" para declarar el servidor Guacamole (aquí, estamos declarando una conexión local en el puerto por defecto, es decir, 4822).
sudo nano /etc/guacamole/guacd.conf
Aquí está el código para integrar:
[server] bind_host = 0.0.0.0 bind_port = 4822
Guardamos y terminamos reiniciando los tres servicios vinculados a Apache Guacamole:
sudo systemctl restart tomcat9 guacd mariadb
La instalación básica ya está terminada.
IV. Introducción a Apache Guacamole
Ya podemos conectarnos a Apache Guacamole para dar nuestros primeros pasos en la interfaz de la Web App.
http://: 8080/guacamole/
Aparecerá una página de inicio de sesión:

Para conectarnos, utilizaremos los inicios de sesión predeterminados:
- Usuario: guacadmin
- Contraseña: guacadmin
¡Bienvenido a Apache Guacamole! Aunque de momento esté vacío... ¡Un poco más de valor!
A. Crear una nueva cuenta de administrador
En primer lugar, crearemos una nueva cuenta de administración y eliminaremos la cuenta predeterminada, por motivos de seguridad.
Nuestro objetivo es el siguiente:
- Crear una nueva cuenta de administrador (con un nombre personalizado)
- Salir de la cuenta "guacadmin
- Vuelva a conectarse con la nueva cuenta de administrador
- Elimine la cuenta predeterminada "guacadmin" (o al menos cambie su contraseña y desactívela).
Para acceder a los ajustes, haga clic en el nombre de usuario en la esquina superior derecha y, a continuación, en "Ajustes".

A continuación, vaya a la pestaña "Usuarios" y haga clic en "Nuevo usuario".

Aparecerá un formulario. Introduce un nombre de usuario, evitando los tradicionales "Administrador", "Admin", etc.... Y elija una contraseña segura. Comprueba todos los permisos para que este usuario sea administrador de la plataforma Guacamole.

Aunque esto no se aplica a nuestro usuario actual, hay algunas opciones interesantes en la sección "Restricciones de la cuenta". Se puede restringir el acceso a las sesiones a determinadas franjas horarias, o activar y desactivar la cuenta en una fecha concreta. Esta es una buena forma de conceder acceso a un proveedor de servicios manteniendo el control sobre las sesiones.
Se crea esta nueva cuenta, así que siga los pasos descritos anteriormente para deshacerse de la cuenta guacadmin. Encontrarás todo en Configuración, luego en la sección "Usuarios".
Nota: Apache Guacamole también permite crear grupos para facilitar la gestión de autorizaciones.
B. Añadir una conexión RDP
Vamos a crear nuestra primera conexión en Apache Guacamole, ¡para conectarnos a un servidor usando RDP! Para crear una conexión utilizando otro protocolo, como SSH, el principio sigue siendo el mismo.
Para crear una nueva conexión: Configuración > Conexión > Nueva conexión
Pero primero, vamos a crear un nuevo grupo, ya que estos grupos se utilizan para organizar las conexiones: Configuración > Conexión > Nuevo grupo
En este ejemplo, creo un grupo llamado "Servidores de aplicaciones". Se situará bajo la ubicación "ROOT", que es la raíz de la estructura de árbol. El tipo de grupo "Organizationel" debe seleccionarse para todos los grupos cuya finalidad sea organizar conexiones.

Guarde y haga clic en el botón "Nueva conexión". Empieza por dar un nombre a la conexión, eligiendo el grupo y el protocolo. En este caso, quiero conectarme al servidor "SRV-APPS", asociado a la dirección IP "192.168.100.12".

A continuación, hay que rellenar una serie de parámetros:
- Nombre del host: el nombre DNS del servidor (si el servidor Apache Guacamole es capaz de resolver el nombre); en caso contrario, la dirección IP.
- Puerto: Número de puerto RDP, por defecto 3389 (no es necesario especificarlo si es el puerto por defecto).
- Identificador: cuenta con la que autenticarse en el servidor
- Contraseña: contraseña de la cuenta especificada anteriormente
- Nombre de dominio: nombre de dominio de Active Directory, si es necesario.
- Modo de seguridad: por defecto es detección automática (también puede seleccionar NLA)
- Ignorar certificado de servidor: marque esta opción si no ha desplegado un certificado para sus conexiones RDP y está utilizando una dirección IP para la conexión.
- Disposición del teclado: elija "Francés (Azerty)" o adáptela a su configuración.
- Huso horario: elija "Europa / París", o adáptelo a su configuración

Hay muchas opciones disponibles, entre ellas traer dispositivos locales o pasar por una pasarela de escritorio remoto. Al principio, tendrás que dedicar algo de tiempo a encontrar la fórmula adecuada para asegurarte de que la conexión RDP incorpora todas las funciones que necesitas. Sin embargo, si simplemente quieres conectarte y tener control remoto, no hay necesidad de hacer grandes cambios en la configuración.
Para que la experiencia sea un poco más agradable, puedes marcar las opciones que aparecen a continuación (pero esto es opcional: prueba con y sin ellas):

Guardar. La nueva conexión aparece en "Servidores de aplicaciones". Para probar esta conexión, cambie a "Inicio" haciendo clic en su nombre de usuario en la esquina superior derecha.

En la página de inicio, los usuarios pueden ver todas las conexiones que están autorizados a utilizar.

Basta con hacer clic en el servidor y se iniciará la conexión...

¡Ahora estoy conectado al Escritorio Remoto mediante el protocolo RDP a través de mi servidor Apache Guacamole! Si esto no funciona, lee la siguiente parte de este artículo. Este es un ejemplo de una conexión RDP a través de Guacamole, en una máquina con Windows Server 2025.

El atajo de teclado CTRL + ALT + SHIFT da acceso al portapapeles y a otras opciones para gestionar la conexión remota. Por cierto, mientras estás aquí, si haces clic en el nombre de usuario y en "Inicio", la sesión sigue activa, pero se reduce a la parte inferior derecha de la pantalla.

Esto también permitirá abrir varias conexiones al mismo tiempo y pasar de una a otra.

C. Apache Guacamole: Error de conexión RDP
¿Qué debo hacer si la conexión RDP no se inicia o muestra un error?
Vuelva a la línea de comandos de su servidor y compruebe las últimas líneas de registro que aparecen al consultar el estado del servicio guacd:
sudo systemctl status guacd
Por ejemplo, podemos encontrar este :
14 junio 20:15:29 srv-guacamole guacd[31120]: Validación de certificado fallida
june 14 20:15:29 srv-guacamole guacd[31120]: El servidor RDP cerró/rechazó la conexión: Conexión SSL/TLS fallida (¿certificado no fiable/autofirmado?)
Si el certificado RDP no puede verificarse (por ejemplo, autofirmado) y la opción "Ignorar certificado de servidor" no está marcada en la configuración de conexión de Guacamole, se producirá este error.
Otro error que puedes encontrarte si necesitas establecer conexiones RDP es el siguiente:
RDP server closed/refused connection: Security negotiation failed (wrong security type?)

Este problema está relacionado con la cuenta de usuario "daemon" utilizada por defecto para ejecutar el servicio "guacd ". Puede comprobarlo con este comando :
sudo ps aux | grep -v grep| grep guacd
# Résultat :
daemon 31513 0.0 0.7 247928 15400 ? Ss 16:03 0:00 /usr/local/sbin/guacd -f
Necesitamos crear un nuevo usuario, asignarle los permisos necesarios sobre los datos de Apache Guacamole, luego actualizar el servicio y finalmente reiniciarlo.
Esta es la serie de comandos a ejecutar, en orden:
sudo useradd -M -d /var/lib/guacd/ -r -s /sbin/nologin -c "Guacd User" guacd
sudo mkdir /var/lib/guacd
sudo chown -R guacd: /var/lib/guacd
sudo sed -i 's/daemon/guacd/' /etc/systemd/system/guacd.service
sudo systemctl daemon-reload
sudo systemctl restart guacd
A continuación, comprueba el estado del servicio:
sudo systemctl status guacd

Si está bien, puedes intentar una nueva conexión RDP.
C. Historial de conexiones
En los ajustes, la sección "Historial" te permite ver todas las conexiones realizadas por todos los usuarios de Guacamole.
Podemos averiguar qué usuario de Guacamole utilizó qué sesión, cuándo, durante cuánto tiempo y desde qué dirección IP de origen.
Nota: la sección"Sesiones activas" puede utilizarse como "interruptor de corte" para cerrar una o varias sesiones en curso.

V. Mejora de la instalación de Apache Guacamole
A. Configurar la doble autenticación TOTP
Para beneficiarse de la doble autenticación con un código TOTP como segundo factor, es necesario añadir una extensión a Apache Guacamole. Así, cuando un usuario se conecta a Apache Guacamole, debe configurar este segundo factor de autenticación mediante una aplicación como Microsoft Authenticator, Google Authenticator, FreeOTP, etc... Tenga en cuenta que esto se aplica cuando se autentica en Guacamole, no cuando utiliza una conexión (y, por lo tanto, debe validarse una vez).
Dado que Guacamole proporciona acceso a los servidores de la empresa, creo que es esencial configurar el MFA.
De nuevo desde el repositorio oficial de Apache Guacamole, recuperamos la extensión "guacamole-auth-totp". Descargamos el archivo a /tmp:
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-auth-totp-1.5.5.tar.gz
Desembale el :
tar -xzf guacamole-auth-totp-1.5.5.tar.gz
A continuación, mueva el archivo de extensión ".jar" al directorio de "extensiones" de Guacamole:
sudo mv guacamole-auth-totp-1.5.5/guacamole-auth-totp-1.5.5.jar /etc/guacamole/extensions/
Ahora tenemos que configurar la extensión desde el archivo "guacamole.properties", que vamos a editar sin más dilación:
sudo nano /etc/guacamole/guacamole.properties
En este archivo, hay 4 parámetros que pueden ser declarados para configurar la extensión TOTP. Aunque no son obligatorios, le permiten personalizar su despliegue. Se explican en la documentación oficial:
En el archivo, declararemos 4 parámetros:
- totp-issuer: el nombre con el que Apache Guacamole aparecerá en tu aplicación TOTP.
- totp-digits: número de dígitos para el código de un solo uso - entre 6 y 8, por defecto 6.
- totp-period: tiempo de validez de cada código, por defecto 30.
- totp-mode: algoritmo hash utilizado, entre sha1, sha256 y sha512 - por defecto es sha1.
Esto da la siguiente configuración (si cambia a SHA256, no funcionará con Microsoft Authenticator):
# TOTP
totp-issuer: Guacamole IT-Connect
totp-digits: 6
totp-period: 30
totp-mode: sha1
Guardamos, cerramos el archivo y terminamos reiniciando Tomcat para aplicar los cambios:
sudo systemctl restart tomcat9
El resto tiene lugar en la interfaz web.
Vuelve a conectarte con tu cuenta y se te pedirá que configures la AMF.

Es entonces cuando tienes que sacar tu aplicación móvil, escanear el código QR y finalizar la configuración MFA en tu cuenta de Guacamole.

A partir de ahora, habrá que especificar un código TOTP para cada nueva conexión a Guacamole. En los ajustes de cada usuario, hay una sección "Configurar TOTP" que muestra el estado de la AMF en la cuenta, con la opción de restablecer el secreto TOTP en la cuenta en cuestión.

La autenticación de dos factores ya funciona en el servidor de Guacamole.
B. Crear una grabación en vídeo de las sesiones
Apache Guacamole es capaz de crear una grabación de vídeo para cada sesión, con la opción de habilitarla sólo en determinadas conexiones. Esta grabación de vídeo permite saber exactamente quién hizo qué, a medida que se reproduce la sesión.
Esta función se basa en la extensión "guacamole-history-recording-storage", que se instala del mismo modo que las demás extensiones. El siguiente procedimiento sigue los consejos de la documentación oficial.
Empezaremos descargando el archivo tar.gz de Apache Guacamole:
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.2/binary/guacamole-history-recording-storage-1.5.5.tar.gz
A continuación, descomprima el archivo tar.gz:
tar -xzf guacamole-historia-registro-almacenamiento-1.5.5.tar.gz
Movemos el archivo de extensión .jar al directorio "extensions" de Guacamole:
sudo mv guacamole-history-recording-storage-1.5.5/guacamole-history-recording-storage-1.5.5.jar /etc/guacamole/extensions/
Terminamos reiniciando el servicio Tomcat9 para relanzar la Web App y cargar la nueva extensión.
sudo systemctl restart tomcat9
La extensión está integrada en Apache Guacamole.
A continuación, tenemos que configurar el espacio de almacenamiento. Aquí, será una carpeta en nuestro servidor, pero debería ser posible utilizar un espacio de almacenamiento remoto que montemos localmente en el servidor. Comenzamos creando la carpeta en la que se almacenarán las grabaciones:
sudo mkdir -p /var/lib/guacamole/recordings
A continuación, definimos los permisos de este directorio:
sudo chown root:tomcat /var/lib/guacamole/recordings sudo chmod 2750 /var/lib/guacamole/recordings
Aquí, establecemos el usuario propietario como "root", ya que el servicio "guacd " se ejecuta con este usuario por defecto. En cuanto al grupo propietario, es "tomcat", para que nuestro servidor Tomcat9 pueda reproducir las grabaciones de vídeo.
Ahora sólo queda configurar la grabación de vídeo a través de una conexión desde la interfaz web de Guacamole.
Vamos a editar una conexión existente y a ver la sección "Grabación de pantalla". Hay tres parámetros a configurar:
- Ruta de registro:
{RUTA_HISTORIA}/${HISTORY_UUID}
Cada grabación se almacenará en una subcarpeta de "/var/lib/guacamole/recordings", que tendrá como nombre un UUID de sesión. Gracias a la extensión previamente instalada, Apache Guacamole es capaz de mapear sesiones y grabaciones para ofrecer lectura desde la Web. Este mapeo se realiza utilizando el nombre del directorio que incluye el UUID. La alternativa es utilizar "${HISTORY_UUID}" como nombre del registro para realizar el mapeo.
- Nombre de la grabación:
${GUAC_DATE}-${GUAC_TIME} - RDP - ${GUAC_USERNAME}
Esto le permitirá nombrar el registro con la fecha, hora, "RDP" y el usuario que se conectó.
- Crear automáticamente una ruta de registro:
Marcar, para crear el directorio con el nombre UUID.
Lo que da:

Guarde la configuración y conéctese al servidor en cuestión para crear un registro... Cierre la sesión... Volver a Guacamole.
Dentro de Ajustes, vamos a "Historial". Aquí podemos ver que la columna "Registros" incluye un botón "Ver" cuando hay un registro disponible.

Hacemos clic en "Ver" y ahí, es magia, ¡podemos visualizar la repetición de nuestra sesión!

Si desea exportar un registro, primero debe convertirlo al formato de la línea de comandos. El formato básico no se puede leer directamente.
Apache Guacamole incluye una herramienta especial "guacenc" para crear archivos de vídeo en formato M4V. Para convertir una grabación en un archivo de salida de calidad HD, utilice este comando:
sudo guacenc -s <resolución> -f <archivo a convertir> sudo guacenc -s 1280x720 -f "/var/lib/guacamole/recordings/fdf244e0-cdd9-3fa7-ab2d-03773b22ba5c/20230616-100730 - RDP - admin.fb"

A continuación, todo lo que tenemos que hacer es transferir el archivo de vídeo a nuestro PC, a través de SFTP, por ejemplo, y reproducirlo con un reproductor de vídeo. El reproductor integrado de Windows puede reproducir el archivo de vídeo, o puedes utilizar VLC.

¡Las tardes de Guacamole Replay son tuyas!
C. Múltiples usuarios en el mismo servidor
Como hemos visto en este ejemplo, cuando se crea una conexión, se especifica el nombre de usuario, la contraseña y el dominio. Esto significa que para una misma máquina, puedes tener varias conexiones para diferentes usuarios.
Seamos sinceros, esto puede volverse rápidamente inmanejable si hay muchos servidores y varias personas en el departamento informático... La buena noticia es que hay otra manera.
En primer lugar, podemos utilizar dos variables para sustituir el nombre de usuario y la contraseña por los de la cuenta de Guacamole del usuario. Para ello, utilizamos estas dos variables:
{GUAC_USERNAME} {GUAC_PASSWORD}
En concreto, la parte de "Autenticación" de la conexión se configurará de la siguiente manera:

Para que esto funcione, las credenciales deben ser idénticas entre la cuenta de Guacamole y la cuenta aceptada por el host remoto. Para que esto sea realmente eficaz, debe implementarse la autenticación LDAP (Active Directory) para SSO.
La otra opción es sencilla: también puede dejar en blanco los campos "Nombre de usuario" y "Contraseña", dejando el dominio. En este caso, la información se introducirá cuando inicie sesión. También puede introducir el nombre de usuario, pero no la contraseña... En realidad, es bastante flexible.

VI. Conclusión
¡Después de leer este tutorial, serás capaz de configurar Apache Guacamole como un bastión para administrar tu Windows, Linux y otras máquinas! Con MFA y grabación de sesión como bonus. Sólo te queda familiarizarte con la herramienta, declarar usuarios, crear grupos, etc.
Si la comunidad está interesada en este tema, intentaré proponer un artículo con la adición de un proxy inverso para publicar Apache Guacamole en HTTPS, con un certificado válido.
Para complementar este tutorial, aquí tienes un enlace a la documentación oficial: