Servicio de directorio OpenLDAP.pdf
-
Upload
cennio-di-gerardo-castro -
Category
Documents
-
view
17 -
download
0
Transcript of Servicio de directorio OpenLDAP.pdf
-
prctica Servicio de directorio OpenLDAP
68 Linux+ 1/2008
prctica Servicio de directorio OpenLDAP
69www.lpmagazine.org
linux
@so
ftwar
e.co
m.p
l
OpenLDAP es una versin libre de LDAP que
es un protocolo a nivel de aplicacin que
soporta un servicio de directorio, se parece a
una libreta de direcciones. OpenLDAP se basa
en el estndar de servicio de directorio ISO X.500 y en su
protocolo DAP (Directory Access Protocol). Se dise para
ser un protocolo simple y eficiente para acceder al directorio
DAP, por eso lo de lightweight , implementa un subconjunto
de operaciones del X.500. La base de datos se diferencia de
una relacional principalmente en la terminologa, por ejem-
plo: un registro es una entrada y campo un atributo, aparte de
que la base de datos del OpenLDAP est slo optimizada en
las lecturas, de ah su rpido acceso a sus datos. El directorio
nos va a permitir, entre otras cosas, que los usuarios puedan
buscar de manera rpida informacin sobre otros usuarios
(e-mail, telfonos, entre otras opciones) o bien autenticarse,
aunque este servicio no siempre nos va a permitir el cambio
de esa informacin, eso depender de nuestros permisos. El
protocolo nos da acceso al directorio que es la base de datos
donde est la informacin estructurada de manera jerrquica
en forma de rbol, en general contiene informacin ms
descriptiva basada en objetos y atributos. Hay una serie de
ventajas respecto a otros sistemas de directorio que hacen que
OpenLDAP sea el sistema ms flexible y escalable como por
ejemplo: est optimizado en lectura de registros, la posibili-
dad de mltiples directorios independientes, la mayora de
aplicaciones y sistemas operativos disponen de soporte para
LDAP, realizar criterios de bsqueda complejos, permitir la
rplica de la base de datos a otro servidor.
El directorio y su estructura Como hemos comentado al principio, la base de datos
estructura la informacin en forma de rbol. Para represen-
tar los nodos de dicho rbol utiliza una serie de cadenas
de caracteres en un formato especial, como por ejemplo:
dc=linuxplus, dc=org. Donde dc determina un compo-
nente del nombre del dominio, en nuestro caso el dominio
linuxplus.org, esto se trata del directorio base o raz del rbol,
como todo dominio tambin se podra dar el caso de tener
un sub dominio que representaramos como: dc=redaccion,
dc=linuxplus, dc=org (redaccion.linuxplus.org). Si nos
fijamos el formato es muy simple: atributo = valor, pode-
mos definir un nodo utilizando el formato LDIF: LDAP Data
Interchange Format en el cual se pueden definir una serie
Servicio de directorio OpenLDAPTomeu Cap Cap
En todas las redes informticas donde hay un gran nmero de usuarios con diferentes usos (cuentas Windows, GNU/Linux, MacOSX, ...), la gestin puede ser una tarea muy pesada. Tener un buen sistema de gestin de usuarios puede agilizar esta tarea. LDAP (Lightweight Directory Access Protocol) nos permite organizar de manera jerrquica todo tipo de datos como: cuentas de usuario, grupos, puntos de montaje, cuentas de equipos, etc. de manera rpida y sencilla.
-
prctica Servicio de directorio OpenLDAP
68 Linux+ 1/2008
prctica Servicio de directorio OpenLDAP
69www.lpmagazine.org
de atributos con sus correspondientes valores
como se puede observar en el Listado 1, la
primera lnea define el distinguished name que
nos determina la ubicacin del nodo dentro del
rbol, sera como la clave primaria en una base
de datos relacional que identifica a uno y slo
un elemento (registro), el cual est compuesto
por diferentes atributos (campos) separados
por comas: el atributo uid es la clave del nodo,
ou (Organizational Unit) nos indica en que
unidad organizativa se encuentra este nodo y
finalmente el dominio en que se encuentra la
ou. Despus nos podemos encontrar con ms
atributos seguidos del dn, como el objectClass,
ste nos define el tipo o tipos de este registro, en
nuestro caso la clase person nos da los atributos
cn (Common Name) y sn (Surname), y la clase
posixAccount los atributos uid y uidNumber.
Dependiendo de las clases que utilicemos
podremos utilizar unos u otros atributos, en
nuestro caso este nodo definira un usuario del
sistema, ahora bien no podemos utilizar la clase
que queramos, cada clase est definida dentro
del esquema (schema) que se declarar antes
de ser utilizado. Normalmente estos esquemas
ya vienen predefinidos y rara vez se tienen que
crear a mano por lo que no vamos a adentrarnos
mucho en su construccin, solamente veremos
un poco su estructura y cmo cargarlos.
Para acabar con esta pequea introduccin,
y como hemos comentado, estn las ou's Orga-
nizational Unit o unidad organizativa que nos
servirn como su nombre indica para organizar
otros elementos dentro de ella, como otras ou's
u otro tipo de nodos, actan como los directo-
rios de un sistema de ficheros.
Tipos de datos y esquemas Dentro del directorio, como en otro tipo de base
de datos, podemos tener diferentes tipos de datos
y atributos, los esquemas son una coleccin de ob-
jetos y definiciones de atributos los cuales definen
la estructura de los registros dentro de la base de
datos, en este artculo no vamos a entrar demasiado
en los detalles de los esquemas por lo que vamos
a dar unas pequeas indicaciones sin profundizar
mucho en su formato, para ms informacin puede
consultar la pgina: http://www.openldap.org/doc/
admin23/schema.html. Los ficheros por defecto
que definen estos esquemas se encuentran en /
etc/ldap/schema, dichos ficheros contienen la
definicin de objetos y sus atributos, as como: su
descripcin, sintaxis, matching rules ... Un objeto
se define de siguiente forma:
objectclass (definicin del objeto)
Tal como se puede observar en el Listado 2
est definido el objeto person utilizado para
registros donde almacenemos datos referentes
a usuarios, si creamos un registro en la base de
datos utilizando este objeto podremos usar sus
atributos que se definen dentro de este esque-
ma, por ejemplo sn (Surname) (Listado 3).
En la definicin del objeto person y en
primer lugar nos encontramos con el identi-
ficador de objeto o OID que identifica de ma-
nera global el objeto, seguidamente el nombre
del objeto, luego definimos con SUP cual es el
objeto padre de ste, en este caso es el objeto
top que es el objeto ms simple de todos. Se-
guidamente se define cuales sern los atributos
obligatorios con MUST y los opcionales con
Listado 1. Definicin bsica de un nodo de LDAPdn: uid=tomeu, ou=People, dc=linuxplus, dc=orgobjectClass: person
objectClass: posixAccount
cn: Tomeu Cap
sn: Cap
uid: tomeu
uidNumber: 512
...
Listado 2. Definicin del objeto personobjectclass ( 2.5.6.6 NAME 'person'
DESC 'RFC2256: a person'
SUP top STRUCTURAL
MUST ( sn $ cn )
MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
Listado 3. Definicin del atributos sn y nameattributetype ( 2.5.4.41 NAME 'name'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )
DESC 'RFC2256: last (family) name(s) for which the entity is known by'
SUP name )
Listado 4. Fichero slapd.conf de configuracin bsico (fragmento)include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel 0
...
backend bdb
checkpoint 512 30
database bdb
suffix "dc=linuxplus,dc=com"
directory "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass eq
...
-
70
prctica Servicio de directorio OpenLDAP
Linux+ 1/2008 71
prctica Servicio de directorio OpenLDAP
www.lpmagazine.org
MAY los cuales se representan uno detrs de
otro separados por $.
Normalmente estas definiciones se encuentran
dentro del fichero core.schema, primero se definen
los atributos y finalmente los objetos, en nuestro
caso slo hemos cogido la definicin de un objeto
y dos de sus atributos. Siguiendo con la definicin
de los atributos, en el Listado 3 encontramos la de-
finicin de dos atributos de nuestro objeto person.
El formato (definido en el RFC2252) no es muy
diferente a la definicin de los objetos:
attributetype ( definicin )
Nos volvemos a encontrar con el OID, en este
caso para identificar el atributo, nuevamente
el nombre del atributo NAME, las reglas de
bsqueda del atributo (Matching rules) que
pueden ser (EQUALITY, ORDERING o
SUBSTR) y la sintaxis que nos define el tipo
de datos del atributo. La regla Matching Rule
nos va a permitir definir cmo funcionarn las
bsquedas sobre este atributo, en nuestro caso
le decimos que tiene que ser igual EQUALITY
a una cadena de caracteres y que no importe si
tiene espacios, ni maysculas, ni minsculas
caseIgnoreMatch, podemos aadir ms de una
condicin, por ejemplo SUBSTR, las subcade-
nas tambin tienen que cumplir la misma con-
dicin que la cadena de caracteres. La sintaxis
utilizada en el atributo name es de tipo direc-
toryString como podemos observar en la Tabla
1 y su longitud (32768) entre llaves. En donde
se puede ver el uso de SUP con el atributo sn,
que es un atributo el cual el campo padre es
name, esto significa que heredara sus condi-
ciones del tipo de datos (Matching rules).
Instalacin del servicio Primero vamos a empezar instalando los pa-
quetes del servidor OpenLDAP, en este artculo
hemos utilizado la distribucin Debian etch. Los
paquetes iniciales necesarios son: slapd y ldap-
utils. Una vez instalados los paquetes procedi-
mos a su configuracin inicial, aunque Debian
ya preconfigura algunos parmetros. Atencin!
Antes de iniciar la configuracin nos puede pedir
si se quiere omitir la configuracin inicial, si
dijsemos que s no configurara nada, de lo con-
trario nos empezar a pedir algunos parmetros
como el nombre de nuestro dominio (Figura 1)
que utilizar LDAP como el DN base, el nom-
bre de nuestra organizacin o empresa (Figura
2), la contrasea del usuario de administracin
del OpenLDAP. Una vez realizada la tarea de
instalacin el servicio arranca automticamente,
creando as la estructura bsica del directorio
LDAP y el usuario de administracin como se
puede observar en la Figura 3.
Configuracin bsicaAhora vamos a revisar el fichero de configura-
cin que nos genera el programa de instalacin
de manera automtica y que reside en /etc/
ldap llamado slapd.conf (Listado 4). En este
fichero podemos encontrar la configuracin
referente al servidor slapd, como por ejemplo
las inclusiones de los diferentes tipos de objetos
(objectClass) y esquemas (schemas). Tambin
parmetros como el tipo de base de datos que
utiliza, normalmente es bdb (Berkeley Data-
base), la raz del directorio o base DN y defi-
nicin de permisos de los diferentes usuarios
en el OpenLDAP. Inicialmente no tendremos
que aadir nada ms a la configuracin, como
mucho se podran incluir otros schemas con
la directiva include pero esto lo veremos ms
adelante. Vamos a ver algunas de las princi-
pales directivas del fichero de configuracin
slapd.conf:
include: Nos permite incluir un fichero
donde est la definicin de un schema.
database: Define qu tipo de base de datos
utiliza el directorio, por defecto bdb.
suffix: Donde definimos cual es la raz o
base del directorio, por ejemplo dc = li-
nuxplus, dc = com.
Figura 2. Nombre de la organizacin
Figura 1. Configuracin del nombre del dominio para el DN base
Figura 3. Estructura inicial del directorio LDAP
dc = linuxplus,dc = com
Raiz del directorio de la empresa
cn = admin,dc = linuxplus,
dc = com
Usuarioadministrador LDAP
linuxplus.com
admin
-
70
prctica Servicio de directorio OpenLDAP
Linux+ 1/2008 71
prctica Servicio de directorio OpenLDAP
www.lpmagazine.org
access: Define el control de acceso de un
usuario sobre uno o varios objetos del di-
rectorio.
directory: Ubicacin fsica de la base de
datos del directorio OpenLDAP.
index: Nos permite configurar qu atri-
butos deseamos que sean indexados para
poder hacer bsquedas con ellos.
Es recomendable que una vez acabada la instala-
cin revisemos dicho fichero para asegurarnos que
todo est como deseamos, revisaremos algunas
directivas como suffix para ver si se corresponden
a lo que hemos configurado inicialmente desde la
instalacin. En cuanto al control de acceso inicial,
OpenLDAP permite la lectura total a cualquier
usuario, la modificacin de la contrasea de un
usuario existente por el mismo, y el control total
sobre el directorio para el administrador (admin)
como podemos observar en el Listado 5.
La configuracin de accesos es simple, la di-
rectiva access define el/los permisos de un usuario
sobre uno o varios objetos o atributos del direc-
torio. Simplemente decimos con access to a qu
objeto o atributo queremos aplicar este acceso, en
nuestro caso el primer bloque define que el admi-
nistrador puede escribir (modificar) la contrasea
de un usuario cualquiera, esto se define con by, en
el Listado 5 lo podemos ver en la primera lnea
access to attrs=userPassword, shadowLast-
Change (da acceso a los atributos userPassword
y shadowLastChange) al usuario admin (by dn
="cn=admin,dc=linuxplus,dc=com" write)
y a los propios usuarios con (by self write) y a los
otros que no tengan acceso a ninguno de los dos
atributos (by * none).
Configuracin del directorio Inicialmente el directorio solamente tiene dos
objetos, la raz y el usuario de administracin,
como se puede ver en la Figura 3, esto lo pode-
mos comprobar con el comando slapcat (Listado
6) donde tenemos la raz representada por el dn
(Distinguished Name) dc=linuxplus,dc=com
y el usuario de administracin representado
por cn=admin, dc=linuxplus, dc=com. A
partir de aqu podemos confeccionar la estruc-
tura de nuestra empresa dentro del directorio,
usaremos la estructura que marca el RFC 2307
para definir la base para nuestro directorio,
por lo tanto lo primero es crear las unidades
organizativas que van a depender directamen-
te de nuestra organizacin (dc=linuxplus,
dc=com) como podemos observar en la Figura
4. Para realizar esta operacin nos vamos ayu-
dar de la utilidad ldapadd y ficheros en formato
LDIF que crearemos. Lo primero es crear un
fichero en formato LDIF, llamado por ejemplo
crearEstructura.ldif como est especifi-
cado en el Listado 7, una vez creado usando
el usuario root ejecutaremos la siguiente lnea:
ldapadd -x -D 'cn=admin,dc=linuxplus
,dc=com' -W -f crearEstructura.ldif
esto nos va generar las unidades organizativas
representadas en la Figura 4. Las unidades
organizativas People y Users muchas veces
suelen ser una sola o Users o bien People, aun-
que la mayora de veces People slo se utiliza
para almacenar contactos como en una agenda
de direcciones y Users para almacenar cuentas
de usuario, en nuestro caso solamente vamos a
crear People y lo vamos a utilizar para las dos
cosas. Las unidades restantes Mounts y Hosts
se utilizan para clientes Unix para poder alma-
cenar la configuracin de puntos de montaje
remotos, por ejemplo en caso de que los clien-
tes no tengan el directorio /home en local si no
en un servidor, pues dentro de Mounts guarda-
ramos la configuracin de dnde tienen que ir
a buscar los clientes el directorio /home. Por
ltimo la unidad organizativa Hosts se usa co-
mo base de datos de nombres de equipos con
sus respectivas IP's, actuara como sistema de
resolucin de nombres muy primitivo, la mis-
ma funcin que tiene el fichero /etc/hosts
de un equipo con GNU/Linux pero con la
ventaja de que no tendramos que configurar
cada fichero de cada mquina, si no que estara
centralizado en el servidor LDAP.
Listado 5. Fichero de configuracin smb.conf (Accesos)...
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=linuxplus,dc=com" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=linuxplus,dc=com" write
by * read
...
Listado 6. Estructura inicial de la base de datos OpenLDAPdn: dc=linuxplus,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: linuxplus
dc: linuxplus
structuralObjectClass: organization
entryUUID: bb830a32-0d37-102c-9b66-d766b7dd8644
creatorsName:
modifiersName:
createTimestamp: 20071012175307Z
modifyTimestamp: 20071012175307Z
entryCSN: 20071012175307Z#000000#00#000000
dn: cn=admin,dc=linuxplus,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e2NyeXB0fTZsTk52blN6VDhSb2s=
structuralObjectClass: organizationalRole
entryUUID: bb8ddaca-0d37-102c-9b67-d766b7dd8644
creatorsName:
modifiersName:
createTimestamp: 20071012175307Z
modifyTimestamp: 20071012175307Z
entryCSN: 20071012175307Z#000001#00#000000
-
72
prctica Servicio de directorio OpenLDAP
Linux+ 1/2008 73
prctica Servicio de directorio OpenLDAP
www.lpmagazine.org
Creacin de grupos y cuentas de usuario Para crear nodos nuevos en el rbol lo haremos
nuevamente con la utilidad ldapadd. Por ejem-
plo queremos crear los grupos de tipo POSIX
o Unix: redaccion y sistemas, volveramos
a crear un fichero de texto, esta vez como el
del Listado 8 y ejecutaremos ldapadd -x -D
'cn=admin,dc=linuxplus,dc=com' -W -f
grupos.ldif.
Lo mismo vamos a hacer para crear las
cuentas de usuario, pero en lugar de utilizar
el objectClass posixGroup utilizaremos el po-
sixAccount que nos permite usar los atributos
referentes a las cuentas de usuario Unix. Aparte
vamos a incluir las clases person, inetOrg-
Person y organizationalPerson que nos van a
proporcionar atributos como sn, cn o mail, ade-
ms, y para ver la doble utilidad del directorio,
tambin vamos a poner los campos de nmero
de telfono fijo y mvil. Tambin vamos crear
un segundo nivel dentro de People para tener
separadas las cuentas por departamentos, para
eso crearemos dos unidades organizativas
nuevas dentro de People llamadas sistemas
y redaccin (no confundir con los grupos de
usuarios creados anteriormente). Como pode-
mos observar en el Listado 10, definimos un
fichero que nos servir para crear las cuentas
de usuario, en nuestro caso son cuentas de tipo
Posix (para autenticar clientes GNU/Linux
o Unix). Esto es gracias a que definimos los
registros como posixAccount y shadowAc-
count, estos dos tipos de objetos nos proveen
de diferentes campos tiles en las cuentas Posix
como por ejemplo uid, uidNumber, gidNumber,
homeDirectory, loginShell atributos que suelen
estar en el fichero /etc/passwd de un equipo
con GNU/Linux o Unix. Con estos atributos
podemos configurar los parmetros bsicos de
una cuenta Unix.
Vamos a proceder de la misma manera que
con los grupos, utilizaremos la utilidad ldapadd,
podemos o bien crear un fichero (Listados 9
y10) nico que contenga la creacin de las dos
unidades organizativas y los usuarios, o bien
separarlos en dos (a gusto del usuario), luego
ejecutaremos la utilidad ldapadd con los mis-
mos parmetros que hemos utilizado anterior-
mente pero con el nombre del fichero LDIF que
hayamos usado. Una vez creados los usuarios,
y si no hay errores, nos va a indicar los registros
creados, si los hay se parar donde los haya y no
va a leer el contenido restante del fichero LDIF.
Si se vuelve a ejecutar el ldapadd con el mismo
fichero que anteriormente ya habamos ejecuta-
Figura 4. Configuracin de las unidades organizativas bsicas
dc = linuxplus, dc = com
cn = admin,dc = linuxplus,
dc=com
Raz del directoriode la empresa
Unidadesorganizativas
Unidad para guardarnombres de equipos y IPs
Cuenta deusuario
uid = pedro,ou = Sistemas, ou = People,
dc = linuxplus,dc = com
linuxplus.com
People Group Mounts Hosts
Sistemas Redaccin
admin
Pedro
pc-pruebas www
Tabla 1. Diferentes tipos de datos disponibles
TIPO OID Descripcin
boolean 1.3.6.1.4.1.1466.115.121.1.7 Valor boolean )verdadero, falso)
directoryString 1.3.6.1.4.1.1466.115.121.1.15 String codificado en UTF-8
distinguisedName 1.3.6.1.4.1.1466.115.121.1.12 Tipo usado para definir los DN
integer 1.3.6.1.4.1.1466.115.121.1.27 Numero entero
numericString 1.3.6.1.4.1.1466.115.121.1.36 String numerico
OID 1.3.6.1.4.1.1466.115.121.1.38 Identificador de objeto
octetString 1.3.6.1.4.1.1466.115.121.1.40 Bytes arbitarios
-
72
prctica Servicio de directorio OpenLDAP
Linux+ 1/2008 73
prctica Servicio de directorio OpenLDAP
www.lpmagazine.org
do probablemente no nos deje volver a crear los
registros ya creados y se parar avisndonos de
la siguiente forma:
adding new entry "ou=sistemas,ou=Peop
le,dc=linuxplus,dc=com"
ldap_add: Already exists (68)
Por lo tanto si se tiene que hacer esta operacin
se comentarn (con #) las lneas referentes a
la definicin de los registros que nos dice y
volveremos a probarlo, de lo contrario si todo
va correcto solamente veremos los registro
creados, o bien podemos borrar el registro que
nos dice que ya existe, teniendo en cuenta que
no tiene que tener elementos colgando de l, de
lo contrario se borraran las entradas existentes
dentro del nodo. Para realizar un borrado de un
registro, utilizamos el comando ldapdelete de la
misma manera que funciona la utilidad ldapadd:
ldapdelete -x -D 'cn=admin,dc=linnuxpl
us,dc=com' -W 'ou=sistemas, ou=People,
dc=linuxplus,dc=com' esto nos borrar la
unidad organizativa sistemas. Si todo el proceso
de creacin indicado en el fichero LDIF es co-
rrecto nos lo va a indicar de la siguiente manera:
(Listado 11).
Una vez creadas las cuentas de usuario
seguramente querremos asignar las contraseas,
para ello podemos utilizar la utilidad ldappas-
swd de la siguiente manera: ldappasswd -x
-D 'cn=admin,dc=linuxplus,dc=com' -W
'uid=carmen,ou=redaccion,ou=People,dc=
linuxplus,dc=com' -S. Nos va a pedir la con-
trasea que queremos para el usuario carmen y
luego la contrasea del administrador del LDAP
(admin). El usuario lo especificamos a traves del
dn, en nuestro caso: uid=carmen,ou=redaccio
n,ou=People,dc=linuxplus,dc=com.
Realizacin de bsquedasPara finalizar con esta seccin, vamos a comen-
tar un poco sobre cmo realizar bsquedas de
elementos dentro del directorio con la utilidad
ldapsearch a travs de la consola. Bsicamente
sta se utiliza para realizar bsquedas utilizando
una serie de filtros de bsqueda que veremos co-
mo funcionan. Al principio hemos comentado el
tema de los accesos al LDAP a travs del fichero
de configuracin, y comentamos que las lecturas
no estn restringidas y que no necesitamos un
nombre de usuario ni contrasea para hacerlas.
Una de las consultas ms sencillas es la de
mostrar todo el contenido del directorio con
ldapsearch -x -b dc=linuxplus,dc=com
objectclass=*, sto nos imprimir toda la
estructura del directorio en formato LDIF pero
si hay atributos que no pueda leer todo el mundo
no nos los va a mostrar. Si analizamos esta lnea
podemos ver en primer lugar el parmetro -x
significa que vamos a usar la autentificacin sim-
ple, el parmetro -b es la base o ruta del inicio de
bsqueda (a partir de dnde queremos buscar),
la raz en nuestro caso, y seguidamente el filtro
con las condiciones de bsqueda que en nuestro
caso queremos ver todos los nodos que sean de
cualquier tipo o sea, todos.
Las condiciones de bsqueda pueden ser
ms sofisticadas, como por ejemplo especificar
que nos liste todos los registros de tipo posixAc-
count (objectClass=posixAccount), todas
las cuentas Unix o ver un contacto que tenga
el campo uid=tomeu: ldapsearch -x -b
dc=linuxplus,dc=com '(uid=tomeu)(&(obj
Listado 7. Fichero para la creacin de las unidades organizativas bsicasdn: ou=People, dc=linuxplus, dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group, dc=linuxplus, dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
dn: ou=Mounts, dc=linuxplus, dc=com
ou: Mounts
objectClass: top
objectClass: organizationalUnit
dn: ou=Hosts, dc=linuxplus, dc=com
ou: Hosts
objectClass: top
objectClass: organizationalUnit
Listado 8. Fichero para crear los grupos dentro de OpenLDAPdn: cn=redaccion,ou=Group, dc=linuxplus,dc=com
cn: redaccion
objectclass: posixGroup
objectclass: top
gidNumber: 516
dn: cn=sistemas,ou=Group, dc=linuxplus,dc=com
cn: sistemas
objectClass: posixGroup
objectClass: top
gidNumber: 517
Listado 9. Creacin de los diferentes departamentos dn: ou=sistemas,ou=People,dc=linuxplus,dc=com
ou: sistemas
objectClass: top
objectClass: organizationalUnit
dn: ou=redaccion,ou=People,dc=linuxplus,dc=com
ou: redaccion
objectClass: top
objectClass: organizationalUnit
Figura 5. Utilidad de Directorios
-
74
prctica Servicio de directorio OpenLDAP
Linux+ 1/2008 75
prctica Servicio de directorio OpenLDAP
www.lpmagazine.org
ectClass=person))' aqu podemos ver el uso
de operaciones lgicas como la AND (&) y donde
podemos ver de manera ms extensa la sintaxis
de bsqueda, los atributos van entre parntesis y
las operaciones se especifican como (operador
(atributo = valor) ), los operadores pueden
ser AND (&), OR (|) o NOT (!). Tambin se
puede usar comodines como el * que representara
todas las cadenas de 0 o ms caracteres. Por ejem-
plo: ldapsearch -x -b dc=linuxplus,dc=com
'(mail=*linuxplus*)' que nos listara todos los
registros con campos que contengan la cadena
linuxplus. Despus de la condicin de bsqueda
podramos poner los campos que deseamos ver,
separados por espacios en blanco.
Configuracin de los clientesA continuacin os presentamos cmo configu-
rar los clientes de varios sistemas operativos.
Clientes GNU/LinuxLo primero que podemos hacer es que el sistema
donde reside el servicio OpenLDAP lo utilice
para leer los grupos, usuarios y contraseas. Esto
lo vamos hacer instalando el paquete nss_ldap
en nuestro caso el paquete libnss-ldap para De-
bian, en la instalacin nos va a pedir la direccin
del servidor LDAP (ldap://127.0.0.1/ en
nuestro caso), la raz de nuestro directorio
(dc=linuxplus,dc=com), la versin que uti-
lizamos (versin 3), no necesitamos usuario
para acceder a la base de datos, damos privilegios
especiales de LDAP para el usuario root, cuenta
de administracin de la base de datos LDAP
(cn=admin, dc=linuxplus, dc=com) y su
contrasea. Una vez configurado cambiaremos
los parmetros especificados en el Listado 12
del fichero /etc/nsswitch.conf. Es muy im-
portante recordar que a partir de esta operacin
el sistema va a leer (aparte de los usuarios del
propio sistema /etc/passwd y /etc/shadow)
los existentes dentro del directorio OpenLDAP,
para verificar que la configuracin del paquete
libnss-ldap funciona de manera correcta lo hare-
mos con el comando getent, que nos permite listar
la base de datos de usuarios que est utilizando
el sistema, con getent passwd nos tocan salir los
usuarios propios del sistema ms los que existan
dentro del OpenLDAP.
El servicio nsswitch se encarga de la configu-
racin de las Bases de Datos del Sistema y del sis-
tema de Conmutacin de los Servicios de Nom-
bres (Name Service Switch). Esto permitir, por
ejemplo, decirle a un sistema que aparte de utilizar
su base de datos local de usuarios tambin utilice
otra como LDAP. Se especifica para cada servicio
dnde tiene que ir a consultar sus datos. Por ejem-
plo passwd es el que se encarga de las cuentas de
usuario, seguidamente vienen las fuentes de datos:
Listado 10. Creacin de las cuentas de usuarios
dn: uid=pedro, ou=sistemas, ou=People, dc=linuxplus, dc=com
uid: pedro
gidNumber: 517
uidNumber: 517
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: Serra
cn: Pedro Serra
gecos: Pedro Serra
mail: [email protected]
homeDirectory: /home/pedro
loginShell: /bin/bash
telephoneNumber: 55554999
mobile: 644390000
dn: uid=carmen, ou=redaccion, ou=People, dc=linuxplus, dc=com
uid: carmen
gidNumber: 516
uidNumber: 600
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: Siquier
cn: Carmen Siquier
gecos: Carmen Siquier
mail: [email protected]
homeDirectory: /home/carmen
loginShell: /bin/bash
telephoneNumber: 55554998
mobile: 644320000
dn: uid=laura, ou=redaccion, ou=People, dc=linuxplus, dc=com
uid: laura
gidNumber: 516
uidNumber: 601
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
sn: Segura
cn: Laura Segura
gecos: Laura Segura
mail: [email protected]
homeDirectory: /home/laura
loginShell: /bin/bash
telephoneNumber: 55554997
mobile: 644300000
-
74
prctica Servicio de directorio OpenLDAP
Linux+ 1/2008 75
prctica Servicio de directorio OpenLDAP
www.lpmagazine.org
compat o bien files (fichero local /etc/passwd) y
ldap (busca a la base de datos LDAP configurada
en /etc/libnss-ldap.conf). Incluso se pueden
establecer condiciones especiales si no encuentra
un usuario en una base de datos que no siga bus-
cando a la otra, por ejemplo:
passwd:ldap [NOTFOUND=return] files
Nos buscar la informacin (nombre de usuario)
solicitada en la base de datos LDAP pero si no la
encuentra ya no buscar en los ficheros locales
(files), o tambin podramos utilizar el estado
UNAVAIL que determina si el servicio est o
no disponible. Si el usuario quiere profundizar
ms en cmo se realizan este tipo de configura-
ciones siempre podra recurrir al manual: man
nsswitch.conf.
Esta operacin se repetir en los diferentes
clientes GNU/Linux que queramos que utilicen
el directorio OpenLDAP para autenticarse, con la
diferencia que en los clientes se tendr que insta-
lar aparte el paquete ldap-client. Aparte tambin
podemos hacer que el sistema PAM (Pluggable
Authentication Modules for Linux) que se suele
utilizar para unificar el sistema de autorizacin
de diferentes daemons (o servicios) de manera
que simplemente configurando el PAM para que
utilice OpenLDAP tendremos configurados de
manera indirecta el sistema de autenticar usua-
rios en los diferentes servicios (por ejemplo:
imap, samba, pop3). El paquete necesario para
configurar el soporte de OpenLDAP en PAM es
libpam-ldap y se configura de manera anloga al
paquete anterior, la diferencia es que se tendra
que especificar por cada mdulo de PAM si se
quiere usar LDAP o no.
Clientes Mac OSXAparte de clientes con GNU/Linux algunas
veces necesitaremos que otros sistemas opera-
tivos puedan utilizar el OpenLDAP tanto para
la autentificacin como para usar los contactos
del OpenLDAP. Con Mac OSX, a diferencia de
otros sistemas propietarios como MS-Windows
que no permiten el uso directo de OpenLDAP si
no es con su propia implementacin como el Ac-
tive Directory, este permite configurar servicios
de directorios que no sean propietarios de Apple.
Para realizar este ejemplo hemos utilizado la
ltima versin (10.5 Leopard) aunque tambin
funciona para versiones anteriores. Vamos a ir
a: Aplicaciones -> Utilidades -> Utilidad de Di-
rectorios para configurar la conexin con nuestro
servidor OpenLDAP (Figura 5).
Una vez abierta la utilidad, iremos a Servi-
cios y pulsamos el botn de Nuevo ... (Figura 6),
inmediatamente nos va a pedir el nombre o IP de
nuestro servidor OpenLDAP, a continuacin le
damos a Continuar y esperamos a que detecte el
servidor, automticamente nos tiene que coger la
base DN (dc=linuxplus, dc=com) y el tipo de
estructura de datos (RFC 2307) como podemos
ver en la Figura 7, nuevamente pulsamos Conti-
nuar y va a acabar configurando el cliente Mac
OSX para que utilice el OpenLDAP.
Para finalizar podramos ir a la utilidad de
Directorio que permite visualizar y realizar bs-
quedas dentro de l. Esta utilidad se encuentra en
el mismo sitio donde est la Utilidad de Directo-
rios (Aplicaciones -> Utilidades -> Directorio),
simplemente la arrancamos y nos tiene que listar,
al menos, los usuarios y grupos creados.
Otro tipo de clientesAparte de hacer que los clientes utilicen
OpenLDAP para que se autentifiquen, haba-
mos dicho al principio que no slo nos servira
Figura 7. Deteccin de nuestro servidor
Figura 6. Aadimos nuestro servidor
Figura 8. Propiedades del servidor LDAP
-
76
prctica Servicio de directorio OpenLDAP
Linux+ 1/2008
para eso si no que tambin lo podemos utilizar
como libreta de direcciones de nuestra empresa
donde guardaremos nmeros de telfono, fax,
direcciones de correo de los usuarios de la em-
presa. Por tanto, otros tipos de clientes podran
ser: Clientes de correo, Agendas, sistemas cola-
borativos como e-GroupWare o openXchange.
Libreta de direcciones de Mozilla Thunderbird El cliente de correo Thunderbird permite el
uso de libreta de direcciones remota como el
directorio OpenLDAP, esta opcin es muy
recomendable a nivel corporativo para evitar
que cada usuario tenga su libreta de direccio-
nes. Vamos entonces a configurar la libreta de
direcciones del Thunderbird, para eso vamos
a: Address Book -> File -> New -> LDAP
Directory ... y configuramos los diferentes
parmetros sobre la conexin a nuestro direc-
torio (Figura 8), tales como: Nombre o IP del
servidor, DN Base (dc=linuxplus,dc=com)
y nombre de usuario completo (uid=tomeu,
ou=People, dc=linuxplus, dc=com) para el
acceso si fuese necesario, en nuestro caso no lo
es. Adems si queremos activar la opcin de au-
to-completar la direccin de correo as como la
vamos escribiendo, seleccionaremos la libreta
de direcciones por defecto en las preferencias
de la cuenta: Edit -> Account Settings ... ->
Composition & Addressing y seleccionamos el
directorio que hemos configurado en Addres-
sing (Figura 9). De esta manera cada vez que
redactemos un mensaje nuevo y empecemos a
escribir la direccin, automticamente nos har
la bsqueda dentro del OpenLDAP.
Utilidades para la administracin En muchos casos administrar el directorio de
manera integrada desde la consola con las
utilidades de OpenLDAP se puede convertir en
una tarea muy pesada, por eso y para terminar
este artculo vamos a dar una breve descripcin
de algunos programas de software libre para la
administracin del directorio OpenLDAP.
PHPLDAP-Admin Herramienta que trabaja sobre web y que en
muchas ocasiones es la nica manera de poder
administrar nuestro servidor, por ejemplo hos-
tings, o administraciones remotas donde slo
se tenga acceso a una consola o al servidor
web.
GQHerramienta que funciona sobre entorno
grfico, desarrollada con las libreras GTK,
nos permite la administracin del directorio
OpenLDAP. Normalmente disponible como
paquete en la mayora de distribuciones
GNU/Linux: Debian, Ubuntu, Fedora Core,
etc. Es muy fcil de configurar y usar, muy
prctica para la administracin del directo-
rio y cuentas de usuario en modo grfico.
LDAP-Admin for Windows Utilidad en modo grfico de software libre,
que trabaja bajo Windows. Disponible en http:
//ldapadmin.sourceforge.net/.Herramienta
muy potente y fcil de usar, no necesita
instalarse. Directamente podemos bajarnos
el ejecutable y trabajar directamente con l.
Tiene un asistente muy simple para la creacin
de todo tipo de registros: cuentas de usuario,
grupos, unidades organizativas, equipos, ...
La ventaja es que de manera grfica podemos
agregar opciones a una cuenta de usuario,
como por ejemplo activar la opcin de cuenta
Samba o de correo electrnico. Esto nos su-
pondra aadir nuevos atributos al registro de
la cuenta, pero con este tipo de herramientas
todas estas operaciones las hace de manera
transparente, esto no significa que no podamos
ver el contenido del registro de un usuario. In-
cluso nos deja explorar los esquemas que tiene
cargado el servidor LDAP.
Listado 11. Proceso de creacin indicado en el fichero LDIF
adding new entry "ou=sistemas,ou=People,dc=linuxplus,dc=com"
adding new entry "ou=redaccion,ou=People,dc=linuxplus,dc=com"
adding new entry "uid=carmen, ou=redaccion, ou=People, dc=linuxplus,
dc=com"
adding new entry "uid=laura, ou=redaccion, ou=People, dc=linuxplus,
dc=com"
Listado 12. Cambios en el fichero /etc/nsswitch.conf ...
passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files ldap dns
...
Figura 9. Configuracin del auto-completar