Estudio de los directorios LDAP
104
0
0
Texto completo
(2) Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ciencia de la Computación, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad.. Firma del Autor Los abajo firmantes certifican que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. Firma del Autor. Firma del Jefe de Departamento Ciencia de la Computación. Firma del Responsable de Información Científico-Técnica.
(3) i. Pensamiento Un genio se compone de dos por ciento de talento y noventa y ocho por ciento de perseverante trabajo. Ludwig van Beethoven.
(4) ii. Dedicatoria La culminación de este trabajo lleva un recuerdo muy especial. Se lo dedico a mi madre, Victoria Patricia Valenzuela, que en paz descanse. También se lo dedico a mis hermanitos, que esperaron por mucho tiempo y pacientemente a que yo llegue a casa..
(5) iii. Agradecimientos Estoy agradecido con Dios por haberme dado esta oportunidad y guiarme sobre las tormentas hasta llegar al puerto destino, sano y salvo. Les dedico esta culminación de mis esfuerzos a todos los profesores de la Facultad MFC que de una u otra forma han puesto su granito de arena para ayudar a conformar la vida profesional que yo trazaré de aquí en adelante. Muchas gracias. En especial a mi tutor, MSc. Manuel Castro Artiles, por haber confiado en mí. Por último, agradezco a la Biblioteca Nacional de Belize por haberme apoyado durante todo este tiempo..
(6) iv. Resumen La autenticación, autorización y. administración de los recursos informáticos, son. componentes críticos en un ambiente de redes computacionales seguros. Este trabajo presenta una infraestructura de directorio que facilita estos procesos. Dentro del contexto principal se da a conocer los directorios LDAP como un mecanismo de autenticación y autorización centralizado por su robustez, rendimiento, crecimiento escalar, mayor presencia a través de servicios de replicación y bajo coste de mantenimiento. Además, se trata de mantener mayor grado de compatibilidad entre los distintos sistemas Windows y Unix/Linux..
(7) v. Abstract Authentication, authorization and the administration of these two are vital components in a secure network environment that hosts various computational resources.. This paper. presents a trustworthy infrastructure in the form of a group of security mechanisms with the aim of protecting an organization from intruders/hackers that are determined to breach the established security measures. Within the context of this paper, LDAP Directories are treated as a centralized mechanism for authentication and authorization due to their good performance, sound structure, scalar growth, replication capabilities and reduced costs of upkeep. In addition, a high degree of compatibility between MS Windows and Unix/Linux systems is emphasized..
(8) vi. Tabla de Contenido. Introducción...................................................................................................... 1 Planteamiento del Problema ............................................................................................... 4 Objetivo general .................................................................................................................. 5 Los objetivos específicos son: ............................................................................................ 5 Preguntas de Investigación. ................................................................................................ 6 Justificación de la Investigación. ........................................................................................ 6 Viabilidad de la Investigación. ........................................................................................... 7. Capítulo 1: Mecanismos de Autenticación y Autorización. ......................... 8 Marco Teórico: ................................................................................................................... 9 Mecanismos de Autenticación y Autorización ............................................................... 9 Selección del Sistema operativo. .................................................................................. 11 Configurando Servidores Especializados en Ubuntu 10.04 LTS Server ................................. 11 Controlador de Dominio Secundario .................................................................................... 12. Validación con PAM y LDAP ...................................................................................... 13 DNS .............................................................................................................................. 14 Chroot – un elemento de seguridad ..................................................................................... 16. NSS ............................................................................................................................... 17 nsswitch.conf ........................................................................................................................ 17. SAMBA ........................................................................................................................ 18 Protocolo SMB/CIFS .............................................................................................................. 20 Base de Datos TBD – Archivo de Información....................................................................... 20 Propiedades de Samba.......................................................................................................... 21. Mecanismos de Seguridad y Autenticación .................................................................. 21 SSH (Secure Shell o Shell Seguro) .......................................................................................... 21. Autenticación con SSH ................................................................................................. 23 Arquitectura de SSH-2: .......................................................................................................... 23.
(9) vii SSL y TLS ................................................................................................................................ 24 SASL (Simple Authentication Security Layer) ........................................................................ 24 STARTTLS ............................................................................................................................... 25 GSSAPI (Generic Security Services API) ................................................................................. 25. Autorización.................................................................................................................. 25 Software OpenLDAP .................................................................................................... 25 Componentes de OpenLDAP ................................................................................................. 26 Interfaces de Directorio LDAP ............................................................................................... 27 Arquitectura del Daemon/Servidor....................................................................................... 28 BACKENDS ............................................................................................................................. 28 OVERLAYS .............................................................................................................................. 29 Funcionamiento de los Overlays ........................................................................................... 29. Administración de Directorio LDAP ............................................................................ 30 Servidor Apache .................................................................................................................... 30 phpLDAPadmin...................................................................................................................... 30. Capítulo 2: Directorios LDAP. ..................................................................... 32 Origen de los Directorios .................................................................................................. 33 ITU-T ............................................................................................................................ 33 La serie X.500 ............................................................................................................... 33 Protocolos del X.500/LDAP ......................................................................................... 34 Modelo de Datos del X.500 .......................................................................................... 35 Protocolo de Acceso a Directorio (DAP, Directory Access Protocol) ......................... 35 Alternativa LDAP ............................................................................................................. 36 Protocolo LDAP ........................................................................................................... 36 Vista General de LDAP ................................................................................................ 37 Directorio LDAP............................................................................................................... 37 Servicios de Directorio LDAP ...................................................................................... 37 LDAP versus NIS ......................................................................................................... 38.
(10) viii Estructura de Datos en LDAP ....................................................................................... 39 Esquemas .............................................................................................................................. 40 Clases de Objetos (Conjuntos de atributos).......................................................................... 40 Atributos ............................................................................................................................... 42 Entradas ................................................................................................................................ 44 Identificador de Objeto (OID, Object Identifier) ................................................................... 44. Capítulo 3: Instalación y Configuración del Servidor LDAP. ................... 47 Instalación y Configuración del Servidor LDAP. ............................................................. 48 Instalando slapd(8). ....................................................................................................... 48 Configuración de slapd(8). ........................................................................................... 50 Creación de un Directorio LDAP ................................................................................. 52 Conversión de Esquemas .............................................................................................. 54 Directivas de Configuración ............................................................................................. 54 cn=config ...................................................................................................................... 55 olcIdleTimeout: <entero>...................................................................................................... 55 olcLogLevel: <nivel de debugging> ....................................................................................... 55 olcReferral <URI> .................................................................................................................. 57. cn=module .................................................................................................................... 58 olcModuleLoad: <nombre de archivo> ................................................................................. 58 olcModulePath: <pathspec> ................................................................................................. 58. cn=schema .................................................................................................................... 59 Directivas específicas de los Backends ............................................................................ 59 olcBackend: <tipo> ....................................................................................................... 60 Directivas específicas de las Bases de Datos .................................................................... 60 olcDatabase: [{<índice>}] <tipo> ................................................................................ 61 olcAccess: to <que> [ by <quien> [ <nivel de acceso>] [<control>]] + ...................... 61 olcReadonly {TRUE | FALSE} .................................................................................... 62 olcRootDN: <DN>........................................................................................................ 62.
(11) ix olcRootPW: <password> .............................................................................................. 62 olcSizeLimit: <entero> ................................................................................................. 63 olcSuffix: <sufijo del dn> ............................................................................................. 63 olcSyncrepl ................................................................................................................... 63 olcTimeLimit: <entero>................................................................................................ 66 olcUpdateref: <URL> ................................................................................................... 67 Directivas de las bases de datos tipo BDB y HDB ........................................................... 67 olcDbDirectory: <Directorio> ...................................................................................... 67 olcDBCachesize: <entero> ........................................................................................... 68 olcDbCheckpoint: <KB> <minutos> ........................................................................... 68 olcDbConfig: <configuración de DB_CONFIG> ........................................................ 68 Replicación LDAP ............................................................................................................ 68 Mecanismos de Replicación ......................................................................................... 69 slurpd .................................................................................................................................... 69. Replicación Sincronizada de LDAP (LDAP Sync Replication (syncrepl)) ................. 69 Funcionamiento de syncrepl ......................................................................................... 70 Protocolo de Sincronización de Contenidos de LDAP ................................................. 70 Variantes de Replicación .............................................................................................. 73 Delta-syncrepl ....................................................................................................................... 73 N-Way Multi-Master ............................................................................................................. 74 Modo Espejo (Mirror) ........................................................................................................... 74 Modo Proxy ........................................................................................................................... 74. CONCLUSIONES ............................................................................................................ 76 RECOMENDACIONES ................................................................................................... 77 Referencias Bibliográficas ................................................................................................ 78 BIBLIOGRAFÍA .............................................................................................................. 80.
(12) INTRODUCCIÓN. 1. Introducción En los primeros tiempos de la computación, la idea predominante era que el mundo sólo necesitaba unas pocas computadoras. Parece extraño en nuestros días, pero era un postulado lógico para la época de las primeras generaciones de computadoras por el tamaño inmenso y por el costo elevado de producción y su posterior comercialización. Con el desarrollo tecnológico surgió la red, un conjunto de computadoras conectadas entre sí, ocasional o permanentemente, a través de un medio de transmisión; que permite compartir los generalmente caros recursos de hardware y software, y el intercambio de información. A partir de 1972, la Universidad de Standford se encargó de la elaboración de protocolos que permitieran la transferencia de datos entre diferentes tipos de redes de computadoras. Fue el momento en el que Bob Kahn, Vinton Cerf y un grupo de sus estudiantes desarrollaron los protocolos TCP/IP y lo implementaron en el Unix de Berkeley, el sistema operativo más utilizado en esa época en el entorno universitario. El momento fue ideal. Muchas universidades acababan de adquirir su segunda o tercera computadora y una LAN para conectarla, pero no disponían del software de red [1]. Cuando la nueva versión del Unix de Berkeley, BSD 4.2, hizo su aparición, junto con TCP/IP, los sockets y muchas utilidades de red, el paquete completo se adoptó de inmediato. TCP/IP permitía una fácil conexión a la incipiente red ARPANET, y permitió en el transcurso del tiempo el surgimiento de una red universal de computadoras interconectadas, que existe en la actualidad bajo el nombre de Internet [1]. Cuando se habla de Internet como medio de intercambio de información a escala global, es necesario mencionar los servicios que han hecho posible que esto sea una realidad. Uno de los que más éxito ha tenido es el World Wide Web o simplemente “la Web”, responsable del desarrollo actual que ha alcanzado la red de redes. Aunque, no se debe dejar de mencionar a los que surgieron desde que se comenzaron a enviar y recibir los primeros bits sobre las redes informáticas como son el correo electrónico y el Protocolo de Transferencia de Archivos o FTP; y más recientemente a la mensajería instantánea y servicios de transmisión de audio y video como el VoIP (voz sobre IP) y el streaming [2]..
(13) INTRODUCCIÓN. 2. Algunos de estos servicios pueden permitir el acceso anónimo a cualquier usuario de la red, como sucede generalmente con la Web, el FTP, y el streaming, existiendo otros como es el caso del correo electrónico o la mensajería instantánea que requieren cierta confidencialidad por tener un carácter más personal. Consecuentemente, se hace necesario que se provean mecanismos de control de acceso que permitan ciertas operaciones básicas pero necesarias, tales como: que el usuario se identifique, verificar la identidad digital de esa persona y autorizar a ese usuario verificado a acceder a los recursos que tiene permitidos. Estos procesos se denominan: 1. Identificación que es el momento en que el usuario se da a conocer en el sistema, 2. Autenticación a la verificación que realiza el sistema sobre esta identificación y 3. Autorización al proceso de decidir si se tiene permiso para acceder al sistema o servicio [3]. Antonio Villalón Huerta divide los métodos de autenticación, teniendo en cuenta el elemento usado para la verificación de la identidad, en tres grandes categorías [4]. Sistemas basados en algo poseído: Es necesario que el usuario posea una tarjeta de identidad, una tarjeta inteligente o smartcard, un dispositivo USB tipo epass token, smartcard o dongle criptográfico [4] [5].Tienen el inconveniente de requerir hardware y software especializado para efectuar el proceso de autenticación. Sistemas de identificación biométrica: Están basados en características físicas del usuario a identificar. Los más usuales son los sistemas basados en la verificación de voz, de escritura, de huellas, de patrones oculares o de la geometría de la mano. Son altamente seguros, la mayoría de los sistemas modernos no solo son capaces de identificar a la persona sino también de que se trata de una persona viva, lo que impide la realización de ataques de simulación [4]. Sin embargo, su uso se encuentra limitado a organizaciones con altos requerimientos de seguridad y suficiente presupuesto como para afrontar el costo de la implementación y mantenimiento de estos sistemas..
(14) INTRODUCCIÓN. 3. Sistemas basados en algo conocido: Consiste en el uso de una clave secreta de acceso o password, una clave criptográfica, un número de identificación personal o PIN entre otras opciones [4]. Es sin duda la más utilizada de estas técnicas, en especial el uso del par (login de usuario, contraseña). Los principales motivos de su popularidad son el bajo coste y la facilidad de implementación, en comparación con los métodos anteriormente mencionados. Ha sido común el hecho de que un usuario posea un nombre de usuario y contraseña independiente por cada servicio de red. Anteriormente, en una conferencia de seguridad informática, un experto de Microsoft declaró: “Creo que la política sobre contraseñas debería decir que ustedes deban escribir sus contraseñas en algún lugar para recordarlas posteriormente. Yo tengo 68 contraseñas diferentes. Si no se me permite escribirlas en algún lugar, ¿adivinen lo que voy a hacer? Voy a usar la misma contraseña en cada una de mis cuentas” [6]. Este es un tema controversial. En los estudios analizados se ha podido constatar que la empresa Hitachi ID Systems plantea como inconveniente el hecho de usar un usuario y contraseña por cada servicio, destacando la dificultad de recordar disímiles usuarios, contraseñas y mecanismos de autenticación frente a diferentes servicios entre otras [7]. En la actualidad, en busca de una solución a este dilema, existe la tendencia de proveer mecanismos que aseguren el uso de un usuario y contraseña común para los servicios de la red asociados a cada persona, mediante el uso de un esquema de autenticación común; o más recientemente por el empleo de Identity Management Systems o Sistemas de Administración de Identidades [8], entre los que sobresale el uso de Servicios de Directorio y en especial de LDAP. LDAP permite la integración de los servicios existentes con un solo directorio de usuarios, el cual puede ser accedido desde clientes muy diversos [9]..
(15) INTRODUCCIÓN. 4. Planteamiento del Problema Típicamente, en redes homogéneas cada aplicación manipula sus propios usuarios, cómo se autentifican y sus privilegios. Esta diversidad de sistemas crea cierta complejidad que impacta a los administradores al traer consigo un mayor trabajo en la creación, eliminación y modificación de cuentas diferentes para cada servicio, y dificulta las tareas de auditoría informática. También a los mismos usuarios al ser forzados a memorizar múltiples identificadores personales, contraseñas y procesos de autenticación. Estas situaciones incómodas se pueden solucionar mediante el uso de un sistema de autenticación y autorización centralizada capaz de ofrecer apoyo a distintos servicios, y para distintas plataformas de trabajo. El software OpenLDAP, una implementación del protocolo LDAP, ofrece una herramienta de fácil acceso que ayuda en construir, manejar y mantener un sistema integrador para solucionar los problemas anteriormente descritos..
(16) INTRODUCCIÓN. 5. Objetivo general Estudiar las estructuras y propiedades de los esquemas incluidas en el software OpenLDAP así como los esquemas de autenticación y sus interfaces.. Los objetivos específicos son: 1. Identificar los esquemas de autenticación y autorización más utilizados. 2. Describir la estructura del LDAP y en particular de sus esquemas. 3. Identificar las interfaces del software OpenLDAP y las herramientas que ofrecen. 4. Mencionar las herramientas actuales más comunes para el trabajo con directorios LDAP..
(17) INTRODUCCIÓN. 6. Preguntas de Investigación. 1. ¿Qué es el software OpenLDAP y cómo complementarlo con otras herramientas para almacenar información de autorización y autenticación de usuarios dentro de una empresa? 2. ¿Cuáles herramientas alternativas ofrecen mayor rendimiento y confiabilidad y como incorporarlas para obtener mayor utilidad en las tareas de autenticación y autorización? 3. ¿Cuáles son las ventajas de utilizar alternativas open-source para el manejo de usuarios dentro una empresa?. Justificación de la Investigación. Actualmente las redes son muy heterogéneas, encontrándonos en una misma LAN diversos sistemas operativos y aplicaciones, en particular cuando se trabaja con la mezcla de software propietario y software libre y se brindan servicios como acceso remoto a ficheros, correo electrónico y la mensajería instantánea, entre otras.. En los últimos años, ha. aumentado el interés de la comunidad cibernética en adaptar varios sistemas basados en software libre dentro de ambientes donde ya existe una infraestructura basada en Microsoft Windows. La composición de tales ambientes conlleva a un conocimiento profundo de las técnicas y habilidades para integrar dichos sistemas, con mayor énfasis en la seguridad. Afortunadamente, los sistemas basados en Linux/Debian están a la altura de los sistemas ofrecidos en MS Windows pero requieren de conocimiento bien fundamentado de cómo funcionan los procesos en los dos tipos de sistemas. Ubuntu, una versión de Linux/Debian, es la que mayor auge tiene en estos momentos por su facilidad de integración y manejo..
(18) INTRODUCCIÓN. 7. Viabilidad de la Investigación. Con el paso del tiempo, ha progresado el desarrollo de sistemas operativos de licencia GNU/Linux que ofrecen plataformas con mayor estabilidad, reducido (o nulo) coste y la disponibilidad del código fuente del software incluido para un manejo personalizado más apto a los requerimientos de las empresas. Teniendo en cuenta que se dan pasos a nivel de país en la migración hacia el software libre y la particular importancia que tiene LDAP como contenedor central y directorio flexible para la autenticación de usuarios y aplicaciones es que se propone este trabajo..
(19) CAPÍTULO I. Capítulo 1: Mecanismos de Autenticación y Autorización.. 8.
(20) CAPÍTULO I. 9. Marco Teórico: En el siguiente trabajo, se utilizó la herramienta de virtualización Oracle VirtualBox 4.1.1477440 para instalar tres sistemas operativos por separado: las primeras dos de tipo Ubuntu10.04.4-server-i386 y la tercera de tipo MS Windows XP Professional con SP3_x86. Antes de comenzar a trabajar, las dos instalaciones de Ubuntu 10.04.4 LTS Server fueron configurados para conectarse a la red local y se actualizaron el kernel (que paso de linuximage 2.6.32-38-generic a linux image 2.6.32-40.87-generic), y otros paquetes útiles desde los repositorios http://softlib.uclv.edu.cu y http://ibp.co.edu.cu. La primera instalación del sistema operativo Ubuntu 10.04.4 LTS Server [10] [11], fue configurada a ser el controlador de dominio primario (PDC, Primary Domain Controller) y maestro (proveedor) de replicación tipo Delta-Syncrepl, mientras que la segunda fue configurada a ser el controlador de dominio secundario (BDC, Backup Domain Controller) y consumidor de réplicas. La instalación de MS Windows XP Professional con SP3_x86 se utilizó para verificar que la instalación de Samba es capaz de detectar sistemas basados en MS Windows. Además, fue prudente remediar la ausencia de rsyslog, el mecanismo de Ubuntu que monitorea el sistema. sudo apt-get install sysklogd klogd. Mecanismos de Autenticación y Autorización La coexistencia entre sistemas Unix/Linux [11] con los de Microsoft Windows (MS Windows), a través de un sistema unificado de autenticación, ha sido por mucho tiempo una tarea complicada para los administradores de redes. Sin embargo, esa problemática se va resolviendo cada día y los frutos de muchos colaboradores en el tema han conducido al desarrollo de varios mecanismos de adaptación en redes heterogéneos. Por su parte, los desarrolladores de sistemas operativos basados en Unix/Linux tratan de acoplarse a servidores y dominios de MS Windows haciendo uso de los protocolos que MS.
(21) CAPÍTULO I. 10. Windows emplea para que sus clientes puedan comunicarse entre sí, tal como el protocolo SMB/CIFS [12] [13].. Fig 1.0: Base de datos TBD almacena idmap de usuarios. Como se puede ver en la fig 1.0, en el núcleo de los sistemas Unix/Linux se encuentra el servicio winbind con su daemon/servidor winbind [12] [13].que viene incluido en el paquete de Samba. Winbind es un componente de los sistemas Unix/Linux cuya utilidad es la de desenvolverse como el sistema de autenticación unificado en un dominio con límite de menos de 250 usuarios.. Para incrementar servicios de autenticación en redes de mayor membrecía, es. mejor delegar estas funciones a LDAP cuyas funciones se adaptan fácilmente a redes en crecimiento escalar. Winbind puede ser configurado para autenticar contra dominios legados asociados a Windows NT (SAM, Secure Authority Manager) o contra directorios activos de Microsoft (actuales). Samba es un conjunto de componentes nativos a sistemas Unix/Linux diseñados para proveer autenticación a sistemas de MS Windows, y servicios de archivos e impresión..
(22) CAPÍTULO I. 11. Samba permite a los servidores de Unix/Linux comportarse como un sistema de Windows Server, incluyendo la habilidad de unirse a un directorio activo de MS Windows de forma natural. Samba también ofrece soporte a servicios de dominio a sistemas NT 4 legacy (legado) e integración completa para la compartición de archivos e impresora mediante el protocolo SMB.. Selección del Sistema operativo. En este trabajo se trabaja con Ubuntu 10.04 LTS Server por varias razones importantes: Distribución segura: No instala paquetes por defecto que no necesitas. El administrador tiene control absoluto de los paquetes que necesita instalar. Además, los paquetes están basados en el sistema Debian GNU/Linux. Soporte global:. Es la versión GNU/Linux de mayor distribución y existen varios contribuidores al desarrollo y mantenimiento de este.. Fuente abierta:. El código es abierto y se presta para modificaciones personales.. Sin Coste:. El kernel y aplicaciones básicas son gratis, con la opción de adquirir algunas aplicaciones especializadas con un costo reducido.. Configurando Servidores Especializados en Ubuntu 10.04 LTS Server La tarea de autenticar clientes de sistemas Windows y Unix/Linux a través de un directorio activo primario requiere de la instalación y configuración de Samba en una máquina con sistema operativo Ubuntu 10.04 LTS Server. Este servidor debe ser configurado como el controlador de dominio primario (Primary Domain Controller) con el objetivo de manejar usuarios en sistemas disímiles. La Fig. 1.1 muestra una vista general de los componentes de software que serán instalados y configurados para obtener un controlador de dominio primario Samba..
(23) CAPÍTULO I. PAM. BIND9. Samba: smbd nmbd winbind. 12. OpenLDAP. Configurando PDC Samba Ubuntu 10.04 LTS Server. Apache. PHP. phpLDAPadmin. Fig. 1.1: Configuración de Ubuntu 10.04 LTS Server Como se puede ver en la imagen anterior, establecer un servidor de autenticación implica muchos componentes de diversas fuentes, y comprende de configuraciones aptas que garanticen un sistema estable y que logre un equilibrio entre un sistema blindado suficientemente pero no tanto para afectar la funcionalidad de ciertos servicios y rendimiento total del servidor.. Controlador de Dominio Secundario Se configura otro ordenador que funcione como el controlador de dominio secundario o de resguardo (Backup Domain Controller) con el propósito de ofrecer los servicios que ofrece un PDC en caso de que este último colapse o pierda conexión con la red..
(24) CAPÍTULO I. 13. Validación con PAM y LDAP Por defecto, durante la instalación de sistemas operativos basadas en Debian, se instala un sistema de validación de usuarios del sistema. Estos usuarios se almacenan en el archivo /etc/passwd para validar el login. De igual forma, en el directorio /etc/pam.d se encuentran todos los servicios que inicialmente se están validando a través de PAM [14]. En efecto, la instalación y configuración del servidor slapd consiste en quitar las funciones de validación de PAM y entregárselas o integrarlas al servidor slapd. Este proceso se logra con la instalación de las bibliotecas adecuadas. sudo #: apt-get install libpam-ldap sudo #: apt-get install libnss-ldap. También participa un archivo más, que es el /etc/nsswitch.conf # /etc/nsswitch.conf # Ejemplo de configuración de GNU Name Service Switch. passwd:. files ldap. group:. files ldap. shadow:. files ldap. hosts:. files dns. networks:. files. protocols:. db files. services:. db files. ethers:. db files. rpc:. db files. netgroup:. nis. Con esto, le decimos al sistema, que cuando se trate de usuarios, primero se fije en los archivos de sistema, y luego, valide mediante LDAP [15] [16]..
(25) CAPÍTULO I. 14. Configuración de Procesos de Autenticación Ubuntu 10.04 LTS Server. PAM. SSHA. WINBIND DAEMON. NSS. LDAP. BD local de idmap Fig. 1.2: Mecanismos de autenticación y el nivel de relación entre ellos. La Fig 1.2 muestra cómo se relacionan los sistemas de autenticación con el servidor winbind para ofrecer mayor seguridad en la instalación de Ubuntu 10.04 LTS Server. DNS El DNS [17] [18] provee la infraestructura a partir de la cual el sistema será identificado y actuará como el contenedor donde se instalan todos los componentes necesarios. Después de instalado, el DNS administra el servicio de internet que mapea o vincula un número IP con un nombre de dominio completamente cualificado (FQDN, Fully Qualified Domain Name). De esta forma, un DNS alivia el hecho de tener que memorizar números IP. A grandes rasgos, un servidor de resolución de nombres de dominio (DNS, Domain Name Server) cumple con dos objetivos principales: resolver nombres de clientes en una red interna (intranet) y de aquellos clientes en redes externas (internet). En este trabajo se instaló y configuró el DNS bind9 [17] [18]..
(26) CAPÍTULO I. 15. Para más información sobre instalación y configuración, ver las capítulos 6 & 7 del Ubuntu 10.04 LTS Server Guide.. El DNS bind9 puede proveer varios servicios de DNS: 1.) Servidor Cache En esta configuración bind9 encontrará la respuesta a consultas de nombres y recordará la respuesta cuando sea la misma consulta. Esto es útil en casos de conexión lenta a internet. Cuando se almacena el DNS en una cache, se reduce el consumo de ancho de banda y latencia de las consultas.. 2.) Servidor Primario Principal (Servidor Maestro) BIND9 se puede utilizar para entregar records DNS (los grupos de records se conocen como zonas) de un nombre de dominio registrado o imaginario (solamente usado en redes restringidas).. 3.) Servidor Secundario Principal (Servidor Esclavo) Un servidor DNS secundario se usa para complementar un servidor primario dándole una copia de las zonas configuradas en el servidor primario. Se recomienda utilizar servidores secundarios en empresas grandes.. Los servidores secundarios aseguran que las zonas estén. disponibles aun cuando el servidor primario no está en línea.. Por otro lado, se puede configurar BIND9 que sea un servidor cache y un servidor primario principal a la vez, un servidor cache y un servidor secundario principal a la vez, o un servidor cache. Lo único necesario es saber combinar las configuraciones de cada uno..
(27) CAPÍTULO I. 16. Chroot – un elemento de seguridad Inicialmente, los sistemas UNIX mantenían el directorio root como un punto fijo en el sistema de archivos. En las variantes modernas de UNIX, incluyendo Linux, el directorio root puede ser definido mediante procesos.. La creación de un directorio root artificial, frecuentemente conocido como jaula (chroot), puede prevenir que un proceso acceda, ejecute o modifique – posiblemente con fines dañinos – archivos fuera de la jerarquía de directorios más allá de la raíz. La herramienta o utilidad chroot permite ejecutar un proceso con un directorio root distinto de /. Chroot enjaula directorios más allá del root o raíz (/) y los procesos que intentan acceder se encuentran con el directorio root tradicional que aparece en la raíz de la jerarquía. Como el root tradicional no tiene padre se les niega acceso a procesos que intentan acceder más allá del directorio root.. Se debe configurar una jaula (chroot). apropiadamente para aumentar la seguridad del sistema. Es recomendable ejecutar el servicio de DNS en un entorno aislado o enjaulado, para que el servicio DNS no se vea comprometido en un ataque, porque esto pueda afectar al resto de los servicios disponibles o al sistema operativo. La configuración de bind9 puede hacerse con chroot para evitar la ejecución fuera del árbol virtual. Chroot es una especie de cárcel para los directorios que en ella se ubican y es muy importante controlar el acceso de salida y entrada de comandos. Sin embargo, existen comandos tales como su que son capaces de escaparse mientras el administrador está trabajando en el directorio enjaulado y eso posee un gran riesgo para todo el sistema. Para tal caso, Ubuntu provee un usuario root pero no el password para este. Se recomienda el uso de sudo en lugar de su porque sudo utiliza la cuenta de un usuario común con algunos privilegios de superusuario..
(28) CAPÍTULO I. 17. NSS Name Service Switch [10] [11] es una utilidad en sistemas operativos Unix/Linux que provee una variedad de fuentes para base de datos comunes, y además, asiste en la resolución de nombres. El objetivo es permitir que información del sistema se resuelva de varias fuentes. Por ejemplo, una computadora stand-alone puede resolver información de sistema desde una serie de archivos almacenados en el sistema de archivos. Por otro lado, un cliente de red primero intentará resolver información del sistema de archivos locales y después una base de datos NIS para resolver información de usuario o un servidor DNS para información de hostname. La interface de NSS permite que winbind [12] [13] se presente como una fuente de información de sistema cuando se está resolviendo usuarios y grupos de Unix. Winbind utiliza esta interface y la información obtenida desde un servidor de Windows que hace llamadas MSRPC y LDAP para proveer una fuente nueva de cuentas. Con el uso de llamadas estándar a bibliotecas de Unix Las bases de datos pueden incluir: 1. Archivos locales del sistema operativo (ej. /etc/passwd, /etc/group, y /etc/hosts) 2. El DNS 3. El Network Information Service (NIS) 4. LDAP, entre otros. nsswitch.conf Este archivo de configuración enumera una listado de base de datos y una o más fuentes para extraer la información. Ejemplos de fuentes: 1. files para archivos locales en el sistema 2. ldap para LDAP 3. nis para NIS.
(29) CAPÍTULO I. 18. 4. wins para Windows Internet Name Service El archive nsswitch.conf [10] [11] contiene entradas para cada servicio y consiste del nombre de una base de datos en el primer campo seguido de uno o varios fuentes de base de datos. Ejemplos: 1. passwd:. files ldap. 2. shadow:. files. 3. group:. files ldap. SAMBA Samba es software multiplataforma gratis con la implementación del protocolo de red SMB/CIFS [14] [13] [14]. Actualmente se encuentra en la fase de producción de la versión 3.6.x. Samba provee servicios de compartición de archivos e impresoras para varios clientes de Windows y puede integrarse a un dominio de Windows Server, tanto como un controlador de dominio primario (CDP) o como un miembro del dominio. Samba también puede ser partícipe de un dominio activo de Microsoft. Los dos objetivos primarios de Samba son: 1.) Permitir acceso a sistemas de archivos de Windows a usuarios de sistemas Linux 2.) Permitir acceso a sistemas de Linux, Unix y otros a clientes de Windows En el centro de samba se encuentran interfaces de red que son compatibles con los protocolos usados por Windows para compartir archivos e impresoras. Para un sistema de Windows, un sistema de Linux que corre Samba se ve exactamente como cualquier sistema de Windows que está compartiendo sistema de archivos a través de la red. Eso le permite a los clientes de Windows tomar ventaja de la velocidad, poder y capacidad de un sistema Linux. La instalación de Samba incluye software para cliente y servidor. El software para cliente permite que los usuarios se comuniquen desde sistemas Linux con otros hosts de la red de tipo SMB..
(30) CAPÍTULO I. 19. Por otro lado, el software para server provee una interface SMB [14] [13] [14] para el servidor que actuará como controlador primario de dominio. En realidad, Samba está compuesta de tres daemons/servidores – smbd, nmbd y winbindd. También existen dos servicios – smb y winbind, que controlan la inicialización de los daemons/servidores, así como su detención y otros servicios relacionados.. nmbd. El servidor de resolución de nombres NetBIOS utilizado por Linux para atar o enlazar los nombres NetBIOS con las direcciones IP hechos por las consultas SMB de Windows. nmbd entiende y da respuesta a las solicitudes hechas al servicio de nombres NetBIOS, tales como los hechos por SMB/CIFS en sistemas basadas en Windows.. Este daemon también. participa en los protocolos de navegación (browsing) que forman parte de la vista “Network Neighborhood” de Windows.. nmbd maneja todos los. protocolos basados en protocolo UDP y debe ser el primer comando de inicialización de Samba. El puerto por defecto por cual el servidor escucha tráfico NMBD es el puerto UDP 137.. El daemon/servidor nmbd es. controlado por el servicio smb. smbd. El daemon/servidor de Samba que provee servicios de compartición de archivos (file sharing) e impresoras (printing services) a clientes de Windows.. Adicionalmente, es responsable de la autenticación local de. usuarios, denegación de recursos (resource locking), y compartición de datos (data sharing) a través del protocolo SMB. smbd maneja todos los servicios de conexión basados en los protocolos TCP/IP y debe ser activado inmediatamente después de la inicialización de nmbd.. Los puertos por. defecto por cual el servidor escucha trafico SMB son los puertos 139 y 445. El daemon smbd es controlado por el servicio smb. winbind. Es un servicio de cliente para conectarse a servidores basados en Windows NT y resuelve información de usuarios y grupos en un servidor corriendo Windows NT 2000 o Windows Server 2003.. Este servicio hace que. información de usuario/grupo de Windows sea entendible por plataformas.
(31) CAPÍTULO I. 20. Unix. Esto se logra con el uso de llamadas RPC de Microsoft (Microsoft RPC), PAM, Name Service Switch (NSS). Esto permite que los usuarios de dominio de sistemas Windows NT aparezcan u operen como usuarios de Unix en ambientes Unix. Aunque el servicio winbind esta empaquetada en las distribuciones de Samba, el servicio winbind es controlado por separado del servicio smb. winbindd. winbindd es un daemon/servidor de NSS para resolver nombres de servidores NT. winbindd aumenta la capacidad de NSS para que este pueda brindar servicios aplicaciones tales como PAM, ntlm_auth, y al mismo Samba. Winbindd es útil cuando Samba es un miembro de un directorio activo, y también puede ser útil cuando para implementar un controlador de dominio de Samba (para efectuar grupos anidados y/o trust (confiabilidad) inter-dominio). El winbindd es controlado por el servicio winbind, y no requiere que el servicio smb sea iniciado para poder empezar a operar.. Samba puede ser ejecutado en la mayoría de los sistemas Unix y los parecidos a Unix (Unix-like), tales como GNU/Linux, Solaris, AIX de HP, y variantes de BSD. Samba se distribuye bajo licencia pública general de GNU (GNU General Public Licence) y aparece como un servicio estándar en casi todas las distribuciones de Linux.. Protocolo SMB/CIFS SMB (Server Message Block) [14] [15], comúnmente conocido como CIFS (Common Internet File System), es el nombre del protocolo estándar utilizado por MS Windows en el sistema de archivos de red (Network File System).. Actualmente, se encuentra en la. producción de SMB2.. Base de Datos TBD – Archivo de Información Samba almacena los archivos TBD [10] [12] [13] [15] en dos directorios..
(32) CAPÍTULO I. 21. Para saber exactamente donde están localizados los archivos con información confidencias, hacer: root# smbd –b | grep PRIVATE_DIR Para saber exactamente donde están localizados los archivos de control, hacer: root# smbd –b | grep LOCKDIR. Propiedades de Samba Samba permite la compartición de archivos e impresoras entre clientes con Windows y clientes corriendo Unix.. La implementación de Samba incluye varios servicios y. protocolos incluyendo: 1. NetBIOS sobre TCP/IP (NBT) 2. SMB 3. CIFS (una extensión de SMB) 4. DCE/RPC (más conocido como MSRPC) 5. El conjunto de protocolos asociados al Network Neighborhood 6. Un servidor WINS (también conocido NetBIOS Name Server (NBNS)). Mecanismos de Seguridad y Autenticación SSH (Secure Shell o Shell Seguro) Es un protocolo de red para la comunicación de datos segura, servicios de Shell remotos, ejecución de comandos y otros servicios de seguridad en una red. De forma general, las conexiones físicas en una red son inseguras y susceptibles a ataques. La opción más utilizada es establecer un canal seguro mediante programas en ambos lados de la comunicación que sean capaz de autenticarse entre sí para luego transmitir datos. SSH [19] [20] [21] está basado sobre el modelo cliente-servidor por lo que la mayoría de los software que implementan SSH tienen una versión para el servidor (SSH server) y otra para el cliente (SSH client)..
(33) CAPÍTULO I. 22. La especificación del protocolo cuenta con dos versiones: SSH-1(1995) y SSH-2(2006). Por razones de seguridad, el desarrollo de SSH-1[19] [20] [21] fue abandonado para darle paso a SSH-2. La implementación de SSH comúnmente usado es la desarrollada por el Proyecto OpenSSH [19] [20] [21]. En la Fig. 1.3 se muestra como Ubuntu trae incorporado y ofrece la instalación de OpenSSH durante el proceso de instalación.. Fig. 1.3 : Opción para instalar OpenSSH. No obstante, si se obvia este paso durante la instalación de Ubuntu 10.04.4 LTS Server [10] [11], se puede instalar manualmente: sudo apt-get install openssh-client sudo apt-get install openssh-server Para configurar el comportamiento de la aplicación OpenSSH server, sshd, se puede editar el archivo ~/sshd_config. nano /etc/ssh/sshd_config.
(34) CAPÍTULO I. 23. Autenticación con SSH La instalación de OpenSSH [19] [20] [21] server le permite al host conectarse con el servidor mediante el uso llaves. Esto evita las solicitudes de petición de claves cuando el cliente quiere conectarse con el servidor. Se crea una llave privada y una llave pública en el lado del cliente. Luego, se envía la llave pública hacia el servidor y se le agrega esta llave en el archivo ~/known_hosts. Cuando el cliente intenta conectarse, el servidor utiliza la llave pública para hacer las verificaciones pertinentes y luego le da acceso al cliente. Se añaden los clientes en el siguiente archivo: sudo nano /root/.ssh/known_hosts Se puede verificar la huella digital RSA (DSA) en el cliente, se puede usar el siguiente comando: sudo ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub sudo ssh-keygen -lf /etc/ssh/ssh_host_dsa_key.pub. Arquitectura de SSH-2: . Capa de transporte – maneja intercambio de llaves, autenticación de servidor. Además, establece encriptación, compresión de datos y verificación de integridad.. . Capa de autenticación de usuario – maneja autenticación de clientes y provee varios métodos de autenticación tal como password, publickey, keyboard-interactive y GSSAPI [10] [11] [14].. . Capa de conexión – define el concepto de canales seguros y garantiza que una conexión SSH pueda servir a varios canales.. . El record DNS SSHFP DNS – provee una huella dactilar de los teclados (fingerprints) en los clientes..
(35) CAPÍTULO I. 24. SSL y TLS Las especificaciones de SSL [19] [20] [21]. fueron desarrolladas por Netscape. Communications, a partir de las cuales se establecieron las especificaciones de TLS. Ambos, TLS (Transport Layer Security) y SSL (Secure Sockets Layer) son protocolos criptográficos con el propósito de proveer seguridad en la comunicación sobre el Internet. El Proyecto OpenSSL [20] implementa ambos protocolos en forma de una biblioteca de seguridad.. Tabla 1.0: Datos sobre OpenSSH y OpenSSL OpenSSH . Desarrollado por OpenSSH Project Implementa el protocolo SSH Ofrece seguridad de acceso remoto Implementa la biblioteca cryptlib de OpenSSL para soporte de TLS/SSL. OpenSSL . Desarrollado por OpenSSL Project Implementa los protocolos SSL y TLS Ofrece seguridad a través del internet. SASL (Simple Authentication Security Layer) Es una arquitectura para la autenticación y seguridad de datos en protocolos de internet. La idea básica de SASL [10] [11] [20] [21] es separar los mecanismos de autenticación de los protocolos de aplicación con el propósito de permitir que cualquier método de autenticación con soporte para SASL pueda ser utilizado por algún protocolo de aplicación que utilice SASL. Por lo general, los protocolos de aplicación que soportan SASL también ofrecen soporte TLS (Transport Layer Security) para complementar los servicios ofrecidos por SASL. Mecanismos de autenticación incluidos en SASL son EXTERNAL, ANONYMOUS, PLAIN, DIGEST-MD5 y GSSAPI entre otros.. Aplicaciones/protocolos que reconocen y soportan SASL incluyen LDAP, IMAP, SMTP, POP, entre otros..
(36) CAPÍTULO I. 25. STARTTLS STARTTLS [10] [11] [20] [21]. es una extensión de los protocolos incluidos en el. mecanismo de autenticación PLAIN (ejemplo telnet), donde se encripta la conexión de texto plano con TLS/SSL. La autenticación simple/básica no es segura porque envía las claves (passwords) a través de la red codificados en base64, un algoritmo que proporciona poca protección.. Estos passwords se pueden capturar con el uso de un sniffer y. desencriptar con mucha facilidad. SASL es suficiente si se desea identificar usuarios dentro una red segura (intranet). De lo contrario, si se desea autenticar usuarios a través del internet, es recomendable utilizar SSL.. GSSAPI (Generic Security Services API) Como su nombre indica, GSSAPI [10] [11] [20] [21] [22]. es una API para servicios de. seguridad genéricos encargado de canalizar los servicios de seguridad hacia los programas que lo soliciten. En esencia, GSSAPI no provee ningún tipo de seguridad sino que trata de mantener claridad entre varios servicios de seguridad que ofrecen servicios similares, pero que son incompatibles entre sí.. Autorización Después de la autenticación [10] [11] [22], el próximo paso es determinar los recursos a los cuales un usuario tiene acceso, y los derechos de acceso a esos recursos. Hoy día, se habla del casamiento entre la autenticación y autorización [10] [11] [22], porque no existen mecanismos de autorización capaces de brindarlo como un elemento aparte, sino que constituye un módulo importante dentro de los mecanismos de autenticación.. Software OpenLDAP El software OpenLDAP [15] [16] [23] [24] [25], es una implementación del protocolo LDAP. Este paquete posee un sistema completo para la creación y manipulación de múltiples facetas de los directorios LDAP..
(37) CAPÍTULO I. 26. Componentes de OpenLDAP El OpenLDAP Software tiene tres componentes principales: 1.- slapd que consiste del stand-alone LDAP daemon, módulos asociados y herramientas (ldap tools) 2.- Bibliotecas que implementan el protocolo LDAP y las reglas básicas de codificación (BER por siglas en inglés) definidas en formato ASN.1 [15] [16]. 3.-. Software cliente donde se ejecutan los comandos básicos como ldapsearch, ldapadd,. ldapdelete, etc.. Fig. 1.4: Arquitectura del software OpenLDAP La Fig 1.4 muestra los componentes en el interior del software OpenLDAP. Cuando los usuarios hacen una búsqueda (ldapsearch) u otra operación, esta es captada por los módulos asociados en el interior del servidor SLAPD, el cual hace las búsquedas para el usuario y entrega los resultados..
(38) CAPÍTULO I. 27. Interfaces de Directorio LDAP Un directorio LDAP es una caja negra que no permite acceso directo a los usuarios. Cuenta con un conjunto de protocolos y agentes que procesan las solicitudes y devuelven el resultado. Los software de clientes (ejemplo ldapsearch) son capturados por los agentes de usuarios del directorio (DUA, Directory User Agents) [15] [16], junto con los parámetros indicados. Mediante el protocolo de acceso del directorio, se hace la conexión con el directorio a través de un punto de acceso. Luego, la solicitud es capturada por un agente de sistema del directorio (DSA, Directory System Agent) [15] [16], que es el que se encarga de hacer las búsquedas u otras operaciones para el usuario. Los DSAs son altamente transaccionales, aunque por lo general, el servicio de directorio no lo sea. Se comunican mediante los protocolos de sistema del directorio (DSP, Directory System Protocol) y de manejo de operaciones de autenticación dentro del directorio (DOP, Directory Operational Binding Management Protocol) [15] [16]. Ver Protocolos del X.500. Fig. 1.5: Interacción de usuario con directorio LDAP La Fig 1.5 muestra como es capturado el comando de un usuario por un DUA para luego llevar a cabo la operación dentro del directorio. El protocolo DAP hace los enlaces entre los DUA‟s y los DSA‟s correspondientes, estos últimos son los que realmente hacen las búsquedas relevantes dentro del directorio..
(39) CAPÍTULO I. 28. En la Fig 1.6 se puede apreciar como los DSA‟s se identifican entre sí mediante el protocolo DOP, y como se mantienen en orden mediante el protocolo DSP.. Fig. 1.6: Interacción entre los DSAs Arquitectura del Daemon/Servidor El daemon slapd está dividido en tres componentes: FRONTEND [15]:. maneja acceso a la red y se encarga de procesar los protocolos. BACKEND [15]:. maneja el almacenamiento de datos. OVERLAY [15]: código situado entre el frontend y backend con el propósito de aumentar la funcionalidad de las BD y para implementar los plugins (SLAPI) BACKENDS Tabla 1.1: OpenLDAP contiene varios backends distribuidas en tres categorías Data Storage. almacenan datos (back-bdb, back-hdb, back-ldif, back-ndb). Proxy. actúan como gateways hacia otros sistemas de almacenamiento de datos (back-ldap, back-meta, back-passwd, back-relay, back-SQL ). Dinámico. generan y modifican datos del esquema al instante (back-config, back-dnssrv, back-monitor, back-null, back-Perl, backshell, back-sock).
(40) CAPÍTULO I. 29. OVERLAYS Normalmente, las consultas LDAP son recibidas por el frontend quien se encarga de decodificar y enviarlas hacia el backend para ser procesadas. Cuando el backend termina, envía el resultado hacia el frontend quien entrega el resultado al cliente LDAP. Un overlay es código insertado entre el frontend y el backend. Es capaz de interceptar consultas del frontend y activar acciones en ellas antes que el backend las reciba. Los overlays tienen acceso completo a los API‟s internos del slapd. A continuación en la Fig.1.7 se muestra la participación de los overlays.. Frontend 1. 3. Overlay1 Overlay2 .... 4. 2. Backend. Fig. 1.7: Intervenciones de los overlays Funcionamiento de los Overlays 1. Las consultas hechas al frontend pasan por el primer overlay. 2. El primer overlay pasa las consultas hacia el siguiente overlay hasta llegar al backend destino. 3. El backend dirige los resultados del primer overlay a través de los overlays hasta llegar al último. 4. Por último, los resultados son enviados hacia el frontend..
(41) CAPÍTULO I. 30. Administración de Directorio LDAP Existen varias herramientas para la visualización, administración y mantenimiento de un directorio LDAP, entre los más destacados son phpLDAPadmin [15] [16] [26] LAM, JXplorer y YaST. Se selecciona phpLDAPadmin por su simplicidad de manejo y por las herramientas potentes de visualización del directorio LDAP. Servidor Apache El servidor apache es esencial en un ambiente donde se brindan servicios de web o que haya sistemas que dependan de gestiones web. Instalando servidor apache [10] [11] [25] sudo apt-get install apache. phpLDAPadmin De suma importancia resulta el uso de un navegador LDAP (LDAP browser) para modificar y examinar el progreso de elaboración de un directorio LDAP. La importancia nace de la necesidad de poder visualizar gráficamente los contenidos del directorio LDAP. Un navegador LDAP es un cliente LDAP especializado que permite la exploración de los contenidos del directorio LDAP.. Existen varios navegadores LDAP creados bajo la. titulación fuente abierta (Open Source), entre ellos YaST, JXplorer, LAM, y phpLDAPadmin. phpLDAPadmin es una interface web escrita en el lenguaje PHP para la administración de servidores LDAP.. phpLDAPadmin provee una interfaz web para. administrar información en LDAP, siendo sus fuertes el visualizador del árbol jerárquico y sus funciones avanzadas de búsqueda. Esta herramienta ha comprobado ser muy útil ya que provee las vistas simplificadas del directorio, y posee todas las herramientas de usuario para manejar del directorio. La instalación de phpLDAPadmin es fácil y consta de pequeños arreglos en el archivo /etc/phpldapadmin/config.php.
(42) CAPÍTULO I. Para instalar: sudo apt-get install phpldapadmin Luego, ir al archivo y localizar, y modificar las siguientes líneas: nano /etc/phpldapadmin/config.php …… $servers = new Datastore (); …… /* A convenient name that will appear in the tree viewer and throughout phpLDAPadmin to identify this LDAP server to users.*/ $servers->setValue(„server‟,‟name‟,‟Belmopan PDC LDAP Server‟); …… ……. /*Array of base DNs of your LDAP server. Leave this blank to have phpLDAPadmin Auto-detect it for you.*/ $servers->setValue(„server‟,‟base‟,array(„dc=belmopan,dc=com‟));. 31.
(43) CAPÍTULO II. Capítulo 2: Directorios LDAP.. 32.
(44) CAPÍTULO II. 33. Origen de los Directorios ITU-T El sector de estandarización en las telecomunicaciones mejor conocida como ITU-T (o ITU Telecommunication Standarization Sector) [15] [16] [26] es uno de las tres divisiones de la Unión Internacional de Telecomunicaciones con el objetivo de coordinar estándares en las telecomunicaciones. La misión primaria de la ITU-T es la producción de estándares que cubran todos los campos de las telecomunicaciones mundiales de manera eficiente y a tiempo.. Los. documentos publicados con las especificaciones de protocolos de telecomunicaciones y ordenadores son conocidos como recomendaciones ITU-T (ITU-T Recommendations).. La serie X.500 X.500 [10] [15] [16] es un conjunto de estándares con el propósito de mantener servicios de directorios electrónicos dentro entornos de telecomunicaciones. Fue desarrollado por la Unión Internacional de Telecomunicaciones (ITU-T antiguamente conocida como CCITT) y aprobado en 1988. Juntos desarrollaron servicios de directorio para suporte de los requerimientos de X.400 [10] [15] [16] que entonces servía para el intercambio de correo electrónico y búsqueda de nombres. La Organización Internacional de Estándares (ISO, International Standardizations Organization) participo muy de cerca en la ampliación de los estándares y logro incorporarlos dentro del conjunto de los protocolos Open Systems Interconnection (OSI). X.500 fue inicialmente concebido como un servicio de directorio global y se esperaba que almacenara millones de entradas, manejados por miles de. agentes diferentes.. Esto. conllevo a promover un modelo de servicios basado en la cooperación de varios servidores o Agentes de Sistemas de Directorio, ASD (DSA, Directory System Agents). Cada ASD puede obtener datos de uno o varios arcos del Árbol de Información del Directorio, AID.
(45) CAPÍTULO II. 34. (DIT, Directory Information Tree) y también tiene el “conocimiento” que le permite redirigir consultas de información no-local hacia el lugar apropiado. Para dotar el sistema de alto rendimiento y eficiencia se eliminó soporte a la consistencia de datos absolutos, que a su vez, permitió hacer réplicas de los datos para tolerar el volumen de consultas, que muchas veces supera el número de actualizaciones. A grandes rasgos, X.500 fue creada para definir la estructura de directorios globales pero resultó ser un proyecto muy ambicioso a cumplir. X.500 resulta ser muy complejo; las empresas que desean modelar un servicio solo incorporan ciertas porciones del estándar.. Protocolos del X.500/LDAP . DAP (Directory Access Protocol) – Garantiza la comunicación entre un agente de usuario (DUA, Directory User Agent) y un agente de sistema (DSA, Directory System Agent) a través de un punto de acceso (Directory Access Point).. . DSP (Directory System Protocol) – Mantiene la cooperación dentro un directorio entre los DSA superiores y los DSA inferiores, para dar respuesta a solicitudes de usuarios, utilizando encadenamientos.. . DISP (Directory Information Shadowing Protocol) – Su función principal es garantizar la replicación de información entre un consumidor y un proveedor.. . DOP (Directory Operational Bindings Management Protocol) – Establece relaciones entre DSAs y cómo van a operar para intercambiar información en caso de recibir solicitudes de usuarios..
(46) CAPÍTULO II. 35. Modelo de Datos del X.500 El concepto primario del X.500 es que hay un único Árbol de Información del Directorio (DIT, Directory Information Tree)[15] [16], una organización jerárquica de entradas distribuidas a través de uno o más servidores llamados Agentes de Sistemas de Directorios (DSA, Directory System Agents). Una entrada consiste de un conjunto de atributos, donde cada atributo tiene un o más valores. Cada entrada tiene un Nombre Distinguido (DN, Distinguished Name) único, formado de la combinación entre Nombre Distinguido Relativo (RDN, Relative Distinguished Name), uno o más atributos de la entrada y los RDNs de cada nodo superior hasta llegar a la raíz del DIT. LDAP implementa un modelo de datos muy similar a la de X.500.. Protocolo de Acceso a Directorio (DAP, Directory Access Protocol) El DAP es un estándar de redes de computadoras promulgado en 1988 por la Unión Internacional de Telecomunicaciones (ITU-T, por sus siglas en ingles) y la Organización Internacional de Estándares (ISO, por sus siglas en ingles) para acceder a un servicio de directorio X.500. La intención inicial fue que se usara por ordenadores clientes, pero fracasó por el hecho de que había pocas implementaciones completas de la pila OSI que corrían sobre hardware y sistemas operativos típicos de ese tiempo. Las operaciones básicas del DAP: Bind, Read, List, Search, Compare, Modify, Add, Delete y ModifyRDN fueron adaptados en los Servicios Novell para Directorio (NDS, por sus siglas en ingles) y para el Internet en el Protocolo ligero para Acceso a Directorios (LDAP, por sus siglas en ingles). El Protocolo de Acceso a Directorios está especificado en los documentos de X.511..
(47) CAPÍTULO II. 36. Alternativa LDAP El hecho que en su tiempo no existiese el auge esperado de productos que implementen protocolos que utilizan la pila OSI[15]. [16]. obligó a pensar en alternativas del DAP que. permitiesen a clientes Internet acceder el directorio X.500 utilizando la pila de red TCP/IP. En la Fig. 2.0 se muestra la alternativa del DAP, más conocida hoy día como el protocolo LDAP (Lightweight Directory Access Protocol).. Fig. 2.0: Alternativa LDAP de las especificaciones del X.500. Protocolo LDAP LDAP es un protocolo derivado de los estándares X.500/ISO9594 con el propósito de actuar como un protocolo simplificado o alternativo para que ordenadores pequeños accedan directorios X.500. Comúnmente se menciona la combinación de términos “Directorio LDAP” en referencia a un servicio de directorio que es accedido mediante el protocolo LDAP..
(48) CAPÍTULO II. 37. En esencia, un servidor LDAP es un ASD y se comporta bajo las mismas reglas, no obstante, LDAP todavía no tiene soporte adecuado para custodiar servicios distribuidos en redes muy grandes. Muchas implementaciones de LDAP están confinadas a operar dentro límites organizacionales. X.500 y LDAP tienen muchas similitudes con DNS (DNS, Domain Name Service) en cuanto a los modelos de datos y servicios, pero los sistemas de directorios son capaces de operaciones más complejas.. Vista General de LDAP Todo en LDAP es jerárquico, lo que implica que las clases de objetos y atributos se distribuyen en formal de árbol. Los esquemas proveen un paquete donde se agrupan las clases de objetos y atributos de acuerdo a la relación que hay entre ellos.. Directorio LDAP En la computación, un directorio es un tipo de base de datos que consta de entradas e información descriptiva acerca de cada entrada. Un directorio LDAP es confeccionado mediante un sistema de software que tiene soporte para el protocolo LDAP, y que además implementa una serie de herramientas de cliente.. Servicios de Directorio LDAP Un servicio de directorio es la aplicación que almacena, organiza y provee acceso a la información de un directorio. En la ingeniería de software, un directorio es un mapeo entre nombres y valores. El servicio permite la búsqueda de valores dado un nombre de igual manera que en un diccionario. El alcance de un directorio puede ser corto capaz de soportar un número pequeño de tipos de nodos y tipos de datos, o puede ser bastante amplio y capaz de soportar un número extendido de tipos..
(49) CAPÍTULO II. 38. En un directorio telefónico, los nodos son nombres y los ítems de datos son los números telefónicos. En un directorio activo de dominio, los nodos son nombres de dominio y los tipos de datos números IP. Por otro lado, el directorio utilizado por sistemas operativos de red, los nodos representan recursos que son manejados por sistema operativo, incluyendo usuarios, computadoras, impresoras y otros recursos compartidos. Un servicio de directorio simple tal como Name Service Switch (NSS, por sus siglas en inglés).. Servicio de Directorio LDAP. Protocolo LDAPv3 Conjunto de protocolos que definen forma de acceso al directorio. Directorio LDAP Basado en X.500 (Conocido como X.500-Lite). Fig. 2.1: Servicio de un Directorio LDAP. En la Fig.2.1 se muestra a grandes rasgos el uso del protocolo LDAP para crear un directorio LDAP, con el propósito de conformar un servicio de directorio LDAP.. LDAP versus NIS Los administradores de sistemas Unix utilizan NIS (Network Information Service) [14],. [10] [11]. para la resolución de nombres y distribución de información sobre una red. Los datos. de configuración contenidos en group, hosts, mail, netgroup, networks, passwd, printcap, protocolos, rpc y servicios en el directorio /etc son distribuidos a los clientes a través de la red. Estos archivos se pueden controlar fácilmente porque son archivos de texto simples..
(50) CAPÍTULO II. 39. Sin embargo, el manejo de mayor cantidad de datos se convierte difícil por la falta de una estructura adecuada. NIS fue diseñado solamente para plataformas de Unix y no es apto para administrar datos centralizados en una red heterogénea.. Estructura de Datos en LDAP Un directorio LDAP almacena información en una estructura de árbol similar a la estructura DIT de X.500. Los nodos del árbol son entradas del directorio y cada entrada contiene información en pares (atributo: valor). Cada nodo en el DIT tiene un nombre relativo distinguido (Relative Distinguished Name) [10] [11] [17] [18]. que es único entre los nodos hermanos y tiene un nombre global único. conocido como nombre distinguido (Distinguished Name) que consiste en la combinación del nombre distinguido más los nombres de todos los nodos superiores hasta llegar a la raíz. Los esquemas, objectClasses y atributos están interrelacionados. Cuando se crea una entrada en un DIT, los datos de sus contenidos se almacenan en los atributos, que están agrupados en clases de objetos (objectclass), y que están empaquetados en esquemas. La complejidad e influencia de LDAP se deriva del hecho que existen muchos atributos y muchas clases de objetos, liberalmente esparcidos en esquemas. Muchas aplicaciones traen consigo sus propios esquemas lo que permite adaptarlas a un directorio LDAP mientras que OpenLDAP propone algunos de los más conocidos: tal como inetorgperson, nis, cosine y core, donde inetorgperson (identidad de una persona en internet) utiliza clases de objetos de core, cosine y nis. En muchos casos, el administrador del directorio LDAP..
(51) CAPÍTULO II. 40. Esquemas Consta de unidades de empaquetamiento para atributos y clases de objetos. El servidor LDAP reconoce todas las clases de objetos y atributos de los esquemas que se le añadieron. Además, los atributos definidos en un esquema pueden ser utilizados por otras clases de objetos definidos en otros esquemas.. Clases de Objetos (Conjuntos de atributos) Son definidos mediante la notación ANS.1 (Abstract Syntax Notation One) y se hallan dentro de esquemas, organizadas en forma jerárquica lo que indica que clases inferiores heredan propiedades de los nodos o clases superiores.. Las clases de objetos pueden ser: a.) STRUCTURAL – utilizados para crear entradas (objetos con datos) b.) AUXILARY – pueden ser añadidos en las entradas c.) ABSTRACT – un nodo nulo utilizado muchas veces para indicar el nodo raíz. La clase de objeto para ABSTRACT más común es top. Si una clase de objeto (objectClass) forma parte de una jerarquía, debe ser del mismo tipo (STRUCTURAL o AUXILIARY) que los nodos superiores a él. Las únicas excepciones ocurren cuando el nodo superior es de tipo ABSTRACT. Luego de haber declarado o incorporado una clase de objeto, se le pueden añadir atributos, siendo así, una especie de contenedor de atributos. Los atributos en una clase de objetos pueden ser obligatorios (MUST) u opcionales (MAY)..
Figure
+7
Outline
Documento similar