Si habéis seguido los artículos publicados, el último, instalando Guacamole, deberíais 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 creación 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, descomprimiéndolo , 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 podemos 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»
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
Y dejamos para mas adelante el ver como damos de alta a los usuarios y las conexiones, aunque podéis encontrarlo en los manuales de usuario de guacamole
Nuestro siguiente paso, será configurar Guacamole y Windows