Icono del sitio RDR-IT

Guacamole: gestiona el acceso a tu entorno TI

En este tutorial, explicaré cómo instalar Guacamole en Ubuntu, configurar el acceso a los dispositivos y utilizarlo.

Antes de entrar en detalles técnicos, primero te presentaré Apache Guacamole y especialmente por qué deberías implementarlo.

¿Qué es el guacamole?

No, no les voy a hablar de la receta de salsa de aguacate en este tutorial, para ser más precisos, vamos a hablar de ’Apache Guacamole que es una solución sin cliente de puerta de enlace de escritorio remoto.

Para darle una introducción simple a Apache Guacamole, es una solución gratuita de código abierto que le permite configurar el acceso remoto a través de un portal web en diferentes dispositivos.

Al momento de escribir este tutorial, se admiten los siguientes protocolos:

Es posible a través del portal web gestionar múltiples usuarios y conexiones, agruparlos en grupos, configurar restricciones de acceso (tiempo, número de conexiones, etc.) y grabar las sesiones en vídeo.

El guacamole se presenta muchas veces como una solución que se utiliza en casa para poder acceder al ordenador con un navegador…

Me centraré en el uso profesional para configurar una solución «bastión» / PAM (Privileged Access Management)

El uso del guacamole en el ámbito profesional

Lo que me interesa aquí es por qué y cómo utilizar Guacamole en un entorno profesional para gestionar el acceso a proveedores de servicios y asegurarlos.

Hoy en día, muchas empresas se enfrentan al problema de cómo gestionar a sus proveedores de servicios y, sobre todo, cómo darles acceso al sistema de información más seguro posible.

La solución es Bastion, que es una solución de software de acceso remoto que le permitirá administrar esto administrando cuentas y limitando su acceso y agregando varias capas de seguridad.

El problema de las soluciones bastión es su coste, que puede convertirse rápidamente en un verdadero obstáculo para su adopción.

Sin una solución de bastión, las empresas siguen haciendo lo que pueden y a menudo «someterse» a los métodos operativos de los proveedores de servicios:

El guacamole nos permitirá responder parcialmente a estas cuestiones:

Cómo funciona el guacamole

No voy a entrar en detalles aquí sobre cómo funciona el guacamole, aquí hay un diagrama para darte una idea:

El guacamole apache consta de 2 componentes principales:

Ahora veremos cómo instalar Guacamole.

Guacamole: Instalación

Para este tutorial utilicé una instalación nueva de Ubuntu Server 20.04.

En este tutorial, vincularemos Guacamole a MySQL para administrar cuentas de usuario y conexiones.

Para comenzar, instalaremos los distintos requisitos previos en el servidor.

Dado que es necesario compilar Guacamole, se debe instalar make.

sudo apt install make -y

De forma predeterminada, make no está instalado en la versión 20.04 de Ubuntu Server

Ahora, instalaremos los requisitos previos usando el siguiente comando:

sudo apt install gcc g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libssl-dev libvorbis-dev libwebp-dev libpango1.0-dev libwebsockets-dev libpulse-dev -y

Si quieres más información sobre los prerrequisitos, todo está explicado aquí. : Chapter 2. Installing Guacamole natively (apache.org)

Instalación de Guacamole-Server

Ahora instalaremos el primer componente del servidor guacamole.

Al momento de escribir este tutorial, la versión disponible de Guacamole es la 1.3.0

Subir el archivo al servidor:

wget https://downloads.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz

Descomprima el archivo:

tar xzf guacamole-server-1.3.0.tar.gz

Vaya a la carpeta que acaba de descomprimir:

cd guacamole-server-1.3.0/

Ahora verificaremos que todas las dependencias necesarias estén instaladas en el servidor usando configure:

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

Para obtener más ayuda, ejecute el comando: ./configure –help

Si todo está bien, deberías tener todos los protocolos configurados en yes.

Ahora compilaremos e instalaremos Guacamole-Server.

Compilación:

sudo make

Instalación :

sudo make install

Ahora ejecute el comando ldconfig para crear los diferentes enlaces con las bibliotecas.

sudo ldconfig

Activar el servicio:

sudo systemctl enable guacd

Iniciar el servicio guacd:

sudo systemctl start guacd

Comprobar el estado del servicio (opcional):

systemctl status guacd

La parte del servidor Guacamole está operativa.

Instalación de Guacamole-Client

El cliente que proporciona la interfaz HTML5 y necesita Tomcat.

En el servidor instale Tomcat usando el siguiente comando:

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

Compruebe que el servidor Tomcat esté ejecutándose:

systemctl status tomcat9 

Crea una carpeta donde almacenaremos la configuración y el cliente:

sudo mkdir /etc/guacamole

Ahora descargaremos el cliente y lo almacenaremos en la carpeta que acabamos de crear:

sudo wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war -O /etc/guacamole/guacamole.war

Debe crear un enlace simbólico a Tomcat9 WebApps para «habilitar el uso del cliente»

sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat9/webapps/

Para que la aplicación se implemente por completo, se deben reiniciar los servicios:

sudo systemctl restart tomcat9
sudo systemctl restart guacd

Desde allí, debería aparecer la ventana de autenticación y deberás dirigirte a la URL: http://IP_SERVER:8080/guacamole

Guacamole-Server|Client: configuración

Ahora que los servicios principales están instalados, necesitamos configurar todo para que funcionen juntos.

Cree las carpetas de extensiones y lib en la carpeta /etc/guacamole:

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

Agregar una variable de entorno:

Solución 1:

sudo echo "GUACAMOLE_HOME=/etc/guacamole"  /etc/default/tomcat9

Solución 2:

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

Solución 3 :

Abra el archivo /etc/default/tomcat9 con nano y agregue la variable:

 sudo nano /etc/default/tomcat9

Al final del archivo agregue:

GUACAMOLE_HOME=/etc/guacamole

En una configuración básica, a partir de aquí, la mayoría de los tutoriales explican cómo configurar el cliente con el servidor y cómo administrar un archivo de mapeo. Como recordatorio, en la introducción expliqué que vamos a utilizar MySQL/MariaDB

Instalar MariaDB o MySQL en el servidor:

sudo apt install mariadb-server mariadb-client

Ahora necesitamos crear un usuario y la base de datos, comenzamos conectándonos al servidor de base de datos:

sudo mysql

Ejecute las consultas a continuación para al menos cambiar la contraseña:

CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'P@$sW0rd';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
FLUSH PRIVILEGES;
quit;

Descargue la extensión mysql para Guacamole:

wget http://apache.mirror.digionline.de/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz

Descomprima el archivo:

tar vfx guacamole-auth-jdbc-1.3.0.tar.gz

Agregue las tablas necesarias a la base de datos creada:

cat guacamole-auth-jdbc-1.3.0/mysql/schema/*.sql | sudo mysql guacamole_db

Instalación de la extensión:

sudo cp guacamole-auth-jdbc-1.3.0/mysql/guacamole-auth-jdbc-mysql-1.3.0.jar /etc/guacamole/extensions/

Descargue el controlador JDBC:

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.13.tar.gz

Descomprima el archivo:

tar xvzf mysql-connector-java-8.0.13.tar.gz

Instalar (copiar) el controlador para Guacamole:

sudo cp mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar /etc/guacamole/lib/

Ahora podemos pasar a configurar el cliente para utilizar la base de datos.

Crear el archivo de configuración:

sudo nano /etc/guacamole/guacamole.properties

Añade la siguiente configuración adaptándola a tu entorno (mysql-):

# Hostname and Guacamole server port
guacd-hostname: localhost
guacd-port: 4822

# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: P@$sW0rd

La configuración está completa, vincule la carpeta de configuración a Tomcat:

sudo ln -s /etc/guacamole /usr/share/tomcat9/.guacamole

Reiniciar servicios:

sudo systemctl restart tomcat9
sudo systemctl restart guacd

Opcional: crea una carpeta guacamole en la carpeta /var para almacenar grabaciones de video

sudo mkdir /var/guacamole

La instalación y configuración básica ha finalizado, ahora veremos cómo utilizar Guacamole.

Usando Guacamole

Como recordatorio, para acceder a Guacamole desde un navegador web, vaya a la dirección: http://IP_SERVER:8080/guacamole

Las credenciales predeterminadas son: guacadmin:guacadmin

Una vez conectado, se llega a una página que normalmente muestra las últimas conexiones utilizadas y las conexiones que el usuario puede utilizar.

Para acceder a la configuración de Guacamole, haga clic en el nombre de usuario 1 para desplegar el menú y haga clic en Configuración 2.

Para empezar, te explicaré cómo utilizar el Guacamole de forma lógica y no te mostraré directamente su uso.

El objetivo, como recordatorio, es proporcionar acceso a proveedores de servicios externos, por lo que basaré mis grupos en este tema.

Crear un grupo de conexión

Lo primero que veremos es la creación de un grupo de conexión.

En el menú de navegación, vaya a Conexión 1.

Por el momento esta vista está vacía, más adelante encontraremos todas las conexiones configuradas así como los diferentes grupos.

El objetivo ahora será crear una estructura de árbol para organizar las conexiones de los proveedores de servicios.

Lo que os muestro aquí es un ejemplo, luego sois libres de adaptarlo a vuestras necesidades.

Primero crearé un grupo de Proveedores, en el que luego crearé subgrupos que representarán a un proveedor.

Haga clic en el botón Nuevo grupo 1.

Nombra el grupo 1, Ubicación dejar RAÍZ 2 y Tipo dejar Organizacional 3. Haga clic en el botón Guardar 4 para crear el grupo.

El grupo esta creado y visible en el listado de conexiones, si lo desplegamos vemos que podemos añadir conexiones y subgrupos. Haga clic en Nuevo grupo 1.

En cuanto al grupo raíz, nombra el grupo 1 (aquí el nombre del proveedor con el prefijo GC), el campo Ubicación ya está seleccionado y deja el tipo Organizacional. Haga clic en Guardar 2.

Se añade el grupo.

Para ilustrar el tutorial, agregué un segundo grupo de conexiones para simular múltiples proveedores.

Crear un grupo de usuarios

Los grupos de usuarios le permitirán agrupar cuentas de usuarios en un grupo para que pueda acceder a sus datos más fácilmente, en lugar de administrarlos usuario por usuario.

Vaya al menú Grupo 1 y haga clic en Nuevo grupo 2.

Nombra el grupo 1, marca los grupos de conexión vinculados al proveedor 2 y haz clic en Guardar 3.

Es imperativo verificar los grupos padres, si esto no se hace no será posible el acceso a las conexiones.

En una configuración de grupo, es posible agregar derechos de administración en Guacamole.

Se añade el grupo.

También agregué un segundo grupo.

Agregar una nueva conexión

Antes de explicar cómo agregar una conexión, debes pensar en una conexión como un acceso a un dispositivo con una configuración particular. Por lo tanto, es normal tener varias conexiones con diferentes parámetros al mismo servidor en función de los accesos e información que quieras dar a tu proveedor de servicios.

Vaya al menú Conexiones 1, para agregar una conexión, varias posibilidades, haga clic en el botón Nueva Conexión 2 o en Nueva Conexión 2 que está a nivel de grupo.

Configurar una conexión RDP

La primera conexión que configuraremos es un acceso RDP a un servidor Windows.

Como hay muchos parámetros de conexión, tomaré cada uno como un bloque.

Comience nombrando la conexión 1 y seleccionando el protocolo RDP 2.

En cuanto al campo Ubicación, al haber hecho clic en Nueva Conexión a nivel de grupo, ya está seleccionado.

En la sección LIMITES DE CONCURRENCIA es posible limitar el número de conexiones simultáneas, en el contexto de una conexión RDP donde se pasan los identificadores, esto no tendrá impacto porque un mismo usuario no podrá abrir la conexión varias veces. . misma sesión.

Omitimos las partes de EQUILIBRIO DE CARGA y PARÁMETROS DE PROXY GUACAMOLE (GUACD) que deben configurarse en instalaciones complejas con varios servidores.

Ahora nos centraremos en la parte de PARÁMETROS, aquí tampoco repasaré todas las opciones disponibles, os dejaré navegar por ellas y podréis ver que podemos configurar todos los parámetros del cliente RDP (RDS Gateway, Periféricos de redireccionamiento, Rendimientos…).

Lo mantendré al mínimo y le permitiré realizar sus propias pruebas si es necesario.

En la sección Red, indique el nombre o la dirección IP del host 1 y el puerto 2 (3389) para RDP.

En el apartado de Autenticación indicaremos directamente la cuenta a utilizar para conectarnos, lo que evita dar esta información al proveedor del servicio. Ingrese el nombre de usuario 1 y la contraseña 2, seleccione Cualquiera 3 en el campo Modo de seguridad y marque la casilla Ignorar certificado de servidor 4.

El último elemento de configuración que le mostraré es grabar la sesión en la sección Grabación de pantalla. En el campo Ruta de grabación 1 indique la ubicación donde se almacenarán (/var/guacamole/) y luego indique el nombre de la grabación en el campo Nombre de grabación 2.

Guarde la conexión haciendo clic en el botón Guardar 1.

La connexion est ajoutée et ranger dans le groupe de connexion.

Configurar una conexión SSH

Al igual que para la conexión SSH me limitaré a lo mínimo, para el resto de parámetros os dejo mirar.

Nombra la conexión 1 y selecciona el protocolo SSH 2.

En la sección Red, ingrese el host 1 (IP o FQDN) e indique el puerto (22) 2.

En la sección Autenticación, indique el par de usuario y contraseña 1 según su política.

En cuanto a la conexión RDP, en el apartado Grabación de Pantalla es posible configurar la grabación de vídeo de la sesión de conexión.

Para finalizar, haga clic en Guardar 1.

Se agrega la conexión SSH y está en el grupo.


Para el tutorial también agregué conexiones al segundo proveedor, pero esta vez sin indicar los identificadores.

Editar una conexión

Para modificar una conexión existente, simplemente haga clic en ella y llegará al mismo formulario que para agregar una conexión. Una vez que haya realizado los cambios, haga clic en Guardar.

Asignar conexiones a grupos

Esta operación es obligatoria para que los usuarios puedan tener acceso a las conexiones.

Esta manipulación me hizo perder la cabeza, porque la herencia no es automática.

Regrese a la administración de grupos de usuarios 1 y luego haga clic en el grupo a editar 2.

En la sección Conexiones 1, marque las conexiones creadas previamente 2 y haga clic en Guardar 3.

Agregar un usuario (proveedor)

Ahora veremos cómo agregar un usuario y asignarlo directamente a un grupo.

Vaya a Administración de usuarios 1 y haga clic en el botón Nuevo usuario 2.

En cuanto a los demás elementos, me centraré en los campos obligatorios.

Ingrese el ID de la cuenta 1 y la contraseña 2 (x2), en la sección GRUPOS marque el(los) grupo(s) al que pertenece el usuario 3 y haga clic en Guardar 4> >.

Se agrega el usuario.

Repita los pasos para las demás cuentas y proveedores de servicios.

Iniciar sesión/Usar con una cuenta de proveedor de servicios

Ahora que tenemos todo configurado, solo queda probar nuestra solución “bastión”.

Inicie sesión con una cuenta de proveedor de servicios:

Si la cuenta solo tiene una conexión configurada, se establece directamente.

Llegamos a una página donde podemos ver las conexiones recientes (actualmente vacía) y debajo la lista de conexiones disponibles.

Expande las conexiones y haz clic en una para conectarte (comenzaré con la conexión RDP).

Por favor espere mientras se conecta al servidor…

La conexión se establece vía RDP con el servidor sin necesidad de proporcionar un identificador.

Consejo: Durante una sesión, es posible navegar entre múltiples conexiones o regresar a la página de inicio mediante un menú «oculto», utilice la combinación de teclas Ctrl+Alt+Shift para mostrarlo.

Para la conexión SSH es similar:


Volviendo a la página de inicio de la cuenta de usuario, esta vez vemos las últimas conexiones utilizadas.


Si hay varias sesiones abiertas simultáneamente, es posible cambiar rápidamente haciendo clic en en la parte inferior izquierda de la pantalla.

Sigue las sesiones

El interés de montar una solución Bastión es también seguir las sesiones, Guacamole nos ofrece dos soluciones.

Sesiones actuales

Es posible realizar un seguimiento de las sesiones actuales desde la administración yendo al menú Sesiones Activas.

Desde esta vista podrás ver las conexiones actuales con la posibilidad de cerrar una sesión y la guinda del pastel para seguir en directo e interactuar haciendo clic en el nombre de la conexión.

A continuación se muestra una captura con el seguimiento de visualización en vivo de una conexión:

Historial de sesiones

El historial de sesiones está disponible en varios lugares:

Grabaciones de vídeo

Si tiene habilitada la grabación de sesiones, le explicaré cómo usarla.

Como recordatorio, el almacenamiento se configuró en la carpeta /var/guacamole.

Así es como se ven los archivos:

Por defecto los archivos no son utilizables, deben ser convertidos en archivos de video usando el siguiente comando:

guacenc -s 1280x720 -r 20000000 -f file-name

Una vez convertido, tenemos un archivo en formato m4v.

Durante 10 minutos tengo un archivo de 40 MB.

Lo único que queda es descargar el archivo y visualizarlo con un reproductor como VLC.

Conclusión

Ahora ya sabes cómo configurar una solución Bastion/PAM gratuita con Guacamole, es una buena solución para empezar a asegurar el acceso cuando no hay ninguna solución disponible y te permite evaluar realmente la necesidad antes de adquirir una solución paga.

En este tutorial me centré en el acceso del proveedor de servicios, pero también es posible usarlo para que todos los administradores gestionen el IS y eviten el uso de VPN, Remote Desktop Gateway, etc.

Es posible aumentar fácilmente el nivel de seguridad de forma gratuita configurando un sistema de autenticación de dos factores.

Antes de implementarlo externamente, le recomiendo encarecidamente que configure un proxy inverso Apache2 o Nginx en el servidor para poder publicar Guacamole mediante el protocolo HTTPS.

Salir de la versión móvil