Intégration dans un domaine Active Directory : Eole-AD
Initié à l'origine par la direction des lycées de la Région Rhône-Alpes, le projet Eole-AD est actuellement mis en œuvre dans l'académie de Poitiers.
Eole-AD permet l'intégration d'un module Scribe à un domaine Active Directory[1] tout en conservant la gestion des utilisateurs et des groupes sur le module Scribe.
La version proposée sur EOLE 2.5.2 est compatible avec le module Seth 2.6 basé sur Samba4. Elle est également compatible avec les serveurs Microsoft.
Pré-requis
Ce fonctionnement suppose :
un module Scribe et un serveur Windows ;
un module Scribe avec un module Seth : ce cas d'utilisation suppose que l'un des 2 modules ne soit pas déjà instancié. Principalement parce que le nom de domaine Samba ne peut pas être modifié une fois le serveur instancié. Le serveur Seth devra être instancié en premier.
Installation
L'installation du paquet eole-ad
sur un module Scribe active automatiquement la fonctionnalité.
# apt-eole install eole-ad
AttentionVersions supportées
Le paquet eole-ad
est disponible uniquement pour les versions 2.5.2 et 2.6.2 du module Scribe.
Attention
Il est possible de mettre en place la fonctionnalité Eole-AD sur un serveur Scribe existant mais les mots de passe n'étant synchronisés qu'au moment de leur modification, la ré-initialisation des mots de passe de tous les utilisateurs est nécessaire.
Configuration du module Amon
Résolution DNS
Pour la résolution DNS il faut ajouter l'adresse IP du module Seth comme serveur DNS à la liste d'adresses déjà déclarées, dans l'onglet Général
→ Paramètres réseau globaux
→ Adresse IP du serveur DNS
.
Attention
L'ordre à une importance, l'adresse saisie en dernier peut être passée devant à l'aide du bouton ↹
.
La configuration doit être appliquée à l'aide de la commande reconfigure
.
Configuration du module Scribe non instancié
Dans l'interface de configuration du module un certain nombre de variables doivent être renseignées et ce dans plusieurs onglets.
Onglet Général
Il est recommandé de déclarer le serveur Active Directory en tant que serveur NTP, saisir l'adresse IP ou le nom d'hôte dans le champ Adresse du serveur NTP
.
Remarque
Pour une utilisation avec le module Seth, la valeur du nom de domaine Active Directory peut se retrouver dans l'interface de configuration du module Seth → onglet Active Directory
(mode Debug activé) → variable Nom complet du domaine racine de la forêt
.
Onglet Samba
Le Nom du domaine Samba (ex: mondomaine)
doit correspondre au nom du domaine Windows.
Remarque
Pour une utilisation avec le module Seth, la valeur du nom de domaine Windows se retrouve dans l'interface de configuration du module dans l'onglet Active Directory
instancié en activant le mode Debug.
Onglet Active directory
Nom du serveur Active Directory
: doit correspondre au nom de la machine Active Directory ;Nom du domaine Active Directory
: doit correspondre au nom du domaine Active Directory, il est pré-renseigné à partir du nom saisi dans l'ongletGénéral
;Adresse IP du serveur Active Directory
: doit contenir l'adresse IP du serveur Active Directory ;Adresse IP du serveur DNS de secours
: cette valeur est facultative ;
Dans le cas où une architecture de haute disponibilité de l'Active Directory a été mise en place, il est recommandé d'y renseigner l'adresse du second serveur AD ;
Compte administrateur du domaine AD
: doit correspondre à un compte ayant les droits Administrateur du domaine, en général le compteAdministrateur
ouAdministrator
;Conteneur Active Directory hébergeant les comptes Scribe
: les comptes de l’annuaire du module Scribe sont répliqués par défaut dans le conteneur Active Directory CN=Users. Cette variable permet de personnaliser le conteneur hébergeant les comptes du module Scribe (exemple : OU=Scribe). En cas de personnalisation du conteneur, ne pas oublier de créer ce dernier dans Active Directory avant d'instancier le module Scribe ;Synchroniser l'annuaire en LDAPS
: la synchronisation des comptes en LDAPS est plus sécurisée mais nécessite l’enregistrement des certificats d'autorité du serveur AD dans un fichier Java keystore[4].
Attention
L'utilisation du protocole LDAPS est obligatoire dans le cas de synchronisation vers un module Seth.
Remarque
L'utilisation du protocole LDAPS pour synchroniser l'annuaire apporte plus de sécurité et s'avère une obligation dans certaines infrastructures.
En contrepartie, elle nécessite l’enregistrement des certificats d'autorité du serveur AD dans un fichier Java keystore[4] avant l'instance.
Onglet Mots de passe
Attention
La politique de sécurité définie dans l'onglet Mots de passe
doit être en accord avec celle du serveur Active Directory.
Onglet Dhcp
Il faut configurer le Nom de domaine à renvoyer aux clients DHCP
en mettant la valeur du Nom DNS du réseau local
du serveur faisant office d'Active Directory, onglet Général
dans le cas de l'utilisation du module Seth.
Il faut également configurer l'Adresse IP du DNS à renvoyer aux clients DHCP
en mettant l'adresse IP du module Seth dans le cas de l'utilisation de Seth/Samba4 ou l'adresse du serveur Windows dans le cas de l'utilisation de Microsoft AD.
Enregistrement des certificats d'autorité
Si la synchronisation de l'annuaire est configurée pour utiliser le protocole LDAPS, il est impératif d'enregistrer les certificats d'autorité du serveur AD dans le fichier Java keystore[4] par défaut du module Scribe.
Chaîne de certificats sous Seth/Samba4
Chaîne de certificats sous Seth/Samba4
Sur un module EOLE Seth instancié, le fichier contenant la chaîne de certificats est le suivant : /var/lib/samba/private/tls/ca.pem
.
ExempleIntégrer la CA du module Seth au Java Keystore
root@scribe:~# scp root@seth:/var/lib/samba/private/tls/ca.pem /root/
root@scribe:~# keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /root/ca.pem
Truc & astuce
La commande suivante permet d'afficher le contenu du fichier :
# openssl x509 -in /root/ca.pem -text
Chaîne de certificats sous Microsoft AD
Pour créer la chaîne de certificats, il est possible de suivre la procédure décrite dans : https://ltb-project.org/documentation/general/active_directory_certificates
Intégrer la CA au Java Keystore
Une fois le fichier copié sur le serveur Scribe (exemple : /tmp/certificate.pem
), il faut l'ajouter dans le fichier Java keystore à l'aide de la commande suivante :
# keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /tmp/certificate.pem
Certificat ajouté au fichier de clés
Truc & astuce
La commande suivante permet d'afficher le contenu du fichier :
# openssl x509 -in /tmp/certificate.pem -text
Instanciation
Une fois la configuration enregistrée, il faut instancier le module Scribe à l'aide de la commande instance
.
Spécificités de l'instanciation en mode Eole-AD
Au cours de l'instance, vous seront demandés :
- le mot de passe de l'utilisateur
admin
(du serveur Scribe) : il sera ré-initialisé par la suite ; - le mot de passe de l'administrateur
Active Directory
: il est requis pour la jonction au domaine KERBEROS et la réplication de l'annuaire Scribe vers AD.
Truc & astuce
Une mauvaise saisie de la clef secrète de l'administrateur de l'Active Directory rend inopérant la synchronisation des données et relancer l'instance ne permet plus de saisir la clef secrète.
Il faut supprimer le fichier /root/.eolead
et relancer l'instanciation.
Messages d'avertissement sans conséquence
Lors de l'instance, plusieurs messages d'erreur sont susceptibles d’apparaître.
Certains sont déjà connus dans le cadre du projet Eole-AD et peuvent être ignorés car sans conséquence.
run-parts: executing /usr/share/eole/posttemplate/04-fichier instance
Restart System V service nscd
Stop System V service nscd [ OK ]
Start System V service nscd [ OK ]
Erreur : Unable to bind to ldaps://etb1.lan with CN=Administrator,CN=Users,DC=etb1,DC=lan (80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1)
Intégration au domaine Active Directory
Mot de passe de l'administrateur Active Directory :
Password for Administrator@ETB1.LAN:
Failed to join domain: failed to lookup DC info for domain 'ETB1.LAN' over rpc: Undetermined error
Si on relance la commande instance
ou reconfigure
, on obtient les messages suivant :
ATTENTION : plusieurs sambaDomainName détectés !
Des dysfonctionnements sont possibles sur ce serveur
Cependant, la présence des deux entrées sambaDomainName ne semble pas entraîner d'effet de bord.
Postes clients
Sur le serveur Active Directory, ajouter l'utilisateur admin
au groupe des Administrateurs du domaine
(Admins du domaine).
Les stations peuvent être intégrées au domaine avec le compte admin
et/ou le compte Administrateur
du serveur Active Directory.
Le nom de domaine à saisir lors de la jonction au domaine est le nom du domaine Active Directory (FQDN).
En se connectant avec l'utilisateur admin
(U:\ doit pointer vers Scribe), il est possible d'installer le client Scribe.
Une fois le client Scribe installé, les utilisateurs du domaine voient leurs montages Scribe et les règles définies dans les modèles ESU sont appliquées.
Gestion des utilisateurs
L'importation, la gestion des utilisateurs, des groupes et des mots de passe au travers de l'interface EAD du module Scribe est totalement fonctionnelle.
Trucs & astuces
Synchronisation
Forcer la synchronisation manuelle des comptes depuis le module Scribe :
# lsc -f /etc/lsc -s all -t1
Changement de mot de passe
Forcer le changement de mot de passe d'un utilisateur (exemple avec l'utilisateur admin
) depuis le module Scribe :
# changepasswordeole.pl admin Eole123$
Si la commande échoue avec le message suivant, vérifier que le mot de passe proposé respecte la politique de sécurité mise en place sur le serveur AD :
Unable to modify unicodePwd for CN=user11,CN=Users,DC=domaine,DC=lan (0000052D: SvcErr: DSID-031A0FC0, problem 5003 (WILL_NOT_PERFORM), data 0)
Tester l'accès à l'annuaire
Lister tous les utilisateurs depuis le module Scribe :
# LDAPTLS_REQCERT=never ldapsearch -x -H ldaps://<adresseServeurSeth:636 -bDC=ac-test,DC=fr -DCN=admin,CN=Users,DC=ac-test,DC=fr -w MotDePasse
Liste d'utilisateurs
Lister tous les utilisateurs depuis le module Seth :
# ldbsearch -H /var/lib/samba/private/sam.ldb -S '(objectclass=user)' cn | grep ^cn:
Attributs utilisateur
Chercher un utilisateur depuis le module Seth :
# ldbsearch -H /var/lib/samba/private/sam.ldb -S cn=p.nom
Configuration du serveur AD
Installer un serveur Active Directory avec les rôles suivants :
serveur DNS
Services de domaine Active Directory
Services de certificats Active Directory
La commande dcpromo permet de lancer l'assistant adéquat
Pour activer le services de certificats sur un serveur 2003, aller dans
Panneau de configuration
→Ajout/Suppression de programmes
→Ajouter/Supprimer des composants Windows
puis cocher :- Serveur d'applications → IIS
- Services de certificats
Journaux
Les journaux sont disponibles dans /var/log/lsc/
.