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 mise en œuvre de cette fonctionnalité utilise le connecteur LSC[2] qui synchronise les identités entre un annuaire LDAP et d'autres sources de données comme n'importe quelle base de données pourvues d'un connecteur JDBC, un autre serveur LDAP, un fichier plat, une API REST…

https://lsc-project.org

Remarque

Afin de pouvoir appliquer simplement certaines modifications spécifiques à EOLE, le service lsc original a été remplacé par le service systemd[3] personnalisé eole-lsc.

La version proposée sur EOLE 2.6.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 à jour active automatiquement la fonctionnalité :

# Maj-Auto

# 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éralParamètres réseau globauxAdresse 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

Dans l'onglet Général le Nom DNS du réseau local doit correspondre au nom du domaine Active Directory (realm[4]) du serveur Active Directory.

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.

Consultation du realm sur un module Seth
Consultation du realm sur un module Seth

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.

Consultation du nom de domaine sur un module Seth
Consultation du nom de domaine sur un module Seth

Onglet Eolead

  • 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'onglet Gé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 compte Administrateur ou Administrator (dans le cas d'un module Seth);

  • 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[5].

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[5] 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[5] 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.

1
run-parts: executing /usr/share/eole/posttemplate/04-fichier instance
2
Restart System V service nscd
3
Stop System V service nscd [ OK ]
4
Start System V service nscd [ OK ]
5
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)
1
Intégration au domaine Active Directory
2
Mot de passe de l'administrateur Active Directory : 
3
Password for Administrator@ETB1.LAN: 
4
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 :

1
ATTENTION : plusieurs sambaDomainName détectés !
2
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 :

# /usr/bin/lsc -f /etc/lsc -s all -c all -t 1

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)

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 configurationAjout/Suppression de programmesAjouter/Supprimer des composants Windows puis cocher :

    • Serveur d'applications → IIS
    • Services de certificats

Journaux

Les journaux sont disponibles dans /var/log/lsc/.