Está en la página 1de 21

Introducción a LDAP

Jaime Andrés Vélez Osorio Ing. de Sistemas U. del Norte


Soporte Netware Suramericana de Seguros
Soporte Netware/Lotus Notes/Domino Protección S.A
Consultor/Asesor Nested LTDA
Organizador-expositor 1er Flisol Barranquilla – Instercom 2007
Organizador 2o Flisol Barranquilla U. Autonoma del Caribe 2008
Ponente Hacklab Instalación openSUSE configuración openLDAP usando YaST
Agape 2009
Escritor de howtos en openSUSE.org y congotux.blogspot.com

Septiembre 8 de 2009

1
Introducción a LDAP

INTRODUCCIÓN
El problema de la Administración de Identidades
● Múltiples administradores para cada usuario
● No existe un método seguro para compartir las
identidades de usuarios entre ambientes GNU/Linux,
UNIX® y Windows®
● Cada Usuario tiene múltiples identidades en la
empresa
● No existe un único punto de administración para cada
usuario
2
Introducción a LDAP

Costos en Seguridad y Mesa de Ayuda


● Un usuario promedio utiliza 5+ claves
● 55% de los usuarios escribe la clave en papel al
menos una vez
● 9% de todos los usuarios escriben en papel todas las
claves
● 51% de todos los usuarios requieren ayuda de TI
porque olvidaron su clave
● 25% de todas las consultas a las mesas de ayuda
están relacionadas con claves
3
Fuente: Gartner Research, 2003
Introducción a LDAP
Proceso Tradicional de Manejo de Identidades

GNU/LINUX SOLARIS
Usuario jvelez / Password:123lkHk% Usuario jvelez / Password:x123lkHk%
Servicio de Correo
Usuario jvelez / password fjfj4%jg
Proxy con autenticación
Usuario javobqcol / password gt$gdct
Servidor jabber
Usuario jaime V/ password mr%&/(

AIX Windows
Usuario javobqcol / Password:$Qsfjtd12 Usuario jaimeV / Password: 12Jr%H

4
Introducción a LDAP

Métodos de autenticación tradicional.

● /etc/passwd
● NIS
● PAM/NSS

5
Introducción a LDAP

Propuesta con LDAP y PAM/NSS

Que es LDAP
● LDAP = Lightweight Directory Access Protocol (Protocolo
compacto de acceso a directorios) es un protocolo estándar
que permite administrar directorios, esto es, acceder a bases
de información de usuarios de una red mediante protocolos
TCP/IP.
● Directorio = DIT (Directory Information Tree) es un tipo de base
de datos, pero no es una base de datos relacional (Base de
datos jerarquica)
● El protocolo LDAP define el método para acceder a datos en el
servidor a nivel cliente pero no la manera en la que se
almacena la información.
● Es una versión simplifada del pesado X.500 DAP protocol del
modelo OSI
● Desarrollado en 1993 en la Universidad de Michigan,
6
Introducción a LDAP

Propuesta con LDAP y PAM/NSS

Que brinda LDAP?

LDAP le brinda al usuario métodos que le permiten:


● Conectarse
● Desconectarse
● Buscar información
● Comparar información
● Insertar entradas
● Cambiar entradas
● Eliminar entradas

Asimismo, el protocolo LDAP (en versión 3) ofrece mecanismos de


cifrado (SSL, etc.) y autenticación para permitir el acceso seguro a
la información almacenada en la base.

7
Introducción a LDAP

Propuesta con OpenLDAP y PAM/NSS

Para que sirve LDAP


● Administradores: Centralizar información de usuarios,

grupos, dispositivos (1 identidad de usuario 1


herramienta de Admin. 1 almacenamiento de claves)
● IT managers: No estar amarrado a un solo proveedor

y/o sistema operativo, disminuye costos. Baja el TCO


(directorios que se necesitan administrar)
● Desarrolladores: Ahorra tiempo de desarrollo no se

debe desarrollar otra vez su propio sistema de


directorios para usuarios, grupos, objetos, etc

8
Introducción a LDAP
Ventajas en el uso de LDAP
● Es muy rápido en la lectura de registros
● Permite replicar el servidor de forma muy sencilla y económica
● Muchas aplicaciones de todo tipo tienen interfaces de conexión a
LDAP y se pueden integrar fácilmente
● Dispone de un modelo de nombres globales que asegura que todas
las entradas son únicas
● Usa un sistema jerárquico de almacenamiento de información.
● Permite múltiples directorios independientes
● Funciona sobre TCP/IP y SSL
● La mayoría de aplicaciones disponen de soporte para LDAP
● La mayoría de servidores LDAP son fáciles de instalar, mantener y
optimizar.
Desventajas en el uso de LDAP
● LDAP resulta complicado de configurar ya que es un sistema
complejo.
● Protocolo de manejo de datos poco intuitivo, pero existen múltiples
herramientas que facilitan su uso.
9
Introducción a LDAP

Usos prácticos de LDAP


● Directorios de información.
● Sistemas de autenticación/autorización centralizada. .
● Sistemas de autenticación para páginas Web
● Sistemas de control de entradas a edificios, oficinas….
● Sistemas de correo electrónico.
● Sistemas de alojamiento de páginas web y FTP
● Grandes sistemas de autenticación basados en RADIUS
● Servidores de certificados públicos y llaves de seguridad.
● Autenticación única ó “single sign-on”
● Perfiles de usuarios centralizados ó “Roaming”
● Libretas de direcciones compartidas.
10
Introducción a LDAP

Estructura de árbol de la información (DIT)


LDAP presenta la información bajo la forma de una estructura jerárquica de
árbol denominada DIT (Como DNS o directorios de ficheros UNIX). Como con
los nombres de host en DNS, un registro Nombre Distinguido (Distinguished
Name en ingles, DN en corto) de un directorio LDAP se lee desde su entrada
individual, recursivamente a través del árbol, hasta el nivel más alto.

11
Introducción a LDAP

Estructura de árbol de la información (DIT)

● Los nodos del árbol se llaman entradas


● Las entradas representan objetos abstractos o del mundo real
● Cada entrada tiene una serie de atributos con información del objeto
que representa (persona, grupo, dispositivo), cada atributo toma la
forma Atributo:valor
● El atributo mas importante de un nodo o entrada se llama DN Nombre
Distinguido (Distinguished Name en ingles), el DN identifica de manera
inequívoca cada entrada en el árbol ej:
dn:uid=jperez,ou=people,dc=antiquitera,dc=site
● El nivel superior de un directorio LDAP es la base, conocido como el
"DN base".El DN base toma una de estas tres formas
● dn:o="antiquitera", c=CO
● dn:o=antiquitera.site
● dn:dc=Antiquitera,dc=site

12
Introducción a LDAP

Ejemplo de el DN base (Entrada LDIF) Atributos


dn: dc=fedepanela,dc=site dn = Nombre distinguido
dc: fedepanela dc = Contenedor de dominio
o: fedepanela o = Organización
objectClass: organization objectclass = Tipo de
objectClass: dcObject objeto define que tipos de
structuralObjectClass: organization atributos contiene el
entryUUID: ad7690d2-09e1-102e-81b2-1fc02f54a5d9 contenedor
creatorsName: cn=Administrator,dc=fedepanela,dc=site Las clases se definen en los
createTimestamp: 20090721012928Z archivos de esquemas
entryCSN: 20090721012928.621019Z#000000#000#000000 (schemes)
modifiersName: cn=Administrator,dc=fedepanela,dc=site
modifyTimestamp: 20090721012928Z

13
Introducción a LDAP

Cómo organizar los datos en un árbol de directorio


● Debajo del DN base se crean contenedores que separen lógicamente los
datos
● La mayoría de los directorios configuran estas separaciones lógicas como
entradas OU. OU vienen de "Unidades Organizacionales" (Organizational
Units, en ingles).
● Actualmente las implementaciones de LDAP han mantenido la convención
del nombre ou=, separando las cosas por categorías amplias como
ou=gente (ou=people), ou=grupos (ou=groups), ou=dispositivos
(ou=devices)

14
Introducción a LDAP
Cómo organizar los datos en un árbol de directorio (estructura típica)

15
Introducción a LDAP

Cómo organizar los datos en un árbol de directorio (Objetos de


usuario y grupo)
Entrada de usuario (entrada LDIF) Entrada de grupo (entrada LDIF)
dn: uid=pperez,ou=people,dc=antiquitera,dc=site dn: cn=tesoreria,ou=group,dc=antiquitera,dc=site
cn: Pedro Perez cn: tesoreria
gidNumber: 100 gidNumber: 1000
givenName: Pedro member: uid=pperez,ou=people,dc=antiquitera,dc=site
homeDirectory: /home/pperez objectClass: posixGroup
loginShell: /bin/bash objectClass: top
objectClass: top objectClass: groupOfNames
objectClass: posixAccount structuralObjectClass: groupOfNames
objectClass: inetOrgPerson entryUUID: 44bf2a3a-3106-102e-99f7-
sn: Perez 41ff2ec75b86
uid: pperez creatorsName: cn=administrator,dc=antiquitera,dc=site
uidNumber: 1004 createTimestamp: 20090908205939Z
userPassword:: e3NzaGF9dnQwdXNjUTk1SVUxa entryCSN: 20090908205939.663376Z#000000#000#000000
structuralObjectClass: inetOrgPerson modifiersName: cn=administrator,dc=antiquitera,dc=site
entryUUID: 15fc008c-30fd-102e-99f6-41ff2ec75b86 modifyTimestamp: 20090908205939Z
creatorsName: cn=administrator,dc=Antiquitera,dc=site
createTimestamp: 20090908195355Z
entryCSN: 20090908195355.738598Z#000000#000#000000
ModifiersName:
cn=administrator,dc=antiquitera,dc=site
modifyTimestamp: 20090908195355Z
16
Introducción a LDAP

Seguridad y control de accesos (openLDAP)


Estructura de una Acl
<access directive> ::= access to <what>
[by <who> <access> <control>]+
<what> ::= * |
[dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
[filter=<ldapfilter>] [attrs=<attrlist>]
<basic-style> ::= regex | exact
<scope-style> ::= base | one | subtree | children
<attrlist> ::= <attr> [val[.<basic-style>]=<regex>] | <attr> , <attrlist>
<attr> ::= <attrname> | entry | children
<who> ::= * | [anonymous | users | self
| dn[.<basic-style>]=<regex> | dn.<scope-style>=<DN>]
[dnattr=<attrname>]
[group[/<objectclass>[/<attrname>][.<basic-style>]]=<regex>]
[peername[.<basic-style>]=<regex>]
[sockname[.<basic-style>]=<regex>]
[domain[.<basic-style>]=<regex>]
[sockurl[.<basic-style>]=<regex>]
[set=<setspec>]
[aci=<attrname>]
<access> ::= [self]{<level>|<priv>}
<level> ::= none | auth | compare | search | read | write
<priv> ::= {=|+|-}{w|r|s|c|x|0}+
<control> ::= [stop | continue | break]
17
Introducción a LDAP

Seguridad y control de accesos (openLDAP)


Ejemplo
Estructura de una Acl (versiones openldap anteriores a la 2.4)
Access to dn=".*,dc=antiquitera,dc=site" attr=userPassword
by dn="cn=Administrator,dc=antiquitera,dc=site" write
by self write
by * auth
Estructura de una Acl (versión openldap >= 2.4)
olcAccess: to *
by self write
by anonymous auth
by * read

18
Introducción a LDAP

Herramientas de usuario (linea de comandos)


Descripciones
ldapadd:abre una conexión a un servidor LDAP, enlaza y añade entradas.
ldapcompare: abre una conexión a un servidor LDAP, enlaza y hace una comparación
usando los parámetros especificados.
ldapdelete: abre una conexión a un servidor LDAP, enlaza y borra una o mas entradas.
ldapmodify: abre una conexión a un servidor LDAP, enlaza y modifica entradas.
ldapmodrdn: abre una conexión a un servidor LDAP, enlaza y modifica el RDN de las
entradas.
ldappasswd: es una herramienta para establecer la contraseña de un usuario LDAP.
ldapsearch: abre una conexión a un servidor LDAP, enlaza y hace una búsqueda usando
los parámetros especificados.
ldapwhoami: abre una conexión a un servidor LDAP, enlaza y realiza una operación
whoami.
slapadd: se usa para añadir entradas especificadas en el formato Intercambio de Directorio
de LDAP (LDIF) en una base de datos slapd.
slapcat: Se usa para generar una salida LDAP LDIF basada en el contenido de una base de
datos slapd.
slapd: es el servidor LDAP independiente.
slapindex: se usa para regenerar índices slapd basados en el contenido actual de una base
de datos.
slappasswd: es una utilidad de contraseñas OpenLDAP.
19
Introducción a LDAP
Herramientas de usuario (GUI)
Cualquier cantidad de herramientas libres y no libres.. algunas
● GQ, LUMA, GOSA, PHPLDAPADMIN, YaST
● Softerra LDAP Administrator & Browser Jxplorer..

Implementaciones de LDAP
Existen diversas implementaciones y aplicaciones reales del protocolo
LDAP
● OpenLDAP
● Active Directory
● Novell Directory Services / eDirectory
● iPlanet - Sun ONE Directory Server
● Red Hat Directory Server
● Apache Directory Server
● Open DS

Ejemplo practico
● Administración de openldap via YaST
● Usuarios del sistema en openLDAP
● Autenticación de squid usando openLDAP
● Autenticación de openFire usando openLDAP
● Samba-openLdap 20

Introducción a LDAP

BIOGRAFÍA
Breve introducción a Ldap http://ldapman.org/articles/sp_intro.html
La página del proyecto openldap http://www.openldap.org/
Understanding LDAP - Design and Implementation
http://www.redbooks.ibm.com/abstracts/sg244986.html
Single sign On
http://www.acis.org.co/memorias/SalonInformatica/XXIVSalonInformatica/05-Ldap.ppt
Configurar LDAP usando YaST
http://es.opensuse.org/Configurar_LDAP_usando_YaST
Ingreso de usuarios y grupos en LDAP usando YaST
http://es.opensuse.org/Ingreso_de_usuarios_y_grupos_en_LDAP_usando_YaST
Configurar openfire con soporte ldap
http://es.opensuse.org/Configurar_openfire_con_soporte_ldap
Squid con soporte ldap
http://es.opensuse.org/Squid_con_soporte_ldap
Y hasta la wikipedia
http://es.wikipedia.org/wiki/LDAP 21

También podría gustarte