LDAP
De Guifi.net - Wiki Hispano
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
Contenido
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
ymail
del registro cuyocn=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