Transformer un module Scribe en module ScribeAD

L'ajout du paquet scribe-ad permet de transformer un module Scribe existant en contrôleur de domaine Active Directory[1] tout en conservant toutes les fonctionnalités du module Scribe : la gestion des utilisateurs et des groupes, EAD, applications web…

Grâce à LXC[2] tous les services seront installés sur une seule machine mais séparés grâce à l'usage de conteneurs.

Un conteneur est une zone isolée à l'intérieur du système et qui a un espace spécifique du système de fichiers, un réseau, des processus, des allocations mémoires et processeurs. Cette technique permet de faire fonctionner de multiples environnements GNU/Linux isolés les uns des autres sur un seul et même système hôte.

Contrairement à d'autres techniques de virtualisation, il n'y qu'une seule instance du noyau présente pour l'ensemble des conteneurs et du maître.

LXC limite le nombre de serveurs nécessaires, tout en continuant à séparer les environnements et en conservant un haut degré de sécurité.

Les flux réseaux entre le conteneur et le maître
Les flux réseaux entre le conteneur et le maître

La mise en œuvre de cette fonctionnalité utilise le connecteur LSC[3] 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[4] personnalisé eole-lsc.

Attention

La transformation du module Scribe en module ScribeAD est irréversible.

Attention

Le client Scribe n'est actuellement pas compatible avec le contrôleur de domaine Active Directory.

Pré-requis

Il faut disposer d'un serveur Scribe fonctionnel ou partir d'une nouvelle installation du module Scribe, la procédure est la même.

Sur un serveur existant, il faut procéder à une ré-instanciation du serveur tandis que pour une nouvelle installation, il faut installer le paquet et effectuer l'instanciation.

Installation

L'installation du paquet scribe-ad sur un module Scribe à jour active automatiquement la fonctionnalité AD :

# Maj-Auto

# apt-eole install scribe-ad

Configuration du module Scribe devenu ScribeAD

Adresse du service Active Directory

Par rapport à un module standard, une seule nouvelle variable est à renseigner pour ajouter la fonctionnalité Active Directory :

La valeur à saisir est une adresse IP disponible sur le réseau, elle permet d'exposer le service Active Directory.

Truc & astuce

Si un serveur DHCP[5] est utilisé, c'est cette adresse IP qu'il faut diffuser en tant que DNS pour les clients.

Choix du nom de domaine et configuration DNS

Par défaut le nom du domaine Active Directory (realm[6]) est le Nom DNS du réseau local paramétré dans l'onglet Général.

Le choix de cette valeur est primordial pour la bonne intégration du serveur dans une infrastructure existante.

Attention

La mise en place d'un service Active Directory dans une infrastructure impose des contraintes fortes en terme de configuration DNS.

Si le domaine Active Directory est une sous-zone d'un domaine géré par un serveur DNS externe (le module Amon, par exemple), ce dernier doit lui déléguer la gestion de cette sous-zone.

Remarque

Une fois instancié, le serveur d'origine utilise en tant que serveur DNS le serveur Active Directory qu’il héberge tandis que ce dernier se sert du premier DNS déclaré dans la variable Adresse IP du serveur DNS comme DNS de forward[7].

Remarque

Le nom du serveur Active Directory qui est également celui du conteneur LXC est addc. Cette valeur n'est pas modifiable.

Instanciation

Une fois configuré, il faut instancier ou ré-instancier le serveur à l'aide de la commande instance.

Génération du conteneur addc

Lors de la première instance, le conteneur LXC, nommé addc est généré puis configuré. Cette opération dure plusieurs minutes.

1
run-parts: executing /usr/share/eole/preservice/05-eolead instance
2
3
Génération du conteneur addc
4
Checking cache download in /var/cache/lxc/xenial/rootfs-amd64 ... 
5
Installing packages in template: apt-transport-https,ssh,vim,language-pack-en,language-pack-fr
6
Downloading ubuntu xenial minimal ...
7
I: Retrieving InRelease 
8
I: Checking Release signature
9
I: Valid Release signature (key id 790BC7277767219C42C86F933B4FE6ACC0B21F32)
10
I: Retrieving Packages 
11
I: Validating Packages
12
   [...]

Une fois le conteneur fonctionnel, l'initialisation du contrôleur de domaine débute.

Deux utilisateurs Active Directory sont créés, il faut leur attribuer un mot de passe :

  • Administrator : compte avec tous les pouvoirs (administrateur du domaine AD) à privilégier pour toutes les opérations d'administration du serveur :
1
Initialisation DC
2
Generation de la clef SSH pour les echanges entre DC
3
Création du mot de passe "Administrator" Active Directory : 
4
Confirmation du mot de passe : 
  • admin : compte d'administration à privilégier pour la jonction des clients au domaine et les opérations courantes.
1
Creation utilisateur 'admin'
2
Création du mot de passe "admin" Active Directory : 
3
Confirmation du mot de passe :

Attention

Le mot de passe de l'utilisateur admin de l'Active Directory  est écrasé par celui de l'utilisateur admin de l'annuaire Scribe lorsque ce dernier est modifié ou que la synchronisation des mots de passe est forcée.

Intégration au domaine et synchronisation de l'annuaire

Dans l'infrastructure ScribeAD, le serveur Samba[8] du module Scribe initial devient membre du nouveau domaine Active Directory.

Cette modification n'est pas entièrement automatisée, il est nécessaire de saisir à nouveau le mot de passe du compte Administrator créé précédemment.

1
run-parts: executing /usr/share/eole/posttemplate/05-eolead instance
2
3
Intégration au domaine Active Directory
4
Mot de passe de l'utilisateur Administrator pour le domaine ETB1.LAN : 
5
Using short domain name -- ETB1
6
Joined 'SCRIBE' to dns domain 'etb1.lan'
7
Mise à jour du mot de passe dans les fichiers de configuration
8
9
Synchronisation ldap
10
   [...]

Une fois cette opération réalisée, la synchronisation initiale entre l'annuaire OpenLDAP du module Scribe et l'annuaire Active Directory est exécutée.

Celle-ci est plus ou moins longue et verbeuse selon que l'annuaire du module Scribe est déjà peuplé ou non.

La synchronisation des annuaires via LSC ne permet pas la synchronisation des mots de passe.

Celle-ci fait l'objet d'une procédure dédiée qui peut être exécutée à l'instance :

1
run-parts: executing /usr/share/eole/posttemplate/05-eolead-pwd instance
2
Voulez-vous (re)synchroniser les mots de passe des utilisateurs ? [oui/non]
3
[oui] : 
4
Synchronisation en cours (1 mots de passe)...
5

Si l'annuaire contient beaucoup de comptes, cette opération peut durer plusieurs minutes.

Remarque

Dans le cadre d'une nouvelle installation, seul le mot de passe du compte admin est synchronisé.

Trucs & astuces

La commande diagnose permet de connaître l'état du service :

1
*** Serveur de fichiers
2
3
Test du fichier de configuration :
4
.                     Syntaxe => Ok
5
6
Partages :
7
.           Partage (SMB/TCP) => Ok
8
.           Partage (NMB/UDP) => Ok
9
.            Connexions samba => 0
10
11
.             Ticket kerberos => Ok
12
.         Synchronisation LSC => Ok

Synchronisation

Forcer la synchronisation manuelle des comptes depuis le maître :

# /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 maître :

# 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)

Relancer le service samba-ad-dc

Le service samba-ad-dc est dans le conteneur addc, pour relancer le service :

# ssh addc "service samba-ad-dc restart"

Liste d'utilisateurs

Lister tous les utilisateurs depuis le maître :

# ssh addc "ldbsearch -H /var/lib/samba/private/sam.ldb -S '(objectclass=user)' cn | grep ^cn:"

Attributs utilisateur

Chercher un utilisateur depuis le maître :

# ssh addc "ldbsearch -H /var/lib/samba/private/sam.ldb -S cn=p.nom"

Journaux

Les journaux de l'outil LSC sont disponibles dans :

  • /var/log/lsc/ pour les synchronisations manuelles ;
  • /var/log/rsyslog/local/lsc/ pour les opérations réalisées par le démon.

Les journaux du service Active Directory sont disponibles sur le maître dans le répertoire /var/log/samba-ad-dc/.