Intégration du serveur Scribe dans le domaine AD de Seth : 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.
Configuration du module Scribe 2.8 en mode Eole-AD
À partir d'EOLE 2.7.2, l'onglet Eolead
propose une nouvelle variable permet de décider si le serveur Active Directory est :
local
: configuration par défaut du module Scribe en mode AD (fonctionnalité ScribeAD)distant
: permet l'intégration d'un module Scribe à un domaine Active Directory (fonctionnalité Eole-AD)
Le mode Eole-AD correspond donc au choix non (le serveur Active Directory utilisé n'est pas local).
Onglet Général
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'ongletGé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.
from creole.cert import get_certs_chain, concat_fic
from creole.client import CreoleClient
server_cert = CreoleClient().get_creole('server_cert')
chain = get_certs_chain([server_cert,])[1:]
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