Práctica sobre o servizo de directorios

De MediaWiki
Ir a la navegación Ir a la búsqueda
OpenLDAP Logo.PNG

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:

configuración da conexión ldap de forumsys

Clientes

Cliente web

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

Instalación e configuración do cliente LDAP

Otros