
Authentification Apache Guacamole et Active Directory
Nous avons déjà parlé des merveilles de l’Apache Guacamole à une autre occasion, cette plateforme de connexion sécurisée à notre environnement via RDP, SSH, VNC… Idéal pour les petites entreprises, Laboratoires ou formations. Aujourd’hui, nous allons voir comment l’intégrer dans Active Directory et publier certaines ressources pour différents utilisateurs!
Ce que j’ai dit, dans Ce post précédent, nous avons déjà vu comment installer Apache Guacamole, et comment le sécuriser derrière un proxy inverse. Nous utiliserons ce produit pour publier en toute sécurité n’importe quel bureau à distance sur Internet à l’aide de RDP, ainsi que VNC ou SSH entre autres. Nous serons en mesure d’autoriser en toute sécurité la connexion à distance de nos utilisateurs à l’organisation, Nous leur permettrons de bien s’intégrer à leurs positions traditionnelles, ou par exemple contre un pool de machines qui offrent un poste de travail, tels que certains serveurs VDI ou Remote Desktop.
L’idée de cet article sera de permettre à certains utilisateurs d’Active Directory de se connecter avec leur propre utilisateur et ainsi de ne pas utiliser d’utilisateurs locaux, chacun avec un mot de passe différent… Et une fois qu’Apache Guacamole est connecté à l’AD, Nous pourrons créer les connexions que nous souhaitons publier ultérieurement à nos utilisateurs.
Tout d’abord, nous installons l’extension pour l’authentification 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/
Nous modifions et ajoutons dans le fichier de configuration d’Apache Guacamole /etc/guacamole/guacamole.properties la configuration de la connexion à Active Directory.
guacd-nom-hôte: localhost guacd-port: 4822 #mappage des utilisateurs: /etc/guacamole/fournisseur de user-mapping.xml #auth: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider auth-provider: net.sourceforge.guacamole.net.auth.ldap.LDAPAuthenticationProvider ldap-hostname: DIRECCIÓN_IP_CONTROLADOR_DE_DOMINIO port LDAP: 389 # Ou sûr: 636 ldap-user-base-dn: OU=route,DC=domaine,DC=attribut-nom-utilisateur-ldap-local: samAccountName ldap-config-base-dn: OU=route,DC=domaine,DC=méthode-de-chiffrement-ldap-local: aucun # Ou sûr: S.A., starttls ldap-search-bind-dn:cn=usuario_LDAP,OU=route,DC=domaine,DC=local, ldap-search-bind-password:MOT DE PASSE
Et nous redémarrons Tomcat:
sudo systemctl redémarrer tomcat9
Maintenant, nous avons 2 Options, ou appuyez et étendez notre schéma AD pour ajouter des attributs aux utilisateurs, Que veux-tu dire… ou la mise en place d’un MySQL sur l’équipement Guacamole lui-même, l’emplacement de stockage des utilisateurs et de leurs affectations dans une base de données. Il est vrai que ce dernier fait moins peur… Nous avons donc installé MariaDB:
sudo apt-get install mariadb-server mariadb-client
Définissez le fuseau horaire sur MariaDB en modifiant le fichier /etc/mysql/mariadb.conf.d/50-server.cnf
[Mysqld] ... default-time-zone='+01:00' ...
Il est temps de créer la base de données et l’utilisateur pour Guacamole, d’abord, nous nous connectons à MySQL:
sudo mysql -uroot
Et ce que j’ai dit, Nous créons la base de données, l’utilisateur et lui donner les autorisations correspondantes:
CRÉER UNE BASE DE DONNÉES bd_guacamole; CREATE USER 'USUARIO_GUACAMOLE'@'localhost' IDENTIFIED BY 'CONTRASEÑA'; GRANT SELECT,INSÉRER,METTRE À JOUR,DELETE ON bd_guacamole.* to 'USUARIO_GUACAMOLE'@'localhost'; PRIVILÈGES DE VIDAGE;
Pour pouvoir utiliser l’authentification MySQL, Tout d’abord, nous téléchargeons l’extension suivante https://apache.org/dyn/closer.lua/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz?action=download Nous le téléchargeons et l’installons:
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/
Nous téléchargeons le connecteur https://dev.mysql.com/downloads/connector/j/ pour notre Ubuntu, Dans mon cas, un 20.04 (https://dev.mysql.com/downloads/file/?id=504646) et nous l’installons:
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/.
Nous créons le schéma DB:
cat guacamole-auth-jdbc-1.3.0/mysql/schema/*.sql | sudo mysql -uroot bd_guacamole
Nous modifions notre fichier de configuration Guacamole bien-aimé /etc/guacamole/guacamole.properties et ajoutons à la fin:
nom_hôtesql: localhost mysql-port:3306 base de données mysql: bd_guacamole nom-d-utilisateur mysql: USUARIO_GUACAMOLE mot de passe mysql: MOT DE PASSE
Et nous avons redémarré les services Tomcat et Guacd pour recharger les modifications précédentes:
sudo systemctl restart tomcat9 guacd
Nous entrons Guacamole en tant que guacadmin/guacadmin et changeons le mot de passe, mais, oeil!
Nous devons créer dans notre Active Directory (au sein de notre base DN) Un utilisateur nommé guacadmin, et ne doit PAS avoir le même mot de passe qu’ici. puisque celui avec lequel nous nous sommes connectés est l’utilisateur MySQL guacadmin et l’autre sera pour LDAP. Puisque nous pourrons nous connecter avec des utilisateurs LDAP et des utilisateurs MySQL
Et si nous nous connectons à nouveau à Guacamole avec guacadmin et le mot de passe AD, nous pourrons voir tous les utilisateurs de la base DN à partir de “Configuration” > “Utilisateurs”.
Eh bien, la prochaine chose sera de créer les différentes connexions que nous voulons, Ensuite, nous les attribuerons, depuis “Configuration” > “Connexions” > “Nouvelle connexion”
Nous donnons donc un nom à la connexion, Nous choisissons le protocole, n’oubliez pas qu’il peut s’agir de RDP pour le bureau à distance, SSH, Telnet, VNC ou Kubernetes,
Plus bas, dans les paramètres, nous indiquerons l’adresse IP locale de la machine cible, Nous pourrions pré-remplir les champs du nom d’utilisateur et du mot de passe, ou laissez-les vides pour que l’utilisateur puisse les taper, Ou nous pouvons également prendre l’utilisateur de la session avec laquelle il s’est connecté et l’indiquer à l’aide de ces deux variables:
${GUAC_USERNAME}
${GUAC_PASSWORD}
Et rien, Ensuite, dans la configuration de chaque utilisateur, nous pourrons attribuer les connexions individuellement.
Lorsque chaque utilisateur se connecte avec son compte, car si seulement on lui assigne 1 connexion, Vous serez automatiquement connecté à cette équipe. Et si nous avons attribué plusieurs, Lorsque vous vous connecterez, il pourra choisir à quelle session se connecter 🙂
Dans un prochain article, nous verrons comment configurer une authentification à deux facteurs pour sécuriser davantage l’accès. Comme d'habitude, En espérant que vous trouvez les articles intéressants, Câlins!