Práctica sobre o servizo de directorios
Sumario
Introdución
Realizaremos a instalación de OpenLDAP e a súa explotación
Instalación do servidor
apt update apt install slapd ldap-utils
Se está configurado firewal, deberemos permitir o tráfico polo porto 389 (porto por defecto de ldap) e 636 (porto por defecto ldaps)
ufw allow ldap ufw allow ldaps ufw reload
Podemos comprobar que o servizo quedou levantado:
apt install net-tools (se non está instalado xa) netstat -natp | grep 389
Veremos que está levantado:
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 49250/slapd tcp 0 0 173.249.60.168:389 119.12.228.92:63108 ESTABLISHED 49250/slapd tcp6 0 0 :::389 :::* LISTEN 49250/slapd
Por defecto colle datos predefinidos da información do servidor e crea un dominio con eles:
slapcat
Queremos instalar o noso dominio coa nosa configuración e lanzaremos configurador:
dpkg-reconfigure slapd
No asistente cumplimentaremos coa seguinte información:
If you enable this option, no initial configuration or database will be created for you. Omit OpenLDAP server configuration?: No DNS Domain name: ldap.aclasedopeque.com Organization name: aclasedopeque Do you want the database to be removed when slapd is purged? yes (esto borrará la base de datos anterior). Move old database? Yes
A continuación vemos que foron engadidos os datos correctamente:
slapcat
Podemos tamén comprobar que a instalación foi exitosa de distintos xeitos. Por exemplo con ldapwhoami, que debe devolver o nome de usuario co que estamos conectados ó servidor LDAP:
ldapwhoami -H ldap:// -x
Saída: anonymous
anonymous é o resultado esperable xa que executamos ldapwhoami sin loguearnos no servidor LDAP. Isto significa que o servidor está correndo e respondendo queries
Introducir obxectos
Ímos crear dúas unidades organizativas, dous grupos e dous usuarios mediante ficheiros ldif que logo cargaremos no servidor.
Nota. Poderíase cargar todo nun fichero pero farémolo en ficheiros separados con fin pedagóxico e para evitar erros.
Eso sí, sería por orden. Si creo un usuario que pertenece a una unidad organizativa, primero crearé la unidad organizativa y luego el usuario.
Unidades organizativas (ou)
Comezaremos creando as unidades organizatias (Organizational Unit, ou) ucha e san clemente.
cd /home nano ou.ldif dn: ou=ucha,dc=ldap,dc=aclasedopeque,dc=com objectClass: top objectClass: organizationalUnit ou: ucha dn: ou=sanclemente,dc=ldap,dc=aclasedopeque,dc=com objectClass: top objectClass: organizationalUnit ou: sanclemente
top porque será un objeto que pende da raiz. Poderíamos por exemplo crear unha OU que fora xuntadegalicia, e que ucha e sanclemente penderan dela.
Cargaremos o ficheiro no sistema, indicando co comendo ldapadd as opcións para que se conecte o noso servidor ldap:
ldapadd -x -D cn=admin,dc=ldap,dc=aclasedopeque,dc=com -W -f ou.ldif
Se se producen erros indicará en que liña, e teremos que repetir o proceso. Se todo vai ben, indicará que foron engadidas as ou, e poderemos comprobalo co comando:
slapcat
Grupos
Repetiremos un proceso similar cos grupos, creando un de profesores e outro de alumnos.
nano grupo.ldif dn: cn=profesores,dc=ldap,dc=aclasedopeque,dc=com objectClass: top objectClass: posixGroup gidNumber: 2000 cn: profesores dn: cn=alumnos,dc=ldap,dc=aclasedopeque,dc=com objectClass: top objectClass: posixGroup gidNumber: 2001 cn: alumnos
A partir de 1000 úsase para usuarios locales... así que nos comezaremos a numeración por 2000.
ldapadd -x -D cn=admin,dc=ldap,dc=aclasedopeque,dc=com -W -f grupo.ldif slapcat
Usuarios
E aora crearemos dous usuarios, pepe e ana
nano usuario.ldif
dn: uid=pepe,dc=ldap,dc=aclasedopeque,dc=com
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: person
cn: pepe
uid: pepe
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/pepe
loginShell: /bin/bash
userPassword: {SSHA}7Nz4uRPFfUheAt7lZdHgPibDyl5pZle6
sn: lopez
mail: pepelopez@gmail.com
givenName: pepe
dn: cn=ana,dc=ldap,dc=aclasedopeque,dc=com
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: person
cn: ana
uid: ana
uidNumber: 2001
gidNumber: 2002
homeDirectory: /home/ana
loginShell: /bin/bash
userPassword: {SSHA}it2n4MMAxBewdrl16Gt3Aj/w1IIkCSSO
sn: carballeira
mail: anacarballeira@gmail.com
givenName: ana
Poñer os tres objectClass permítenos utilizar todos os seus atributos. POdes consultar os de posixAccount, InetOrgPerson e person
No referente o contrasinal, foi xenerado con este comando:
slappasswd
Unha opción para non ter que anotar e transcribir esa información e facer uso da redirección de linux:
slappasswd >> usuario.ldif
Esto engade na última liña a saída do comando.
Unha vez temos listo o ficheiro:
ldapadd -x -D cn=admin,dc=ldap,dc=aclasedopeque,dc=com -W -f usuario.ldif
Consultar obxectos
Podemos revisar o resultado da inserción:
ldapsearch -x -b "dc=ldap,dc=aclasedopeque,dc=com"
A saída:
# extended LDIF # # LDAPv3 # base <dc=ldap,dc=aclasedopeque,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # ldap.aclasedopeque.com dn: dc=ldap,dc=aclasedopeque,dc=com objectClass: top objectClass: dcObject objectClass: organization o: aclasedopeque.com dc: ldap # ucha, ldap.aclasedopeque.com dn: ou=ucha,dc=ldap,dc=aclasedopeque,dc=com objectClass: top objectClass: organizationalUnit ou: ucha # sanclemente, ldap.aclasedopeque.com dn: ou=sanclemente,dc=ldap,dc=aclasedopeque,dc=com ... ... mail: anacarballeira@gmail.com givenName: ana # search result search: 2 result: 0 Success # numResponses: 8 # numEntries: 7
Podemos xogar mediante liña de comandos a engadir, consultar, eliminar...
Tamén pode ser interesante conectarse a un servidor LDAP público con máis información que nos permiten "xogar" coas súas posibildades. Por exemplo:
Clientes
Cliente web
- https://www.filestash.app/ldap-test-tool.html?host=ldap%3A%2F%2Fldap.aclasedopeque.com
- https://www.filestash.app/ldap-browser.html
Cliente Windows
A descarga de LdapAdmin pódese facer no repositorio de github.
Cliente Linux
Realizamos a instalación:
apt install libnss-ldap libpam-ldap ldap-utils
No asistente:
LDAP Server Uniform Resource Identifier: ldap://IP_Servidor (no meu caso ldap://173.249.60.168/)
Distinguished name of the search base: dc=dominio,dc=com (dominio do servidor, no meu caso dc=www,dc=aclasedopeque,dc=com)
Ldap version to use: 3
Make local root Database admin: Yes
Does the LDAP database require login? No
LDAP account for root: cn=admin,dc=dominio,dc=com (no meu caso cn=admin,dc=wwww,dc=aclasedopeque,dc=com)
nano /etc/nsswitch.conf Cambiamos o da esquerda polo da dereita passwd: files systemd ---> files ldap group: files systemd ---> files ldap shadow: files ---> files ldap
Indicamos así que tamén se valide cos usuarios de dominio. Comprobamos:
getent passwd
nss_updatedb ldap (opcional?)
Facemos que se cree o directorio do usuario de xeito automático a primeira vez que se loguea:
pico /etc/pam.d/common-session/ session optional pam_mkhomedir.so skel=/etc/skel/ umask=077
Probamos a facer login cun dos usuarios:
login jose
Para poder iniciar sesión de forma gráfica:
apt install nslcd
Os datos por defecto serán xa correctos. Reiniciamos:
reboot now
E probamos a acceder mediante interfaz gráfica.
Ampliación
Referencias
Instalación e configuración do servidor LDAP
- Samba e OpenLDAP en Debian
- How to install and configure openldap server on debian
- How to install and configure openldap server and phpldapadmin on debian
- Install and setup openldap server on debian 11
- Setup openldap server with SSL/TLS on debian 10
- Install phpldapadmin on debian 10/11
- phpLDAPadmin - github
- phpldapadmin repository
- How to install and configure openldap and phpldapadmin on ubuntu 16-04 - digitalocean
- Instalar OpenLDAP en Debian Jessie y crear un directorio LDAP básico
Instalación e configuración do cliente LDAP
Otros
- LDAP for Rocket Scientists
- Exercicios de ldap
- Exercicios clientes
- Configurar LDAP en Ubuntu Server. Creación usuarios grupos ficheros ldif. ldapadd. Video de Marc Venteo
- Videotutorial con información de LDAP
- Otro videotutorial con información de LDAP
- Tarefa resolta
- cliente web
- ldap browser online
- [ldap://ldap.forumsys.com ldap público para probas]
- [ldap://ipa.demo1.freeipa.org outro ldap público para probas]
- Simple ldap test server with docker
- Ldap setup and configuration - udemy
- Tutorial por partes de LDAP