Skip to content


Créer un Controleur Principal de Domaine (Windows) avec SAMBA et un annuaire LDAP

Debian

Très largement inspiré de "Un article de L'admin Debian. L'admin Debian

Introduction :

La gestion des utilisateurs ainsi que leurs droits sur les partages réseaux peut devenir suffisamment complexe, pour générer des erreurs monumentales ! Provoquant l'apparition de trous de sécurités ayant pour origine le manque d'organisation et de réflexion sur l'impacte de l'évolution des droits !

On s'aperçoit vite avec le nombre d'utilisateur augmentant, que des groupes peuvent se former ayant des besoins communs. dans l'idéal un organigramme (peut) existe(r) et peut constituer une base de réflexion. Mais il faut qu'il soit complet et à jour !

De plus avec les outils informatiques, il est apparu un besoin de gérer les ordinateurs eux-mêmes avec leur droits, groupes, etc...

Et bien évidemment une interaction évidente entre utilisateurs et ordinateurs, mêlant gestion des un et des autres...

C'est ainsi que les annuaires électroniques sont apparus, ayant pour but de gérer tout cela.

!!! Attention !!!

La configuration d'un domaine Windows en interaction avec le nom de domaine LDAP et DNS, ce fait par l'intermédiaire du nom FQDN (DNS)

Ex : DNS = domain.local => LDAP dc=domain, dc=local => Le nom de domaine Windows (La Forêt) est alors : domain.local

C'est important lors de l'intégration de clients (types : NT4, 2000, 2003) Windows dans ce domain...

Par ailleurs pour simplifier les choses, déclarez un nom NETBIOS identique au nom d'hôte (hostname)

qui lui DOIT être enseigné dans votre serveur DNS pricipale

Prérequis et Conseils :

Ce tutoriel fonctionne sur les distributions suivantes:

  • Debian SID

  • Debian Sarge

  • Debian Etch

  • Debian Lenny

  • Debian Squeeze (avec un changement concernant LDAP)

  • .......

Ce guide a été fait avec une Debian Etch. (personnellement), et depuis avec une Debian Lenny !

Afin que ce guide corresponde totalement à votre environnement, je vous conseille de modifier le niveau de priorité de Debconf. Sur la nouvelle debian Etch et sur Ubuntu le niveau de Debconf est à « Élevé ». Ce qui réduit sensiblement le nombre de questions qui vous sont posées lors de l'installation d'un paquet. On va donc changer le niveau à « Intermédiaire » voir à « basse » pour controler un maximum.

Pour cela tapez en root :

# dpkg-reconfigure debconf

Choisissez "Dialogue" puis « Intermédiaire » ou « basse »

Le contrôleur de domaine doit impérativement avoir une adresse IP statique, si vous changez d'adresse IP en cours de route vous risquez de ne plus pouvoir joindre le domaine.
Une autre astuce étant de faire des réservations DHCP...

Dans notre cas le serveur samba et le serveur OpenLDAP se trouvent sur le méme PC.

Installation du serveur OpenLDAP

Installation

Le paquet slapd contient la partie serveur d'openLDAP :

# apt-get install slapd db4.2-util ldap-utils db4.2-util est remplacé par db4.8-util sous Squeeze. 

Debconf nous pose plusieurs questions :

  • Le nom du domaine : c'est celui de LDAP (Totalement diférent du domaine Samba):

Si vous mettez domaine.local vous aurez donc dc=domaine,dc=local (rappelez-vous en !!)

Car au nom FQDN: domaine.local correspondra le Workgroup: domaine.

Un peu comme le préconise Microsoft lors de la configuration d'un Active Directory.

http://e-novatic.fr/blog/index.php/post/2007/09/11/Bien-configurer-son-Active-Directory

http://www.laboratoire-microsoft.org/articles/win/startad/3/Default.asp

http://technet.microsoft.com/en-us/library/cc755059%28WS.10%29.aspx

Nom de votre organisation: représente la visibilité de votre annuaire ! Chez moi par exemple dom-sln.local.

domaine.local

  • Mot de passe de l'administrateur :

C'est ce mot de passe que vous utiliserez pour vous connecter, rappelez vous en !!

  • Module de base de données à utiliser :

BDB

  • Faut-il supprimer la base de données à la purge du paquet ?

NON

  • Faut-il déplacer l'ancienne base de données ?

NON

  • Faut-il autoriser le protocole LDAPv2 ?

NON

Schéma Samba

LDAP fonctionne avec des schémas, par défaut 4 schémas sont déjé présents, pour utiliser samba avec LDAP il faut le schéma approprié. Celui se trouve dans le paquet SAMBA-DOC (14mo !!)

  • Installation:
# apt-get install samba-doc
  • On copie le schéma que l'on place dans le répertoire dans le répertoire des schémas de LDAP:
# gunzip -c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

Modification du fichier slapd.conf (plus valable sous Squeeze)

Il reste maintenant à éditer le fichier de configuration du serveur OpenLDAP

nano /etc/ldap/slapd.conf
  • On déclare le schéma de samba
include       /etc/ldap/schema/samba.schema

Juste en dessous des autres déclarations;

Sous Squeeze :

Créez un fichier convert-file.conf :

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema

On va convertir ce fichier en fichier LDIF :

# mkdir /tmp/ldif_output
# slapcat -f /etc/ldap/convert-file.conf -F /tmp/ldif_output -n0 -s "cn={4}samba,cn=schema,cn=config" > /tmp/cn=samba.ldif
# cp /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{4\}samba.ldif /etc/ldap/slapd.d/cn\=config/cn\=schema/
# chown openldap:openldap /etc/ldap/slapd.d/cn=config/cn=schema/cn={4}samba.ldif 

Enfin on relance le serveur OpenLDAP:

# /etc/init.d/slapd restart

Voici mon fichier de configuation de slapd.conf

Installation du serveur SAMBA

Installation

On installe le paquet samba (le serveur) et des outils pour le client:

# apt-get install samba smbclient smbfs

Répondez à debconf en laissant tout par défaut, de toute façon on fera notre propre fichier de configuration.

Modification du fichier smb.conf

Le fichier de configuration du serveur SAMBA est : /etc/samba/smb.conf

Vous devez changer au moins les lignes:

  • workgroup

C'est le nom de votre domaine, celui que vous allez donner à windows

  • netbios name

C'est le nom votre machine (résultat de la commande 'hostname').

  • ldap suffix

dc=.....,dc=......

  • ldap admin dn

cn=admin,dc=......,dc=.....

Et éventuellement:

  • hosts allow

Voir mon fichier smb.html

Création des dossiers partagés

Comme vous avez pu le voir dans le fichier de configuration de samba, on partage plusieurs répertoires.

  • /home/netlogon

Contient les éventuels scripts qui sont éxécutés à chaque connexion d'un utilisateur (.bat)

  • /home/export/profile

Contient les profils windows de chaque utilisateur, ils sont créés automatiquement pour les nouveaux

  • /home/partage

Partage commun à tous les utilisateurs du domaine

  • /home/lenomdelutilisateur

Les répertoires personnels linux sont aussi partagés

Création des répertoires:

# mkdir -p /home/netlogon # mkdir -p /home/profiles 

On donne les droits aux répertoires:

# chmod a+w /home/profiles 

Un fichier important est le fichier : /etc/samba/smbusers (Merci à aymen de m'avoir mis un commentaire, montrant que je n'en parlait pas 🙂 )

# Unix_name = SMB_Name1 SMB_Name2 ...  
root = administrator administrateur 
nobody = guest smbguest pcguest


 

Les scripts smbldap-tools

Installation

Le paquet smbldap-tools contient plusieurs scripts facilitant l'administration

# apt-get install smbldap-tools

Modification du fichier smbldap_bind.conf

Créez le fichier /etc/smbldap-tools/smbldap_bind.conf avec les commandes :

# gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
# perl /usr/share/doc/smbldap-tools/configure.pl

Répondez aux questions cela devrait configurer :

slaveDN="cn=admin,dc=domaine,dc=local" 
slavePw=votremotdepasseenclair 
masterDN="cn=admin,dc=domaine,dc=local" 
masterPw=votremotdepasseenclair
  • Adaptez le comme d'habitude à votre configuration
  • Il y a ici un probléme de sécurité car votre mot de passe est en clair, changez les droits de ce fichier pour que seul root puisse le lire
# chmod 600 /etc/smbldap-tools/smbldap_bind.conf

Modification du fichier smbldap.conf

Éditez ou créez le fichier /etc/smbldap-tools/smbldap.conf et copiez ceci:

La commande précédente devrait avoir créé le fichier /etc/smbldap-tools/smbldap.conf : perl /usr/share/doc/smbldap-tools/configure.pl

Vous devez changer:

  • suffix="dc=.........,dc=......"

On commence tout d'abord par stopper samba

# /etc/init.d/samba stop

Puis il faut créer le fichier /var/lib/samba/secrets.tdb: On fournit à samba le mot de passe du compte administrateur qui effectue les requétes dans l'annuaire LDAP.

# smbpasswd -w votremotpasseenclaire

On relance ensuite le serveur samba:

# /etc/init.d/samba start

Le démarrage du service doit etre quasi immédia, s'il dure plusiers secondes c'est qu'il y a une erreur

net getlocalsid

Vérifiez que tout c'est bien passé:

# net getlocalsid
SID for doamin is : S-1-5-21-344654654654654654654654 


La commande net getlocalsid ne doit retourner aucune erreur ni warning !

Vous pouvez donc changer la valeur dans /etc/smbldap-tools/smbldap.conf

smbldap-populate

On va pouvoir créer l'archictecture de notre base LDAP :

# smbldap-populate

Vous devez saisir deux fois votre mot de passe root si tout se passe bien ! Cette commande créée:

  • Les différentes OU (Organisation Unit) qui contiendront vos Machines, Users et Groups

     

 

 

  • Deux UID : root et nobody qui seront dans OU = Users

     

 

  • Plusieurs CN (Common Name): Les groupes qui seront dans OU = Groups

 

Copiez quelque part la derniére ligne sambaDomainName=domaine,dc=domaine,dc=local domaineest le nom workroup que vous avez renseigné dans smb.conf, cette ligne servira à configurer l'interface LAM (si vous le souhaitez), copiez la quelque part. Faites un test, ajoutez un utilisateur:

# smbldap-useradd -a -c "Pierre Dupont" -m -P pdupont
  • -a : désigne un utilisateur

  • -c : Information Gecos : Le nom entier

  • -m : Créé le répertoire personnel

  • -P : création du mot de passe

Lisez l'aide:

# smbldap-useradd -?

Pour étre certain que l'utilisateur root a été correctement créé:

# smbldap-usershow root

Cette commande vous retourne toutes les informations de l'utilisateur root de votre annuaire.

Authentification Unix

Un système Linux peut aller chercher dans différents endroits pour authentifier des utilisateurs. Par défaut il s'agit du fichier /etc/passwd Cependant on peut ajouter d'autres sources de données. Or sur la machine elle même le but n'étant pas d'authentifier les utilisateurs locaux de la machine par LDAP, cette partie n'est pas nécessaire. Si toute fois vous désirez l'implémenter veuillez vous reporter à : http://damstux.free.fr/wiki/index.php?title=PDC_Samba_LDAP#Authentification_Unix : Authentification Unix

Un système Linux peut aller chercher dans différents endroits pour authentifier des utilisateurs. Par défaut il s'agit du fichier /etc/passwd Cependant on peut lui en ajouter d'autres sources de données. On va donc lui indiquer notre annuaire LDAP

NSS (Name Service Switch)

On ajoute un module à NSS qui lui permet d'interroger notre annuaire LDAP

# apt-get install libnss-ldap

Debconf nous pose plusieurs questions:

  • Adresse du serveur LDAP : 127.0.0.1
  • Nom distinctif (DN) de la base de recherche: dc=.......,dc=.....
  • Version de LDAP: 3
  • La base de données demande-t-elle une identification ? NON
  • Le fichier de configuration doit-il étre lisible et modifiable uniquement par son propriétaire ? NON

Explication : sinon seul root pourra interroger l'annuaire. De toute façon, il n'y a pas de mot de passe dans ce fichier

Vérifiez que dans /etc/libnss-ldap.conf vos paramétres sont corrects.

Vous devez avoir:

host 127.0.0.1
base dc=domaine,dc=local
uri ldap://127.0.0.1/

Une nouvelle version de libnss-ldap exige une modification de son fichier de configuration: /etc/libnss-ldap.conf. Il faudra peut-étre aussi modifier une ligne rootbinddn cn=admin,dc=domaine,dc=local en plus de base et uri

Par défaut, si la connexion au serveur LDAP échoue, celle-ci est automatiquement relancée, le temps écoulé avant une nouvelle connexion est augmenté à chaque fois, si bien que votre poste client n'arrive pas à booter (obligation de booter sur un live CD et de monter la partition systéme pour revenir à une configuration correcte).

Il faut donc modifier le mode de connexion: Par défaut il est à HARD, on décommente la ligne #bind_policy hard et l'on remplace hard par soft Ainsi, en cas d'erreur, le poste démarre quand méme.

Vous devez donc avoir dans /etc/libnss-ldap.conf

# Reconnect policy: 
# hard_open: reconnect to DSA with exponential backoff if 
# opening connection failed
# hard_init: reconnect to DSA with exponential backoff if
# initializing connection failed
# hard: alias for hard_open
# soft: return immediately on server failure
bind_policy soft

Il est possible d'affiner considérablement la configuration, mais seule la directive base est à changer pour une configuration classique

De même, on installe le module LDAP pour PAM:

# apt-get install libpam-ldap
  • Hôte du serveur LDAP : 127.0.0.1
  • Nom distinctif (« distinguished name») de la base de recherche : dc=........,dc=......
  • Version de LDAP: 3
  • Faut-il créer une base de données locale pour l'administrateur ? NON
  • La base de données requiert-elle une connexion authentifiée ? NON
  • Méthode de chiffrement pour les changements de mots de passe : crypt

Vérifiez que le fichier /etc/pam_ldap.conf contient au moins:

host 127.0.0.1
base dc=domaine,dc=local
uri ldap://127.0.0.1/

Authentification grâce à LDAP

Il suffit d'indiquer maintenant au système d'aller interroger notre annuaire LDAP

nano /etc/nsswitch.conf

Il vous suffit de rajouter après compat la directive ldap pour

  • passwd
  • group
  • shadow

 

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd: compat ldap
group: compat ldap
shadow: compat ldap

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

ATTENTION !! En manipulant ce fichier si vous faites une erreur, vous ne pourrez plus vous connecter avec aucun de vos utilisateurs (même root) !!

 

Vous avez créé un utilisateur pdupont dans votre annuaire LDAP:

# getent passwd
Doit vous retourner quelque chose comme:
pdupont:x:1507:513:Pierre Dupont:/home/pdupont:/bin/bash 

Intégration d'un client Windows (XP Pro, Serveur 2003/2008)

Une fois que vous avez terminé toute l'installation et la configuration de votre serveur Linux, penser à relancer les deux services:

# /etc/init.d/samba stop 
# /etc/init.d/slapd restart 
# /etc/init.d/samba start

Enfin, vous pouvez tester sous Windows.

  • Click droit sur Poste de Travail, Propriétés.

  • Onglet Nom de l'ordinateur

  • Click sur le bouton Modifier...

  • Membre de: Choisissez Domaine : Saisissez le nom de la directive workgroup que vous avez renseigné dans smb.conf

  • OK

  • On vous demande un login: root et votre mot de passe : celui de root

  • Si tout va bien le message " Bienvenue dans le domaine ...." s'affiche.

  • Redémarrez la machine

  • Choisissez le domaine que vous avez créé et connectez vous avec root ou toto

Votre profile Windows XP/2003 est stocké sur le serveur Linux dans /home/profiles/ chaque utilisateur possède son répertoire $LOGIN.

Votre profile Windows 2008 Serveur/Vista est stocké sur le serveur Linux dans /home/profiles/ chaque utilisateur possède son répertoire $LOGIN.V2. V2 pour différencier le profile avant et après Vista. Sachant que Vista cherche un partage profiles.v2, c'est pourquoi nous avons créé un :

[profiles.V2] copy = profiles

Ils contient les éléments de votre bureau, le répertoire "Mes Documents", les fichiers de configuration des applications (Firefox, Thunderbird....).

ATTENTION : Si vous avez des scripts de logon, pensez à ajouter vos comptes aux groupes voulus : smbldap-groupmod -m $USER "$GROUP1 , $GROUP2"

Intégration d'un client Linux

Si vous avez des clients Linux avec les quels vous ne désirez pas créer de compte en local suivez la méthode dans 5 Authentification Unix , puis http://www.e-glop.net/main/GDM-LDAP-Ubuntu.

Car GDM ou KDM utilisant /etc/pam.d/ pour chercher les logins il advient qu'à la connexion de session :

  • Login Failed !

La solution se situe dans la modification des pam.d :

Configuration

PAM (authentification)

Pour faire fonctionner GDM/KDM, voici comment paramétrer l'authentification PAM :

$ cat /etc/pam.d/common-account
account sufficient pam_ldap.so 
account required pam_unix.so

$ cat /etc/pam.d/common-auth
auth sufficient pam_ldap.so 
auth required pam_unix.so use_first_pass nullok_secure

$ cat /etc/pam.d/common-password
password sufficient pam_ldap.so md5 
password required pam_unix.so nullok obscure min=4 max=8 md5
 $ cat /etc/pam.d/common-session
session required pam_mkhomedir.so skel=/etc/skel 
session sufficient pam_ldap.so 
session required pam_unix.so

$ cat /etc/pam.d/kdm
session required pam_mkhomedir.so skel=/etc/skel 
auth required pam_nologin.so 
auth required pam_env.so readenv=1 
auth required pam_env.so readenv=1 envfile=/etc/default/locale 
@include common-auth 
session required pam_limits.so 
@include common-account 
@include common-password 
@include common-session

$ cat /etc/pam.d/login
# A mettre au tout début du fichier 
session required pam_mkhomedir.so skel=/etc/skel

session required pam_mkhomedir.so skel=/etc/skel :

Permet de créer le répertoire personnel /home/$USER sur le client Linux. Dans smb.conf est ajouté dans profiles :

root preexec = mkdir -m 770 /home/"%U" && mkdir -m 770 /home/"%U"/test && mkdir -m 770 /home/"%U"/bin && mkdir -m 770 /home/"%U"/Desktop && mkdir -m 770 /home/"%U"/"Mes Documents" root postexec = chown -R "%u:Domain Users" /home/"%u"/

Interfaces d'administration

smbldap-tools

Le paquet smbldap-tools contient plusieurs scripts pour gérer les utilisateurs, groupes et machines dans l'annuaire LDAP.

smbldap-groupadd   smbldap-groupshow  smbldap-useradd    smbldap-usermod
smbldap-groupdel   smbldap-passwd     smbldap-userdel    smbldap-usershow
smbldap-groupmod   smbldap-populate   smbldap-userinfo

Vous pouvez afficher toutes options possibles en faisant:

smbldap-... -?

Conclusion

Vous venez d'installer et de configurer un annuaire LDAP pour le domaine : DOMAIN.LOCAL, ainsi que les partages réseaux avec SAMBA pour le domaine (AD) : DOMAIN.LOCAL.

Si vous suivez à la lettre les instructions, moins d'une heure suffit pour faire tout cela !

- Fin -

Print Friendly, PDF & Email

Posted in Debian, Linux, Technique, Toutes.

10 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. pyjman said

    j ai un probleme pour l install de openldap sur une joes ubuntu je dois installer un ldap pour l'authentification des users et les droits d acces a une application je voudrais savoir si je dois installer samba ou non sinon est ce que j ai des chose a installer a savoir que tout se fera via une interface ihm ( ajout user, modif , import , update)

  2. admin said

    Bonjour,
    Ce que tu veux faire ne dépend que de ce que tu dois faire. Je m'explique, en ce qui concerne l'authentification la partie OpenLDAP est suffisante. Cependant à propos de cette application dont tu ne dis rien c'est probablement elle qui doit t'orienter. Comment fonctionne-t-elle ? Quels sont ses pré-requis ?
    Samba n'est utile que lorsque tu veux créer un Domaine Windows sous Linux ou gérer des partages Netbios sous Linux.

    J'espère avoir répondu ! 🙂

  3. Yannick EMANDEU said

    Salut l'admin,
    je voudrais travailler ce tuto sur Debian Wheezy.
    Y'a-t-il quelque chose que je dois savoir avant?
    Merci.

  4. Yannick EMANDEU said

    Salut l'admin,
    Je souhaiterais appliquer ce tuto sur Debian Wheezy. Y a -il quelque chose à savoir avant?

  5. lolotux said

    Bonjour

    A priori non...

    Cordialement

  6. Bonjour et merci pour le tuto. Je vais suivre pas à pas ce soir pour expérimenter. Je vais aussi prendre en compte les commentaires parce qu'il y a des liens sur LDAP que vous avez mis. Au cas où je rencontrerai quelques problèmes en cours de route.

  7. ptak said

    Bonjour
    très enrichissant, juste une question pour ceux qui ont des clients seven pro, est ce que le profil des utilisateurs, remonte en local sur les postes windows dans c:\ utilisateurs ?
    commence à être problématique pour l'occupation du HD en local.
    Sur mes stations sous ubuntu, je n'ai pas ce soucis
    celà doit être certainement un réglage sur les postes windows, mais je sais pas trop où ! merci pour les infos

  8. lolotux said

    Bonjour,

    Actuellement n'ayant pas de poste sous Windows seven, je n'en ai aucune idée malheureusement...
    Quelque tutos doivent bien exister !

    Bonne chance

  9. saigone said

    bonjour, Merci pour le tuto.
    parés avoir suivi ton tuto à la lettre, je remarque l'info suivante lorsque je redémarre Samba et ldap
    [root@zeus ~]# /etc/init.d/smb status
    smbd dead but pid file exists
    nmbd (pid 21211) is running...
    peux-tu m'aider?

  10. lolotux said

    Le service n'est pas démarré mais le fichier pid n'a pas été supprimer. Supprime le et redémarre le service.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.