Instalando LDAP en Centos 5.4

Instalación de LDAP y configuración básica;

Primero instalamos LDAP con yum:

[root@nikita ~]# yum install openldap-servers openldap-clients nss_ldap
….

Copiamos DB_CONFIG.example al direcotrio de ldap

[root@nikita ~]# cd /etc/openldap/
[root@nikita ~]# cp DB_CONFIG.example /var/lib/ldap/DB_CONFIG

Creamos un password para el LDAP de la siguiente manera;

[root@nikita openldap]# slappasswd
New password:
Re-enter new password:
{SSHA}V7IS3vYe8P0/IcOvJmfEdjY1LXuWPV3U

Copiamos la salida de ese comando y editamos el archivo;

/etc/openldap/slapd.conf ==> Lo único que modificamos es:

database bdb
suffix «dc=segvfault,dc=com,dc=ar»
rootdn «cn=Manager,dc=segvfault,dc=com,dc=ar»

# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg

rootpw {SSHA}V7IS3vYe8P0/IcOvJmfEdjY1LXuWPV3U

Y ya podemos arranca el LDAP de la siguiente manera;

[root@nikita openldap]# service ldap start
Checking configuration files for slapd: config file testing succeeded [ OK ]
Starting slapd: [ OK ]

Creamos un archivo para inicializar la base de LDAP;

En mi caso lo llame ldap-init.ldif y contiene:

[root@nikita openldap]# cat ldap-init.ldif

dn: dc=segvfault,dc=com,dc=ar
objectclass: dcObject
objectclass: organization
o: Segvfault LDAP server
dc: segvfault

dn: cn=Manager,dc=segvfault,dc=com,dc=ar
objectclass: organizationalRole
cn: Manager

Inicializamos la base con el siguiente comando;

[root@nikita openldap]# /usr/bin/ldapadd -a -x -D ‘cn=Manager,dc=segvfault,dc=com,dc=ar’ -W -f ldap-init.ldif
Enter LDAP Password:
adding new entry «dc=segvfault,dc=com,dc=ar»

adding new entry «cn=Manager,dc=segvfault,dc=com,dc=ar»

Ahora podemos ver el contenido de la base con el siguiente comando;

[root@nikita openldap]# ldapsearch -h 127.0.0.1 -x -b «dc=segvfault,dc=com,dc=ar»
# extended LDIF
#
# LDAPv3
# base <dc=segvfault,dc=com,dc=ar> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# segvfault.com.ar
dn: dc=segvfault,dc=com,dc=ar
objectClass: dcObject
objectClass: organization
o: Segvfault LDAP server
dc: segvfault

# Manager, segvfault.com.ar
dn: cn=Manager,dc=segvfault,dc=com,dc=ar
objectClass: organizationalRole
cn: Manager

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Usamos el comando authconfig-tui que nos va a configurar
el archivo /etc/nsswitch.conf, /etc/ldap.conf, pam y otros

Eso lo ejecutamos en cosola nos abre un menú y lo configuramos
para que soporte autentificaciones LDAP y completamos los
datos que nos piden(ldap server y dnbase)

Bien, ahora podemos crear un usuario en el
directorio LDAP. Yo uso un archivo ldif y lo
edito con los datos correspondientes, ejemplo;

usuario, password, home, shell, etc:

[root@nikita openldap]# cat user.ldif
dn: uid=section,dc=segvfault,dc=com,dc=ar
uid: section
cn: section
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$TEDFGNB3$m24Mo06Q06EXMop7INKrC/
shadowLastChange: 14335
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/section1
gecos: section

La password la generé con el siguiente comando;

[root@nikita openldap]# openssl passwd -1 -salt TEDFGNB345RTErea
Password:
$1$TEDFGNB3$m24Mo06Q06EXMop7INKrC/

la -1 es de MD5 y el salt son caracteres lo mas random posible

Lo agregamos al directorio ldap de la siguiente manera:
[root@nikita openldap]# ldapadd -a -x -D ‘cn=Manager,dc=segvfault,dc=com,dc=ar’ -W -f user.ldif

ya podemos probar si el usuario esta basicamente andando con id:

[root@nikita openldap]# id section
uid=10000(section) gid=10000 groups=10000

Bien ahora vamos a agregar un grupo para agrupar los usuarios.
Yo use el siguiente group.ldiff

[root@nikita openldap]# cat group.ldiff
dn: cn=users,dc=segvfault,dc=com,dc=ar
objectClass: posixGroup
gidNumber: 10000
cn: users
memberUid: section
description: Users group

Y lo agrega al ldap de la siguiente manera;

[root@nikita openldap]# ldapadd -a -x -D ‘cn=Manager,dc=segvfault,dc=com,dc=ar’ -W -f group.ldiff

y ahora si probamos de vuelta id:
[root@nikita openldap]# id section
uid=10000(section) gid=10000(users) groups=10000(users)

Vemos que el usuario esta en el grupo “users”.
Ahora creamos home del user y copiamos los archivos de skel.

[root@nikita openldap]# mkdir /home/section
[root@nikita openldap]# rsync -a /etc/skel/ /home/section
[root@nikita openldap]# chown -R section.users /home/section
[root@nikita openldap]# chmod 700 /home/section
[root@nikita openldap]# ls -la /home/section
total 20
drwx—— 2 section users 4096 Feb 11 19:09 .
drwxr-xr-x 4 root root 4096 Feb 11 21:19 ..
-rw-r–r– 1 section users 33 Jan 21 2009 .bash_logout
-rw-r–r– 1 section users 176 Jan 21 2009 .bash_profile
-rw-r–r– 1 section users 124 Jan 21 2009 .bashrc

Bien, ya esta todo listo para que el usuario se pueda loguear
con la clave que le generaron, desde otra maquina probamos ssh:

$ ssh -l section 192.168.1.10
section@192.168.1.10’s password:
Last login: Thu Feb 11 21:24:50 2010 from 192.168.1.2
[section@nikita ~]$ id
uid=10000(section) gid=10000(users) grupos=10000(users)
[section@nikita ~]$ pwd
/home/section

Listo ya tenemos el usuario logueado. Lo bueno de usar
LDAP es que puedes centralizar toda la información, usuarios,
etc
en un servidor(o pueden ser varios si creas slaves).

Lo mismos con los «home’s» de los usuarios, puedes crear un
fileserver
y exportar el directorio “/home” a los demás
servidores
y tener todo la información centralizada.

Ahora por ejemplo creamos otro usuario editando el file user.ldif
ami me quedo de la siguiente manera. Editen bien el archivo con
mucho cuidado
igual si se equivocan en algo, se puede modificar:

[root@nikita openldap]# cat user.ldif
dn: uid=section2,dc=segvfault,dc=com,dc=ar
uid: section2
cn: section2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$TEDFGNB3$ogOvJKTt/CviC47q/dBon1
shadowLastChange: 14335
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10000
homeDirectory: /home/section2
gecos: section2

Lo agregamos a la base de LDAP como ya saben:

[root@nikita openldap]# ldapadd -x -D ‘cn=Manager,dc=segvfault,dc=com,dc=ar’ -W -f user.ldif
Enter LDAP Password:
adding new entry «uid=section2,dc=segvfault,dc=com,dc=ar»

y creamos el home y compiamos los files de skel, cambiamos permisos
como lo hicimos anteriormente…

Y ahora agregamos este usuario a el grupo “users

# cat group.ldiff
dn: cn=users,dc=segvfault,dc=com,dc=ar
objectClass: posixGroup
gidNumber: 10000
cn: users
memberUid: section
memberUid: section2
description: Users group

y lo mejor de todo, es la forma más fácil que podemos editar registros en LDAP
con ldapmodify, en este caso el grupo “users” de la siguiente manera;

[root@nikita openldap]# ldapmodify -x -D ‘cn=Manager,dc=segvfault,dc=com,dc=ar’ -W -f group.ldiff
Enter LDAP Password:
modifying entry «cn=users,dc=segvfault,dc=com,dc=ar»

Listo, comprobamos los datos con ldapsearch:

[root@nikita openldap]# ldapsearch -h 127.0.0.1 -x -b «dc=segvfault,dc=com,dc=ar»
……
……

Tienen que ver el nuevo usuario y en el grupo users el user agregado.
Probamos con id como siempre:

[root@nikita openldap]# id section2
uid=10001(section2) gid=10000(users) groups=10000(users)

Perfecto nos logueamos desde una maquina remota:

$ ssh -l section2 192.168.1.10
section2@192.168.1.10’s password:
Last login: Thu Feb 11 21:38:54 2010 from 192.168.1.2
id: cannot find name for group ID 10001
[section2@nikita ~]$ id
uid=10001(section2) gid=10000(users) grupos=10000(users)

Bien, ahora un mínimo de seguridad, agregar estas ACLs para
restringir el acceso a la base de datos de LDAP más que nada,
que no puedan ver los passwords de los demás usuarios (al estilo shadow)

access to attrs=userPassword
by dn=»cn=Manager,dc=segvfault,dc=com,dc=ar» write
by self write
by anonymous auth
by * none

access to dn.base=»» by * read

access to *
by dn=»cn=Manager,dc=segvfault,dc=com,dc=ar» write
by * read

Lo agregamos al archivo sldap.conf y reiniciamos el servicio ldap

[root@nikita openldap]# service ldap restart

Va salir un error como el siguiente, pero no es importante
slapd.conf: line 125: rootdn is always granted unlimited privileges.

Ahora, si hacemos un:

ldapsearch -h 127.0.0.1 -x -b «dc=segvfault,dc=com,dc=ar»

NO van a poder observar todos los password de los usuarios, sólo el de ustedes,
si se autentifican al LDAP.

ldapsearch -h 127.0.0.1 -x -b «dc=segvfault,dc=com,dc=ar» -D «uid=section2,dc=segvfault,dc=com,dc=ar» -W
———-cut ——————-
# section, segvfault.com.ar
dn: uid=section,dc=segvfault,dc=com,dc=ar
uid: section
cn: section
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowLastChange: 14335
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/section
gecos: section

# section2, segvfault.com.ar
dn: uid=section2,dc=segvfault,dc=com,dc=ar
uid: section2
cn: section2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQxJFRFREZHTkIzJG9nT3ZKS1R0L0N2aUM0N3EvZEJvbjE=
shadowLastChange: 14335
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/section2
gecos: section2

Bueno, eso es una pequeña parte de lo que se puede hacer con
LDAP con más tiempo pondré artículos como usar SAMBA con
LDAP de BACKENED para un controlador de dominios.

Explore posts in the same categories: Linux, networking, Sistema

6 comentarios en “Instalando LDAP en Centos 5.4”

  1. jorge Says:

    cuando agrego al usuario y pongo el comando ‘id user’ no me muestra nada a que se puede deber?

    • sectionn1 Says:

      Fijate si el user esta en la base del LDAP con el comando ldapsearch… si lo ves al usuario.. te falto configurar con authconfig-tui soporte para autentificaciones LDAP

  2. Edison Says:

    Gracias x la explicacion sobre ldap, pero tengo una pregunta en esa parte que dices q debemos conectarnos desde una maquina remota con el comando
    ssh -l section2 192.168.1.10
    Pero esto no se supone q estamos ingresando x ssh no mas y no tiene nada q ver con la configuracion q hicimos de ldap….
    O sea la pregunta es como pruebo si funciona ldap desde una maquina remota y si es posible hacerlo…..

    • sectionn1 Says:

      con ese comando nos estamos logueando al serivor usando un usuario que esta en la base de datos LDAP. Si vos querees hacer un ldap backend para tus clientes, tenes que configurar en cada cliente que como autentificacion uso el server ldap…esto lo podes hacer con el comando authconfig o authconfig-tui. Saludos.

  3. Edison Says:

    Por favor si hay alguna ayudita les agradeceria…


Replica a Edison Cancelar la respuesta