LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero/Simplificado de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también se considera
una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.
Un directorio es un conjunto de objetos con atributos organizados en una manera lógica y jerárquica. El ejemplo más común es el directorio telefónico, que consiste en una serie de nombres (personas u organizaciones) que están ordenados alfabéticamente, con cada nombre teniendo una dirección y un número de teléfono adjuntos. Para entender mejor, es un libro o carpeta, en la cual se escriben nombres de personas, teléfonos y direcciones, y se ordena alfabéticamente.
Crea dos máquinas virtuales en el sistema que prefieras que tengan comunicación por red entre ambas, llamémoslas servidor y cliente para que sean más claros todos los puntos.
Configurar un servidor LDAP
Instalación LDAP
Instalamos el siguiente paquete apt install slapd
Asignamos contraseña al Administrador
Para ello instalamos el paquete apt install ldap-util
el cual nos permite usar las diferentes opciones de ldap
Para ver la estructura del arbol ejecutamos lo siguiente ldapsearch -x -h localhost
podemos ver que esta vacio para ello vamos a asignar un nuevo nombre de dominio DNS y una contraseña vamos a rellenarlos de la siguiente forma dpkg-reconfigure -plow slapd
:
1º Dominio DNS: jlramirez.gonzalonazareno.org 2º Nombre organizacion: juanlu 3º Contraseña: ********** 4º Motor BD: MDB 5º Borrar datos al borrar slapd: si 6º Mover BD antigua: si 7º Permitir protocolo LDAPv2: no
Creamos una unidad organizativa
Creamos un directorio mkdir LDAP
y dentro un fichero con extension .ldif
y se llamara unidadorganizativa.ldif
dn: ou=People,dc=jlramirez,dc=gonzalonazareno,dc=org objectClass: top objectClass: organizationalUnit ou:People dn: ou=Group,dc=jlramirez,dc=gonzalonazareno,dc=org objectClass: top objectClass: organizationalUnit ou: Group
Lanzamos el fichero .ldif
root@servidorldap:/home/vagrant/LDAP# ldapadd -x -D 'cn=admin,dc=jlramirez,dc=gonzalonazareno,dc=org' -W -f unidadorganizativa.ldif Enter LDAP Password: adding new entry "ou=People,dc=jlramirez,dc=gonzalonazareno,dc=org" adding new entry "ou=Group,dc=jlramirez,dc=gonzalonazareno,dc=org"
Configuración grupos y usuarios
Creamos otro fichero .ldif
el cual se va a guardar la configuración de los grupos
Grupos
dn: cn=grupo1,ou=Group,dc=jlramirez,dc=gonzalonazareno,dc=org objectClass: top objectClass: posixGroup gidNumber: 2000 cn: grupo1
Usuarios
Procedemos ahora a agregar un usuario a «People», para ello vamos a generar una contraseña en «SSHA» con el siguiente comando:
root@servidorldap:/home/vagrant/LDAP# slappasswd New password: Re-enter new password: {SSHA}AGTUjU6fJAUUalS30Ps7NZnW7d5JOzOw
Y creamos el fichero usuario.ldif
dn: uid=usuario,ou=People,dc=jlramirez,dc=gonzalonazareno,dc=org objectClass: top objectClass: posixAccount objectClass: inetOrgPerson objectClass: person cn: usuario1 uid: usuario1 uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/users/pruebausuario loginShell: /bin/bash userPassword: {SSHA}AGTUjU6fJAUUalS30Ps7NZnW7d5JOzOw sn: apellido mail: pruebausuario@prueba.com givenName: pruebausuario
Lanzamos los fichero .ldif(Usuarios y Grupos)
Usuarios
root@servidorldap:/home/vagrant/LDAP# ldapadd -x -D "cn=admin,dc=jlramirez,dc=gonzalonazareno,dc=org" -W -f usuario.ldif Enter LDAP Password: adding new entry "uid=usuario,ou=People,dc=jlramirez,dc=gonzalonazareno,dc=org"
root@servidorldap:/home/vagrant/LDAP# ldapadd -x -D "cn=admin,dc=jlramirez,dc=gonzalonazareno,dc=org" -W -f grupos.ldif Enter LDAP Password: adding new entry "cn=grupo1,ou=Group,dc=jlramirez,dc=gonzalonazareno,dc=org"
Y podemos observar en «Apache Directory» que ya tenemos el árbol completo creado:
Instalar y configurar un servidor NFS
NFS depende de varios paquete por tanto vamos a instalarlos todos
portmap
El servicio portmap es un demonio de asignación de puertos dinámico para servicios RPC, tales como NIS y NFS. Tiene mecanismos de autenticación débiles y la habilidad de asignar un amplio rango de puertos para los servicios que controla. Por estas razones, es difícil de asegurar.
Instalamos portamap apt install portmap
NFS y sus dependencias
El Network File System (Sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales.
Instalamos nfs y sus dependencias en la maquina que va actuar como servidor apt install nfs-common nfs-kernel-server
Ahora procedemos a realizar las configuraciones necesarias para su funcionamiento:
Configuracion NFS
Lo primero sera crear una carpeta donde vamos a alojar todos los «homes» de los usuarios y asignamos los permisos y propietarios necesarios:
root@servidorldap:/home/vagrant# mkdir /home/users/ root@servidorldap:/home/vagrant# mkdir /home/users/pruebausuario root@servidorldap:/home/vagrant# chown 2001:2000 /home/users/pruebausuario
Despues editamos el fichero con la ruta para que sepa llegar a la ruta del directorio para ello modificamos el fichero /etc/exports
y añadimos la siguiente linea:
/home/users/ 192.168.100.0/24(rw,fsid=0,subtree_check)
E iniciamos el servicio /etc/init.d/nfs-kernel-server start
Ya solo nos queda exportar el sistema de archivos exportfs -av
Podremos comprobar que el servidor esta funcionando para ello ejecutamos lo siguiente rpcinfo -p
oot@servidorldap:/home/vagrant# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 52307 status 100024 1 tcp 34711 status 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 100227 3 tcp 2049 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 100227 3 udp 2049 100021 1 udp 44938 nlockmgr 100021 3 udp 44938 nlockmgr 100021 4 udp 44938 nlockmgr 100021 1 tcp 37994 nlockmgr 100021 3 tcp 37994 nlockmgr 100021 4 tcp 37994 nlockmgr 100005 1 udp 48316 mountd 100005 1 tcp 33501 mountd 100005 2 udp 46715 mountd 100005 2 tcp 40560 mountd 100005 3 udp 60158 mountd 100005 3 tcp 34461 mountd
Nos dirigimos al cliente y montamos la unidad y creamos un fichero para su comprobacion:
root@clienteldap:/home/vagrant# mount -t nfs 192.168.100.1:/home/users/pruebausuario /home/vagrant/prueba/ root@clienteldap:/home/vagrant# cd prueba/ root@clienteldap:/home/vagrant/prueba# ls -l total 0 root@clienteldap:/home/vagrant/prueba# touch prueba.txt root@clienteldap:/home/vagrant/prueba# ls -l total 0 -rw-r--r-- 1 nobody nogroup 0 Oct 24 08:28 prueba.txt root@clienteldap:/home/vagrant/prueba#
Configura PAM de cliente y servidor
Para esto vamos a utilizar libpam-ldapd
para que los usuarios del LDAP puedan hacer login en ambas máquinas utilizando nombre de usuario y contraseña.
Cliente
Instalamos los siguientes paquetes apt install libnss-ldapd libpam-ldapd nscd
Y configuramos asi:
Por ultimo modificamos el fichero /etc/ldap/ldap.conf
para que quede asi
# # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=jlramirez,dc=gonzalonazareno,dc=org URI ldap://192.168.100.1 SIZELIMIT 12 TIMELIMIT 15 DEREF never # TLS certificates (needed for GnuTLS) TLS_CACERT /etc/ssl/certs/ca-certificates.crt
Y nos logueamos login
root@clienteldap:/home/vagrant# login clienteldap login: usuario1 Password: Last login: Mon Oct 24 17:29:06 GMT 2016 on pts/0 Linux clienteldap 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. No directory, logging in with HOME=/ usuario@clienteldap:/$
Servidor
Realizamos los mismo pasos que para el Cliente | e intentamos loguearnos login
root@servidorldap:/home/vagrant# login servidorldap login: usuario1 Password: Linux servidorldap 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. usuario@servidorldap:~$
Podemos observar que si nos logueamos desde el servidor el home ya esta montado, pero si nos logueamos desde el cliente no tenemos «home»
Configura nsswitch
Con ayuda de la biblioteca libnss-ldapd
para que tanto cliente como servidor reconozcan los UIDs y GIDs de los usuarios del LDAP (ten la precaución de que estos valores no solapen con los usuarios de cada sistema)
Vamos a proceder a configurar nsswitch para que se reconozcan los UIDs yGIDs, para ello vamos a añadir ldap
:
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap gshadow: files hosts: files dns ldap networks: files ldap protocols: db files ldap services: db files ldap ethers: db files ldap rpc: db files ldap netgroup: nis ldap aliases: ldap
Si necesitaramos reconfigurar el libpam-ldapd ejecutamos un dpkg-reconfigure libpam-ldapd
:
Por ultimo montamos la carpeta creada para que el usuario tenga acceso a ella y la monte como directorio:
root@clienteldap:/home/users# mount -t nfs 192.168.100.1:/home/users/ /home/users/
Tambien podemos hacerlo de forma permanente, solo con añadir la siguiente linea en el fichero «/etc/fstab»
192.168.100.1:/home/users /home/users nfs rw 0 0
Y ahora al acceder al usuario de ldap observamos que ya tiene el directorio «home» montado en «pruebausuario».
root@clienteldap:/home/users# login clienteldap login: usuario1 Password: Last login: Mon Oct 24 17:31:31 GMT 2016 on pts/0 Linux clienteldap 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. usuario@clienteldap:~$ pwd /home/users/pruebausuario usuario@clienteldap:~$
Configura libpam-mkhomedir
Este paquete comprueba si no existe el home del usuario, sino es asi se cree al vuelo la primera vez que entre.
Añadimos la siguiente linea en etc/pam.d/common-session
al final del fichero
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Podemos observar que al iniciar sesión en el usuario creado nuevo, nos da un Permiso denegado.
Para ello nos vamos a /etc/exports
y añadimos lo siguiente no_root_squash
:
Y quedara asi:
/home/users/ 192.168.100.0/24(rw,fsid=0,subtree_check,no_root_squash)
Reiniciamos el servicio /etc/init.d/nfs-kernel-server restart
y exportamos el fichero exportfs -av
:
Por ultimo comprobamos que al iniciar sesión se crea automáticamente la carpeta:
root@clienteldap:/home/vagrant# login clienteldap login: usuario3 Password: Last login: Mon Oct 24 19:15:28 GMT 2016 on pts/0 Linux clienteldap 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Creating directory '/home/users/usuario3'. usuario3@clienteldap:~$ pwd /home/users/usuario3 usuario3@clienteldap:~$
[…] primer paso es crear el arbol de LDAP, proceso que realizamos en este post Configuracion sistema centralizado con LDAP una vez […]