Synchronisation DEBIAN / Active Directory

Dans une entreprise, il est quelquefois intéressant de ne créer les utilisateurs de tous les systèmes informatiques, quels qu’ils soient, que sur un point d’entrée.

L’idée primaire est que quand on crée un utilisateur sur l’active directory, il soit "répercuté" automatiquement sur les serveurs Debian. A rejoindre l’active directory, nous aurons aussi d’autres avantages en matière de droits divers (partages de fichiers, etc ...).

La procédure décrite dans cet article concerne une configuration Debian qui va rejoindre un contrôleur de domaine windows serveur 2003.

INSTALLATION DES PAQUETS

Vous devez d’abord installer les paquets pour Kerberos, winbind, NTP, et Samba, avec la commande suivante :

sudo apt-get install libkrb53 krb5-config samba winbind ntpdate ntp-server

Vous arriverez automatiquement à l’écran suivant :

A ce niveau, ne précisez rien et validez par entrée. Nous modifierons cela plus tard.

ARRET DES SERVICES

Il faut ensuite arrêter les services suivants, pour les reconfigurer.


sudo /etc/init.d/winbind stop

sudo /etc/init.d/ntp stop

sudo /etc/init.d/samba stop

CONFIGURER KERBEROS

Pour information, cette partie de webmin va modifier le fichier /etc/krb5.conf que vous pourrez aller voir pour juger des résultats.
On suppose dans cet exemple que notre nom de domaine est :
masociete.com.
et que le nom de notre serveur s’appelle : svrwin

Vous remarquerez et ferez attention à respecter les majuscules et minuscules dans cet écran webmin.

CONFIGURER NTP

Il est important, vu qu’on va synchroniser des éléments du serveur Debian à un serveur windows 2003, à ce que les horloges de ces deux serveurs soient strictement identiques. Sinon, ça ne pourra pas fonctionner, configurons donc Debian pour qu’il synchronise son horloge avec le contrôleur de domaine windows.


sudo ntpdate adresse_ip_du_contrôleur_domaine_windows

Le système vous retourne les informations suivantes, comme quoi il est bien calé sur le contrôleur de domaine au niveau horloge.

(192.168.1.15 étant, toujours pour l’exemple, l’adresse ip de notre contrôleur de domaine).

Pour rendre la connection ntp persistante, il faut ajouter un première ligne aufichier /etc/ntp.conf telle que dans le cadre suivant :

Quand ce réglage est fait, il faut redémarrer le service ntp avec

sudo /etc/init.d/ntp start

Le système nous retourne un message du genre :

On doit retrouver en premier lieu, le premier serveur de DNS que Debian utilisera et qui doit correspondre à votre contrôleur de domaine.

CONFIGURATION WINBIND

Il s’agit d’un service qu’il faut configurer pour gérer les communications entre les systèmes windows et unix.

Pour celà, plutôt que d’utiliser webmin ou nous devrons certainement triturer plusieurs options pour arriver au résultat escompté, essayons à la main dans le fichier qui va bien, c’est à dire /etc/smb.conf.

nano /etc/samba/smb.conf
et nous allons simplement insérer les lignes suivantes devant la section Global (avant share definitions)

Commentaires sur les lignes :

realm = ...

Il s’agit du nom de domaine windows 2003

workgroup = ...

Il s’agit du nom de domaine Netbios (en majuscules)

template shell = ...

Il s’agit du shell qu’on donne aux utilisateurs créés automatiquement depuis l’active directory. Pour ces personnes, soit on leur autorise à avoir une invite de commande (compte en mode console ou ssh), auquel cas, il faut indiquer un /bin/bash. Dans le cas contraire, il faut leur affecter /bin/false .

template homedir = ...

Il s’agit ici de savoir si on veut différencier, en observant le répertoire /home du serveur Debian, les utilisateurs créés à partir de l’active directory et ceux crées directement sur le système linux. Ceci est, à mon sens, utile, pour différencier des utilisateurs "système linux" comme pour le stockage d’arrivée d’un service de fax par exemple.

L’idée est alors qu’on puisse voir dans l’arborescence, la structure suivante :

/home/SOCIETE/georges
/home/SOCIETE/damien
/home/SOCIETE/pierre etc......
/home/fax
/home/autre_compte_linux

Dans ce cas :

template homedir = /home/%D/%U

Sinon et si on veut trouver tous les utilisateurs quels qu’ils soient, sous home :

template homedir = /home/%U

Vous l’avez compris : %D est le nom du domaine windows et %U est le nom du compte

Pour faciliter la suite des évènements, je vous recommande vivement de créer un répertoire sous /home/ avec le nom netbios de votre domaine windows (en majuscules) car à la création de l’arborescence de l’utilisateur, linux ne crée que le répertoire final. (celui avec le nom de l’utilisateur).

CONFIGURER NSSWITCH

Linux va d’abord chercher la résolution des comptes dans ses fichiers, et s’il ne trouve pas les comptes, il aura besoin de cet outil pour faire la résolution sur l’active directory.

Ici il faut aller gratter dans le fichier /etc/nsswitch.conf pour modifier les deux instructions suivantes :

passwd : files winbind
group : files winbind

Exemple de résultat :

Ensuite, il faut appliquer les changements avec la commande suivante :

sudo ldconfig

JOINDRE LE DOMAINE

Avec tout celà, pour êtes parés pour ajouter votre serveur au domaine.

Vérifiez tout de même, avant cette étape, à ce que votre nom de machine linux ne dépasse pas 15 caractères, sinon vous aurez le message d’erreur STATUS_BUFFER_OVERFLOW.

Cependant, avant de rejoindre le domaine, il est très important de vider le cache de winbind et le sauvegarder dans un répertoire de secours.

mkdir /var/lib/samba.bak/
mv /var/lib/samba/* /var/lib/samba.bak/

Nous pouvons maintenant, lancer la commande suivante :

sudo net ads join -U "Administrateur"

Administrateur étant bien évidemment le compte administrateur du domaine windows.

DEMARRER LES SERVICES

sudo /etc/init.d/samba start
sudo /etc/init.d/winbind start

VERIFIER LES RESOLUTIONS DE NOMS

Il y a deux commandes à invoquer pour résoudre les noms et les groupes des utilisateurs de l’active directory :

wbinfo -u

wb info -g

Le système va vous retourner alors les utilisateurs et les groups qu’il détecte sur l’active directory

CONFIGURER PAM

Enfin, il faut un module pour dire à Linux que l’authentification des utilisateurs sont sur un annuaire windows et dans quel ordre et quelles librairies il doit utiliser pour l’authentification, bref, quelques fichiers à modifier :

nano /etc/pam.d/common-account

avec les instructions suivantes :

nano /etc/pam.d/common-auth

avec les instructions suivantes :

nano /etc/pam.d/common-session

avec les instructions suivantes :

nano /etc/pam.d/common-session

avec les instructions suivantes :

Ensuite, vous pouvez enfin tester le tout en vous connectant en ssh ou sur la console avec le login/mot de passe d’un utilisateur windows, et le système doit l’accepter et lui créer, la première fois, un répertoire avec son nom d’utilisateur sous /home/MASOCIETE/nom_utilisateur.