SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Autenticaci´on LDAP en GNU/Linux
Alberto Molina Coballes <alberto.molina@hispalinux.es>
IES Gonzalo Nazareno. Dos Hermanas (Sevilla)
12 de enero de 2008
Resumen
En este documento se describen los pasos necesarios para configurar un equipo
GNU/Linux para gestionar de forma centralizada las cuentas de usuarios de una red
mediante un directorio LDAP. Todo el desarrollo se realiza utilizando OpenLDAP
2.3.30 sobre la rama estable de la distribuci´on Debian GNU/Linux 4.0 (etch).
c Alberto Molina Coballes. Algunos derechos reservados.
Esta obra est´a bajo una licencia Attribution-ShareAlike 2.5 de Creative Com-
mons. Para ver una copia de esta licencia, visite:
http://creativecommons.org/licenses/by-sa/2.5/es/
1
´Indice
1. Introducci´on 3
2. Instalaci´on del servidor OpenLDAP 3
2.1. Estructura b´asica del directorio . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. Definici´on de entradas destacadas . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Configuraci´on del cliente LDAP 7
3.1. Name Service Switch (nss) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.1. Modificaci´on de /etc/nsswitch.conf . . . . . . . . . . . . . . . . . . . 8
3.1.2. libnss-ldap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2. Pluggable Authentication Module (PAM) . . . . . . . . . . . . . . . . . . . 9
3.2.1. Modificaci´on de los ficheros common-* . . . . . . . . . . . . . . . . . 9
3.2.2. libpam-ldap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4. Herramientas de gesti´on de usuarios 11
4.1. ldap-utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.1. ldapsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.2. ldapadd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.3. ldapdelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.1.4. ldapmodify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2. ldapscripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3. Herramientas gr´aficas de administraci´on LDAP . . . . . . . . . . . . . . . . 15
A. Autenticaci´on cl´asica en UNIX (shadow passwords) 17
2
1. Introducci´on
La forma cl´asica de autenticar un usuario en un sistema GNU/Linux —en UNIX en
general— es mediante la informaci´on existente en los ficheros passwd, shadow y group.
Para el lector interesado, en el ap´endice A se da una descripci´on breve de los pasos que se
siguen para autenticar un usuario en un sistema UNIX mediante estos ficheros.
El m´etodo anterior funciona muy bien para lo que ha sido pensado, sin embargo no es
´util para tener un sistema centralizado de autenticaci´on. Para estos casos normalmente
se utiliza un doble sistema de autenticaci´on: mediante ficheros para los usuarios locales
del sistema —como el usuario root, los usuarios para los demonios, etc.— y mediante un
segundo m´etodo para los usuarios normales que pueden autenticarse en cualquier equipo
de la red —lo que podr´ıamos denominar “usuarios de red”—. En este documento nos
centramos en explicar la forma de configurar un sistema para poder utilizar estos “usuarios
de red”, guardando la informaci´on en un directorio.
En entornos UNIX durante bastante tiempo se ha utilizado NIS para la autenticaci´on
centralizada de usuarios en una red local, ya que se conoce muy bien y se configura de
forma sencilla; pero es una opci´on cada vez m´as en desuso por diferentes problemas que
presenta, en particular porque no funciona sobre TCP/IP —lo que limita su extensi´on a
una red local— y adem´as no env´ıa la informaci´on entre el cliente y el servidor de manera
cifrada —lo que puede provocar problemas de seguridad—.
En este manual presentamos la opci´on preferida actualmente para implementar un sistema
centralizado de autenticaci´on, que es almacenar dicha informaci´on en un directorio LDAP.
Este m´etodo resulta m´as eficaz que NIS ya que:
Funciona sobre TCP/IP.
Es posible establecer la comunicaci´on entre el cliente y el servidor de forma cifrada.
Permite guardar muchos otros datos de los usuarios —como direcciones de correo,
tel´efonos, etc.— e incluso de otros objetos como impresoras u ordenadores.
Como es l´ogico tiene alguna contrapartida y esta es que es algo m´as complicado de im-
plantar que NIS.
En las siguientes secciones presentamos la configuraci´on de un servidor OpenLDAP, t´ıpi-
camente se har´ıa sobre un equipo de una red, y la configuraci´on de un cliente, que ser´ıa
cualquiera de los otros equipos que quieran utilizar estos “usuarios de red”. En este docu-
mento no se van a explicar las caracter´ısticas que tiene un directorio, ni el formato de los
ficheros que se utilizan para incluir las entradas (LDIF), para una lectura complementaria
sobre estos aspectos recomendamos la lectura de Introducci´on al Servicio de Directorio de
Rafael Calzada Pradas [1].
2. Instalaci´on del servidor OpenLDAP
El equipo en el que va a realizarse la instalaci´on tiene definido correctamente su FQDN y
es ldap.gonzalonazareno.org. Esto no es imprescindible para realizar la configuraci´on
correcta del servidor LDAP, pero s´ı recomendable. Para combrobar si el FQDN de un
equipo est´a bien definido hay que ejecutar:
3
hostname --fqdn
En primer lugar debemos instalar el paquete slapd y todas sus dependencias:
aptitude install slapd
A continuaci´on —dependiendo de la configuraci´on del paquete debconf— nos pedir´a lo
siguiente:
Contrase˜na del Administrador del directorio
y crear´a un directorio con dos entradas, en nuestro caso:
dn: dc=ldap,dc=gonzalonazareno,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: IES Gonzalo Nazareno
dc: ldap
structuralObjectClass: organization
entryUUID: 8376c53e-4815-102c-97c9-d7aec873b177
creatorsName:
modifiersName:
createTimestamp: 20071226154648Z
modifyTimestamp: 20071226154648Z
entryCSN: 20071226154648Z#000000#00#000000
dn: cn=admin,dc=ldap,dc=gonzalonazareno,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e2NyeXB0fUNpTkxkYi9IZ0l6WU0=
structuralObjectClass: organizationalRole
entryUUID: 83773ad2-4815-102c-97ca-d7aec873b177
creatorsName:
modifiersName:
createTimestamp: 20071226154648Z
modifyTimestamp: 20071226154648Z
entryCSN: 20071226154648Z#000001#00#000000
En la salida anterior podemos ver dos entradas en formato LDIF, identificadas cada una
con un Distinguished Name (dn) que es ´unico para cada entrada y una serie de atributos.
La salida anterior la hemos obtenido con la instrucci´on slapcat que est´a inclu´ıda en el
paquete slapd y que nos muestra los objetos del directorio desde el propio equipo sin
necesidad de establecer una conexi´on LDAP propiamente.
En caso de que la base del directorio no est´e correctamente definida —que ser´a lo m´as
habitual—, podr´ıamos configurar de nuevo el directorio con:
4
dpkg-reconfigure slapd
En este caso nos preguntar´a m´as detalles de la configuraci´on, en concreto:
Nombre de dominio DNS: ldap.gonzalonazareno.org
Nombre de la Organizaci´on: IES Gonzalo Nazareno
Contrase˜na del administrador
Motor de base de datos a utilizar: BDB
¿Permitir el protocolo LDAPv2?: No (salvo que sea necesario)
En caso de que esto no fuese suficiente —como ocurre en algunas versiones de Ubuntu—
podr´ıamos ir al directorio /var/lib/ldap y borrar todo su contenido y a continuaci´on
crear los dos objetos iniciales de la base a partir de un fichero LDIF.
Ya por ´ultimo, recordar que todos los valores que hemos introducido y otros para los que
se asumen los valores, se guardan en el fichero /etc/ldap/slapd.conf
2.1. Estructura b´asica del directorio
La estructura del ´arbol del directorio variar´a en funci´on de la informaci´on que queramos
almacenar y de la complejidad de ´esta; en nuestro caso vamos utilizar el directorio como
sistema de autenticaci´on en una red local y por tanto, queremos almacenar informaci´on
de los usuarios y los grupos a los que pertenecen. En estos casos habitualmente se utiliza
una estructura del estilo a la que aparece en la figura 1.
Figura 1: Esquema b´asico del ´arbol LDAP.
Como puede verse en la figura, se han creado dos unidades organizativas (ou) llamadas
People y Group donde obviamente se incluir´an las entradas de los usuarios y los grupos
respectivamente, adem´as de un objeto en cada unidad organizativa —el usuario pruebau y
el grupo pruebag—. En el caso de que quisi´eramos almacenar informaci´on de otros objetos
como impresoras, ordenadores, etc. deber´ıamos a˜nadir nuevas unidades organizativas.
Para a˜nadir las entradas anteriores, debemos crear un fichero en formato LDIF —lo de-
nominaremos base.ldif— con el siguiente contenido1:
1
Para crear el contenido del atributo userPassword hemos utilizado slappasswd -h {MD5}
5
dn: ou=People,dc=ldap,dc=gonzalonazareno,dc=org
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=ldap,dc=gonzalonazareno,dc=org
ou: Group
objectClass: top
objectClass: organizationalUnit
dn: cn=pruebag,ou=Group,dc=ldap,dc=gonzalonazareno,dc=org
objectClass: posixGroup
objectClass: top
cn: pruebag
gidNumber: 2000
dn: uid=pruebau,ou=People,dc=ldap,dc=gonzalonazareno,dc=org
uid: pruebau
cn: Usuario de prueba
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {MD5}qPXxZ/RPSWTmyZje6CcRDA==
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/pruebau
gecos: Usuario de prueba
host: *
Puesto que todav´ıa no hemos visto las herramientas del cliente LDAP, lo haremos con
slapadd, para lo que debemos parar antes el demonio slapd:
/etc/init.d/slapd stop
y a˜nadir las dos nuevas entradas con:
slapadd -l base.ldif
si no se ha producido ning´un error, podremos ver las nuevas entradas utilizando slapcat.
Puesto que no existe el directorio home del usuario pruebau, tendremos que crearlo y darle
el propietario adecuado:
mkdir /home/pruebau
cp /etc/skel/.* /home/pruebau
chown -R 2000:2000 /home/pruebau
Si hacemos un listado del directorio home del usuario:
6
ls -al /home/pruebau/
total 20
drwxr-xr-x 2 2000 2000 4096 2007-12-28 09:29 .
drwxr-xr-x 9 root root 4096 2007-12-28 09:28 ..
-rw-r--r-- 1 2000 2000 220 2007-12-28 09:29 .bash_logout
-rw-r--r-- 1 2000 2000 414 2007-12-28 09:29 .bash_profile
-rw-r--r-- 1 2000 2000 2227 2007-12-28 09:29 .bashrc
podemos ver que el sistema no es capaz de asociar los UID/GID a ning´un usuario existente
puesto que todav´ıa no est´a configurado para hacer la b´usqueda en el directorio.
2.2. Definici´on de entradas destacadas
Como hemos mencionado anteriormente cada entrada del directorio se define por un dn
´unico, que la identifica dentro del ´arbol y define la ruta que hay que seguir hasta ella. Hay
algunas entradas que se utilizan frecuentemente y por ello las definimos a continuaci´on:
base dn: Distinguished Name de la raiz del directorio.
root dn: Distinguished Name del administrador del directorio LDAP.
bind dn: Distinguished Name del usuario que establece la conexi´on, si el usuario que se
conecta es el administrador, entonces coincide con el root dn.
3. Configuraci´on del cliente LDAP
Esta configuraci´on deber´a realizarse en cada equipo de la red que vaya a utilizar los
usuarios del servidor LDAP. Aqu´ı presentamos la configuraci´on necesaria en el propio
servidor, para realizarlo en otro equipo habr´ıa que cambiar la direcci´on IP 127.0.0.1 por
la que corresponda al servidor.
En primer lugar configuramos el fichero /etc/ldap/ldap.conf, en caso de que no exis-
ta habr´a que instalar el paquete libldap2. Lo editamos y configuramos de la siguiente
manera:
BASE dc=ldap,dc=gonzalonazareno,dc=org
URI ldap://127.0.0.1
Debemos configurar el sistema para que pueda obtener del directorio LDAP los siguientes
servicios:
Autenticaci´on: Validando la correspondencia entre un nombre de usuario y una con-
trase˜na suministrados por un programa login, ssh, gdm, etc. tal como har´ıa el
sistema con un usuario local a trav´es del fichero /etc/shadow.
Informaci´on de usuario: Asignando a un usuario que ha ingresado en el sistema su
directorio home, UID, shell, etc. tal como har´ıa el sistema con un usuario local a
trav´es del fichero /etc/passwd.
7
Name service switch: Estableciendo —cada vez que sea requerido por el sistema—
la relaci´on entre el UID/GID de un usuario y su correspondiente nombre, como por
ejemplo al crear un fichero, hacer un listado, etc. tal como har´ıa el sistema con un
usuario local a trav´es de los ficheros /etc/passwd y /etc/group.
Asignaci´on de grupos: Asignando los grupos a los que pertenece cada usuario tal
como har´ıa el sistema con un usuario local a trav´es del fichero /etc/group.
3.1. Name Service Switch (nss)
En primer lugar vamos a configurar el sistema para que sea capaz de establecer la corres-
pondencia entre los UID/GID y los nombres de los usuarios y los grupos que est´en en el
directorio LDAP. Esto se hace con los siguientes dos pasos.
3.1.1. Modificaci´on de /etc/nsswitch.conf
Editamos este fichero y modificamos las l´ıneas correspondientes a passwd, group y shadow,
que originalmente son:
passwd: compat
group: compat
shadow: compat
que significa que el sistema va a buscar correspondencia entre UID/GID y nombres en
servidores NIS y en los ficheros passwd, group y shadow; las modificamos de la siguiente
manera:
passwd: compat ldap
group: compat ldap
shadow: compat ldap
que indica al sistema que en caso de que no encuentrar el correspondiente usuario (grupo)
de un determinado UID (GID), lo busque en el directorio LDAP.
3.1.2. libnss-ldap
Para que el sistema sea capaz de consultar a un directorio LDAP, debemos instalar el
paquete:
aptitude install libnss-ldap
y configurar los siguientes puntos:
Identificador del servidor LDAP: ldap://127.0.0.1/
Nombre distinguido (dn): dc=ldap,dc=gonzalonazareno,dc=org
Versi´on de LDAP: 3
Cuenta del administrador: cn=admin,dc=ldap,dc=gonzalonazareno,dc=org
8
Contrase˜na del administrador
Para comprobar que todo est´a configurado correctamente, repetimos el listado del direc-
torio home del usuario de prueba:
ls -al /home/pruebau/
total 20
drwxr-xr-x 2 pruebau pruebag 4096 2007-12-28 09:29 .
drwxr-xr-x 9 root root 4096 2007-12-28 09:28 ..
-rw-r--r-- 1 pruebau pruebag 220 2007-12-28 09:29 .bash_logout
-rw-r--r-- 1 pruebau pruebag 414 2007-12-28 09:29 .bash_profile
-rw-r--r-- 1 pruebau pruebag 2227 2007-12-28 09:29 .bashrc
donde comprobamos que se ha cambiado el UID/GID por el correspondiente nombre de
usuario y grupo que se ha obtenido consultando el directorio LDAP.
Otra forma de comprobaci´on, quiz´as m´as elegante, es mediante la utilizaci´on de getent:
getent passwd pruebau
getent group pruebag
Ya por ´ultimo, recomendar la instalaci´on del paquete nscd, que no necesita configuraci´on,
y que es simplemente un demonio que cachea las correspondencias entre los UID/GID y
los nombres, con el fin de evitar consultas repetidas al directorio y agilizar as´ı la respuesta.
3.2. Pluggable Authentication Module (PAM)
PAM es el sistema modular que se encarga de las tareas de autenticaci´on en el sistema,
cada aplicaci´on que necesite comprobar la autenticaci´on de usuarios tendr´a que hacer uso
de ´el y habitualmente tendr´a un fichero de configuraci´on en el directorio /etc/pam.d;
podemos ver el contenido de este directorio en un sistema muy simple:
chfn common-account common-password cron other ssh sudo
chsh common-auth common-session login passwd su
En los cuatro ficheros common-* se incluyen las directivas comunes para todas las aplica-
ciones, mientras que en el resto de ficheros se incluyen las directivas que son aplicables
s´olo a ese programa.
Recomendaci´on: Puesto que vamos a tocar los ficheros de autenticaci´on del sistema es
posible dejar el sistema inaccesible, por lo que es recomendable guardar una copia
de todo el directorio /etc/pam.d, por ejemplo haciendo:
cp -r /etc/pam.d /etc/pam.d.old
3.2.1. Modificaci´on de los ficheros common-*
Vamos a permitir que todas las aplicaciones sean capaces de autenticar contra el directorio
LDAP, por lo que haremos modificaciones s´olo en los anteriormente mencionados ficheros
common-* del directorio /etc/pam.d. Una configuraci´on muy simple ser´ıa:
9
common-password
Contenido inicial:
password required pam unix.so nullok obscure min=4 max=8 md5
Contenido final:
password sufficient pam ldap.so md5
password required pam unix.so nullok obscure min=4 max=8 md5 try first pass
common-auth
Contenido inicial:
auth required pam unix.so nullok secure
Contenido final:
auth sufficient pam ldap.so
auth required pam unix.so nullok secure try first pass
common-account
Contenido inicial:
account required pam unix.so
Contenido final:
account sufficient pam ldap.so
account required pam unix.so try first pass
common-session
Contenido inicial:
session required pam unix.so
Contenido final:
session sufficient pam ldap.so
session required pam unix.so
En todos los casos existe una l´ınea para la biblioteca pam unix.so que inicialmente utiliza
el tipo de control required que implica que debe dar un resultado exitoso para que se
pueda acceder al servicio. En la configuraci´on final se ha modificado el tipo de control para
esta biblioteca a sufficient, para que consulte en primer los usuarios locales y despu´es
los del directorio ldap, poniendo una nueva l´ınea ahora con el tipo de control required
para la biblioteca lib pam.so.
3.2.2. libpam-ldap
Para que el sistema sea capaz de consultar a un directorio LDAP, debemos instalar el
paquete:
aptitude install libpam-ldap
y configurar los siguientes puntos:
Make local root Database admin: S´ı
Does the LDAP database require login?: No
Cuenta del administrador: cn=admin,dc=ldap,dc=gonzalonazareno,dc=org
Contrase˜na del administrador
Deber´ıa pedir algunas cosas m´as, por lo que reconfiguramos el paquete mediante:
10
dpkg-reconfigure libpam-ldap
y contestamos a las preguntas anteriores y a las siguientes:
Identificador del servidor LDAP: ldap://127.0.0.1/
Nombre distinguido (dn): dc=ldap,dc=gonzalonazareno,dc=org
Versi´on de LDAP: 3
Local crypt to use when changing passwords: exop
Ahora debar´ıamos ser capaces de ingresar en el sistema a trav´es de login, gdm o ssh, o
cambiar la contrase˜na del usuario con passwd.
4. Herramientas de gesti´on de usuarios
Ahora ya tenemos configurado el servidor LDAP y el cliente para la autenticaci´on de
los usuarios que se encuentran en el directorio, pero para la utilizaci´on normal debemos
aprender c´omo se a˜naden nuevos usuarios o se modifican los atributos de los existentes —es
necesario recordar que si utilizamos las instrucciones habituales como adduser o useradd
se crear´a un usuario local y no una entrada en el directorio—.
La forma que hemos utilizado hasta ahora para crear usuarios ha sido escribir un fichero
en formato LDIF que incluya todos los atributos de la entrada y a˜nadirla al directorio con
slapadd. Esto es v´alido para los objetos iniciales del directorio, pero totalmente inadecua-
do para la utilizaci´on cuando el directorio est´a activo. Existen varias formas de actualizar
las entradas del directorio o a˜nadir nuevas, y en primer lugar veremos la utilizaci´on de las
herramientas inclu´ıdas en el paquete ldap-utils.
4.1. ldap-utils
Es muy interesante poder hacer todo tipo de modificaciones de los objetos del directorio
directamente desde la l´ınea de comandos, ya que permite hacer modificaciones con todo
detalle y en caso de tener que modificar gran cantidad de entradas —como por ejemplo en
un alta masiva— puede automatizarse utilizando scripts. En los siguientes apartados co-
mentamos algunas de ellas, aunque tambi´en se incluyen en el mismo paquete las siguientes:
ldapmodrdn, ldappasswd, ldapcompare y ldapwhoami.
4.1.1. ldapsearch
Obviamente se utiliza para hacer b´usquedas en el directorio. La b´usqueda m´as sencilla es
mediante:
ldapsearch -x
(el par´ametro -x ser´a necesario mientras no se configure el acceso con SASL al directo-
rio), que realiza una b´usqueda gen´erica de forma an´onima y que no tiene acceso a cierta
informaci´on como son las contrase˜nas de los usuarios.
Si queremos realizar una b´usqueda con un determinado usuario debemos especificarlo con
el par´ametro -D y adem´as incluir -W para que solicite la contrase˜na del usuario:
11
ldapsearch -x -D "uid=pruebau,ou=People,dc=ldap,dc=gonzalonazareno,
dc=org" -W
ahora podemos comprobar que s´ı aparece la contrase˜na del usuario pruebau ya que s´ı tiene
permiso para leerlo (y modificarlo), pero como es l´ogico no aparece ninguna otra contra-
se˜na.
Normalmente no se hacen b´usquedas gen´ericas, sino que se buscan determinados atributos
o cadenas de texto y se puede especificar incluso la rama del ´arbol en la que se quiere
buscar con el par´ametro -b. Por ejemplo:
ldapsearch -x -D "uid=pruebau,ou=People,dc=ldap,dc=gonzalonazareno,
dc=org" -W -b "ou=People,dc=ldap,dc=gonzalonazareno,dc=org"
"uidNumber=2000"
buscar´a entradas que tengan el atributo uidNumber igual a 2000 en las entradas que
pertenecen a la unidad organizativa People.
4.1.2. ldapadd
Esa instrucci´on se utiliza para a˜nadir nuevas entradas al directorio, y deberemos por
tanto tener los permisos necesarios. Para a˜nadir una nueva entrada al directorio, debemos
escribirla previamente en un fichero en formato LDIF, la diferencia con slapadd es que
se pueden a˜nadir con el servidor LDAP ejecut´andose. Por ejemplo a˜nadir´ıamos un nuevo
usuario creando el fichero usuario2.ldif con este contenido:
dn: uid=prueba2,ou=People,dc=ldap,dc=gonzalonazareno,dc=org
uid: prueba2
cn: Segundo usuario
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {MD5}qPXxZ/RPSWTmyZje6CcRDA==
loginShell: /bin/bash
uidNumber: 2001
gidNumber: 2000
homeDirectory: /home/prueba2
gecos: Segundo usuario
host: *
y lo a˜nadir´ıamos con:
ldapadd -x -D "cn=admin,dc=ldap,dc=gonzalonazareno,dc=org" -W
-f usuario2.ldif
Es necesario recordar que esto no crea el usuario completamente, s´olo crea la entrada en
el directorio, debemos crear adem´as el directorio home del usuario como ya hicimos con
pruebau.
12
4.1.3. ldapdelete
L´ogicamente necesitamos una instrucci´on que nos permita borrar entradas completas del
directorio, si por ejemplo quisi´eramos borrar la entrada creada anterior del usuario prueba2
escribir´ıamos:
ldapdelete -x -D "cn=admin,dc=ldap,dc=gonzalonazareno,dc=org" -W
"uid=prueba2,ou=People,dc=ldap,dc=gonzalonazareno,dc=org"
4.1.4. ldapmodify
Se utiliza para modificar las entradas existentes de tres maneras diferentes: a˜nadiendo un
nuevo atributo, borrando un atributo existente o modificando el valor de un atributo. Por
ejemplo para cambiar el uidNumber de un usuario podr´ıamos hacer:
ldapmodify -x -D "cn=admin,dc=ldap,dc=gonzalonazareno,dc=org" -W
especificando a continuaci´on qu´e entradas queremos modificar y de qu´e manera:
dn: uid=prueba2,ou=People,dc=ldap,dc=gonzalonazareno,dc=org
changetype: modify
replace: uidNumber
uidNumber: 2010
Esta informaci´on bien la podemos introducir directamente desde la entrada est´andar —
terminando con un EOF (CTRL-D)— o desde un fichero y pasarlo como par´ametro a
ldapmodify con -f.
Tambi´en se aceptan entradas del tipo:
add: mail
mail: usuario2@gonzalonazareno.org
para a˜nadir nuevos atributos o del tipo:
delete: hosts
para borrarlos.
4.2. ldapscripts
Debido a la incomodidad de manejo directo de las herramientas de ldap-utils es frecuente
la utilizaci´on de las mismas a trav´es de alg´un script. En particular, tenemos un paquete
en el que se incluyen algunos bastante ´utiles y que se denomina ldapscripts. El listado
de scripts de este paquete es:
ldapaddmachine
ldapsetprimarygroup
_ldapdeletemachine
_ldaprenamemachine
13
ldapdeletegroup
ldapaddgroup
ldapaddusertogroup
_ldaprenamegroup
_lsldap
ldaprenameuser
_ldapinit
ldapdeleteuserfromgroup
ldapadduser
ldapdeleteuser
Para que ldapscripts funcione correctamente debe conocer varios par´ametros: nombre
del host, dn de la base del directorio, cn del administrador, etc. Todos estos valores son
configurables en el fichero ldapscripts.conf del directorio /etc/ldapscripts, pero por
defecto asume los valores m´as comunes y en nuestro caso lo ´unico necesario ha sido crear el
fichero /etc/ldap.secret que contiene la conrase˜na del administrador y darle l´ogicamente
s´olo permisos de lectura y escritura para el usuario root2.
A la hora de crear usuarios, ldapscripts nos da como opci´on crear el directorio home del
usuario a trav´es de la directiva:
CREATEHOMES="yes"
Veremos a continuaci´on la utilizaci´on de algunos de ellos de forma sencilla. Por ejemplo
si queremos a˜nadir un nuevo usuario al directorio y que pertenezca al grupo pruebag,
bastar´a con ejecutar:
ldapadduser prueba3 pruebag
y obtendremos la siguiente entrada en el directorio:
dn: uid=prueba3,ou=People,dc=ldap,dc=gonzalonazareno,dc=org
objectClass: account
objectClass: posixAccount
cn: prueba3
uid: prueba3
uidNumber: 2002
gidNumber: 2000
homeDirectory: /home/prueba3
loginShell: /bin/bash
gecos: prueba3
description: prueba3
userPassword:: e1NTSEF9MHNDMjZOQnk0emxEMGN0T3FCalQ0ek16WGhabGRmbEE=
La contrase˜na se ha creado de forma aleatoria y hay dos opciones, cambiarla desde una
sesi´on de root con:
passwd prueba3
2
chmod 600 /etc/ldapscripts/ldapscripts.conf
14
o bien configurar ldapscripts para que nos d´e como salida un fichero con el passwd
generado.
Para borrar el usuario anterior basta con hacer:
ldapdeleteuser prueba3
Todo bastante f´acil, ¿no?
4.3. Herramientas gr´aficas de administraci´on LDAP
Existen bastantes herramientas gr´aficas de administraci´on de un directorio LDAP, en
particular algunas de las inclu´ıdas en la rama estable de Debian actualmente son: gq,
gosa, phpldapadmin, luma, directory-administrator o lat.
Es especialmente c´omoda phpldapadmin, ya que permite su utilizaci´on desde cualquier
equipo a trav´es de un navegador. En la figura 2 podemos ver una captura donde se pueden
intuir sus posibilidades.
Figura 2: phpLDAPadmin en funcionamiento.
Referencias
[1] Rafael Calzada Pradas. Introducci´on al Servicio de Directorio
http://www.rediris.es/ldap/doc/ldap-intro.pdf
[2] LDAP Authentication on Debian Sarge HOWTO
http://moduli.net/sysadmin/sarge-ldap-auth-howto.html
15
[3] Ldap Authentication on Debian
http://www.jukie.net/~bart/ldap/ldap-authentication-on-debian/index.
html
[4] CNICE. Redes de ´Area Local. Aplicaciones y servicios en Linux. Cap´ıtulo 14.
http://formacion.cnice.mec.es/materiales/85/cd/REDES_LINUX/indice.htm
[5] Antonio Villal´on Huerta. Seguridad en UNIX y redes
http://www.rediris.es/cert/doc/unixsec/
16
A. Autenticaci´on cl´asica en UNIX (shadow passwords)
Vamos a comentar brevemente los pasos que da el sistema para recabar toda la informaci´on
necesaria de los ficheros shadow, passwd y group3 ya que puede resultar ´util entenderlo
para ver las similitudes y diferencias con la autenticaci´on a trav´es de un directorio.
1. Se recoge el nombre de usuario y la contrase˜na y se validan con la informaci´on exis-
tente en el fichero /etc/shadow4; si la validaci´on es correcta se sigue en el siguiente
paso y en caso contrario se repite ´este. Una l´ınea de ejemplo de un fichero shadow
ser´ıa:
borrame:$1$nXzBxaBL$2eCiIBskzccblg/dTHFDj1:13875:0:99999:7:::
donde s´olo los dos primeros campos son relevantes para nuestra discusi´on, el primero
es el nombre de usuario y el segundo es su contrase˜na cifrada.
2. Se consulta en /etc/passwd los valores de UID, GID, directorio home y shell de ese
usuario, una l´ınea tipo ser´ıa la siguiente:
borrame:x:1012:1012:,,,:/home/borrame:/bin/bash
que nos indica que el usuario borrame tiene UID y GID 1012, su directorio home es
/home/borrame y la shell que utilizar´a al ingresar en el sistema ser´a bash.
3. Cada vez que el usuario cree o modifique un fichero —salvo que haya cambiado de
grupo principal, como por ejemplo con newgrp— se le asignar´a como propietario y
grupo propietario los valores de UID y GID anteriores. Por ejemplo:
touch fichero_nuevo
ls -nl
-rw-r--r-- 1 1012 1012 0 2007-12-28 21:00 fichero_nuevo
ls -l
-rw-r--r-- 1 borrame borrame 0 2007-12-28 21:00 fichero_nuevo
4. Si el usuario pertenece a alg´un otro grupo del sistema deber´a reflejarse en el fichero
etc/group, donde adem´as se establece la relaci´on entre los GID y los nombres de
los grupos.
3
Muy recomendable la lectura de Seguridad en UNIX y redes de Antonio Villal´on[5], en particular la
secci´on “Autenticaci´on de usuarios en UNIX”
4
Salvo que el sistema no tenga este fichero y guarde la contrase˜na en el fichero /etc/passwd, algo poco
frecuente hoy en d´ıa
17

Más contenido relacionado

La actualidad más candente

OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2cyberleon95
 
Curso de windows server 2008 - Presentación
Curso de windows server 2008 - PresentaciónCurso de windows server 2008 - Presentación
Curso de windows server 2008 - Presentacióndanilohnr
 
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...Andrés González Suárez
 
Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux. Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux. camilaml
 
Servidor FTP con usuarios en LDAP
Servidor FTP con usuarios en LDAPServidor FTP con usuarios en LDAP
Servidor FTP con usuarios en LDAPCarlos Escribano
 
Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...camilaml
 
Clientes dominio equipo6
Clientes dominio equipo6Clientes dominio equipo6
Clientes dominio equipo6Melina Japdum
 
Instalación y configuración de Magento en centOS.
Instalación y configuración de Magento en centOS.Instalación y configuración de Magento en centOS.
Instalación y configuración de Magento en centOS.camilaml
 
Seguridad perimetral en Forefront TMG 2010
Seguridad perimetral en Forefront TMG 2010Seguridad perimetral en Forefront TMG 2010
Seguridad perimetral en Forefront TMG 2010camilaml
 
Apuntes Redes Windows NT
Apuntes Redes Windows NTApuntes Redes Windows NT
Apuntes Redes Windows NTDraven Draven
 
Manuel rodriguez práctica 2 apache
Manuel rodriguez   práctica 2 apacheManuel rodriguez   práctica 2 apache
Manuel rodriguez práctica 2 apachecaoxman
 

La actualidad más candente (20)

Dfs y samba
Dfs y sambaDfs y samba
Dfs y samba
 
OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2OPENLDAP Red Hat Enterprise Linux 6.2
OPENLDAP Red Hat Enterprise Linux 6.2
 
Curso de windows server 2008 - Presentación
Curso de windows server 2008 - PresentaciónCurso de windows server 2008 - Presentación
Curso de windows server 2008 - Presentación
 
Openvp non redhat
Openvp non redhatOpenvp non redhat
Openvp non redhat
 
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
Andrés González Suárez - Acceso a FTP a través de usuarios almacenados en un ...
 
Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux. Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux.
 
Administrador de servidores
Administrador de servidoresAdministrador de servidores
Administrador de servidores
 
Servidor FTP con usuarios en LDAP
Servidor FTP con usuarios en LDAPServidor FTP con usuarios en LDAP
Servidor FTP con usuarios en LDAP
 
Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...
 
GOsa+samba+ldap
GOsa+samba+ldapGOsa+samba+ldap
GOsa+samba+ldap
 
Clientes dominio equipo6
Clientes dominio equipo6Clientes dominio equipo6
Clientes dominio equipo6
 
Instalación y configuración de Magento en centOS.
Instalación y configuración de Magento en centOS.Instalación y configuración de Magento en centOS.
Instalación y configuración de Magento en centOS.
 
Cafe con Bacula
Cafe con BaculaCafe con Bacula
Cafe con Bacula
 
Taller sobre Bacula - The Network Backup Solution
Taller sobre Bacula - The Network Backup SolutionTaller sobre Bacula - The Network Backup Solution
Taller sobre Bacula - The Network Backup Solution
 
Administracion de servidores
Administracion de servidoresAdministracion de servidores
Administracion de servidores
 
Trabajo protos
Trabajo protosTrabajo protos
Trabajo protos
 
Autenticacion unica
Autenticacion unicaAutenticacion unica
Autenticacion unica
 
Seguridad perimetral en Forefront TMG 2010
Seguridad perimetral en Forefront TMG 2010Seguridad perimetral en Forefront TMG 2010
Seguridad perimetral en Forefront TMG 2010
 
Apuntes Redes Windows NT
Apuntes Redes Windows NTApuntes Redes Windows NT
Apuntes Redes Windows NT
 
Manuel rodriguez práctica 2 apache
Manuel rodriguez   práctica 2 apacheManuel rodriguez   práctica 2 apache
Manuel rodriguez práctica 2 apache
 

Destacado (20)

00018845
0001884500018845
00018845
 
00018273
0001827300018273
00018273
 
25 Aniversario IES Infanta Elena
25 Aniversario IES Infanta Elena25 Aniversario IES Infanta Elena
25 Aniversario IES Infanta Elena
 
00015293
0001529300015293
00015293
 
000126556075
000126556075000126556075
000126556075
 
00019797
0001979700019797
00019797
 
328071
328071328071
328071
 
Monitoria_3meses_Manhiça
Monitoria_3meses_ManhiçaMonitoria_3meses_Manhiça
Monitoria_3meses_Manhiça
 
00016211
0001621100016211
00016211
 
00017535
0001753500017535
00017535
 
Sample matematika digital
Sample matematika digitalSample matematika digital
Sample matematika digital
 
Dr elghamry's lectures (1)
Dr elghamry's lectures (1)Dr elghamry's lectures (1)
Dr elghamry's lectures (1)
 
Practica1 arlynledezmagarcia304doc
Practica1 arlynledezmagarcia304docPractica1 arlynledezmagarcia304doc
Practica1 arlynledezmagarcia304doc
 
Diabetís 23 05-2009.ptt
Diabetís 23 05-2009.pttDiabetís 23 05-2009.ptt
Diabetís 23 05-2009.ptt
 
327977
327977327977
327977
 
93
9393
93
 
Nebosh Certificate in Environmental Management Introduction
Nebosh Certificate in Environmental Management IntroductionNebosh Certificate in Environmental Management Introduction
Nebosh Certificate in Environmental Management Introduction
 
Bd%20 vacutainer%20larochelle
Bd%20 vacutainer%20larochelleBd%20 vacutainer%20larochelle
Bd%20 vacutainer%20larochelle
 
Divorcios de extranjeros
Divorcios de extranjerosDivorcios de extranjeros
Divorcios de extranjeros
 
9935025
99350259935025
9935025
 

Similar a Autenticacion ldap

Aso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticasAso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticasgarciadebora
 
Manual ldap
Manual ldapManual ldap
Manual ldapomarhl2
 
Practica 2 FTP
Practica 2 FTPPractica 2 FTP
Practica 2 FTPTerrafx9
 
Red t4 practica_ftp2
Red t4 practica_ftp2Red t4 practica_ftp2
Red t4 practica_ftp2garciadebora
 
Práctica 3 FTP
Práctica 3 FTPPráctica 3 FTP
Práctica 3 FTPTerrafx9
 
Máster online - Administración de sistemas LINUX
Máster online - Administración de sistemas LINUX Máster online - Administración de sistemas LINUX
Máster online - Administración de sistemas LINUX LEARNING
 
Apuntes windows-nt
Apuntes windows-ntApuntes windows-nt
Apuntes windows-ntAngel Rene
 
Samba como PDC y autentificación LDAP
Samba como PDC y autentificación LDAPSamba como PDC y autentificación LDAP
Samba como PDC y autentificación LDAPiesgrancapitan.org
 
Apuntes windows nt
Apuntes windows ntApuntes windows nt
Apuntes windows ntEdgar Mtz
 
Administracion de datos
Administracion de datosAdministracion de datos
Administracion de datosUsein Gonzalez
 
Host Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPSHost Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPSRafa
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDAndres Ldño
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pedvin_marcelo
 

Similar a Autenticacion ldap (20)

Administracion de Sistemas
Administracion de SistemasAdministracion de Sistemas
Administracion de Sistemas
 
Aso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticasAso t1 open_ldap_lnpracticas
Aso t1 open_ldap_lnpracticas
 
Practica Inicial LDAP (JLG)
Practica Inicial LDAP (JLG)Practica Inicial LDAP (JLG)
Practica Inicial LDAP (JLG)
 
Linux
LinuxLinux
Linux
 
Manual ldap
Manual ldapManual ldap
Manual ldap
 
Practica 2 FTP
Practica 2 FTPPractica 2 FTP
Practica 2 FTP
 
Red t4 practica_ftp2
Red t4 practica_ftp2Red t4 practica_ftp2
Red t4 practica_ftp2
 
Práctica 3 FTP
Práctica 3 FTPPráctica 3 FTP
Práctica 3 FTP
 
Máster online - Administración de sistemas LINUX
Máster online - Administración de sistemas LINUX Máster online - Administración de sistemas LINUX
Máster online - Administración de sistemas LINUX
 
Apuntes windows-nt
Apuntes windows-ntApuntes windows-nt
Apuntes windows-nt
 
Openldap
OpenldapOpenldap
Openldap
 
Introducción a Open Ldap
Introducción a Open LdapIntroducción a Open Ldap
Introducción a Open Ldap
 
Samba como PDC y autentificación LDAP
Samba como PDC y autentificación LDAPSamba como PDC y autentificación LDAP
Samba como PDC y autentificación LDAP
 
Apuntes windows nt
Apuntes windows ntApuntes windows nt
Apuntes windows nt
 
Windows NT
Windows NTWindows NT
Windows NT
 
Administracion de datos
Administracion de datosAdministracion de datos
Administracion de datos
 
Host Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPSHost Virtuales en Apache y HTTPS
Host Virtuales en Apache y HTTPS
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUID
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
 
Servidor NfS
Servidor NfSServidor NfS
Servidor NfS
 

Último

ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 

Último (20)

ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 

Autenticacion ldap

  • 1. Autenticaci´on LDAP en GNU/Linux Alberto Molina Coballes <alberto.molina@hispalinux.es> IES Gonzalo Nazareno. Dos Hermanas (Sevilla) 12 de enero de 2008 Resumen En este documento se describen los pasos necesarios para configurar un equipo GNU/Linux para gestionar de forma centralizada las cuentas de usuarios de una red mediante un directorio LDAP. Todo el desarrollo se realiza utilizando OpenLDAP 2.3.30 sobre la rama estable de la distribuci´on Debian GNU/Linux 4.0 (etch). c Alberto Molina Coballes. Algunos derechos reservados. Esta obra est´a bajo una licencia Attribution-ShareAlike 2.5 de Creative Com- mons. Para ver una copia de esta licencia, visite: http://creativecommons.org/licenses/by-sa/2.5/es/ 1
  • 2. ´Indice 1. Introducci´on 3 2. Instalaci´on del servidor OpenLDAP 3 2.1. Estructura b´asica del directorio . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Definici´on de entradas destacadas . . . . . . . . . . . . . . . . . . . . . . . . 7 3. Configuraci´on del cliente LDAP 7 3.1. Name Service Switch (nss) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1.1. Modificaci´on de /etc/nsswitch.conf . . . . . . . . . . . . . . . . . . . 8 3.1.2. libnss-ldap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2. Pluggable Authentication Module (PAM) . . . . . . . . . . . . . . . . . . . 9 3.2.1. Modificaci´on de los ficheros common-* . . . . . . . . . . . . . . . . . 9 3.2.2. libpam-ldap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4. Herramientas de gesti´on de usuarios 11 4.1. ldap-utils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.1.1. ldapsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.1.2. ldapadd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.1.3. ldapdelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1.4. ldapmodify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2. ldapscripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.3. Herramientas gr´aficas de administraci´on LDAP . . . . . . . . . . . . . . . . 15 A. Autenticaci´on cl´asica en UNIX (shadow passwords) 17 2
  • 3. 1. Introducci´on La forma cl´asica de autenticar un usuario en un sistema GNU/Linux —en UNIX en general— es mediante la informaci´on existente en los ficheros passwd, shadow y group. Para el lector interesado, en el ap´endice A se da una descripci´on breve de los pasos que se siguen para autenticar un usuario en un sistema UNIX mediante estos ficheros. El m´etodo anterior funciona muy bien para lo que ha sido pensado, sin embargo no es ´util para tener un sistema centralizado de autenticaci´on. Para estos casos normalmente se utiliza un doble sistema de autenticaci´on: mediante ficheros para los usuarios locales del sistema —como el usuario root, los usuarios para los demonios, etc.— y mediante un segundo m´etodo para los usuarios normales que pueden autenticarse en cualquier equipo de la red —lo que podr´ıamos denominar “usuarios de red”—. En este documento nos centramos en explicar la forma de configurar un sistema para poder utilizar estos “usuarios de red”, guardando la informaci´on en un directorio. En entornos UNIX durante bastante tiempo se ha utilizado NIS para la autenticaci´on centralizada de usuarios en una red local, ya que se conoce muy bien y se configura de forma sencilla; pero es una opci´on cada vez m´as en desuso por diferentes problemas que presenta, en particular porque no funciona sobre TCP/IP —lo que limita su extensi´on a una red local— y adem´as no env´ıa la informaci´on entre el cliente y el servidor de manera cifrada —lo que puede provocar problemas de seguridad—. En este manual presentamos la opci´on preferida actualmente para implementar un sistema centralizado de autenticaci´on, que es almacenar dicha informaci´on en un directorio LDAP. Este m´etodo resulta m´as eficaz que NIS ya que: Funciona sobre TCP/IP. Es posible establecer la comunicaci´on entre el cliente y el servidor de forma cifrada. Permite guardar muchos otros datos de los usuarios —como direcciones de correo, tel´efonos, etc.— e incluso de otros objetos como impresoras u ordenadores. Como es l´ogico tiene alguna contrapartida y esta es que es algo m´as complicado de im- plantar que NIS. En las siguientes secciones presentamos la configuraci´on de un servidor OpenLDAP, t´ıpi- camente se har´ıa sobre un equipo de una red, y la configuraci´on de un cliente, que ser´ıa cualquiera de los otros equipos que quieran utilizar estos “usuarios de red”. En este docu- mento no se van a explicar las caracter´ısticas que tiene un directorio, ni el formato de los ficheros que se utilizan para incluir las entradas (LDIF), para una lectura complementaria sobre estos aspectos recomendamos la lectura de Introducci´on al Servicio de Directorio de Rafael Calzada Pradas [1]. 2. Instalaci´on del servidor OpenLDAP El equipo en el que va a realizarse la instalaci´on tiene definido correctamente su FQDN y es ldap.gonzalonazareno.org. Esto no es imprescindible para realizar la configuraci´on correcta del servidor LDAP, pero s´ı recomendable. Para combrobar si el FQDN de un equipo est´a bien definido hay que ejecutar: 3
  • 4. hostname --fqdn En primer lugar debemos instalar el paquete slapd y todas sus dependencias: aptitude install slapd A continuaci´on —dependiendo de la configuraci´on del paquete debconf— nos pedir´a lo siguiente: Contrase˜na del Administrador del directorio y crear´a un directorio con dos entradas, en nuestro caso: dn: dc=ldap,dc=gonzalonazareno,dc=org objectClass: top objectClass: dcObject objectClass: organization o: IES Gonzalo Nazareno dc: ldap structuralObjectClass: organization entryUUID: 8376c53e-4815-102c-97c9-d7aec873b177 creatorsName: modifiersName: createTimestamp: 20071226154648Z modifyTimestamp: 20071226154648Z entryCSN: 20071226154648Z#000000#00#000000 dn: cn=admin,dc=ldap,dc=gonzalonazareno,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e2NyeXB0fUNpTkxkYi9IZ0l6WU0= structuralObjectClass: organizationalRole entryUUID: 83773ad2-4815-102c-97ca-d7aec873b177 creatorsName: modifiersName: createTimestamp: 20071226154648Z modifyTimestamp: 20071226154648Z entryCSN: 20071226154648Z#000001#00#000000 En la salida anterior podemos ver dos entradas en formato LDIF, identificadas cada una con un Distinguished Name (dn) que es ´unico para cada entrada y una serie de atributos. La salida anterior la hemos obtenido con la instrucci´on slapcat que est´a inclu´ıda en el paquete slapd y que nos muestra los objetos del directorio desde el propio equipo sin necesidad de establecer una conexi´on LDAP propiamente. En caso de que la base del directorio no est´e correctamente definida —que ser´a lo m´as habitual—, podr´ıamos configurar de nuevo el directorio con: 4
  • 5. dpkg-reconfigure slapd En este caso nos preguntar´a m´as detalles de la configuraci´on, en concreto: Nombre de dominio DNS: ldap.gonzalonazareno.org Nombre de la Organizaci´on: IES Gonzalo Nazareno Contrase˜na del administrador Motor de base de datos a utilizar: BDB ¿Permitir el protocolo LDAPv2?: No (salvo que sea necesario) En caso de que esto no fuese suficiente —como ocurre en algunas versiones de Ubuntu— podr´ıamos ir al directorio /var/lib/ldap y borrar todo su contenido y a continuaci´on crear los dos objetos iniciales de la base a partir de un fichero LDIF. Ya por ´ultimo, recordar que todos los valores que hemos introducido y otros para los que se asumen los valores, se guardan en el fichero /etc/ldap/slapd.conf 2.1. Estructura b´asica del directorio La estructura del ´arbol del directorio variar´a en funci´on de la informaci´on que queramos almacenar y de la complejidad de ´esta; en nuestro caso vamos utilizar el directorio como sistema de autenticaci´on en una red local y por tanto, queremos almacenar informaci´on de los usuarios y los grupos a los que pertenecen. En estos casos habitualmente se utiliza una estructura del estilo a la que aparece en la figura 1. Figura 1: Esquema b´asico del ´arbol LDAP. Como puede verse en la figura, se han creado dos unidades organizativas (ou) llamadas People y Group donde obviamente se incluir´an las entradas de los usuarios y los grupos respectivamente, adem´as de un objeto en cada unidad organizativa —el usuario pruebau y el grupo pruebag—. En el caso de que quisi´eramos almacenar informaci´on de otros objetos como impresoras, ordenadores, etc. deber´ıamos a˜nadir nuevas unidades organizativas. Para a˜nadir las entradas anteriores, debemos crear un fichero en formato LDIF —lo de- nominaremos base.ldif— con el siguiente contenido1: 1 Para crear el contenido del atributo userPassword hemos utilizado slappasswd -h {MD5} 5
  • 6. dn: ou=People,dc=ldap,dc=gonzalonazareno,dc=org ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=ldap,dc=gonzalonazareno,dc=org ou: Group objectClass: top objectClass: organizationalUnit dn: cn=pruebag,ou=Group,dc=ldap,dc=gonzalonazareno,dc=org objectClass: posixGroup objectClass: top cn: pruebag gidNumber: 2000 dn: uid=pruebau,ou=People,dc=ldap,dc=gonzalonazareno,dc=org uid: pruebau cn: Usuario de prueba objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {MD5}qPXxZ/RPSWTmyZje6CcRDA== loginShell: /bin/bash uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/pruebau gecos: Usuario de prueba host: * Puesto que todav´ıa no hemos visto las herramientas del cliente LDAP, lo haremos con slapadd, para lo que debemos parar antes el demonio slapd: /etc/init.d/slapd stop y a˜nadir las dos nuevas entradas con: slapadd -l base.ldif si no se ha producido ning´un error, podremos ver las nuevas entradas utilizando slapcat. Puesto que no existe el directorio home del usuario pruebau, tendremos que crearlo y darle el propietario adecuado: mkdir /home/pruebau cp /etc/skel/.* /home/pruebau chown -R 2000:2000 /home/pruebau Si hacemos un listado del directorio home del usuario: 6
  • 7. ls -al /home/pruebau/ total 20 drwxr-xr-x 2 2000 2000 4096 2007-12-28 09:29 . drwxr-xr-x 9 root root 4096 2007-12-28 09:28 .. -rw-r--r-- 1 2000 2000 220 2007-12-28 09:29 .bash_logout -rw-r--r-- 1 2000 2000 414 2007-12-28 09:29 .bash_profile -rw-r--r-- 1 2000 2000 2227 2007-12-28 09:29 .bashrc podemos ver que el sistema no es capaz de asociar los UID/GID a ning´un usuario existente puesto que todav´ıa no est´a configurado para hacer la b´usqueda en el directorio. 2.2. Definici´on de entradas destacadas Como hemos mencionado anteriormente cada entrada del directorio se define por un dn ´unico, que la identifica dentro del ´arbol y define la ruta que hay que seguir hasta ella. Hay algunas entradas que se utilizan frecuentemente y por ello las definimos a continuaci´on: base dn: Distinguished Name de la raiz del directorio. root dn: Distinguished Name del administrador del directorio LDAP. bind dn: Distinguished Name del usuario que establece la conexi´on, si el usuario que se conecta es el administrador, entonces coincide con el root dn. 3. Configuraci´on del cliente LDAP Esta configuraci´on deber´a realizarse en cada equipo de la red que vaya a utilizar los usuarios del servidor LDAP. Aqu´ı presentamos la configuraci´on necesaria en el propio servidor, para realizarlo en otro equipo habr´ıa que cambiar la direcci´on IP 127.0.0.1 por la que corresponda al servidor. En primer lugar configuramos el fichero /etc/ldap/ldap.conf, en caso de que no exis- ta habr´a que instalar el paquete libldap2. Lo editamos y configuramos de la siguiente manera: BASE dc=ldap,dc=gonzalonazareno,dc=org URI ldap://127.0.0.1 Debemos configurar el sistema para que pueda obtener del directorio LDAP los siguientes servicios: Autenticaci´on: Validando la correspondencia entre un nombre de usuario y una con- trase˜na suministrados por un programa login, ssh, gdm, etc. tal como har´ıa el sistema con un usuario local a trav´es del fichero /etc/shadow. Informaci´on de usuario: Asignando a un usuario que ha ingresado en el sistema su directorio home, UID, shell, etc. tal como har´ıa el sistema con un usuario local a trav´es del fichero /etc/passwd. 7
  • 8. Name service switch: Estableciendo —cada vez que sea requerido por el sistema— la relaci´on entre el UID/GID de un usuario y su correspondiente nombre, como por ejemplo al crear un fichero, hacer un listado, etc. tal como har´ıa el sistema con un usuario local a trav´es de los ficheros /etc/passwd y /etc/group. Asignaci´on de grupos: Asignando los grupos a los que pertenece cada usuario tal como har´ıa el sistema con un usuario local a trav´es del fichero /etc/group. 3.1. Name Service Switch (nss) En primer lugar vamos a configurar el sistema para que sea capaz de establecer la corres- pondencia entre los UID/GID y los nombres de los usuarios y los grupos que est´en en el directorio LDAP. Esto se hace con los siguientes dos pasos. 3.1.1. Modificaci´on de /etc/nsswitch.conf Editamos este fichero y modificamos las l´ıneas correspondientes a passwd, group y shadow, que originalmente son: passwd: compat group: compat shadow: compat que significa que el sistema va a buscar correspondencia entre UID/GID y nombres en servidores NIS y en los ficheros passwd, group y shadow; las modificamos de la siguiente manera: passwd: compat ldap group: compat ldap shadow: compat ldap que indica al sistema que en caso de que no encuentrar el correspondiente usuario (grupo) de un determinado UID (GID), lo busque en el directorio LDAP. 3.1.2. libnss-ldap Para que el sistema sea capaz de consultar a un directorio LDAP, debemos instalar el paquete: aptitude install libnss-ldap y configurar los siguientes puntos: Identificador del servidor LDAP: ldap://127.0.0.1/ Nombre distinguido (dn): dc=ldap,dc=gonzalonazareno,dc=org Versi´on de LDAP: 3 Cuenta del administrador: cn=admin,dc=ldap,dc=gonzalonazareno,dc=org 8
  • 9. Contrase˜na del administrador Para comprobar que todo est´a configurado correctamente, repetimos el listado del direc- torio home del usuario de prueba: ls -al /home/pruebau/ total 20 drwxr-xr-x 2 pruebau pruebag 4096 2007-12-28 09:29 . drwxr-xr-x 9 root root 4096 2007-12-28 09:28 .. -rw-r--r-- 1 pruebau pruebag 220 2007-12-28 09:29 .bash_logout -rw-r--r-- 1 pruebau pruebag 414 2007-12-28 09:29 .bash_profile -rw-r--r-- 1 pruebau pruebag 2227 2007-12-28 09:29 .bashrc donde comprobamos que se ha cambiado el UID/GID por el correspondiente nombre de usuario y grupo que se ha obtenido consultando el directorio LDAP. Otra forma de comprobaci´on, quiz´as m´as elegante, es mediante la utilizaci´on de getent: getent passwd pruebau getent group pruebag Ya por ´ultimo, recomendar la instalaci´on del paquete nscd, que no necesita configuraci´on, y que es simplemente un demonio que cachea las correspondencias entre los UID/GID y los nombres, con el fin de evitar consultas repetidas al directorio y agilizar as´ı la respuesta. 3.2. Pluggable Authentication Module (PAM) PAM es el sistema modular que se encarga de las tareas de autenticaci´on en el sistema, cada aplicaci´on que necesite comprobar la autenticaci´on de usuarios tendr´a que hacer uso de ´el y habitualmente tendr´a un fichero de configuraci´on en el directorio /etc/pam.d; podemos ver el contenido de este directorio en un sistema muy simple: chfn common-account common-password cron other ssh sudo chsh common-auth common-session login passwd su En los cuatro ficheros common-* se incluyen las directivas comunes para todas las aplica- ciones, mientras que en el resto de ficheros se incluyen las directivas que son aplicables s´olo a ese programa. Recomendaci´on: Puesto que vamos a tocar los ficheros de autenticaci´on del sistema es posible dejar el sistema inaccesible, por lo que es recomendable guardar una copia de todo el directorio /etc/pam.d, por ejemplo haciendo: cp -r /etc/pam.d /etc/pam.d.old 3.2.1. Modificaci´on de los ficheros common-* Vamos a permitir que todas las aplicaciones sean capaces de autenticar contra el directorio LDAP, por lo que haremos modificaciones s´olo en los anteriormente mencionados ficheros common-* del directorio /etc/pam.d. Una configuraci´on muy simple ser´ıa: 9
  • 10. common-password Contenido inicial: password required pam unix.so nullok obscure min=4 max=8 md5 Contenido final: password sufficient pam ldap.so md5 password required pam unix.so nullok obscure min=4 max=8 md5 try first pass common-auth Contenido inicial: auth required pam unix.so nullok secure Contenido final: auth sufficient pam ldap.so auth required pam unix.so nullok secure try first pass common-account Contenido inicial: account required pam unix.so Contenido final: account sufficient pam ldap.so account required pam unix.so try first pass common-session Contenido inicial: session required pam unix.so Contenido final: session sufficient pam ldap.so session required pam unix.so En todos los casos existe una l´ınea para la biblioteca pam unix.so que inicialmente utiliza el tipo de control required que implica que debe dar un resultado exitoso para que se pueda acceder al servicio. En la configuraci´on final se ha modificado el tipo de control para esta biblioteca a sufficient, para que consulte en primer los usuarios locales y despu´es los del directorio ldap, poniendo una nueva l´ınea ahora con el tipo de control required para la biblioteca lib pam.so. 3.2.2. libpam-ldap Para que el sistema sea capaz de consultar a un directorio LDAP, debemos instalar el paquete: aptitude install libpam-ldap y configurar los siguientes puntos: Make local root Database admin: S´ı Does the LDAP database require login?: No Cuenta del administrador: cn=admin,dc=ldap,dc=gonzalonazareno,dc=org Contrase˜na del administrador Deber´ıa pedir algunas cosas m´as, por lo que reconfiguramos el paquete mediante: 10
  • 11. dpkg-reconfigure libpam-ldap y contestamos a las preguntas anteriores y a las siguientes: Identificador del servidor LDAP: ldap://127.0.0.1/ Nombre distinguido (dn): dc=ldap,dc=gonzalonazareno,dc=org Versi´on de LDAP: 3 Local crypt to use when changing passwords: exop Ahora debar´ıamos ser capaces de ingresar en el sistema a trav´es de login, gdm o ssh, o cambiar la contrase˜na del usuario con passwd. 4. Herramientas de gesti´on de usuarios Ahora ya tenemos configurado el servidor LDAP y el cliente para la autenticaci´on de los usuarios que se encuentran en el directorio, pero para la utilizaci´on normal debemos aprender c´omo se a˜naden nuevos usuarios o se modifican los atributos de los existentes —es necesario recordar que si utilizamos las instrucciones habituales como adduser o useradd se crear´a un usuario local y no una entrada en el directorio—. La forma que hemos utilizado hasta ahora para crear usuarios ha sido escribir un fichero en formato LDIF que incluya todos los atributos de la entrada y a˜nadirla al directorio con slapadd. Esto es v´alido para los objetos iniciales del directorio, pero totalmente inadecua- do para la utilizaci´on cuando el directorio est´a activo. Existen varias formas de actualizar las entradas del directorio o a˜nadir nuevas, y en primer lugar veremos la utilizaci´on de las herramientas inclu´ıdas en el paquete ldap-utils. 4.1. ldap-utils Es muy interesante poder hacer todo tipo de modificaciones de los objetos del directorio directamente desde la l´ınea de comandos, ya que permite hacer modificaciones con todo detalle y en caso de tener que modificar gran cantidad de entradas —como por ejemplo en un alta masiva— puede automatizarse utilizando scripts. En los siguientes apartados co- mentamos algunas de ellas, aunque tambi´en se incluyen en el mismo paquete las siguientes: ldapmodrdn, ldappasswd, ldapcompare y ldapwhoami. 4.1.1. ldapsearch Obviamente se utiliza para hacer b´usquedas en el directorio. La b´usqueda m´as sencilla es mediante: ldapsearch -x (el par´ametro -x ser´a necesario mientras no se configure el acceso con SASL al directo- rio), que realiza una b´usqueda gen´erica de forma an´onima y que no tiene acceso a cierta informaci´on como son las contrase˜nas de los usuarios. Si queremos realizar una b´usqueda con un determinado usuario debemos especificarlo con el par´ametro -D y adem´as incluir -W para que solicite la contrase˜na del usuario: 11
  • 12. ldapsearch -x -D "uid=pruebau,ou=People,dc=ldap,dc=gonzalonazareno, dc=org" -W ahora podemos comprobar que s´ı aparece la contrase˜na del usuario pruebau ya que s´ı tiene permiso para leerlo (y modificarlo), pero como es l´ogico no aparece ninguna otra contra- se˜na. Normalmente no se hacen b´usquedas gen´ericas, sino que se buscan determinados atributos o cadenas de texto y se puede especificar incluso la rama del ´arbol en la que se quiere buscar con el par´ametro -b. Por ejemplo: ldapsearch -x -D "uid=pruebau,ou=People,dc=ldap,dc=gonzalonazareno, dc=org" -W -b "ou=People,dc=ldap,dc=gonzalonazareno,dc=org" "uidNumber=2000" buscar´a entradas que tengan el atributo uidNumber igual a 2000 en las entradas que pertenecen a la unidad organizativa People. 4.1.2. ldapadd Esa instrucci´on se utiliza para a˜nadir nuevas entradas al directorio, y deberemos por tanto tener los permisos necesarios. Para a˜nadir una nueva entrada al directorio, debemos escribirla previamente en un fichero en formato LDIF, la diferencia con slapadd es que se pueden a˜nadir con el servidor LDAP ejecut´andose. Por ejemplo a˜nadir´ıamos un nuevo usuario creando el fichero usuario2.ldif con este contenido: dn: uid=prueba2,ou=People,dc=ldap,dc=gonzalonazareno,dc=org uid: prueba2 cn: Segundo usuario objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {MD5}qPXxZ/RPSWTmyZje6CcRDA== loginShell: /bin/bash uidNumber: 2001 gidNumber: 2000 homeDirectory: /home/prueba2 gecos: Segundo usuario host: * y lo a˜nadir´ıamos con: ldapadd -x -D "cn=admin,dc=ldap,dc=gonzalonazareno,dc=org" -W -f usuario2.ldif Es necesario recordar que esto no crea el usuario completamente, s´olo crea la entrada en el directorio, debemos crear adem´as el directorio home del usuario como ya hicimos con pruebau. 12
  • 13. 4.1.3. ldapdelete L´ogicamente necesitamos una instrucci´on que nos permita borrar entradas completas del directorio, si por ejemplo quisi´eramos borrar la entrada creada anterior del usuario prueba2 escribir´ıamos: ldapdelete -x -D "cn=admin,dc=ldap,dc=gonzalonazareno,dc=org" -W "uid=prueba2,ou=People,dc=ldap,dc=gonzalonazareno,dc=org" 4.1.4. ldapmodify Se utiliza para modificar las entradas existentes de tres maneras diferentes: a˜nadiendo un nuevo atributo, borrando un atributo existente o modificando el valor de un atributo. Por ejemplo para cambiar el uidNumber de un usuario podr´ıamos hacer: ldapmodify -x -D "cn=admin,dc=ldap,dc=gonzalonazareno,dc=org" -W especificando a continuaci´on qu´e entradas queremos modificar y de qu´e manera: dn: uid=prueba2,ou=People,dc=ldap,dc=gonzalonazareno,dc=org changetype: modify replace: uidNumber uidNumber: 2010 Esta informaci´on bien la podemos introducir directamente desde la entrada est´andar — terminando con un EOF (CTRL-D)— o desde un fichero y pasarlo como par´ametro a ldapmodify con -f. Tambi´en se aceptan entradas del tipo: add: mail mail: usuario2@gonzalonazareno.org para a˜nadir nuevos atributos o del tipo: delete: hosts para borrarlos. 4.2. ldapscripts Debido a la incomodidad de manejo directo de las herramientas de ldap-utils es frecuente la utilizaci´on de las mismas a trav´es de alg´un script. En particular, tenemos un paquete en el que se incluyen algunos bastante ´utiles y que se denomina ldapscripts. El listado de scripts de este paquete es: ldapaddmachine ldapsetprimarygroup _ldapdeletemachine _ldaprenamemachine 13
  • 14. ldapdeletegroup ldapaddgroup ldapaddusertogroup _ldaprenamegroup _lsldap ldaprenameuser _ldapinit ldapdeleteuserfromgroup ldapadduser ldapdeleteuser Para que ldapscripts funcione correctamente debe conocer varios par´ametros: nombre del host, dn de la base del directorio, cn del administrador, etc. Todos estos valores son configurables en el fichero ldapscripts.conf del directorio /etc/ldapscripts, pero por defecto asume los valores m´as comunes y en nuestro caso lo ´unico necesario ha sido crear el fichero /etc/ldap.secret que contiene la conrase˜na del administrador y darle l´ogicamente s´olo permisos de lectura y escritura para el usuario root2. A la hora de crear usuarios, ldapscripts nos da como opci´on crear el directorio home del usuario a trav´es de la directiva: CREATEHOMES="yes" Veremos a continuaci´on la utilizaci´on de algunos de ellos de forma sencilla. Por ejemplo si queremos a˜nadir un nuevo usuario al directorio y que pertenezca al grupo pruebag, bastar´a con ejecutar: ldapadduser prueba3 pruebag y obtendremos la siguiente entrada en el directorio: dn: uid=prueba3,ou=People,dc=ldap,dc=gonzalonazareno,dc=org objectClass: account objectClass: posixAccount cn: prueba3 uid: prueba3 uidNumber: 2002 gidNumber: 2000 homeDirectory: /home/prueba3 loginShell: /bin/bash gecos: prueba3 description: prueba3 userPassword:: e1NTSEF9MHNDMjZOQnk0emxEMGN0T3FCalQ0ek16WGhabGRmbEE= La contrase˜na se ha creado de forma aleatoria y hay dos opciones, cambiarla desde una sesi´on de root con: passwd prueba3 2 chmod 600 /etc/ldapscripts/ldapscripts.conf 14
  • 15. o bien configurar ldapscripts para que nos d´e como salida un fichero con el passwd generado. Para borrar el usuario anterior basta con hacer: ldapdeleteuser prueba3 Todo bastante f´acil, ¿no? 4.3. Herramientas gr´aficas de administraci´on LDAP Existen bastantes herramientas gr´aficas de administraci´on de un directorio LDAP, en particular algunas de las inclu´ıdas en la rama estable de Debian actualmente son: gq, gosa, phpldapadmin, luma, directory-administrator o lat. Es especialmente c´omoda phpldapadmin, ya que permite su utilizaci´on desde cualquier equipo a trav´es de un navegador. En la figura 2 podemos ver una captura donde se pueden intuir sus posibilidades. Figura 2: phpLDAPadmin en funcionamiento. Referencias [1] Rafael Calzada Pradas. Introducci´on al Servicio de Directorio http://www.rediris.es/ldap/doc/ldap-intro.pdf [2] LDAP Authentication on Debian Sarge HOWTO http://moduli.net/sysadmin/sarge-ldap-auth-howto.html 15
  • 16. [3] Ldap Authentication on Debian http://www.jukie.net/~bart/ldap/ldap-authentication-on-debian/index. html [4] CNICE. Redes de ´Area Local. Aplicaciones y servicios en Linux. Cap´ıtulo 14. http://formacion.cnice.mec.es/materiales/85/cd/REDES_LINUX/indice.htm [5] Antonio Villal´on Huerta. Seguridad en UNIX y redes http://www.rediris.es/cert/doc/unixsec/ 16
  • 17. A. Autenticaci´on cl´asica en UNIX (shadow passwords) Vamos a comentar brevemente los pasos que da el sistema para recabar toda la informaci´on necesaria de los ficheros shadow, passwd y group3 ya que puede resultar ´util entenderlo para ver las similitudes y diferencias con la autenticaci´on a trav´es de un directorio. 1. Se recoge el nombre de usuario y la contrase˜na y se validan con la informaci´on exis- tente en el fichero /etc/shadow4; si la validaci´on es correcta se sigue en el siguiente paso y en caso contrario se repite ´este. Una l´ınea de ejemplo de un fichero shadow ser´ıa: borrame:$1$nXzBxaBL$2eCiIBskzccblg/dTHFDj1:13875:0:99999:7::: donde s´olo los dos primeros campos son relevantes para nuestra discusi´on, el primero es el nombre de usuario y el segundo es su contrase˜na cifrada. 2. Se consulta en /etc/passwd los valores de UID, GID, directorio home y shell de ese usuario, una l´ınea tipo ser´ıa la siguiente: borrame:x:1012:1012:,,,:/home/borrame:/bin/bash que nos indica que el usuario borrame tiene UID y GID 1012, su directorio home es /home/borrame y la shell que utilizar´a al ingresar en el sistema ser´a bash. 3. Cada vez que el usuario cree o modifique un fichero —salvo que haya cambiado de grupo principal, como por ejemplo con newgrp— se le asignar´a como propietario y grupo propietario los valores de UID y GID anteriores. Por ejemplo: touch fichero_nuevo ls -nl -rw-r--r-- 1 1012 1012 0 2007-12-28 21:00 fichero_nuevo ls -l -rw-r--r-- 1 borrame borrame 0 2007-12-28 21:00 fichero_nuevo 4. Si el usuario pertenece a alg´un otro grupo del sistema deber´a reflejarse en el fichero etc/group, donde adem´as se establece la relaci´on entre los GID y los nombres de los grupos. 3 Muy recomendable la lectura de Seguridad en UNIX y redes de Antonio Villal´on[5], en particular la secci´on “Autenticaci´on de usuarios en UNIX” 4 Salvo que el sistema no tenga este fichero y guarde la contrase˜na en el fichero /etc/passwd, algo poco frecuente hoy en d´ıa 17