Configuration avec un serveur Active Directory distant (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 et dans le département de la Savoie.

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.

Cette configuration est compatible avec le module Seth ≥ 2.6 basé sur Samba4. Elle est également compatible avec les serveurs Microsoft.

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[2]) 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.

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 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.

Certaines variables, bien que disponibles à partir du mode normal s'avèrent très importantes.

  • Adresse IP du serveur DNS de secours : 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 Administrator dans le cas d'un module Seth ou Administrateur dans le cas d'un serveur Microsoft AD configuré en français ;
  • 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[3].

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[3] avant l'instance.

Onglet Saslauthd

À partir, d'EOLE 2.8, la délégation d'authentification SASL[4] permet à l'annuaire Active Directory de devenir la référence pour les mots de passe.

Cela permet d'utiliser la séquence ctrl-alt-suppr sans désynchronisation des mots de passe et la restauration de la fonctionnalité : changement de mot de passe à la première connexion.

L'authentification auprès de l'annuaire OpenLDAP reste fonctionnelle grâce à l'utilisation du service d'authentification SASL : saslauthd.

Cette fonctionnalité est toutefois débrayable en passant la variable Utiliser la délégation d'authentification SASL de l'onglet expert Openldap à non.

Dans ce cas, on retrouve le fonctionnement de la version 2.7.2.

Exemple

Le contenu de l'attribut OpenLDAP userPassword sera différent selon que la délégation d'authentification SASL est activée ou non.

Suite à un changement du mot de passe de l'utilisateur admin, la commande suivante produira un résultat différent :

ldapsearch -x -D cn=reader,o=gouv,c=fr -w `cat /root/.reader` uid=admin userpassword | grep userPassword | cut -d ' ' -f2 | base64 -d

  • avec SASL : {SASL}admin@domaine
  • sans SASL : {SSHA}Z/4M/bbHNf20bvlUr+Nsvf0Gad6/XsvS

L’utilisation de la délégation d’authentification SASL[4] ne nécessite pas de configuration lorsque le contrôleur de domaine est local.

Lorsque le contrôleur de domaine est distant, l’onglet Saslauthd est affiché pour permettre de configurer l’accès à l’annuaire AD utilisé pour l’authentification.

  • Domaine du serveur d’authentification : le domaine du serveur utilisé pour la délégation de l’authentification ;
  • Adresse du serveur d’authentification : l’adresse du domaine du serveur utilisé pour la délégation de l’authentification ;
  • Chemin du certificat racine du serveur d’authentification : le certificat utilisé pour valider la connexion LDAPS avec le serveur d’authentification ;
  • Compte de connexion à l’annuaire de saslauthd : privilégier un compte avec le droit en lecture de l’annuaire ;
  • Mot de passe de connexion à l’annuaire : mot de passe du compte de connexion.

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[3] par défaut du module Scribe.

Truc & astuce

Si un certificat a déjà été importé (alias "eole-ad" déjà existant), il est possible de le supprimer à l'aide de la commande suivante :

keytool -delete -alias eole-ad -keystore /etc/ssl/certs/java/cacerts -storepass changeit

Certificats avec Seth >= 2.8.0 configuré avec des certificats "autosignés"

Sur un module EOLE Seth >= 2.8.0 instancié, le serveur AD utilise les mêmes certificats que ceux du module.

En mode "autosigné", le fichier contenant la chaîne de certificats est : /etc/ssl/certs/ca.crt.

ExempleIntégrer la CA du module Seth au Java Keystore

root@scribe:~# scp root@seth:/etc/ssl/certs/ca.crt /root/ca.pem

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

Certificats avec Seth >= 2.8.0 configuré avec des certificats personnalisés

Sur un module EOLE Seth >= 2.8.0 instancié, le serveur AD utilise les mêmes certificats que ceux du module.

En mode "manuel", le fichier contenant la chaîne de certificats intermédiaires est : /var/lib/samba/private/tls/ca.pem (ce fichier existe uniquement si le certificat utilisé par Samba n’est pas signé directement par un certificat autosigné).

Le fichier de certificats à importer sur le Scribe doit d’abord être préparé sur le Seth si celui-ci n’utilise pas le certificat temporaire.

1
from creole.cert import get_certs_chain, concat_fic
2
from creole.client import CreoleClient
3
server_cert = CreoleClient().get_creole('server_cert')
4
chain = get_certs_chain([server_cert,])[1:]
5
concat_fic('/root/samba_chain.pem', chain)
ExempleIntégrer la CA du module Seth au Java Keystore

root@scribe:~# scp root@seth:/root/samba_chain.pem /root/ca.pem

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

Certificats avec Seth en version inférieure à 2.8

Sur un module EOLE Seth 2.6 ou 2.7 instancié, le fichier contenant la chaîne de certificats est : /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/ca.pem

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://www.ltb-project.org/documentation/active_directory_certificates.html

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