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.7.2 en mode Eole-AD

À partir d'EOLE 2.7.2, l'onglet Eolead propose une nouvelle variable qui 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

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.

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