Transformer un module Horus en module HorusAD
L'ajout du paquet horus-ad
permet de transformer un module Horus existant en contrôleur de domaine Active Directory[1] tout en conservant toutes les fonctionnalités du module Horus : la gestion des utilisateurs et des groupes, EAD, serveur de bases de données...
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é.
Attention
La transformation du module Horus en module HorusAD est irréversible.
Pré-requis
Il faut disposer d'un serveur Horus fonctionnel ou partir d'une nouvelle installation du module Horus, 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 horus-ad
sur un module Horus active automatiquement la fonctionnalité AD :
# apt-eole install horus-ad
Configuration du module Horus devenu HorusAD
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.
Choix du nom de domaine et configuration DNS
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[5].
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.
run-parts: executing /usr/share/eole/preservice/05-eolead instance
Génération du conteneur addc
Checking cache download in /var/cache/lxc/xenial/rootfs-amd64 ...
Installing packages in template: apt-transport-https,ssh,vim,language-pack-en,language-pack-fr
Downloading ubuntu xenial minimal ...
I: Retrieving InRelease
I: Checking Release signature
I: Valid Release signature (key id 790BC7277767219C42C86F933B4FE6ACC0B21F32)
I: Retrieving Packages
I: Validating Packages
[...]
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 :
Initialisation DC
Generation de la clef SSH pour les echanges entre DC
Création du mot de passe "Administrator" Active Directory :
Confirmation du mot de passe :
admin
: compte d'administration à privilégier pour la jonction des clients au domaine et les opérations courantes.
Creation utilisateur 'admin'
Création du mot de passe "admin" Active Directory :
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 Horus 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 HorusAD, le serveur Samba[6] du module Horus 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.
run-parts: executing /usr/share/eole/posttemplate/05-eolead instance
Intégration au domaine Active Directory
Mot de passe de l'utilisateur Administrator pour le domaine ETB1.LAN :
Using short domain name -- ETB1
Joined 'HORUS' to dns domain 'etb1.lan'
Mise à jour du mot de passe dans les fichiers de configuration
Synchronisation ldap
[...]
Une fois cette opération réalisée, la synchronisation initiale entre l'annuaire OpenLDAP du module Horus et l'annuaire Active Directory est exécutée.
Celle-ci est plus ou moins longue et verbeuse selon que l'annuaire du module Horus 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 :
run-parts: executing /usr/share/eole/posttemplate/05-eolead-pwd instance
Voulez-vous (re)synchroniser les mots de passe des utilisateurs ? [oui/non]
[oui] :
Synchronisation en cours (1 mots de passe)...
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 :
*** Serveur de fichiers
Test du fichier de configuration :
. Syntaxe => Ok
Partages :
. Partage (SMB/TCP) => Ok
. Partage (NMB/UDP) => Ok
. Connexions samba => 0
. Ticket kerberos => Ok
. 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/
.