Si habéis seguido los artículos publicados, el último, instalando Guacamole, deberiais tener un servidor instalado en una instancia gratuita de AWS, en donde esta corriendo un servidor Guacamole autentificado por fichero,  capaz de acceder a tantas máquinas virtuales como queráis, siempre que configuremos vuestro fichero user-mapping.xml.

Vamos a ver como podemos realizar la autentificación por medio de la base de datos.

El incorporar autentificación por base de datos, aporta muchas ventajas a nuestro sistema; no solo el mantenimiento de usuarios y conexiones, lo podremos delegar en operadores que no necesitaran modificar ficheros, si no que podremos añadir controles y estadísticas de usos de una forma fácil y cómoda

El paquete cliente de Guacamole,  tiene la posibilidad de trabajar con distintas bases de datos, como MySQL, Postgresql o sqlserver, en este articulo hemos optado con la utilización de MariaDb, por la facilidad de que este instalada en cualquier servidor… o su simplicidad a la hora de instalar

Instalando la base de datos

Aunque podemos autentificar a los usuarios por medio de fichero, y dado que también lo podemos hacer por base de datos, en este ejercicio, hemos optado por esta segunda opción, y para eso, instalamos una base de datos MariaDb

# apt install mariadb-server mariadb-client

Si acabamos de instalar la base de datos, deberemos realizar un pequeño proceso para intentar asegurar un poco. (mysql_secure_installation)

Creamos la base de datos y el usuario

# mysql -p
# CREATE DATABASE guacamole_db;
# CREATE USER 'xxxxxxxxx'@'localhost' IDENTIFIED BY 'xxxxxx';
# GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'xxxxxxxxx'@'localhost';
# FLUSH PRIVILEGES;
quit;

A continuación, deberemos descargar la extension que permite gestionar las contraseñas en base de datos, que también trae el script para la creación de la base de datos

# wget http://apache.mirror.digionline.de/guacamole/1.1.0/binary/guacamole-auth-jdbc-1.1.0.tar.gz
# cat guacamole-auth-jdbc-1.1.0/mysql/schema/*.sql | mysql -u root -p guacamole_db
Enter password:

En la segunda linea (con el «cat») lo que hacemos es enviar todos los scripts acabados en «sql» que contiene el paquete descargado, a nuestra BBDD, lo que provocará la creacion de las tablas necesarias.

La extensión, la copiaremos a la carpeta de

/etc/guacamole/extensions

creada anteriormente.

# cp guacamole-auth-jdbc-1.1.0/mysql/guacamole-auth-jdbc-mysql-1.1.0.jar /etc/guacamole/extensions/

Siguiente paso: descargamos el driver de la base de datos, y lo copiamos, descomprimiendolo ,  a la carpeta

/etc/guacamole/lib,

creada anteriormente, y que nuestro cliente revisará, nada mas arrancar.

# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.13.tar.gz
# tar xvzf mysql-connector-java-8.0.13.tar.gz
# cp mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar /etc/guacamole/lib/

Ya solo queda configurar Guacamole y eso lo hacemos, a traves del fichero /etc/guacamole/guacamole.properties, de forma que abrimos un editor, por ejemplo

y salimos con el consabido Ctrl + o , Enter, Ctrl + x

Debemos tener en cuenta que si mantenemos nuestro fichero user-mapping.xml, tal y como lo configuramos en el articulo anterior, podremos acceder a nuestras maquinas, tanto por los usuarios que creemos en BBDD como los que tengamos en user.mapping.xml

A continuación, y antes de poder probar nada, deberemos permitir libre acceso a los servicios de MariaDb,  en Ubuntu, la herramienta equivalente a SELINUX es apparmor, de forma que

# ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
# apparmor_parser -R /etc/apparmor.d/disable/usr.sbin.mysqld

y modificar el fichero de configuración de tomcat con

echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat8

Otro problema que he encontrado es con la compatibilidad horaria entre el servidor y la base de datos. Algo como esto

java.sql.SQLException: The server time zone value 'CEST' is unrecognized or represent .....

Y causa un error en el arranque de Guacamole, que hace que se presente un mensaje de error en el navegador web, cuando intentas accede a la pagina, la solucion esta en indicarle a MariaDB la «timeZone que está utilizando el servidor, en mi caso:

Europe/Madrid

de forma que puedo crear un fichero con cualquier editor:

# nano /etc/mysql/mariadb.conf.d/55-timezone.cnf

y poner las siguientes lineas

[mariadb]

default_time_zone = Europe/Madrid

y resetear mariadb con

# service mariadb restart

luego, ya podemos restaurar tomcat  con

# systemctl restart tomcat8

y probamos que todo funcione, tecleando en un navegador

 http://<mi-ip>:8080/guacamole

y nos deberá aparecer la pantalla de identificación.

Ahora, el usuario y contraseña que tenemos definido es para poder gestionar la base de datos es:

guacadmin (para ambos valores)

Los podemo introducir, para que nos aparezca la pantalla de acceso, y de paso, como primera medida, cambiar la contraseña de «guacadmin», accediendo a configuración, y seleccionando «Preferencias»

Guacamole. Cambio de contraseña

Una vez realizado, podemos volver a acceder, con la nueva contraseña,

y, si seleccionamos «Configuración», podremos empezar a añadir usuarios y conexiones

Guacamole. Pantalla de administracion

Y dejamos para mas adelante el ver como damos de alta a los usuarios y las conexiones, aunque podeis encontrarlo en los manuales de usuario de guacamole

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.