I. Présentation
Dans ce tutoriel, nous allons configurer un serveur Apache Guacamole pour permettre la connexion des utilisateurs Active Directory. Cette synchronisation (unidirectionnelle) avec l'Active Directory va également permettre de remonter les groupes Active Directory dans Apache Guacamole. Ainsi, nous pourrons attribuer des droits aux groupes Active Directory afin de donner des droits aux membres de ces groupes (selon la liste des membres de ces groupes dans l'annuaire AD).
Pour qu'Apache Guacamole s'appuie sur l'Active Directory, il y a plusieurs prérequis :
- Installer l'extension LDAP pour Guacamole
- Disposer d'un compte utilisateur dans l'Active Directory (pour interroger l'annuaire) - Pas besoin d'être admin !
- Identifier la partie de l'arborescence Active Directory qui sera utilisée comme base de recherche pour les objets
Image may be NSFW.
Clik here to view.
A cela, on peut ajouter :
- Disposer d'un groupe de sécurité qui contient tous les utilisateurs ayant le droit de se connecter à Guacamole. C'est facultatif, mais l'idée me plaît.
Image may be NSFW.
Clik here to view.
Avant de suivre ce tutoriel, il est recommandé d'avoir suivi celui sur l'installation et la configuration de base :
II. Installer l'extension LDAP pour Apache Guacamole
Tout d'abord, connectez-vous sur le serveur Guacamole en ligne de commande afin d'installer l'extension LDAP.
Ensuite, positionnez-vous dans "/tmp" et téléchargez l'archive tar.gz de l'extension :
cd /tmp wget https://downloads.apache.org/guacamole/1.5.2/binary/guacamole-auth-ldap-1.5.2.tar.gz
Une fois que c'est fait, décompressez cette archive tar.gz :
tar -xzf guacamole-auth-ldap-1.5.2.tar.gz
Puis, déplacer le fichier JAR de l'extension vers le répertoire "extensions" de Guacamole.
sudo mv guacamole-auth-ldap-1.5.2/guacamole-auth-ldap-1.5.2.jar /etc/guacamole/extensions
Pour que cette extension soit prise en charge, il convient de redémarrer Tomcat9 :
sudo systemctl restart tomcat9
Toutefois, vous pouvez attendre avant de le faire car vous devez encore configurer l'extension.
III. Connecter Guacamole à l'Active Directory
Toujours sur le serveur Apache Guacamole, ouvrez le fichier de configuration :
sudo nano /etc/guacamole/guacamole.properties
Dans ce fichier, il y a déjà d'autres propriétés définies, notamment les informations de connexion à la base de données MySQL (MariaDB). Vous devez configurer l'extension LDAP.
Premièrement, vous devez indiquer le nom du contrôleur de domaine, le port LDAP (389 par défaut) et la méthode de chiffrement (none avec du LDAP classique). Ce qui donne les lignes suivantes à ajouter dans le fichier :
### Active Directory # Controleur de domaine ldap-hostname: srv-adds-01.it-connect.local ldap-port: 389 ldap-encryption-method: none
Deuxièmement, à la suite, vous devez ajouter les informations sur le compte à utiliser pour s'authentifier auprès de l'annuaire Active Directory. Ce compte sert uniquement à lire le contenu de l'annuaire (utilisateurs, groupes, et membre des groupes). Dans l'exemple ci-dessous, le compte "Sync_Guacamole@it-connect.local" est utilisé.
# Utilisateur pour connexion AD
ldap-search-bind-dn: Sync_Guacamole@it-connect.local
ldap-search-bind-password: P@ssword!
Troisièmement, vous devez indiquer comment rechercher les utilisateurs dans l'Active Directory. Comme base DN, c'est-à-dire comme base de recherche, on évite de mettre la racine de l'annuaire Active Directory.
Ici, l'OU "OU=Tiering,OU=IT,DC=it-connect,DC=local" qui contient d'autres sous-OU ainsi que les comptes d'administration sera ciblée. Tout ce qui est en dehors de cette racine "ne sera pas vu" par Guacamole. Ceci correspond au paramètre "ldap-user-base-dn". Ensuite, le paramètre "ldap-username-attribute" sert à spécifier l'attribut AD utilisé pour les noms d'utilisateurs.
Enfin, le paramètre "ldap-user-search-filter" permet de déclarer le filtre de recherche. Ici, on prend tous les utilisateurs qui sont membres du groupe de sécurité Active Directory "GDL-Guacamole-Access".
# Recherche des utilisateurs ldap-user-base-dn: OU=Tiering,OU=IT,DC=it-connect,DC=local ldap-username-attribute: sAMAccountName ldap-user-search-filter: (&(objectClass=User)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=CN=GDL-Guacamole-Access,OU=Groupes,OU=T0,OU=Tiering,OU=IT,DC=it-connect,DC=local))
Quatrièmement, vous devez ajouter des paramètres de recherche pour les groupes. Si vous souhaitez uniquement rechercher les utilisateurs, cette partie n'est pas obligatoire. Sur le même principe, on indique la base de recherche et le filtre. Ici, on prend tous les groupes situés sous la base DN.
# Recherche des groupes
ldap-group-base-dn: OU=Tiering,OU=IT,DC=it-connect,DC=local
ldap-group-search-filter: (objectClass=Group)
Le fichier de configuration est prêt ! Sauvegardez et fermez le fichier. Il ne reste plus qu'à relancer Tomcat9 :
sudo systemctl restart tomcat9
Il y a d'autres paramètres disponibles pour l'extension LDAP. Ceci est détaillé dans la documentation officielle :
IV. Tester l'authentification Active Directory
Désormais, vous devez pouvoir vous connecter à Guacamole avec un compte utilisateur de l'Active Directory qui est membre du groupe "GDL-Guacamole-Access". Après avoir fait quelques tests, vous allez constater que :
- La connexion avec un compte utilisateur de l'Active Directory est opérationnelle, mais il n'y a aucune connexion accessible
- Le compte d'administration local de Guacamole ne voit aucun utilisateur ni aucun groupe
Que faire ?
Il faut que l'on ait un compte administrateur de Guacamole qui existe aussi dans l'Active Directory et qui soit dans le périmètre de nos filtres LDAP. Par exemple, vous pouvez créer le compte "Sync_Guacamole" dans Apache Guacamole en tant que nouvel administrateur (attribuez-lui tous les droits).
Image may be NSFW.
Clik here to view.
Attention, si vous mettez le même identifiant que dans l'AD ainsi que le même mot de passe, vous allez avoir des surprises. En effet, Guacamole recherche en priorité dans la base MySQL donc s'il parvient à vous authentifier via la base MySQL, il n'ira pas chercher dans l'AD donc les objets utilisateurs et groupes n'apparaîtront pas dans Guacamole.
Vous avez deux solutions :
- Utiliser un mot de passe robuste différent pour le compte dans Guacamole (comme ça, la connexion MySQL échouera donc il fera une tentative LDAP et là, ça fonctionnera)
- Modifier le fichier "guacamole.properties" pour prioriser l'utilisation de LDAP comme source d'authentification en ajoutant cette ligne :
extension-priority: ldap
Désormais, quand on se connecte avec Sync_Guacamole, on voit bien les utilisateurs de l'Active Directory :
Image may be NSFW.
Clik here to view.
Ainsi que les groupes de sécurité Active Directory :
Image may be NSFW.
Clik here to view.
Une bonne nouvelle !
V. Créer automatiquement les comptes Active Directory (facultatif)
Par défaut, Apache Guacamole ne va pas enregistrer dans sa base de données les comptes Active Directory qui n'ont pas fait l'objet d'une première connexion sur l'application. Si vous souhaitez créer ces comptes automatiquement, il y a une directive à ajouter dans le fichier "guacamole.properties" :
mysql-auto-create-accounts: true
Attention à ne pas confondre avec l'option ci-dessous qui bloque l'utilisation de comptes provenant de sources externes. Autrement dit, il ne sera pas possible de se connecter avec un compte LDAP (AD).
mysql-user-required: true
Comme à chaque fois, on termine en relançant le service Tomcat9 :
sudo systemctl restart tomcat9
VI. Droits sur les connexions
Toujours à partir du compte Sync_Guacamole, il est temps d'attribuer des droits sur les connexions pour nos utilisateurs Active Directory.
Il y a deux options :
- Attribuer les droits sur les utilisateurs
- Attribuer les droits sur les groupes
Dans cet exemple, si l'on modifie le groupe "GDL-Admins-T0", on peut constater qu'il n'a pas de membres : c'est normal, même s'il y a des membres dans l'AD, ils n'apparaîtront pas ici, mais les droits s'appliqueront tout de même. Il ne reste plus qu'à donner des droits à ce groupe de sécurité en cochant les connexions.
Image may be NSFW.
Clik here to view.
Vous devez faire cette association entre les groupes et les connexions puis valider. Désormais, l'utilisateur "admin.t0", membre du groupe "GDL-Admins-T0" doit pouvoir se connecter à Guacamole et accéder aux connexions !
Image may be NSFW.
Clik here to view.
Il ne reste plus qu'à choisir un serveur et la connexion sera établie avec le même identifiant et mot de passe que celui du compte Active Directory ! Enfin, ceci est vrai uniquement si la connexion est configurée pour utiliser les variables ${GUAC_USERNAME} et ${GUAC_PASSWORD} pour la connexion (expliqué dans le premier tutoriel sur Guacamole).
Image may be NSFW.
Clik here to view.
V. Conclusion
Suite à cette configuration, Apache Guacamole est capable d'authentifier les utilisateurs auprès de l'Active Directory et nous pouvons utiliser les groupes de sécurité Active Directory pour gérer les permissions sur les connexions ! Pour aller encore plus loin, il faudrait faire une évolution du schéma Active Directory pour gérer les connexions Guacamole directement en tant qu'objets Active Directory. C'est une possibilité évoquée et un peu documentée dans la documentation officielle d'Apache Guacamole.
The post Apache Guacamole : comment configurer l’authentification Active Directory (LDAP) ? first appeared on IT-Connect.