You are on page 1of 13

$LOGOIMAGE

LDAP

Lightweight Directory
Access Protocol
Nom:

LDAP

Dimoni:

slapd

Paquet:

openldap-server

Port TCP:

389 (636 segur)

1 Introducci
LDAP (Lightweight Directory Access Protocol) s un protocol a nivell d'aplicaci que permet l'accs a un servei
de directori ordenat i distribut per a cercar diversa informaci en un entorn de xarxa. LDAP tamb s considerat
una base de dades (tot i que el seu sistema d'emmagatzemament pot ser diferent) al que poden realitzar-se
consultes. Habitualment, emmagatzema la informaci de login (usuari i paraula de pas) i s utilitzat per a
autenticar-se tot i que s possible emmagatzemar altres tipus d'informaci (dades de contacte del usuari, ubicaci
de diversos recursos de la xarxa, permisos, certificats, etc).

2 Openldap
2.1 Instalaci
Installaci del servidor:
yum install openldap-servers

Installaci del phpldapadin (portal per administrar els servidor ldap):


yum install phpldapadmin

Installaci de migrationtools (scripts per migrar les comptes locals al servidor ldap):
yum install migrationtools

Desprs d'installar el phpldapadmin cal reinicialitzar el servidor apache.

2.2 Configuraci
Aquesta versi ha canviat la sintaxi de la configuraci, ara fa servir la configuraci cn=config, la configuraci es
troba a /etc/openldap/slapd.d/cn=config, repartida entre diferent fitxers. El fitxer olcDatabase={1}bdb.ldif, conte
la configuraci del nom del servidor:
dn: olcDatabase={1}bdb
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
olcSuffix: dc=aula9,dc=cat

2 Openldap

$LOGOIMAGE

LDAP

olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcRootDN: cn=Manager,dc=aula9,dc=cat
olcRootPW: {SSHA}3MUmh19z+EiPWxGJWKIeEkFemmiQI5sf
olcMonitoring: TRUE
olcDbDirectory: /var/lib/ldap
olcDbCacheSize: 1000
olcDbCheckpoint: 1024 15
olcDbNoSync: FALSE
olcDbDirtyRead: FALSE
olcDbIDLcacheSize: 0
olcDbIndex: objectClass pres,eq
olcDbIndex: cn pres,eq,sub
olcDbIndex: uid pres,eq,sub
olcDbIndex: uidNumber pres,eq
olcDbIndex: gidNumber pres,eq
olcDbIndex: mail pres,eq,sub
olcDbIndex: ou pres,eq,sub
olcDbIndex: loginShell pres,eq
olcDbIndex: sn pres,eq,sub
olcDbIndex: givenName pres,eq,sub
olcDbIndex: memberUid pres,eq,sub
olcDbIndex: nisMapName pres,eq,sub
olcDbIndex: nisMapEntry pres,eq,sub
olcDbLinearIndex: FALSE
olcDbMode: 0600
olcDbSearchStack: 16
olcDbShmKey: 0
olcDbCacheFree: 1
olcDbDNcacheSize: 0
structuralObjectClass: olcBdbConfig
entryUUID: adab35bc-9ee2-102e-919d-859ebe025584
creatorsName: cn=config
createTimestamp: 20100126162201Z
entryCSN: 20100126162201.709451Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20100126162201Z

Ara posem el nom al nostre ldap, canviem els parmetres (Suffix i RootDN):
olcSuffix: dc=aula9,dc=cat
olcRootDN: cn=Manager,dc=aula9,dc=cat

Ara cal posar el password de l'administrador del ldap, des de una consola escrivim slappassword:
$ slappasswd
New password:
Re-enter new password:
{SSHA}3MUmh19z+EiPWxGJWKIeEkFemmiQI5sf

Aquesta cadena, es la que posem al fitxer de configuraci:


olcRootPW: {SSHA}3MUmh19z+EiPWxGJWKIeEkFemmiQI5sf'''

2.2 Configuraci

$LOGOIMAGE

LDAP

Tamb hem de canviar el fitxer olcDatabase={2}monitor.ldif, conte la configuraci del nom del servidor, cal
posar b la lnia:
olcAccess: {0}to * by dn.base="cn=manager,dc=aula9,dc=cat" read by * none'''

Ara ja poden iniciar el servei slapd. Es possible que s'hagin de canviar el propietari dels fitxers de /var/lib/ldap.

2.3 Funcionament
Per comprobar que funciona executem en una consola l'ordre slaptest:
#slaptest
bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).
Expect poor performance for suffix "dc=aula9,dc=cat".
config file testing succeeded

Tamb podem escriure al navegador: http://localhost/ldapadmin

2.3 Funcionament

$LOGOIMAGE

LDAP

Donem a conectar i entrem:

2.4 Creaci de l'arbre


Ara noms queda crear l'arbre amb tota la informaci. Per crear el arbre farem servir les migrationstools que s'han
installat a /usr/share/migrationtools. Calen fer unes petites modificacions al fitxer migrate_comon.ph per
adaptar la configuraci al nostre servidor. Busquem les lines:
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "padl.com";
# Default base
$DEFAULT_BASE = "dc=padl,dc=com

i les canvien per:


# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "aula9.cat";
# Default base
$DEFAULT_BASE = "dc=aula9,dc=cat

Per crear la base executem:


migrate_base.pl >base.ldif

Ara cal importar aquest fitxer al ldap:


ldapadd -x -W -D 'cn=Manager,dc=aula9,dc=cat' -h 127.0.0.1 -f base.ldif

Per crear els grups:


migrate_group.pl /etc/group >group.ldif
ldapadd -x -W -D 'cn=Manager,dc=aula9,dc=cat' -h 127.0.0.1 -f group.ldif

I pels usuaris:
2.4 Creaci de l'arbre

$LOGOIMAGE

LDAP

migrate_passwd.pl /etc/passwd >passwd.ldif


ldapadd -x -W -D 'cn=Manager,dc=aula9,dc=cat' -h 127.0.0.1 -f passwd.ldif

Ara si tornem al navegador podrem veure:

Hi han molts usuaris i grups que no farem servir, els podem esborrar i depurar els fitxers group.ldif i passwd.ldif
per deixar noms els que en interessen, per esborrar tot l'arbre des de el navegador: Triem l'entrada
dc=aula0,dc=cat, a la dreta escollim predeterminado i desprs cliquem sobre esborrar l'bjecte i els seus fills. Aix
tot el que hem fet l'hem esborrat :), Realment la base no calia esborrar aix que la tornem a passar al ldap. Ens
quedar aix.

2.4 Creaci de l'arbre

$LOGOIMAGE

LDAP

Ara del fitxer group.ldif esborrem tots els grups que no necessitem (els que no son d'usuaris o mquines), el mateix
fem del passwd.ldif: I els importem, per ara farem un altre mtode, mitjanant el phpldapadmin: Triem l'icona
importar i busquem el fitxer ldif:

Ara cliquem sobre proceder.

2.4 Creaci de l'arbre

$LOGOIMAGE

LDAP

Repetim el mateix pel fitxer passwd.ldif. Ara ja tenim preparat el nostre servidor ldap, per fer-lo servir per validar
comptes des de php o per logar-se des de un client linux o windows.

3 Clients ldap
3.1 Installaci
El client ldap:
yum install openldap

nss_ldap

El client de samba:
yum install samba-client

Per montar els recursos de la xarxa:


yum install pam_mount

3.2 Configuraci
3.2.1 Authconfig-tui
Des de un consola amb l'usuari root executem:
authconfig-tui

Posem la confgiruaci que indiquen les imatges segents:

3 Clients ldap

$LOGOIMAGE

3.2.1 Authconfig-tui

LDAP

$LOGOIMAGE

LDAP

Suposem que el servidor es troba a la ip: 192.168.1.203 i que la base s dc=aula9,dc=cat.


Aquesta eina ens modifica un fitxers necessaris per l'autentificaci, per en alguns cal fer unes modificacions.

3.2.2 /etc/openldap/ldap.conf
Tenim posada la informaci correcta:
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE
#URI

dc=example,dc=com
ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT
12
#TIMELIMIT
15
#DEREF
never
URI ldap://192.168.1.203
BASE dc=aula9,dc=cat
TLS_CACERTDIR /etc/openldap/cacerts

3.2.3 /etc/nss_ldap.conf
Tenim posada la informaci correcta:
# @(#)$Id: ldap.conf,v 2.49 2009/04/25 01:53:15 lukeh Exp $
#
# This is the configuration file for the LDAP nameservice
# switch library and the LDAP PAM module.
#

3.2.2 /etc/openldap/ldap.conf

$LOGOIMAGE

LDAP

# PADL Software
# http://www.padl.com
#
# Your LDAP server. Must be resolvable without using LDAP.
# Multiple hosts may be specified, each separated by a
# space. How long nss_ldap takes to failover depends on
# whether your LDAP client library supports configurable
# network or connect timeouts (see bind_timelimit).
#host 127.0.0.1
# The distinguished name of the search base.
base dc=aula9,dc=cat
.....

Al final del fitxer:


uri ldap://192.168.1.203
ssl no
tls_cacertdir /etc/openldap/cacerts

3.2.4 /etc/pam_ldap.conf
Aquest fitxer s molt semblant a l'anterior.
#
#
#
#
#
#
#
#
#
#

@(#)$Id: ldap.conf,v 1.38 2006/05/15 08:13:31 lukeh Exp $


This is the configuration file for the LDAP nameservice
switch library and the LDAP PAM module.
The man page for this file is pam_ldap(5)
PADL Software
http://www.padl.com

# Your LDAP server. Must be resolvable without using LDAP.


# Multiple hosts may be specified, each separated by a
# space. How long nss_ldap takes to failover depends on
# whether your LDAP client library supports configurable
# network or connect timeouts (see bind_timelimit).
#host 127.0.0.1
# The distinguished name of the search base.
base dc=aula9,dc=cat

Al final del fitxer:


uri ldap://192.168.1.203
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5

3.2.3 /etc/nss_ldap.conf

10

$LOGOIMAGE

LDAP

Per defecte al pasar els usuaris als openldap, el passwords estan encriptats amb crypt, per tant cal modificar
l'ltima lnia:
pam_password crypt

3.2.5 /etc/nsswitch.conf
Aquest fitxer si que cal modificarlo:
#
# /etc/nsswitch.conf
#
....
passwd:
files sss
shadow:
files sss
group:
files sss
....
netgroup:
files sss

canviar sss per ldap:


#
# /etc/nsswitch.conf
#
....
passwd:
files ldap
shadow:
files ldap
group:
files ldap
....
netgroup:
files ldap

3.2.6 /etc/pam.d/login
Amb els fitxers anterior aconseguim que es validi (millor dit que trobi els usuaris al servidor), ara cal que es cregui
el seu home local. Per fer aix modifiquem el fitxer /etc/pam.d/login.
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth
include
system-auth
account
required
pam_nologin.so
account
include
system-auth
password
include
system-auth
# pam_selinux.so close should be the first session rule
session
required
pam_selinux.so close
session
required
pam_loginuid.so
session
optional
pam_console.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0222
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session
required
pam_selinux.so open
session
required
pam_namespace.so
session
optional
pam_keyinit.so force revoke
session
include
system-auth
-session
optional
pam_ck_connector.so

3.2.4 /etc/pam_ldap.conf

11

$LOGOIMAGE

LDAP

Cal afegir la lnia ressaltada, per a que si no existeix la carpeta de l'usuari al client, aquesta s crear.

3.2.7 /etc/pam.d/<escriptori>
Per montar el home de l'usuari del servidor en el client hem de modificar els fitxers: /etc/pam.d/gdm per gnome,
/etc/pam.d/kdm per kde o /etc/pam.d/lxdm per lxde.
#%PAM-1.0
auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth required pam_succeed_if.so user != root quiet
auth required pam_env.so
auth substack system-auth
auth optional pam_gnome_keyring.so
auth optional pam_mount.so try_first_pass
account required pam_nologin.so
account include system-auth
password include system-auth
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
session required pam_selinux.so open
session optional pam_keyinit.so force revoke
session required pam_namespace.so
session optional pam_gnome_keyring.so auto_start
session include system-auth
session optional pam_mount.so

3.2.8 /etc/pam.d/system-auth-ac
Amb aquest fitxer s fa la autentificaci, cal afegir el pam_mount, i canvir pam_sss per pam_ldap:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth
required
pam_env.so
auth
sufficient
pam_unix.so nullok try_first_pass
auth
requisite
pam_succeed_if.so uid >= 500 quiet
auth
optional pam_mount.so
auth
sufficient
pam_ldap.so use_first_pass
auth
required
pam_deny.so
account
account
account
account
account

required
pam_unix.so broken_shadow
sufficient
pam_localuser.so
sufficient
pam_succeed_if.so uid < 500 quiet
[default=bad success=ok user_unknown=ignore] pam_sss.so
required
pam_permit.so

password
password
password
password

requisite
sufficient
sufficient
required

session
session
-session
session

optional
pam_keyinit.so revoke
required
pam_limits.so
optional
pam_systemd.so
[success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid

3.2.6 /etc/pam.d/login

pam_cracklib.so try_first_pass retry=3 type=


pam_unix.so sha512 shadow nullok try_first_pass use_authtok
pam_ldap.so use_authtok
pam_deny.so

12

$LOGOIMAGE

LDAP

session
required
pam_unix.so
session
optional
pam_ldap.so
session optional pam_mount.so

3.2.9 /etc/security/pam_mount,conf.xml
Aqu indiquem el que volem montar via samba

<?xml version="1.0" encoding="utf-8" ?>


<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!-See pam_mount.conf(5) for a description.
-->
<pam_mount>
<!-- debug should come before everything else,
since this file is still processed in a single pass
from top-to-bottom -->
<debug enable="0" />
<!-- Volume definitions -->
<!-- pam_mount parameters: General tunables -->
<!-<luserconf name=".pam_mount.conf.xml" />
-->
<!-- Note that commenting out mntoptions will give you the defaults.
You will need to explicitly initialize it with the empty string
to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!-<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<path>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin</path>
<logout wait="0" hup="0" term="0" kill="0" />
<!-- pam_mount parameters: Volume-related -->
<volume user="*" fstype="cifs" server="ip del servidor" path="%(USER)" mountpoint="/home/%(USER)
<mkmountpoint enable="1" remove="true" />
</pam_mount>

3.2.8 /etc/pam.d/system-auth-ac

13

You might also like