• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Autenticación remota y servicios de directorio LDAP
 

Autenticación remota y servicios de directorio LDAP

on

  • 3,919 views

Autenticación remota y servicios de directorio LDAP.

Autenticación remota y servicios de directorio LDAP.
Curso "Herramientas de seguridad en GNU/Linux" Universidad de Vigo. Ourense, junio-2010

Statistics

Views

Total Views
3,919
Views on SlideShare
3,898
Embed Views
21

Actions

Likes
3
Downloads
160
Comments
0

2 Embeds 21

http://ccia.ei.uvigo.es 17
http://www.slideshare.net 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Autenticación remota y servicios de directorio LDAP Autenticación remota y servicios de directorio LDAP Presentation Transcript

    • Fco. José Ribadas PenaSara Carrera CarreraDepartamento de InformáticaUniversidade de Vigo Autenticación remota y servicios de directorio LDAP Ferramentas de seguridade en GNU/Linux Curso de Extensión Universitaria 21 de xuño de 2010
    • IndiceServicios de directorioLDAP (Lightweight Directory Access Protocol)Estructura y componentes de LDAPOpenLDAPConfiguración de OpenLDAPAutenticación con LDAPHerramientas de administraciónEjercicios LDAP 2
    • Servicios de directorio¿ Qué son los servicios de directorio? Almacenan/organizan info. de usuarios/recursos de una red Base de datos → lecturas, navegación, búsqueda avanzada ↑ lecturas ↓escrituras Ni transacciones ni esquemas de vuelta atrás Actualizaciones simplesCaracterísticas Información sobre usuarios Infraestructura compartida nombre + conjunto atributos Proporciona interfaz de acceso + autenticación Replicar información → disponibilidad y fiabilidad inconsitencias temporales servicios a nivel global vs servicios a nivel local 3
    • Servicios de directorioImplementaciones NIS (Network Information System) páginas amarillas Sun Microsystems redes de entorno UNIX sigue un modelo RPC eDirectory (NetWare Directory Services, NDS) servicio de directorio de Novell compatible con X.500 arquitecturas: Windows, NetWare, Linux administración de usuarios gestión de configuraciones y software Servidor de directorio RedHat parte del núcleo de Fedora 4
    • LDAP Lightweight Directory Access Protocol¿ Qué es LDAP ? Protocolo ligero → acceso a un servicio de directorio Basado en X.500: LDAP implementación simplificada del protocolo DAP (Directory Access Protocol) de X.500 acceso sobre pila de red TCP/IP orientado a conexión, arquitectura cliente-servidor satisfacer necesidades usuario mantiene operaciones básicas DAP: enlazar (Bind) buscar (Search) crear (Add) leer (Read) comparar (Compare) borrar (Delete) listar (List) modificar (Modify) modificar RDN (ModifyRDN)LDAP como “base de datos” Optimizado para lectura y consulta No soporta ingreso/actualización de gran cantidad de datos Ni transacción ni rollback Objetivo: organización de la información. Info. de una organización almacenada en un repositorio 5 centralizado optimizado para la consulta
    • LDAP Lightweight Directory Access ProtocolX.500 Conjunto de estándares sobre servicio de directorio dentro del modelo de referencia OSI (Open Systems Interconnection) Protocolos protocolo de acceso al directorio (DAP) protocolo de sistema de directorio protocolo de ocultación de información protocolo de gestión de enlaces de directorioUsos concretos Como libreta de direcciones compartida Autenticación de usuarios centralizada Perfiles de usuarios centralizados Accesos a equipos de una red ... 6
    • LDAP Lightweight Directory Access Protocol¿ Por qué usar LDAP? Plataforma abierta (múltiples implementaciones) Personalización de aplicaciones Servidores LDAP → fácil gestión Distribución de las tareas de administración Replicación de datos Permisos de acceso (flexibilidad, listas ACL) distintas plataformas Acceso  lugares remotos 7
    • LDAP Lightweight Directory Access Protocol¿ Cuando usar LDAP? Lecturas intensivas Cambios poco frecuentes teléfonos de empleados vs web e-commerce Sugerencias datos disponibles entre varias plataformas gran número de máquinas almacenamiento de datos  Protocolo de acceso unificado Servicio flexible para administración central de servicios  Facilidad de mantenimiento  8
    • LDAP Lightweight Directory Access ProtocolImplementaciones Active Directory (AD) Microsoft → almacen centralizado impresoras, usuarios, equipos... LDAP v.3 iPlanet netscape Oracle Internet Directory IBM SecureWay Teamware Office OpenLDAP 9
    • Estructura y componentes LDAP estructuraInformación estructurada en un árbol Modelo basado en entradas organización → estructura jerárquica /almacén de información Análogo a estructura de directorios de UNIX cada directorio LDAP es un árbol único los identificadores (DN) de todas sus entradas tienen un sufijo común (por convención deriba del nombre de dominio DNS) 10
    • Estructura y componentes LDAP componentes Distinguished Name (dn) → identificador único y global de cada entrada (≈ nodo del árbol) DN = camino hasta la raíz + RDN (relative DN) dn base → nivel superior Ejemplo: Empresa “Datanobo”Empresa DATANOBO DN base: dc=datanobo,dc=com Fusión: dc=cencrea,dc=com Contenedores → separación lógica Organizational Units (ou) ou=people, ou=groups, ou=devices 11
    • Estructura y componentes LDAP componentesEntrada = colección de atributos Tiene un tipo y un conjunto de valoresClase de objetos (ObjectClass) Definición de atributos (atributo ∈ clase de objetos) requeridos vs permitidos Esquema → reglas de diseño (≈ create table en SQL) Posibilidad de que una entrada tenga más de una clase persona → person, inetOrgPerson, organization, ... cuenta usuario → posixAccount atributos obligatorios: cn, uid, uidNumber, gidNumber atributos permitidos: userPassword, loginShell,... 12
    • Estructura y componentes LDAP componentesFormato LDIF (LDAP Data Interchange Format) Exportación/importación de datos independiente del servidor LDAP Almacenamiento en disco duro → migración entre servidores unificar tratamiento de los datos Formato de texto ASCII: dn:<nombre distinguido> objectClass: <nombre clase> <nombre_atributo>:valor <nombre_atributo>:valor número arbitrario de pares atributo-valor Ventajas copias de seguridad importar cambios 13
    • Estructura y componentes LDAP componentes Formato LDIF (cont)dn: uid=ribadas,ou=users,dc=ccia,dc=uvigo,dc=esuid: ribadasgivenName: Francisosn: Ribadas PenauserPassword:: claveaccesologinShell: /bin/bashuidNumber: 0000gidNumber: 0000homeDirectory: /home/ribadasshadowMin: -1shadowMax: 999999shadowWarning: 7shadowInactive: -1shadowExpire: -1shadowFlag: 0objectClass: topobjectClass: personobjectClass: posixAccountobjectClass: shadowAccountobjectClass: inetOrgPersoncn: Francisco Ribadas PenamodifiersName: cn=admin,ou=people,dc=ccia,dc=uvigo,dc=esobjectClass: inetOrgPerson 14
    • Estructura y componentes LDAP componentes Esquemas Definición de clases y atributos: ejemplo.schema Cada atributo: nombre, tipo, valores posibles, restricciones, ...attributetype ( 1.1.2.1.0.0 NAME ’atributo1’ DESC ’El rol de atributo 1’ SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{10} )attributetype ( 1.1.2.1.0.3 NAME ’atributo2’ DESC ’El rol de atributo 2’ EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )objectclass ( 1.1.2.0.0 NAME ’clase1’ DESC ’Descripción de clase 1’ SUP top AUXILIARY MAY ( atributo1 $ atributo2) ) 15
    • Estructura y componentes LDAP componentesAlgunos esquemas (de interés para servcios de autenticación) Dan soporte a info. sobre usuarios y grupos Reemplazan a ficheros de configuración tradicionales en Unix/Linux /etc/passwd y /etc/shadow /etc/groups /etc/hosts, etc Esquemas definidos esquemas sobre personas : person, organisationalPerson, inetOrgPerson, posixAccount, mailLocalRecpient, strongAuthenticationUser esquemas sobre grupos : groupOfUniqueNames, posixGroup, organisationalRole, roleMember esquemas sobre redes/hosts : domain, ipHost, ipNetwork, ipProtocol, ipService, ieee802Device, bootableDevice Organización típica para gestión de usuarios y grupos rama del directorio para usuarios: dn: uid=XXXX,ou=people,dc=...,dc=...,... rama del directorio para grupos: dn: gid=XXXX,ou=groups,dc=...,dc=...,... 16
    • Estructura y componentes LDAP cómo trabajaModelo cliente/servidor Información del árbol Cliente preguntas → servidor respuesta Visión transparente punteroOperaciones Directorio → interrogar y actualizar Entrada → añadir , borrar y modificar Consultar información búsqueda según criterio → filtro entradas concordantes Búsqueda por José Pérez uid=jperez,ou=empleados,dc=datanobo,dc=com 17
    • Estructura y componentes LDAP versionesLDAP v2. Histórico Interoperabilidad limitada OpenLDAP → deshabilitadoLDAP v3. Remplaza a LDAP v2. Mayores posibilidades respecto a la autenticación Protección de integridad y confidencialidad Descubrimiento de esquemas Extensibilidad 18
    • OpenLDAPImplementación de código de abiertos del protocolo LDAPDescripción del proyecto 1998, Kurt Zeilenga Version 3.3 del servidor LDAP (Universidad de Michigan) Servidor LDAP → licencia GNU descarga gratuita educación / profesional código fuente → modificaciones propiasRelease OpenLDAP Release (2.4.16) OpenLDAP Stable Release (2.4.16) OpenLDAP Test Release 19
    • OpenLDAPPaquetes DEBIAN apt-get install slpad → servidor apt-get install ldap-utils → servidor y clienteComponentes SLAPD: servidor OpenLDAP LDAP v3. control de acceso a la información mediante listas ACL varios backends de almacenamiento posibles peticiones → porciones del árbol diferentes creación de módulos frontend → comunicación con clientes módulos de tareas específicas configurable para copias/replicación (slurpd) 20
    • OpenLDAPComponentes SLURPD servicio de replicación distribución de cambios → del maestro a las réplicas reenvío automático de peticiones fallidas slapd + slurpd → archivo de texto BACKEND base de datos segundo plano LDBM, Berkeley DB, HDB, ficheros planos, ...Utilidades: de servdor: slapcat, slaptest de cliente: ldapadd, ldapsearch, ldapdelete, ldapmodify 21
    • Configuración OpenLDAPFicheros slapd. conf → servidor asignación de permisos ldap.conf → cliente /bin/chmod -v 600 /etc/ldap/slapd.confNota: desde la version 2.4 la configuración del servidor puede almacenarse tambiénen el propio directorio (como un árbol más)Definición del servidor Backend database ldbm suffix "dc=datanobo,dc=com" rootdn "cn=root,dc=datanobo,dc=com" rootpw claveacceso directory /var/lib/ldap index objectClass,uid,uidNumber,gidNumber index cn,mail,surname,givenname 22
    • Configuración OpenLDAPDefinición del servidor Esquemas include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/local.schema include /etc/openldap/schema/redhat/autofs.schema Control de acceso: ACL (access control list)access to <algo> [ by <quién> <niveldeacceso> ]+ access to dn=".*,dc=datanobo,dc=com" attr=userPassw by dn="cn=root,dc=datanobo,dc=com" write by self write by * auth 23
    • Configuración OpenLDAP Definición del servidor ACL (access control list) access to <algo> [ by <quién> <niveldeacceso> ]+access to dn=".*,dc=datanobo,dc=com" attr=mailby dn="cn=root,dc=datanobo,dc=com" writeby self writeby * read access to dn=".*,dc=datanobo,dc=com" by self write by * read<algo>: patrón de entradas sobre las que se restringe el acceso<quién>: indicación de un usuario (entrada) * todos los usuarios (incluidos anónimos y no autenticados) anonymous usuarios anónimos (no autenticados) users usuarios autenticados self la propia entrada afectada<nivel acceso>: tipo de actividad permitida (de menor a mayor): none (sin acceso), auth (acceso de autenticación), compare, search, read, write, manage 24
    • Configuración OpenLDAPinclude /etc/openldap/schema/core.schemainclude /etc/openldap/schema/cosine.schemainclude /etc/openldap/schema/inetorgperson.schemainclude /etc/openldap/schema/nis.schemainclude /etc/openldap/schema/local.schemainclude /etc/openldap/schema/redhat/autofs.schemadatabase ldbmsuffix "dc=datanobo,dc=com"rootdn "cn=root,dc=datanobo,dc=com"rootpw claveaccesodirectory /var/lib/ldapindex objectClass,uid,uidNumber,gidNumberindex cn,mail,surname,givennameaccess to dn=".*,dc=datanobo,dc=com" attr=userPasswby dn="cn=root,dc=datanobo,dc=com" writeby self writeby * authaccess to dn=".*,dc=datanobo,dc=com" attr=mailby dn="cn=root,dc=datanobo,dc=com" writeby self writeby * readaccess to dn=".*,dc=datanobo,dc=com"by self writeby * read 25
    • Configuración OpenLDAPConfiguración del lado cliente Fichero /etc/ldap/ldap.conf ubicación servidor y DN raíz host 127.0.0.1 base dc=datanobo,dc=com usuario (DN de entrada LDAP) para consultar el directorio binddn cn=user,dc=datanobo,dc=com bindpw claveacceso acceso con privilegios (DN del usuario privilegiado del directorio) rootbinddn cn=root,dc=datanobo,dc=com autenticación/acceso cifrado Port 636 # conexiones SSL ssl yes TLS_CACERT /etc/tls/CA.cert.pem 26
    • Configuración OpenLDAPDefinición del cliente Fichero /etc/ldap/ldap.conf host 127.0.0.1 base dc=datanobo,dc=com binddn cn=user,dc=datanobo,dc=com bindpw claveacceso rootbinddn cn=root,dc=datanobo,dc=com port 636 TLS_CACERT /etc/tls/CA.cert.pem 27
    • Autentificación en GNU/Linux con LDAPRequisitos del servidor Esquemas include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema 28
    • Autentificación en GNU/Linux con LDAPRequisitos del servidor Esquemas include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema top, posixAccount, shadowAccount, posixGroup 29
    • Autentificación en GNU/Linux con LDAPRequisitos del servidor Esquemas include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema top, posixAccount, shadowAccount, posixGroup dn: uid=jperez,ou=empleados,dc=datanobo,dc=com uid: jperez cn: José Pérez objectclass: posixAccount objectclass: top objectclass: shadowAccount objectclass: posixGroup userpassword: claveacceso loginshell:/bin/bash uidnumber: 1000 gidnumber: 1000 homedirectory:/home/empleados/jperez 30
    • Autentificación en GNU/Linux con LDAPRequisitos del servidor Certificado SSL → lado servidor (opcional en cliente) Recompilar soporte SSL/TLS: OpenSSL ó gnuTLS OpenSSL/gnuTLS + configuración puerto 389 correcta TSL/SSL SSL → 636: comunicación encriptada desde el principio TSL → inicialmente 389, cambio a modo seguro: 636 Certificado formato PEM red local → generación local editar slapd.confTLSCipherSuite TLS_RSA_AES_256_CBC_SHA1TLSCACertificateFile /etc/tls/CA/CA.cert.pemTLSCertificateFile /etc/tls/ldap.cert.pemTLSCertificateKeyFile /etc/tls/ldap.key.pemTLSVerifyClient never 31
    • Autentificación en GNU/Linux con LDAPRequisitos del cliente Mapeado: nº id. del usuario vs nombre servicio de nombres → /etc/nsswitch.conf Autenticación subsistema PAM → /etc/pam.dAmbos ficheros harán uso de LDAP 32
    • Herramientas de administración Herramientas en modo texto Ficheros ldif Comandos slapcat , slaptest, slappasswd (sólo en el servidor) ldapaddldapadd -x -D “cn=root,dc=datanobo,dc=com” -W -f /tmp/usuario1.ldif Ldappsearchldapsearch -b dc=datanobo,dc=com objectclass=*ldapsearch -b dc=datanobo,dc=com cn=Roberto Gómez ldapdelete ldapdelete cn=Roberto Gómez,dc=datanobo,dc=com 33
    • Herramientas de administraciónHerramientas en modo texto Comandos ldapmodifydn: uid=sgonzalez, ou=emplados ,dc=datanobo,dc=comchangetype: modifyreplace: mailmail: modifica@datanobo.com-add: titletitle: Gran Cañon-add: jpegPhotojpegPhoto: /tmp/modifica.jpeg-delete: description ldapmodify -r -f /tmp/modif_entrada 34
    • Herramientas de administraciónInterfaces gráficos GNOME → LAT(ldap administration tool) KDE → LUMA 35
    • Herramientas de administraciónInterfaces WEB phpLDAPadmin(http://thesmithfam.org/phpldapadmindemo/htdocs/index.php) LDAP-account-manager 36
    • Herramientas de administraciónInterfaces WEB gosa 37
    • Herramientas de administraciónInterfaces de programación: Perl: librería perl-ldap (http://ldap.perl.org/) Python: libería python-ldap (http://www.python-ldap.org/) Java: integrado en JNDI, LDAP Class Libraries for Java (JLDAP) etc 38
    • EjemplosInstalación básica de OpenLDAP Configuración del cliente y del servidor Ejemplos de consultas y modificaciones Uso de phpLDAPadminConfiguración PAM con LDAP 39
    • Fco. José Ribadas PenaSara Carrera CarreraDepartamento de InformáticaUniversidade de Vigo Autenticación remota y servicios de directorio OpenLDAP Ferramentas de seguridade en GNU/Linux Curso de Extensión Universitaria 21 de xuño de 2010