Sei sulla pagina 1di 21

LDAP

LDAP es un servicio de acceso ligero a directorios muy utilizado como base de datos de registros y
contraseñas de usuario, actualmente existen muchos servicios que se pueden enlazar con ldap para la
administración de nombres de usuario y contraseñas.

INTALACION INICIAL:

Instalar las siguientes librerías:

# apt-get install slapd ldap-utils libldap-2.4-2 libpam-ldap phpldapadmin

(Nota: contraseña en este caso ldap= ldap )

Luego, como en todo sistema operativo, hay que confirmar la contraseña:

-Cuando se está instalando darle el respectivo uri en este caso se está usando:
-El nombre distintivo (DN) de las bases de búsqueda LDAP será:

- Introduzca la versión del protocolo LDAP que debería usar. Generalmente es una buena idea
utilizar el número de versión más alto que esté disponible = 3

Debemos especificar que no necesitamos usuarios para acceder a las bases de datos LDAP, sin embargo
el siguiente paso es crear un usuario administrador:
Sigue la especificación de cómo se llamara el nuevo usuario, a que parte del árbol de directorios
pertenecerá:

Como todos sabemos, en Linux no puede existir ninguna cuenta sin contraseña, bueno a excepción que
en algunas de las últimas versiones de Ubuntu, que permiten la habilitación de cuentas sin contraseña,
pero en este caso LDAP no se suma a esto, por lo que nos solicita una contraseña:
1-Configuracion de archivos principales del servidor

Primero se configurará el servidor, haciendo las respectivas modificaciones en el fichero


/etc/ldap/slapd.conf ( por ej nombre, tipo de encriptación para los passwords, el DN de root, etc.)

Se edita el archivo /etc/ldap/slapd.conf para configurar las variables que nos interesan:

- Seguido de esta línea

# Schema and objectClass definitions verificar que deben estar los siguientes esquemas:

La línea seleccionada en verde hay que agregarla, se deja comentada debido a que esta se usara en
futuras practicas con postfix(servidor de correo electronico)

- Openldap utiliza una estructura de árbol de directorios, el cual se lee al igual que los dominios,
por lo cual nuestro sufijo quedara asi:

- Ahora debemos descomentar la línea que aparece abajo, esta por defecto aparece
descomentada y es el sufijo del root
- En este caso vamos a crear contraseñas cifradas mediante un hash MD5, aunque ldap tiene otras
opciones de configuración del ciframiento de las contraseñas.

-Para esto debemos agregar al final de nuestro archivo /etc/ldap/slapd.conf


-Ahora guardamos el archivo y en otra terminal, o en la misma si salimos del archivo, damos el siguiente
comando:

Con este comando se nos pide el password y su respectiva confirmación, el resultado es la última línea
de la pantalla anterior.

El password resultante lo agregamos como argumento del passwd de nuestro rootdn, exactamente esto
corresponde a la línea 64, debajo del rootdn que descomentamos anteriormente, para llegar a dicha
línea presionamos ctrl+w y luego ctrl+t, digitamos el numero de línea (64 en este caso) y debe
quedarnos así:

- Debemos definir índices para acelerar las búsquedas, esto es en la búsqueda de atributos,
agregamos la siguiente línea debajo de los demás índices, o al final del archivo, aunque lo
recomendable es agregarla debajo de los demás índices:

Por lo cual nuestros índices quedaran así:

-La última parte en slapd.conf es el control de acceso: El tema del ACL en openldap es muy potente
y a la vez algo complejo. Debajo de las siguientes líneas adaptarlo como sigue:

-Ahora se comprueba la configuración del archivo, utilizar para esto el comando:


En caso de que haya algún error nos aparecerá algo más largo que lo anterior, pero se nos mostrara
desde un principio exactamente en qué línea exacta esta el error.

El siguiente paso es configurar el archivo /etc/ldap/ldap.conf, el cual debe quedar exacatamente así, o
dependiendo del sufijo que tengamos, en mi caso:

- Ahora revisar el archivo /etc/pam_ldap.conf y verificar que la base sea:

- En /etc/default/slapd no tiene ningun cambio

- Ahora hacer que slapd se levante de nuevo:

Ahora seguiremos con la estructura de datos de openldap.

Ahora para poder ingresar los usuarios se necesita activar el schema de courier. Si no, no se puede
asignar “objectClass: CourierMailAccount” a las nuevas entradas del server OpenLDAP.

Así que se procede a instalar los siguientes paquetes nuevos, el courier-authlib-ldap y se copia el
schema.

wilmerdes:/etc/ldap# apt-get install courier-authlib-ldap courier-authlib

Se instalarán los siguientes paquetes NUEVOS:courier-authlib courier-authlib-ldap


- Debemos mover el schema de la siguiente forma:

- Descomentar la entrada en el slapd.conf en la sección ”# Schema and objectClass definitions”


que se tenía comentada en /etc/slapd.conf:

- Se Guarda los cambios y se reinicia el slapd

ESTRUCTURA DE LA BASE DE DATOS:

La estructura de la base de datos es muy “sencilla”, se configura como un árbol invertido con distintas
ramas en función del uso al que se destinen.

Esto se puede hacer de dos maneras, una en línea y la otra fuera de línea; en línea se refiere a que se
realiza mediante phpldapadmin, y fuera de línea se realiza mediante comandos en ficheros con formato
ldif

En segundo lugar se creará la estructura de la base de datos y se introducirán las primeras entradas:

En esta ocasión utilizaremos tres ramas, mas una subrama. Osea que vamos a tener cuatro unidades
organizacionales “ou = organizationalUnit”

- Inicialmente se crea un fichero nuevo llamado base.ldif en la ruta /etc/ldap y se crea la base
como sigue:

#nano /etc/ldap/base.ldif y agregar:

- Se carga la base inicial

wilmerdes:/etc/ldap# ldapadd -x -D "cn=admin,dc=sena2009,dc=edu,dc=co" -W -f


/etc/ldap/base.ldif

-x es la opción que nos sirve para enlazarse al directorio


-D es para especificar el usuario con el cual se va a enlazar al Directorio
-W hace que ldap pida el password del usuario con el que se enlaza, en este caso el admin
-f file para especificar el archivo que se va a cargar.

- Ahora se crea un fichero nuevo llamado primer.ldif en la ruta /etc/ldap y se crean las unidades
organizacionales(usuarios,grupos y postfix) , un alias y los usuarios de ejemplo, como se
muestra a continuación:

#nano /etc/ldap/primer.ldif

# empezamos por las unidades organizacionales en este caso usuarios


dn: ou=usuarios,dc=sena2009,dc=edu,dc=co
objectClass: top
objectClass: organizationalUnit
#contraseña usuarios encriptada
userPassword: {MD5}A/mWIU+6Sh0FposY/s6OcQ==
ou: usuarios

# unidad organizacional : grupos


dn: ou=grupos,dc=sena2009,dc=edu,dc=co
objectClass: top
objectClass: organizationalUnit
ou: grupos

#ahora una unidad organizacional llamada postfix


dn: ou=postfix,dc=sena2009,dc=edu,dc=co
objectClass: top
objectClass: organizationalUnit
ou: postfix

# se crea un alias dentro de la unidad organizacional postfix


dn: ou=alias,ou=postfix,dc=sena2009,dc=edu,dc=co
objectClass: top
objectClass: organizationalUnit
ou: alias

# Ahora se crea un usuario llamado smpantoja con contraseña smpantoja encriptada


dn: uid=smpantoja,ou=usuarios,dc=sena2009,dc=edu,dc=co
uid: smpantoja
givenName: smpantoja
displayName: sandra milena
sn: pantoja
cn: sandra
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: CourierMailAccount
gidNumber: 20000
homeDirectory: /home/smpantoja
uidNumber: 10001
shadowExpire: -1
shadowFlag: 0
shadowInactive: -1
shadowMax: 999999
shadowMin: -1
shadowWarning: 7
mail: smpantoja@sena2009.edu.co
mailbox: sena2009.edu.co/smpantoja/
defaultdelivery: /var/vmail
userPassword: {MD5}0lD0y3wss5uEK5x2V+IIww==
loginShell: /bin/bash
#l: colombia
telephoneNumber: 948000000
mobile: 3122323231
st: Cauca
postalAddress: popayan 1, 1
postalCode: 95820

#Ahora un segundo usuario llamado maria:

dn: uid=rwfernandez,ou=usuarios,dc=sena2009,dc=edu,dc=co
uid: rwfernandez
givenName: rwfernandez
displayName: Ricaurte wilmer
sn: fernandez
cn: wilmer
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: CourierMailAccount
gidNumber: 20000
homeDirectory: /home/mperez
uidNumber: 10002
shadowExpire: -1
shadowFlag: 0
shadowInactive: -1
shadowMax: 999999
shadowMin: -1
shadowWarning: 7
mail: rwfernandez@sena2009.edu.co
mailbox: sena2009.edu.co/rwfernandez/
defaultdelivery: /var/vmail/
userPassword: {MD5}uX0eIjV/eNzyZXlorcegCQ==
loginShell: /bin/bash
#l: colombia
telephoneNumber: 302633
mobile: 3147521862
st: Cali
postalAddress: cali 1, 1
postalCode: 95892

#tercer usuario llamado martin martinez


dn: uid=hycardenas,ou=usuarios,dc=sena2009,dc=edu,dc=co
uid: hycardenas
givenName: hycardenas
displayName: harvi cardenas
sn: cardenas
cn: harvi
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: CourierMailAccount
gidNumber: 20000
homeDirectory: /home/hycardenas
uidNumber: 10003
shadowExpire: -1
shadowFlag: 0
shadowInactive: -1
shadowMax: 999999
shadowMin: -1
shadowWarning: 7
mail: mmartinez@sena2009.edu.co
mailbox: sena2009.edu.co/hycardenas/
defaultdelivery: /var/vmail
userPassword: {MD5}08r8nYmt0xP+m8j6e0II9g==
loginShell: /bin/bash
#l: colombia
telephoneNumber: 8302344
mobile: 3104511993
st: Bogota
postalAddress: bogota 1, 1
postalCode: 95820

# Ahora un alias de correo en la subrama Alias

#postmaster@sena2009.edu.co, alias, postfix, sena2009


dn: mail=postmaster@sena2009.edu.co,ou=alias,ou=postfix,dc=sena2009,dc=$
objectClass: CourierMailAlias
objectClass: person
cn: postmaster@sena2009.edu.co
sn: postmaster@sena2009.edu.co
mail: postmaster@sena2009.edu.co
maildrop: smpantoja@sena2009.edu.co

- Se crearon tres usuarios llamados smpantoja, rwfernandez y hycardenas


Evidentemente se deben hacer la adaptaciones necesarias e incluir los usuarios o alias de correo que se
requieran. Asignarle un password al objeto “ou=usuarios,dc=sena2009,dc=edu,dc=co” permitirá que
todos los servicios puedan acceder al ldap sin comprometer la rootpw, puesto que los ficheros de
configuración de acceso van con los password en texto plano y además no tendrán permisos de
escritura.

Cargamos el primer.ldif :
- En este momento ya tenemos tres ramas(usuarios, grupos y postfix, y una subrama(alias) lista.

ENTORNO GRAFICO PARA LDAP MEDIANTE PHPLDAPADMIN

Phpldapadmin es la mejor manera que tenemos para administrar servidores ldap, o al menos la mas
amigable, ya que tiene una administración muy parecida a la de un directorio activo, solo que mucho
mas grafica y sencilla de manejar

Por lo tanto para cargar en el navegador el phpldapadmin, supongamos que la ip del server es:
10.73.68.82

http://10.73.68.82/phpldapadmin

Aparece una interface que pide como quién se va entrar. En este caso como rootdn
cn=admin,dc=sena2009,dc=edu,dc=co y su password (rootpw).

Desde aquí se puede también al igual que en consola crear, añadir, quitar, etc.
Para verificar por consola lo que se ha agregado al servidor ldap, se puede usar, el comando:

#ldapsearch –x

El cual dara el siguiente resultado:

Luego de haber accedido a phpldapadmin, vemos que aparece todo lo que creamos en la entrada
anterior mediante el archivo ldif asi:

Esto es lo que nos aparece en cuanto nos loggeamos como administradores en nuestro phpldapadmin,
ahora comenzaremos a explorar algunas funciones del phpldapadmin.

-cuando damos clic en cualquier entrada podemos ver todo lo que configuramos en nuestro archivo ldif:
- Estas son las opciones que nos ofrece phpldapadmin cuando damos clic en un usuario, esto es
en la parte de arriba de la pagina:

Como vemos tenemos las opciones de borrar, comparar, agregar atributos, cambiar nombre, ver
atributos internos, exportar.

- En la opción compare tenemos que podemos comparar cualquier entrada en el directorio con
cualquier otra para verificar atributos, esto se hace así:

Después de seleccionar la entrada con la que queremos comparar la entrada seleccionada


hacemos lo siguiente:
Y este es el resultado:

- Con la opción copy debemos seleccionar a que parte del directorio queremos copiar y luego:

Después de que damos clic en copiar el resultado es el siguiente:

El mismo usuario esta en dos partes del directorio.


- Si queremos modificar una entrada en el directorio, solo basta con que demos clic sobre la
misma y en la interfaz que nos abre, podemos modificar cualquier dato así:

Luego de modificar todo lo que deseamos, entonces damos clic en sabe changes en la parte de
abajo y nos aparece la siguiente pantalla para confirmar los cambios:

Si habilitamos alguno de los check box a la derecha de esta pantalla, entonces nos dará como
resultado que el cambio que hicimos no sea realizado y quede un valor igual al anterior.
- Phpldapadmin tiene una opción para verificar que el password configurado en el servidor ldap
es el mismo que tiene el usuario, esto se hace al final de la pagina resultante de dar clic sobre el
usuario:
Nos abre una ventana en la que escribiremos el password asignado así:

El resultado, en caso de que el password sea correcto, es el siguiente:

- Si queremos borrar una entrada, damos clic sobre ella así:

Luego de dar clic en Delete, nos pide confirmación:


Y al confirmar, entonces el resultado es el siguiente:

- En caso de que necesitemos cambiar la contraseña de un usuario, entonces damos clic sobre el
usuario y vamos hasta el final de la pagina, donde antes comprobamos la contraseña así:ç

Nos abre la siguiente interfaz:


Como con los cambios anteriores nos solicita confirmación:

Y listo, ya fue cambiado el password del usuario, nos aparece como si apenas hubiéramos dado
clic sobre el usuario.
En este caso, solamente por ensayar, coloque el mismo valor en el password del usuario, ante
lo cual la respuesta de phpldapadmin fue la siguiente:

Una cosa que pude notar luego de hacer estos “cambios en las contraseñas”, no se a que se
deba, si es a un error en el sistema de LDAP o en realidad es así, es que lo que creí que era un
cambio de password, en realidad parece ser un password mas.
PROBLEMAS

En realidad no tuve grandes problemas en la instalación de el servicio, el único problema


medianamente importante fue el de la copia del password del rootdn, que como mencione en
este mismo manual, hay que pegarlo en la línea 64 y ya.

Otro problema menor que tuve fue que había copiado mal el sufijo del directorio en uno de los
archivos de configuración, pero después de que lo arreglé funciono normal.

Potrebbero piacerti anche