jueves, 29 de noviembre de 2012

LDAP (Openldap)






OpenLDAP es una implementación libre y de código abierto del protocolo Lightweight Directory Access Protocol (LDAP) desarrollada por el proyecto OpenLDAP.
Está liberada bajo su propia licencia OpenLDAP Public License. LDAP es un protocolo de comunicación independiente de la plataforma.
Muchas distribuciones GNU/Linux incluyen el software OpenLDAP para el soporte LDAP. Este software también corre en plataformas BSD, AIX, HP-UX, Mac OS X, Solaris, Microsoft Windows (NT y derivados, incluyendo 2000, XP, Vista), y z/OS.

OpenLDAP es un servicio de directorio que, entre otras cosas, nos permite contener los datos (logins, claves) de una serie de usuarios y realizar la autentificación en máquinas clientes a través de un único servidor OpenLDAP.

Componentes:
Básicamente, OpenLDAP posee tres componentes principales:
ü  slapd - Dominio de servidor y herramientas
ü  Bibliotecas que implementan el protocolo LDAP
ü  Programas cliente: ldapsearch, ldapadd, ldapdelete, entre otros.
Adicionalmente, el proyecto OpenLDAP es anfitrión de los sub-proyectos:
ü  JLDAP - biblioteca de clases LDAP para Java.
ü  JDBC-LDAP - controlador Java JDBC – LDAP.
ü  ldapc++ - biblioteca de clases LDAP para C++.
Algunos desarrollos son creados específicamente para facilitar la gestión de sistemas de directorio como OpenLDAP para usuarios que buscan una interfaz intuitiva, además de añadir otras herramientas y características.

Ventajas del servicio:
Hay una serie de ventajas respecto a otros sistemas de directorio que hacen que OpenLDAP sea el sistema más flexible y escalable como por ejemplo está optimizado en lectura de registros, la posibilidad de múltiples directorios independientes, la mayoría de aplicaciones y sistemas operativos disponen de soporte para LDAP, realizar criterios de búsqueda complejos, permitir la réplica de la base de datos a otro servidor.

Un ejemplio de una entrada individual LDAP
Miremos un ejemplo. Utilizaremos el registro de LDAP de Fran Smith, nuestro amigable empleado de Foobar, Inc. El formato de esta entrada es un LDIF, el formato utilizado cuando exportamos e importamos entradas del directorio LDAP.
  dn: uid=fsmith, ou=employees, dc=foobar, dc=com
  objectclass: person
  objectclass: organizationalPerson
  objectclass: inetOrgPerson
  objectclass: foobarPerson
  uid: fsmith
  givenname: Fran
  sn: Smith
  cn: Fran Smith
  cn: Frances Smith
  telephonenumber: 510-555-1234
  roomnumber: 122G
  o: Foobar, Inc.
  mailRoutingAddress: fsmith@foobar.com
  mailhost: mail.foobar.com
  userpassword: {crypt}3x1231v76T89N
  uidnumber: 1234
  gidnumber: 1200
  homedirectory: /home/fsmith
  loginshell: /usr/local/bin/bash
Para empezar, los valores de los atributos son almacenados con las mayúsculas intactas, pero las búsquedas contra ellos no distinguen mayúsculas por defecto. Ciertos atributos (como la contraseña) distinguen mayúsculas cuando se buscan. Separemos esta entrada y observemosla pieza a pieza.
  dn: uid=fsmith, ou=employees, dc=foobar, dc=com
Este es el DN completo de la entrada LDAP de Fran, incluyendo el path completo a la entrada en el árbol del directorio. LDAP (y X.500) utilizan uid para representar "ID de Usuario", no debe ser confundido con el número uid de UNIX.
  objectclass: person 
  objectclass: organizationalPerson 
  objectclass: inetOrgPerson 
  objectclass: foobarPerson
Uno puede asignar tantas clases de objeto como sean aplicables a cualquier tipo de objeto dado. La clase de objeto person requiere que los campos cn (nombre común) y sn (apellido, por sus iniciales en inglés surname). La clse de objeto person también permite otros campos opcionales, incluyendo nombre dado (givenname), número de teléfono (telephonenumber) y otros más. La clase de objeto organizationalPerson añade más opciones a los valores de person e inetOrgPerson añade aún mñas opciones a esta (incluyendo la información de correo electrónico). Finalmente foobarPerson es una clase de objeto personalizada de Foobar que añade todos los atributos del cliente que ellos desean conservar en su empresa.
  uid: fsmith 
  givenname: Fran 
  sn: Smith 
  cn: Fran Smith 
  cn: Frances Smith 
  telephonenumber: 510-555-1234 
  roomnumber: 122G 
  o: Foobar, Inc.
Como se menciono antes, uid representa el ID de Usuario. Simplemente tradúcelo en tu cabeza por "login" dondequiera que los veas. Date cuenta que hay múltiples entradas para el CN. Como se mencionó anteriormente, LDAP permite que algunos atributos tengan valores múltiples, con el número de valores sean arbitrarias. ¿ Cuando puedes querer esto ? Digamos que estás buscando en el directorio LDAP de la empresa el número de teléfono de Fran. Mientras que tu puedes conocerla como Fran (habiendola oido derramar sus tripas sobre las margaritas del almuerzo en más de una ocasión), la gente en RRHH pueden referirse a ella (algo más formalmente) como Frances. A causa de que ámbas versiones de su nombre están almacenadas, las dos búsquedas encontrarán exitosamente el número de teléfono de Fran, su dirección de correo electrónico, el número de su cubículo, y demás.
  mailRoutingAddress: fsmith@foobar.com 
  mailhost: mail.foobar.com
Como la mayoría de las empresas en Internet, Foobar utiliza Sendmail para la entrega de correo interno y su enrutamiento. Foobar almacena toda la información de enrutamiento de correo de los usuarios en LDAP, el cual es totalmente soportado por las recientes versiones de Sendmail.
  userpassword: {crypt}3x1231v76T89N 
  uidnumber: 1234 
  gidnumber: 1200 
  gecos: Frances Smith 
  homedirectory: /home/fsmith 
  loginshell: /usr/local/bin/bash
Nótese que los adminitradores de sistema de Foobar almacenan toda la información de contraseñas NIS también en LDAP. En Foobar la clase de objeto foobarPerson añade ésta capacidad. Notese que la contraseña del usuario es almacenada en el formato crypt de UNIX. El uid de UNIX es almacenado aquí como uidnumber. Tenga en cuenta, que hay una RFC completa acerca de almacenar información NIS en LDAP. Hablaré de integración con NIS en un futuro articulo.
  Replicación LDAP
Los servidores LDAP pueden ser configurados para replicar algunos o todos de sus datos, basándose en enviar o recojer la información, utilizando autentificación simple o autetificación basada en certificados.
Por ejemplo, Foobar tiene un servidor LDAP "público" corriendo en el puerto 389 de ldap.foobar.com. Este servidor es utilizado por la característica direccionamieto de correo electrónico pinpont de Communicator de Netscape, el comando "ph" de UNIX, y otras localizaciones dónde el usuario pudiera consultar un número de teléfono de un empleado o el contacto de un cliente. El servidor LDAP maestro de la empresa está ejecutandose en el mismo sistema pero, en cambio, en el puerto 1389.
Podrías no querrer que los empleados necesariamente esten buscando en el directorio para preguntar por el gerente de activos o recibir datos, no sería deseable ver las cuentas de TI (como "root") mostrandose en el directorio de la empresa. Para acomodar esas desagradables realidades, Foobar replica subárboles de directorio seleccionados desde su servidor LDAP maetroa su servidor "público". La replicación excluye los subárboles conteniendo datos que ellos desean ocultar. Para mantener las cosas actualizadas en todo momento, el servidor del directorio master se configura para hacer inmediatamente la sincronización basada en envio. Nótese que esta aproximación está diseñada por conveniencia, no por seguridad: la idea es permitir a potenciales usuarios hacer simples consultas al otro puerto LDAP si desean buscar todos los datos disponibles.
Digamos que Foobar está gestionando si informacion de contacto de clientes via LDAP, sobre una conexión de bajo ancho de banda entre Oakland y Europa. Pueden querer configurar la repliación desde ldap.foobar.com:1389 a munich-ldap.foobar.com:389 como sigue:

  periodic pull: ou=asia,ou=customers,o=sendmail.com
  periodic pull: ou=us,ou=customers,o=sendmail.com
  immediate push: ou=europe,ou=customers,o=sendmail.com
La conexión de recepción mantendrá las cosas en sincronia cada 15 minutos, lo cual probablemente podría ser bastante ajustado en este escenario. La conexión de envío garantizará que cualquier cambio hecho a la información del contacto Europeo será enviado a Munich inmediatamente. Dado este esquema de replicación, ¿ dónde podrían los usuarios conectar para acceder a sus datos ? Los usuarios en Munich simplemente podrían conectar a su servidor local. Si se estuvieran haciendo cambios a los datos, el servidor local LDAP podría referirse para esos cambios al servidor LDAP maestro, el cual podría enviar todos los cambios de nuevo el servidor local para mantenerlo en sincronia. este es uno de los tremendos beneficios para los usuarios locales: todas sus consultas LDAP (la mayoría en lectura) son hechas contra su servidor local, que es sustancialmente más rápido. Cuando es momento de hacer un cambio a su información, los usuarios finales no necesitan preocuparse acerca de la reconfiguración de su software cliente, porque los servidores de directorio LDAP manejan el intercambio de datos por ellos.
 
Securidad y control de acceos
LDAP provee de una complejo nivel de instancias de control de acceso, o ACIs. A causa de que el acceso puede ser controlado en el lado del servidor, es muchos más seguro que los metodos de seguridad que trabajan haciendo seguro a través del software cliente.


Con LDAP ACIs, puedes hacer cosas como:

  • Conceder a los usuarios la capacidad de cambiarse su número de teléfono de casa y su domicilio, mientras que se les restringe el acceso a solo lectura para otro tipo de datos (como título de trabajo o login de gerente).
  • Conceder a cualquiera en el grupo "HR-admins" (administradores de RRHH) la capacidad de modificar la información de los usuarios para los siguientes campos: gerente, título de trabajo, número ID del empleado, nombre del departamento, y número del departamento. No habrán permisos de escritura para otros campos.
  • Denegar el acceso de lectura a cualquiera que intente consultar al LDAP por la contraseña de un usuario, mientras que se seguirá permitiendo al usuario cambiar su propia contraseña.
  • Conceder permisos solo de lectura a los gerentes para los números de teléfono de casa de sus informadores directos, mientras que se deniega este privilegio a cualquier otro.
  • Conceder a cualquiera en el grupo "host-admins" crear, borrar, y editar todos los aspectos de información del hosts almacenados en LDAP.
  • A través de una página Web, permitir a la gente en "foobar-ventas" selectivamente conceder o denegarse a ellos mismos el acceso de lectura a subsets de la base de datos de contactos de cliente. Esto podría, a su vez, permitir a esos individuos descargar información de contacto de los clientes a sus ordenadores portátiles o a sus PDA. (Esto será más útil si tu herramienta de forzamiento de automatización para ventas es LDAP-izable.)
  • A través de una página Web, permitir a cualquier propietario de grupo añadir o eliminar entradas de sus grupos. Por ejemplo, esto podría permitir a los gerentes de ventas conceder o eliminar el acceso a la gente de ventas para modificar las páginas Web. Esto podría permitir a los propietarios de los alias de correo añadir o eliminar usuarios sin contactar con TI. Las listas de distribución designadas como "pública" pueden permitir que los usuarios se añadan o se eliminen ellos mismos (pero solo a ellos mismos) de o a esos alias de correo. Las restricciones pueden basarse también en direcciones IP o nombres de máquina. Por ejemplo, los campos pueden hacerse legibles solo si la dirección IP del usuario empeiza por 192.168.200.*, o si la resolución inversa del nombre de máquina del usuario por DNS se mapea a *.foobar.com.
  •  
  • Consulta de datos

    LDAP brinda un conjunto de funciones (procedimientos) para llevar a cabo solicitudes en los datos para buscar, cambiar y eliminar entradas en los directorios.
    A continuación encontrará una lista de las principales operaciones que puede realizar LDPA:
    Funcionamiento Descripción
    Abandon (Abandonar) Cancela la operación previa enviada al servidor
    Add (Agregar) Agrega una entrada en el directorio
    Bind (Enlazar) Inicia una nueva sesión en el servidor LDAP
    Compare (Comparar) Compara las entradas en un directorio según los criterios
    Delete (Eliminar) Elimina una entrada de un directorio
    Extended (Extendido) Realiza operaciones extendidas
    Rename (Cambiar nombre) Cambia el nombre de una entrada
    Search (Buscar) Busca entradas en un directorio
    Unbind (Desenlazar) Finaliza una sesión en el servidor LDAP
     
INTEGRANTES:
  • JOSE ALEXANDER     CARBAJAL VILLEDA     -   556611


  • LUIS FELIPE    MENA FUENTES    -       353610         








No hay comentarios:

Publicar un comentario