Català  

Diferencia entre revisiones de «LDAP»

De Guifi.net - Wiki Hispano

(Página creada con «'''LDAP''' (''Lightweight Directory Access Protocol'' o ''Protocolo de Acceso Ligero a Directorio'') es un protocolo a [[wikipedia:nivel de aplicación|nivel de aplicació...»)
(Sin diferencias)

Revisión de 02:55 4 dic 2013

LDAP (Lightweight Directory Access Protocol o Protocolo de Acceso Ligero a Directorio) es 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 es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) al que pueden realizarse consultas.

Habitualmente, almacena la información de login (usuaria y contraseña) y es utilizado para autenticarse, aunque también es posible almacenar otra información (datos de contacto de la usuaria, ubicación de diversos recursos de la red, permisos, certificados, etc).

En conclusión, LDAP es un protocolo de acceso unificado a un conjunto de información sobre una red.

LDAP Escucha por defecto en el puerto 389 y LDAP seguro con SSL el puerto 636. Para cambiar el puerto utiliza:

slapd -h ldap://servidor:nuevo puerto

Implementación de ejemplo

Tenemos montado un servidor ldap en estella64 (antiguo disco duro de orwell), conectado a la red, que mantiene el directorio, que es una base de datos jerárquica, modificable y consultable desde cualquier otra máquina de la red, respecto a una organización, por ejemplo un dominio de internet. Podemos Field and Technical Services LLC hacer consultas y modificaciones en el directorio, del tipo cambiar el email de la ficha de una persona (ver ejemplos).

OpenLDAP

Existen diversas implementaciones del protocolo LDAP, nosotras nos basamos en la implementación libre openLDAP.

OpenLDAP tiene su propia licencia, la OpenLDAP Public License. Es multiplataforma, aunque nosotras lo usamos sobre Debian GNU/Linux.

OpenLDAP tiene cuatro componentes principales:

  • slapd - demonio LDAP autónomo (dentro del paquete slapd).
  • slurpd - demonio de replicación de actualizaciones LDAP autónomo (dentro del paquete slapd).
  • Librerías de soporte del protocolo LDAP (dentro del paquete libldap2 y otras).
  • Utilidades, herramientas y clientes (dentro del paquete ldap-utils).

En este protocolo apuntamos hacia el servidor LDAP principalmente 2 subsistemas del cliente GNU/Linux: pam y nsswitch. Nota: otras aplicaciones pueden ser apuntadas contra LDAP como Exim, Subversion, Trac, MediaWiki, o Samba, por ejemplo.

pam es Pluggable Authentication Modules, y se encarga de librerías para autenticación de aplicaciones y servicios como login, su, passwd, etc.; la configuración de este subsistema está en la #Tabla 2. Archivos del subsistema PAM.

nsswitch es Name Service Switch y se encarga de determinar con qué ficheros autenticar datos como hosts, passwords, grupos, etc.; la configuración de este subsistema está en la #Tabla 3. Archivos del subsistema NSSwitch.

Instalación

Servidor

En Lenny - Version 2.4.11-1

  • Se instala el paquete de openLDAP de Debian
apt-get install slapd ldap-utils

en desarrollo

Das Perlscript we4re doch wesentlich schf6ner, wenn du eincafh DBI verwenden wfcrdest, statt dieses fcblen mysql-systemcalls.Um die Anzahl der Elemente eine arrays zu bekommen, reicht es fcbrigens, den array in scalarem Kontext zu behandeln, also:$count_all = @MAILADDS # reicht schon!statt des kryptischen$count_all=$#MAILADDS + 1;

Have you come across anthnig good that documents:> 1. Getting a mixed Win/Mac/Linux enviadronadment to use OpenLDAP for authenadtiadcaadtion.> 2. Helping you inteadgrate OpenLDAP with Samba for a domain controller.be it OpenLDAP or Netscape DS (Sun/Fedora/Red Hat)?

Esquemas

El árbol completo LDAP se genera a partir de archivos-esquema (en /etc/ldap/schema), que definen el árbol de clases y atributos permitidos para la organización; si a una entrada le añadimos

  • la clase InetOrgPerson, eso nos permitirá almacenar los atributos propios de esa clase, por ejemplo, el campo mail.
  • la clase posixAccount que nos permitirá añadir los campos homeDirectory, loginShell, etc.

Los esquemas que hemos utilizado para nuestra instalación están en la Tabla 1 (hay que ponerlos por ese orden, eso es importante!!):

Tabla 1. Orden de carga de esquemas para el servidor LDAP

archivo /etc/ldap/slapd.conf

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/misc.schema
include         /etc/ldap/schema/authldap.schema
include         /etc/ldap/schema/exim4.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema

el esquema exim4.schema lo cargué para hacer unas pruebas sobre el correo, pero no lo estamos usando en este momento, podría eliminarse; si hay algún problema con la carga de los esquemas (faltan ficheros, se carga en otro orden, etc), el servidor slapd no arranca ...

Clientes

instalación cliente ldap para cuentas GNU/Linux

A partir de este directorio central, ajustamos el resto de ordenadores de la red (los que van a ser clientes ldap), para que distintos subsistemas suyos (el subsistema de usuarias, o las usuarias de subsistemas samba, etc.) utilicen algunos campos del directorio del servidor para realizar acciones que normalmente harían con información local; por ejemplo, si un equipo GNU/Linux normalmente autentifica sus usuarias contra /etc/password, /etc/shadow y otros archivos locales, al convertirlo en cliente ldap ya no buscará los datos de sus usuarias en esos archivos locales, sino en algunos campos de la base de datos del servidor ldap, por ejemplo, actuará según las siguientes equivalencias:

datos de usuaria archivo sin cliente ldap campo con cliente ldap
id_usuaria /etc/password cn
shell /etc/password loginShell
directorio Home /etc/password homeDirectory
grupo /etc/groups gidNumber


Resumiendo, cuando haces login en una máquina cuyo sistema de usuarios es cliente ldap, la máquina se conecta al servidor, le pide los datos de tu ficha y te toma como usuaria local, dándote la shell que diga loginShell, colocando tus ficheros donde diga homeDirectory, etc.

Como contrapartida, por supuesto, si no existe tu ficha, o estás marcado como cuenta desactivada, o hay algún problema, te quedas sin entrar en ninguna de las máquinas que tienes como clientes ldap, hasta que arregles tu ficha ldap, o hasta que vuelvas a apuntar el sistema de usuarias a los ficheros locales; el cliente se puede configurar de las dos maneras, para que admita usuarias ldap además de las usuarias locales, o sólo una de ambas, depende de la arquitectura que buscamos.

Subsistema PAM:

  • libldap2 ........ (viene instalado); cambiar en /etc/ldap/ldap.conf) los valores BASE y URI apuntando al servidor LDAP:
BASE dc=ldap,dc=example,dc=com
URI ldap://ip_servidor_ldap
  • libpam-ldap ..... (apt): cambiar en /etc/pam_ldap.conf los valores:
base dc=ldap,dc=example,dc=com
ldap_version 3
rootbinddn cn=manager,dc=ldap,dc=example,dc=com
  • crear el fichero /etc/ldap.secret (modo 0600) con el password del manager de ldap
  • cambiar en /etc/pam.d los ficheros de PAM, según Tabla 2:
  • instalar libpam-cracklib (apt; no se configuran archivos, lo usa common-password)
Tabla 2. Archivos del subsistema PAM
  • archivo /etc/pam.d/common-account
account    required    pam_unix.so
account    sufficient    pam_ldap.so
  • archivo /etc/pam.d/common-auth
auth     sufficient     pam_unix.so
auth     sufficient     pam_ldap.so try_first_pass
auth     required       pam_env.so
auth     required       pam_securetty.so
auth     required       pam_unix_auth.so
auth     required       pam_warn.so
auth     required       pam_deny.so
  • archivo /etc/pam.d/common-password
password required    pam_cracklib.so retry=3 minlen=8 difok=4
password sufficient    pam_unix.so use_authtok md5 shadow
password sufficient    pam_ldap.so use_authtok
password required    pam_warn.so
password required    pam_deny.so

archivo /etc/pam.d/common-session

session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022
session required        pam_limits.so
session required        pam_unix.so
session optional        pam_ldap.so

Subsistema NSSwitch

  • nscd

instalado con apt, archivo de configuración en /etc/nscd.conf, mantenemos versión por defecto;

  • libnss-ldap

instalado con apt, arranca el programa de configuración y pide ip del servidor, base del dominio, version de LDAP, modo 0600; usa /etc/libnss-ldap.conf

  • libpam-dotfile

instalado con apt, contiene el programa pamtest para testear la autenticación contra diferentes servicios y usuarios

Y ahora, para convertir el sistema en cliente:

  • cambiar /etc/nsswitch.conf, para convertir el sistema en cliente ldap, según Tabla 3
  • hay que recargar el demonio de ssh (/etc/init.d/ssh reload) para que los usuarios LDAP pudieran acceder por ssh.
Tabla 3. Archivos del subsistema NSSwitch

archivo /etc/nsswitch.conf

# /etc/nsswitch.conf
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd:         compat ldap 
group:          compat ldap
shadow:         compat ldap  
hosts:          files dns ldap
networks:       files 
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       ldap nis

Administración

Servidor

Todas estas tareas de administración son modificaciones, altas, cambios, copias de seguridad del árbol ldap, etc. se pueden hacer con las ldap-utils desde linea de comandos, pero hay excelentes interfaces web libres y escritas en php para hacer todo esto muy fácil, de forma que podremos hacer cualquier modificación en datos de usuaria desde cualquier navegador de cualquier máquina de la red (activar usuarios, cambiar password,...)

Opera version: 9.00 BetaBuild: 8367Platform: Win32System: Windows XPHW: AMD Athlon 3200+ 2.2GHz; 1Gb RAMПри появлении FTFок они просто белые, потом появляются и все работает нормально.

I'm eagerly loinokg forward to moving from KDE and Kmail (Kmail was the proverbial straw ) However, I really don't want to loose maildir. So I'm hoping the pluggable store get's sorted in the next few months and then I can hopefully transition sometime after May.

Ejemplos

  • Mostrar campos description, homeDirectory y mail del registro cuyo cn=carlos (-LLL salida corta)
   # ldapsearch -x cn=carlos description homeDirectory mail -LLL
   dn: uid=carlos,ou=usuarios,dc=ldap,dc=example,dc=com
   description: Carlos González
   mail: carlos@example.com
   homeDirectory: /home/carlos
  • ver listado de usuarias
 ldapsearch -x uid
  • consulta de los uidNumber de usuario para controlar que no se están duplicando:
ldapsearch -x uidNumber -LLL|grep uidNumber|cut -f2 -d:|sort
  • búsqueda con autenticación simple en formato minicorto
ldapsearch -x cn=carlos -LLL
  • modificaciones de registros ldap basadas en un archivo de modificación
ldapmodify -D "cn=manager,dc=ldap,dc=example,dc=com" -x -W -f mail.ldif

donde el archivo mail.ldif contiene las modificaciones a realizar:

dn: uid=carlos,ou=usuarios,dc=ldap,dc=example,dc=com
changetype: modify
replace: mail
mail: carlos@example.com
  • copia y restauración de la base de datos LDAP completa
# slapcat -l todo_ldap.ldif

... modificaciones pertinentes al fichero antes de la carga ...

# slapadd -l todo_ldap.ldif


  • ejemplos de lectura de datos LDAP desde bash para su uso en shell scripts
export email=`ldapsearch -x cn=carlos mail -LLL|grep 'mail:'|cut -f2 -d' '`
  • establecer el password del usuario fgonzalez a 'passguord' (hay que poner el dn: del usuario que se modifica entero, tal como lo saca ldapsearch sin 'dn:'):
# ldappasswd -xvWD "cn=manager,dc=example,dc=com" -s passguord "uid=fgonzalez,ou=usuarios,dc=example,dc=com"
   Enter LDAP Password: (aquí te pide el del manager de ldap)
   ldap_initialize( <DEFAULT> )
   Result: Success (0)
  • si queremos que se lo pida al usuario interactivamente:
# ldappasswd -xvWD "cn=manager,dc=example,dc=com" -S "uid=fgonzalez,ou=usuarios,dc=example,dc=com"
   New password: (el nuevo de fgonzalez)
   Re-enter new password: (otra vez)
   Enter LDAP Password: (el del manager de ldap)
   ldap_initialize( <DEFAULT> )
   Result: Success (0)
  • añadir usuarios desde bash:

creamos el archivo crea_user.ldif con las siguientes líneas:

dn: uid=graso,ou=usuarios,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
givenName: Gregorio
sn: Raso
cn: graso
uid: graso
uidNumber: 10018
gidNumber: 10000
homeDirectory: /home/graso
loginShell: /bin/bash
userPassword: {CRYPT}6Ycc3R9YxCbnI
gecos: Gregorio Raso
description: Gregorio Raso
mail: graso@example.com

el valor de userPassword: lo he obtenido con:

# slappasswd -h {CRYPT} -v
New password: soygraso
Re-enter new password: soygraso
{CRYPT}6Ycc3R9YxCbnI

copiando lo que nos devuelve {CRYPT}6Ycc3R9YxCbnI y pegándolo en el campo userPassword: del archivo crea_user.ldif; y por fín añadimos el usuario con:

# ldapmodify -axvWD "cn=manager,dc=example,dc=com" -f /home/manager/crea_user.ldif
donde:
-a: añadir al árbol ldap (no es modificación)                   
-x: autenticación simple (sin SSL, etc.)
-v: verbose
-W: pídeme el password del DN con que me autentifique 
-D "dn": el dn: completo del usuario que hace la modificación o que añade 
(el manager de LDAP, generalmente)
-f fichero: fichero donde escribo las modificaciones
  • reiniciar el demonio que cachea nombres:
/etc/init.d/nscd restart
  • el $HOME de usuarias ldap lo crea el primer ssh;
  • el $HOME/Maildir/... lo crea el MTA al llegar el primer email si ya existe $HOME;
  • formato de almacenamiento de password en ldap-account-manager; se indica en
/var/lib/ldap-account-manager/config/lam.conf
pwdhash: CRYPT

de momento hacemos gestión de password desde lam, si hubiera que hacerla desde shell scripts:

  • cambios de password d usuaria desde shell scripts:
# export pas=`slappasswd -h {CRYPT}`
New password:
Re-enter new password:
# export bind='cn=superwoman,dc=example,dc=com'
# ldapmodify -xvWD $bind << Eot
dn: uid=milogin,ou=usuarios,dc=example,dc=com
changetype: modify
replace: userPassword
userPassword: $pas
Eot

Resolución de problemas habituales

El cliente de correo no funciona bien a la hora de autenticar aunque el servidor de LDAP esté funcionando

en desarrollo

Solución rápida

Reiniciar el servidor virtual donde está alojado el servidor de correo.

Solución buena

en desarrollo

Solución definitiva (el problema no vuelve a ocurrir)

en desarrollo First, thanks for the great rieevw about the unique article wizard. I have great success with the UAW as well to generate massive backlinks to my website and getting them ranked on search engine.Some update for Unique Article Wizard, they have upgraded their whole system to a more user-friendly and design-friendly interface which make it even easier to use the uaw submission.There’s even page by page videos that show you exactly what to do as well.

La verdad que PANORAMA ha sido un acteiro.Tambie9n este1 el acteiro de eliminar el tocho gris que habeda entre las opciones y las pestaf1as hacie9ndolo me1s este9tico.El futuro este1 en la tecnologeda porte1til, por lo que Firefox fallare1 ya que consume muchedsima RAM. Si encima le metes un W7 a un netbook, lo matas Pero veo en un futuro como Chrome desbancare1 a todos los browsers y sistemas operativos en unos af1os El monopolio del futuro sere1 Google, sino al tiempo

Enlaces externos

Herramientas personales