Vous êtes sur la page 1sur 15

Ce type de serveur permet de gérer l'authentification centralisée pour des clients

Windows et Linux.

Sommaire

 [masquer]

1 Configuration du serveur OpenLDAP


2 Configuration de samba
3 Création et gestion des comptes dans l'annuaire
o 3.1 Utilitaires OpenLDAP et fichiers
LDIF
o 3.2 Les smbldap-tools
 3.2.1 Configuration
 3.2.2 Utilisation
4 Configuration des clients Linux
o 4.1 Configuration PAM
o 4.2 Client LDAP
o 4.3 Configuration NSS
5 Configuration des clients Windows
o 5.1 Création du compte ordinateur
o 5.2 Ajout de l'ordinateur Windows dans
le domaine
6 Quelques trucs pouvant aider
o 6.1 Impossible de se connecter en tant
que root

1 Configuration du serveur OpenLDAP


La configuration du serveur LDAP se fait par le fichier /etc/openldap/slapd.conf.
Nous utiliserons les informations suivantes pour créer l'architecture LDAP : 
Les utilisateurs sont placés dans l'Unité d'Organisation (OU) Users. Les machines
dans une OU Computers.

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema

On intègre les schémas samba et automount en plus des schémas par défaut.

# Allow LDAPv2 client connections. This is NOT the default.


allow bind_v2

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
TLSCertificateFile /etc/pki/tls/certs/slapd.pem
TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

Certificats pour l'utilisation de LDAP sur TLS/SSL (optionel).

access to dn.children="ou=Users,dc=exemple,dc=com" \

attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword,sambaPw
dLastSet
by anonymous auth
by * none

access to dn.children="ou=Admins,dc=exemple,dc=com" \

attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword,sambaPw
dLastSet
by anonymous auth
by * none

access to dn.children="ou=Computers,dc=exemple,dc=com" \

attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword,sambaPw
dLastSet
by anonymous auth
by * none

access to *
by self write
by * read
On met en place des restrictions d'accès sur certains attributs de manière à ce
que seuls les administrateurs LDAP et le titulaire de la fiche puissent écrire les
attributs sensibles, et on bloque l'accès aux autres utilisateurs sur ces champs.
L'accès à toutes les autres données de l'annuaire peut donc se faire de manière
anonyme.(On peut sécuriser ça en venant forcer l'authentification des utilisateurs
pour lire il suffit pour cela de remplacer :

by * read

par

by users read
by anonymous auth
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################

database bdb
suffix "dc=exemple,dc=com"
rootdn "cn=Manager,dc=exemple,dc=com"
rootpw secret

rootdn et rootpw sont les informations de connexion du superutilisateur LDAP,


rootpw peut (et doit) être chiffré dans le fichier, pour ce faire utiliser le
programme slappasswd qui vous demandera le mot de passe et vous l'affichera
dans le shell chiffré en SSHA il vous suffira ensuite de venir le coller comme
valeur pour rootpw

# The database directory MUST exist prior to running slapd AND


# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/ldap

# Indices to maintain for this database


index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub

Il faut ensuite venir créer la racine de l'annuaire, ça peut être fait simplement à
l'aide de la commande smbldap-populate contenue dans les smbldap-tools. Il est
aussi possible de le faire à la main avec un fichier ldif de ce type :
dn: dc=exemple,dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
o: exemple
dc: exemple
description: Racine de l'annuaire

2 Configuration de samba
La configuration de Samba se fait dans le fichier /etc/samba/smb.conf

[global]

workgroup = EXEMPLE
netbios name = SRV
hosts allow = 192.168. 127.0.0
log file = /var/log/samba/access.log
log level = 1
max log size = 10
security = user
encrypt passwords = true
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
domain logons = Yes
domain master = Yes
preferred master = Yes
os level = 66
local master = Yes
wins support = Yes
guest account = nobody
printing = cups
printcap name = cups

oplocks = No
level2 oplocks = No
kernel oplocks = No

template shell = /bin/false


winbind use default domain = no

 ;option LDAP
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=exemple,dc=com
ldap machine suffix = ou=Machines
ldap user suffix = ou=Users
ldap group suffix = ou=Group
ldap admin dn = "cn=Manager,dc=exemple,dc=com"

ldap passwd sync = Yes


enable privileges = Yes

logon path = \\%L\profiles\%U

# Table d'encodage des caractères (je fixe sur celui-là pour avoir le même
que sous windows)
Unix Charset = ISO8859-15

#SMBLDAP-TOOLS

add user script = /usr/sbin/smbldap-useradd -m "%u"


add machine script = /usr/sbin/smbldap-useradd -w "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user script = /usr/sbin/smbldap-userdel "%u"
delete group script = /usr/sbin/smbldap-groupdel "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
passwd program = /usr/sbin/smbldap-passwd -u %u

admin users = @Administrators

[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no
browseable = no

[profiles]
path = /srv/profiles
browseable = no
guest ok = yes

Je ne vais pas détailler toutes les lignes de la configuration de Samba ce serait


bien trop long, je vais donc seulement donner l'explication des lignes spécifiques
à notre projet :

domain logons = Yes


domain master = Yes
 ;option LDAP
passdb backend = ldapsam:ldap://127.0.0.1

Adresse du serveur LDAP, on peut facilement en mettre plusieurs sur cette ligne
pour faire une tolérance de panne

ldap suffix = dc=exemple,dc=com


ldap machine suffix = ou=Machines
ldap user suffix = ou=Users
ldap group suffix = ou=Group

Ce sont les chemins de recherche dans la base LDAP pour les différents
éléments.

ldap admin dn = "cn=Manager,dc=exemple,dc=com"

Le DN du Manager, l'utilisateur qui aura les pleins pouvoirs sur la base LDAP

ldap passwd sync = Yes

ldap passwd sync fait en sorte que les mots de passe Windows et Linux soient
toujours identiques.

logon path = \\%L\profiles\%U

Chemin pour les profiles itinérants Windows %L est le LogonServer et %U le nom
de l'utilisateur.

Il vous faudra ensuite venir donner à Samba le mot de passe du manager de


l'annuaire afin qu'il puisse accéder librement aux données, ceci se fait à l'aide de
la commande :

smbpasswd -W

3 Création et gestion des comptes dans


l'annuaire
C'est ici que commence la partie la plus pénible si on n'utilise pas de GUI, il faut
maintenant venir peupler notre annuaire pour que les stations viennent chercher
les informations utilisateurs dedans. 
La manière la plus basique est de faire les utilisateurs à l'aide de fichier ldif et de
venir les intégrer dans la base à l'aide des clients OpenLDAP.

3.1 Utilitaires OpenLDAP et fichiers LDIF


Un fichier LDIF type pour un utilisateur :

dn: uid=user1,ou=Users,dc=example,dc=com
cn: user1
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: user1
userPassword:: eMNoen1gVuZerulrbsFdre9PVAJRSIROSL3sS4LESS09
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/ldap/user1
loginShell: /bin/bash

Pour le userPassword vous pouvez le rentrer en clair ou crypté avec les


protocoles CRYPT, SSHA ou MD5. 
Un fois que vous avez entré ces quelques lignes dans un fichier quelquechose.ldif
il ne vous reste plus qu'à introduire ces données dans l'annuaire, pour cela nous
allons utiliser la commande :

ldapadd -x -D cn=Manager,dc=exemple,dc=com -W -f quelquechose.ldif

L'utilitaire devrait vous demander un mot de passe entrez celui que vous avez
mis comme rootpw dans votre fichier slapd.conf (ben oui on a mis le rootdn dans
la commande). 
Et voilà vous venez de rajouter un utilisateur dans votre annuaire vous devriez
pouvoir faire su – user1 maintenant sur n'importe quel client bien configuré.

3.2 Les smbldap-tools


Ce sont de petits utilitaires qui permettent une gestion simplifiée des données de
l'annuaire. Ils peuvent être utilisés pour gérer aussi bien les comptes Windows
que les comptes Linux.

3.2.1 Configuration
Le fichier smbldap_bind.conf contient les informations de connexion qu'utiliseront
les smbldap-tools donc de toute évidence il faut mettre ici un compte utilisateur
qui a le droit de créer des entrées diverses dans la base LDAP, pour le moment
nous mettrons le Manager, celui qui a tous les droits. 
/etc/smbldap/smbldap_bind.conf :

slaveDN="cn=Manager,dc=exemple,dc=com"
slavePw="secret"
masterDN="cn=Manager,dc=exemple,dc=com"
masterPw="secret"
Le fichier smbldap.conf, contient toute la configuration des tools à
proprement parler, séparé en trois grandes parties :
La configuration du domaine et l'accès au LDAP :
# Le nom du domaine, s'il est non défini la valeur sera celle de samba
sambaDomain="EXEMPLE"

# Adresse du serveur LDAP esclave


slaveLDAP="127.0.0.1"

# Adresse du serveur LDAP maitre


masterLDAP="127.0.0.1"

# Ne pas utiliser TLS pour sécuriser la connexion avec LDAP


ldapTLS="0"

# Suffixe LDAP (la racine de votre base LDAP)


# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=exemple,dc=com"

# OU contenant les utilisateurs


usersdn="ou=Users,${suffix}"

# OU contenant les comptes ordinateurs (clients windows)


computersdn="ou=Computers,${suffix}"

# OU contenant les groupes


groupsdn="ou=Group,${suffix}"

# OU idmap (utile uniquement en cas d'utilisation de plusieurs LDAP )


idmapdn="ou=Idmap,${suffix}"

# Rechercher par défaut dans les sous OU aussi


scope="sub"

# Cryptage par défaut des mots de passe Linux


# (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="SSHA"
La configuration des options par défaut Linux :
# Shell par défaut
userLoginShell="/bin/bash"

# Chemin du répertoire home linux


userHome="/home/ldap/%U"
# Mode donné au Home lors de sa création
userHomeDirectoryMode="700"

# Commentaire par défaut


userGecos="System User"

# Groupe principal par défaut


defaultUserGid="513"

# Groupe principal par défaut pour un compte ORDINATEUR


defaultComputerGid="515"

# Répertoire modèle pour la création des nouveaux home


skeletonDir="/etc/skel"

# Nombre de jours maximum pour la validité du mot de passe


defaultMaxPasswordAge="45"

La configuration des options par défaut Windows :

# Partage à monter en tant que Home Drive à la connexion


userSmbHome="%LOGONSERVER%\%U"

# Chemin du profil itinérant


userProfile="%LOGONSERVER%\profiles\%U"

# Lettre à utiliser pour monter le Home Drive


userHomeDrive="Z:"

# Nom du script d'ouverture de session (doit être dans le partage


NETLOGON)
userScript="logon.bat"

# Domaine par défaut de l'email


mailDomain="exemple.com"

# L'utilisateur peut changer son mot de passe


sambaPwdCanChange="1"

3.2.2 Utilisation
smbldap-useradd : le premier utilitaire et surement un des plus utilisé qui permet
de venir ajouter des utilisateurs simplement dans la base LDAP avec les attributs
POSIX et/ou SAMBA.

Cet utilitaire permet de mettre en place de nouveaux utilisateurs avec le


parametrage de tous les attributs utiles de manière assez intuitive car la plupart
des options de la ligne de commande sont similaires à celles de smbpasswd ou
passwd.

Usage: /usr/sbin/smbldap-useradd [-awmugdsckABCDEFGHMNPST?] username


-o ajoute l'utilisateur dans l'OU (relative au suffix utilisateur)
-a est un utilisateur Windows (sinon, uniquement POSIX)
-b est un utilisateur AIX
-w est une station de travail Windows
-i is a trust account (Windows Workstation)
-u uid
-g gid
-G groupes supplémentaires séparés par des virgules
-n ne pas créer de groupe
-d home
-s shell
-c commentaires
-m créer le répertoire home et copier /etc/skel
-k répertoire squelette (avec -m)
-t temps. attendre 'temps' secondes avant de quitter ( avec -w )
-P exécute smbldap-passwd après
-A peux changer le mot de passe ? 0 = non, 1 = oui
-B dois changer le mot de passe ? 0 = non, 1 = oui
-C sambaHomePath
-D sambaHomeDrive
-E sambaLogonScript (Script de login)
-F sambaProfilePath (Chemin du profil utilisateur)
-H sambaAcctFlags (Bits de contrôle de compte Samba)
-N surnom
-S nom de famille
-M adresses email locales (séparées par des virgules)
-T adresse email de transfert
-? affiche ce message d'aide

smbldap-passwd : Définir ou redéfinir le mot de passe d'un utilisateur

Usage: /usr/sbin/smbldap-passwd [options] [username]


-h, -?, --help show this help message
-s update only samba password
-u update only UNIX password

smbldap-userdel : Supprimer un utilisateur

Usage: /usr/sbin/smbldap-userdel [-r?] username


-r remove home directory
-R remove home directory interactively

smbldap-usermod : Permet de modifier simplement et rapidement les options


d'un utilisateur avec les mêmes fonctions que smbldap-useradd.
Usage: /usr/sbin/smbldap-usermod [-awmugdsckABCDEFGHIPSMT?h] username
Available options are:
-c gecos
-d home directory
-r new username (cn, sn and dn are updated)
-u uid
-o uid can be non unique
-g gid
-G supplementary groups (comma separated)
-s shell
-N canonical name
-S surname
-P ends by invoking smbldap-passwd
For samba users:
-a add sambaSAMAccount objectclass
-e expire date ("YYYY-MM-DD HH:MM:SS")
-A can change password ? 0 if no, 1 if yes
-B must change password ? 0 if no, 1 if yes
-C sambaHomePath (SMB home share, like '\\PDC-SRV\homes')
-D sambaHomeDrive (letter associated with home share, like 'H:')
-E sambaLogonScript (DOS script to execute on login)
-F sambaProfilePath (profile directory, like '\\PDC-
SRV\profiles\foo')
-H sambaAcctFlags (samba account control bits like '[NDHTUMWSLKI]')
-I disable an user. Can't be used with -H or -J
-J enable an user. Can't be used with -H or -I
-M mailAddresses (comma separated)
-T mailToAddress (forward address) (comma separated)
-?|-h show this help message

smbldap-group* : on retrouve les mêmes commandes que pour les utilisateurs


mais qui eux agissent comme leur nom l'indique sur les groupes.

smbldap-populate : cette commande n'est utilisée qu'une seule fois normalement


au moment où vous venez de finir la configuration de votre serveur LDAP pour
créer la base le l'architecture. Une fois que le serveur LDAP et les smbldap-tools
sont configurés exécutez cette commande pour que les OU et la base de
l'annuaire soient créés automatiquement en fonction des paramètres définis dans
la configuration des smbldap-tools.

4 Configuration des clients Linux


Nous avons donc trois endroits où modifier la configuration :

4.1 Configuration PAM


La configuration de PAM se fait sous Fedora ,pour les options à appliquer sur tout
le système, dans le fichier /etc/pam.d/system-auth :

auth sufficient pam_ldap.so use_first_pass


account [default=bad success=ok user_unknown=ignore] pam_ldap.so
password sufficient pam_ldap.so use_authtok
session optional pam_ldap.so

Vous pouvez constater que l'on retrouve le module pam_ldap.so dans les 4
sections.

4.2 Client LDAP


Il est préférable de modifier ce fichier à la main pour vraiment savoir ce que l'on
met dedans de plus certaines distributions intègrent des outils pour faciliter la
configuration de ces fichiers mais pas toutes. 
Voilà un fichier /etc/ldap.conf en exemple :

host ldap1.example.com
base dc=example,dc=com
ldap_version 3
port 389
scope one
pam_filter objectclass=posixaccount
pam_login_attribute uid
pam_member_attribute gid
pam_password crypt
nss_base_passwd ou=Users,dc=example,dc=com
nss_base_shadow ou=Users,dc=example,dc=com
nss_base_group ou=Group,dc=example,dc=com
bind_policy soft

Dans ce fichier il faudra modifier la ligne scope one par scope sub si l'on utilise
des sous-OU.

Mais il vous faudra aussi modifier le fichier /etc/openldap/ldap.conf pour que


tous les utilitaires fonctionnent 
Voilà un fichier /etc/openldap/ldap.conf en exemple :

BASE dc=example,dc=com
URI ldap://ldap1.example.com/

4.3 Configuration NSS


La configuration de NSS est vraiment simple à comprendre et à arranger comme
on le souhaite, il suffit de chercher dans le fichier /etc/nsswitch.conf les lignes
pour les bases de données que l'on souhaite voir utiliser LDAP et de venir
rajouter à la fin de la ligne « ldap » tout simplement. Ce qui nous donnera dans
le cas de l'authentification des utilisateurs les lignes suivantes :

passwd: files ldap


shadow: files ldap
group: files ldap

L'attribut files en début de ligne spécifie qu'il doit d'abord chercher dans les
fichiers en local et venir compléter ses informations avec LDAP. Nous pouvons
aussi voir les autres lignes et ajouter LDAP à certaines suivant les informations
que nous voulons dans notre annuaire.

Pour éviter les requêtes trop nombreuses


Pour éviter les requêtes trop nombreuses sur le serveur LDAP vous pouvez activer le
service nscd sur vos clients linux qui mettra en cache les résultats de requêtes et éviter
ainsi de surcharger le serveur LDAP.

5 Configuration des clients Windows


5.1 Création du compte ordinateur
La méthode la plus simple est d'utiliser les smbldap-tools pour le faire, il vous
suffira de taper la commande suivante :

smbldap-useradd -w NomOrdinateur$

Le nom du compte
Vous pouvez écrire le nom du compte avec ou sans le $ à la fin mais je vous conseille de
prendre l'habitude de le mettre afin de bien garder en tête que tout ce qui finit par $ est un
ordinateur Windows. Si vous ne le mettez pas smbldap-useradd le fera pour vous.
5.2 Ajout de l'ordinateur Windows dans le domaine
De ce coté-là aussi ça donne dans la simplicité, si tout a été bien configuré cette
étape devrait se faire en moins de 5 minutes. 
L'option qui nous intéresse est un peu cachée, il faut aller dans : 

 Panneau de configuration 
 Système 
 Onglet nom de l'ordinateur 
 Modifier 
Une fois dans cette petite boîte de dialogue tout est relativement facile, en haut
vous trouverez une case contenant le nom actuel de l'ordinateur et en bas deux
cases avec un bouton radio pour activer l'une ou l'autre. Il faut activer la case
« Domaine » et dedans vous viendrez saisir le nom que vous avec donné à votre
domaine dans la configuration de Samba ( ici EXEMPLE ). 
Windows vous demandera alors de saisir des informations d'identification veillez
à bien saisir un nom d'utilisateur et un mot de passe ayant les droits
administrateurs sur le domaine. 
Une fois que Windows vous aura confirmé l'entrée dans le domaine il vous
restera seulement à redémarrer, une fois arrivé sur la boite d'ouverture de
session Windows vous pourrez constater la présence d'une liste de choix en bas,
sélectionnez le nom du domaine et entrez les informations d'identification d'un
utilisateur du domaine. 
Vous voilà maintenant avec une station qui peux utiliser les différents comptes
utilisateurs de votre base LDAP.

6 Quelques trucs pouvant aider


6.1 Impossible de se connecter en tant que root
Vous avez fait une erreur dans votre configuration PAM ou dans le
fichier /etc/ldap.conf des PAM et/ou NSS ? Pas de panique, vous pouvez peut-
être vous en sortir sans devoir redémarrer en ajoutant à votre annuaire l'objet
suivant :

dn: uid=root,ou=Admins,dc=example,dc=com
cn: root
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: root
uidNumber: 0
gidNumber: 0
userPassword:: eMNoen1gVuZerulrbsFdre9PVAJRSIROSL3sS4LESS09
homeDirectory: /root
loginShell: /bin/bash

N'oubliez pas de changer le mot de passe avant l'insertion dans l'annuaire. Cela
ne fonctionne bien évidemment que s'il n'a pas été spécifié d'uid minimal
définissable par LDAP. Sinon, un reboot en single-user voire un CD de secours
s'impose... 
Dans ces cas-là, toujours conserver un terminal root dans un coin pour pouvoir
modifier la configuration entre deux tests qui font échouer un su - root ou
un ssh root@localhost.

Catégorie : Administrer un serveur dédié

 Accueil
 Contribuer
 Travaux Wiki
 Modifications récentes
 Page au hasard
 Aide

 Connexion

 Pages liées
 Suivi des pages liées
 Pages spéciales
 Version imprimable
 Lien historique

Fedora-Fr est hébergé gracieusement chez

 Dernière modification de cette page le 26 octobre 2009 à 19:22.


 Cette page a été consultée 14 619 fois.
 
 Contenu disponible sous Paternité 2.5 .
Ce site rassemble les utilisateurs francophones de Fedora et ne dépend pas du Projet Fedora
fedora-fr est hébergé gracieusement chez   sur serveur 
Skin fedora-fr par Titax & LLaumgui

Vous aimerez peut-être aussi