Autenticación de Apache Guacamole contra Directorio Activo
Ya hemos hablado de las maravillas de Apache Guacamole en alguna otra ocasión, esta plataforma de conexión segura a nuestro entorno vía RDP, SSH, VNC-ra… enpresa txikientzat ideal, lantegiak edo prestakuntzak. Gaur ikusiko dugu nola integratu Directorio Aktiboan eta argitaratu baliabide jakin batzuk erabiltzaile desberdinei!
Esan dut, en este anterior post, ya vimos cómo instalar Apache Guacamole, y cómo securizarlo tras un proxy inverso. Este producto lo usaremos para publicar a internet de manera segura cualquier escritorio remoto mediante RDP, al igual que VNC o SSH entre otros. Podremos permitir de manera segura la conexión remota de nuestros usuarios a la organización, permitiremos que se conecten bien a sus puestos tradicionales, o por ejemplo contra un pool de máquinas que ofrezcan un escritorio, como pueda ser algo de VDI o unos servidores de Escritorio Remoto.
La idea de este post será permitir que ciertos usuarios del Directorio Activo puedan conectarse con su propio usuario y así no utilizar usuarios locales, cada uno con una contraseña distinta… Y una vez conectado Apache Guacamole con el AD, ya podremos crear las conexiones que queremos publicar luego a nuestros usuarios.
Primero instalamos la extensión para la autenticación LDAP :
wget http://apache.mirror.iphh.net/guacamole/1.3.0/binary/guacamole-auth-ldap-1.3.0.tar.gz
tar xvzf guacamole-auth-ldap-1.3.0.tar.gz
sudo cp ./guacamole-auth-ldap-1.3.0/guacamole-auth-ldap-1.3.0.jar /etc/guacamole/extensions/
Editamos y añadimos en el fichero de configuración de Apache Guacamole /etc/guacamole/guacamole.properties la configuración de conexión a Directorio Activo.
guacd-hostname: localhost guacd-port: 4822 #user-mapping: /etc/guacamole/user-mapping.xml #auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider auth-provider: net.sourceforge.guacamole.net.auth.ldap.LDAPAuthenticationProvider ldap-hostname: DIRECCIÓN_IP_CONTROLADOR_DE_DOMINIO ldap-port: 389 # O seguro: 636 ldap-user-base-dn: OU=ruta,DC=dominio,DC=local ldap-username-attribute: samAccountName ldap-config-base-dn: OU=ruta,DC=dominio,DC=local ldap-encryption-method: none # O seguro: ssl, starttls ldap-search-bind-dn:cn=usuario_LDAP,OU=ruta,DC=dominio,DC=local ldap-search-bind-password:PASAHITZA
Y reiniciamos Tomcat:
sudo systemctl restart tomcat9
Ahora tenemos 2 aukera, o tocar y extender el esquema de nuestro AD para añadir unos atributos a los usuarios, que como que no… o montar un MySQL en el propio equipo de Guacamole, donde se almacenarán en una BD los usuarios y sus asignaciones. Verdad que esta última da menos miedo… Así que instalamos MariaDB:
sudo apt-get install mariadb-server mariadb-client
Establecemos la zona horaria en MariaDB editando el fichero /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld] ... default-time-zone='+01:00' ...
Es hora de crear la BD y el usuario para Guacamole, primero nos conectamos a MySQL:
sudo mysql -uroot
Eta esan bezala, creamos la base de datos, el usuario y damos los permisos correspondientes:
CREATE DATABASE bd_guacamole; CREATE USER 'USUARIO_GUACAMOLE'@'localhost' IDENTIFIED BY 'CONTRASEÑA'; GRANT SELECT,INSERT,UPDATE,DELETE ON bd_guacamole.* to 'USUARIO_GUACAMOLE'@'localhost'; FLUSH PRIVILEGES;
Para poder utilizar la autenticación con MySQL, primero descargamos la siguiente extensión https://apache.org/dyn/closer.lua/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz?action=download la descargamos y la instalamos:
tar zxfv guacamole-auth-jdbc-1.3.0.tar.gz
sudo cp guacamole-auth-jdbc-1.3.0/mysql/guacamole-auth-jdbc-mysql-1.3.0.jar /etc/guacamole/extensions/
Descargamos el conector https://dev.mysql.com/downloads/connector/j/ para nuestro Ubuntu, en mi caso un 20.04 (https://dev.mysql.com/downloads/file/?id=504646) y lo instalamos:
sudo dpkg -i mysql-connector-java_8.0.25-1ubuntu20.04_all.deb
sudo ln -s /usr/share/java/mysql-connector-java-8.0.25.jar /etc/guacamole/lib/.
Creamos el esquema de la BD:
cat guacamole-auth-jdbc-1.3.0/mysql/schema/*.sql | sudo mysql -uroot bd_guacamole
Editamos nuestro querido fichero de configuración de Guacamole /etc/guacamole/guacamole.properties y añadimos al final:
mysql-hostname: localhost mysql-port:3306 mysql-database: bd_guacamole mysql-username: USUARIO_GUACAMOLE mysql-password: PASAHITZA
Y reiniciamos los servicios de Tomcat y Guacd para recargar los cambios anteriores:
sudo systemctl restart tomcat9 guacd
Entramos en Guacamole como guacadmin/guacadmin y le cambiamos la contraseña, pero, ¡ojo!
Tenemos que crear en nuestro Directorio Activo (dentro de nuestra Base DN) un usuario llamado guacadmin, y NO debe tener la misma contraseña que aquí. ya que con el que nos hemos logueado es el usuario guacadmin de MySQL y el otro será para LDAP. Ya que podremos loguearnos con usuarios LDAP y usuarios MySQL
Y si nos logueamos de nuevo en Guacamole con guacadmin y la contraseña del AD podremos ver todos los usuarios de la Base DN desde “Configuración” > “Usuarios”.
Pues lo siguiente ya será crear las distintas conexiones que queramos, luego ya las asignaremos, etik “Configuración” > “Conexiones” > “Nueva Conexión”
Así que le damos un nombre a la conexión, elegimos el protocolo, recordar que podrá ser RDP para Escritorio Remoto, SSH, Telnet, VNC o Kubernetes,
Más abajo, en los parámetros, indicaremos la dirección IP local de la máquina de destino, podríamos pre-rellenar los campos del usuario y contraseña, o dejarlos vacíos para que el usuario los escriba, o podemos también coger el usuario de la sesión con la que se logueó e indicarlo mediante estas dos variables:
${GUAC_USERNAME}
${GUAC_PASSWORD}
Eta ezer, luego ya en la configuración de cada usuario podremos asignarle las conexiones de manera individual.
Al loguearse ya cada usuario con su cuenta, pues si sólo le asignamos 1 konexioa, se le logueará automáticamente contra ese equipo. Y si le hemos asignado varias, al conectarse él podrá elegir a qué sesión conectarse 🙂
En un siguiente post veremos cómo configurar un doble factor de autenticación para asegurar aún más los accesos. Betiko moduan, esperando que os sean interesantes los posts, besarkadak!















































