Académique Documents
Professionnel Documents
Culture Documents
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
#
# 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.
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
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
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
;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"
# 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
[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 :
Adresse du serveur LDAP, on peut facilement en mettre plusieurs sur cette ligne pour faire
une tolérance de panne
Ce sont les chemins de recherche dans la base LDAP pour les différents éléments.
Le DN du Manager, l'utilisateur qui aura les pleins pouvoirs sur la base LDAP
ldap passwd sync fait en sorte que les mots de passe Windows et Linux soient toujours
identiques.
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
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 :
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é.
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
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"
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.
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.
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 :
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/
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.
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.
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.
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.
LDAP Server
Build LDAP Server in order to share users' accounts in local networks.
[1] Install and Configure OpenLDAP.
[root@dlp ~]#
yum -y install openldap*
[root@dlp ~]#
slappasswd -s password -h {MD5}
# (1) remember
{MD5}************************
[root@dlp ~]#
vi /etc/openldap/slapd.conf
suffix "dc=
server-linux
,dc=
info
"
rootdn "cn=Manager,dc=
server-linux
,dc=
info
"
rootpw {MD5}************************
access to attrs=userPassword
by self write
by dn="cn=Manager,dc=server-linux,dc=info" write
by anonymous auth
by * none
access to *
by dn="cn=Manager,dc=server-linux,dc=info" write
by self write
by * read
[root@dlp ~]#
vi /etc/openldap/ldap.conf
BASE dc=
server-linux
, dc=
info
[root@dlp ~]#
vi /etc/ldap.conf
base dc=
server-linux
,dc=
info
[root@dlp ~]#
cd /usr/share/doc/openldap-servers-2.4.15
[root@dlp openldap-servers-2.4.15]#
cp DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@dlp openldap-servers-2.4.15]#
cd
[root@dlp ~]#
/etc/rc.d/init.d/ldap start
Starting slapd:
[ OK ]
[root@dlp ~]#
chkconfig ldap on
[2] Add initial information
[root@dlp ~]#
vi base.ldif
# create new
dn: dc=server-linux,dc=info
objectClass: dcObject
objectClass: organization
o: server-linux Organization
dc: server-linux
dn: cn=Manager,dc=server-linux,dc=info
objectClass: organizationalRole
cn: manager
dn: ou=People,dc=server-linux,dc=info
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=server-linux,dc=info
objectClass: organizationalUnit
ou: Group
[root@dlp ~]#
ldapadd -h localhost -x -D "cn=Manager,dc=server-linux,dc=info" -W -f base.ldif
[root@dlp ~]#
tar zxvf MigrationTools.tgz
[root@dlp ~]#
cd MigrationTools-47
[root@dlp MigrationTools-47]#
vi migrate_common.ph
$DEFAULT_BASE = "dc=
server-linux
,dc=
info
";
[root@dlp MigrationTools-47]#
grep ":5[0-9][0-9]" /etc/passwd > passwd
[root@dlp MigrationTools-47]#
grep ":5[0-9][0-9]" /etc/group > group
[root@dlp MigrationTools-47]#
./migrate_passwd.pl passwd > passwd.ldif
[root@dlp MigrationTools-47]#
./migrate_group.pl group > group.ldif
[root@dlp MigrationTools-47]#
ldapadd -h localhost -x -D "cn=Manager,dc=server-linux,dc=info" -W -f passwd.ldif