Autenticación remota y servicios de directorio. LDAP y Kerberos

5,570 views

Published on

Curso de extensión: Ferramentas de Seguridade en GNU/Linux
Autenticación remota y servicios de directorio. LDAP y Kerberos

Published in: Technology

Autenticación remota y servicios de directorio. LDAP y Kerberos

  1. 1. 24 de xuño de 2008 Ferramentas de seguridade en GNU/Linux Curso de Extensión Universitaria Sara Carrera Carrera sccarrera@uvigo.es Departamento de Informática Universidade de Vigo Autenticación remota y servicios de  directorio. LDAP y Kerberos
  2. 2. 2 Indice Servicios de directorio LDAP (Lightweight Directory Access Protocol) Estructura y componentes de LDAP OpenLDAP Configuración de OpenLDAP Autenticación con LDAP Herramientas de administración Ejercicios LDAP Introducción a Kerberos
  3. 3. 3 Servicios de directorio ¿ Qué son los servicios de directorio? Base de datos → lecturas, navegación, búsqueda avanzada ↑ lecturas  ↓escrituras Ni transacciones ni esquemas de vuelta atrás Actualizaciones simples Características Información sobre usuarios Infraestructura compartida nombre­conjunto atributo Replicar información → disponibilidad y fiabilidad inconsitencias temporales servicios a nivel global vs servicios a nivel local
  4. 4. 4 Servicios de directorio Implementaciones NIS páginas amarillas sun Microsystems redes de entorno UNIX eDirectory servicio de directorio de Novell arquitecturas: Windows, NetWare, Linux administración de usuarios gestión de configuraciones y software Servidor de directorio RedHat parte del núcleo de Fedora
  5. 5. 5 LDAP Lightweight Directory Access Protocol ¿ Qué es LDAP ? Protocolo ligero → servicio de directorio Basado en X.500 Orientado a conexión LDAP como base de datos Optimizado para lectura y consulta No soporta ingreso de gran cantidad de datos Ni transacción ni rollback Organización de la información → DNS Información almacenada en un directorio
  6. 6. 6 X.500 Conjunto de estándares sobre servicio de directorio de OSI 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 directorio Usos concretos Como libreta de direcciones compartida Autenticación de usuarios centralizada Perfiles de usuarios centralizados Accesos a equipos de una red ... LDAP Lightweight Directory Access Protocol
  7. 7. 7 ¿ Por qué usar LDAP? Plataforma Personalización de aplicaciones Servidores → fácil gestión Distribución de administración Replicación de datos Permisos de acceso Acceso LDAP Lightweight Directory Access Protocol  distintas plataformas  lugares remotos
  8. 8. 8 ¿ 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 LDAP Lightweight Directory Access Protocol  Protocolo de acceso unificado  Servicio flexible  Facilidad de mantenimiento
  9. 9. 9 Implementaciones Active Directory Microsoft → almacen centralizado Impresoras, usuarios, equipos... LDAP v.3 iPlanet netscape Oracle Internet Directory IBM SecureWay Teamware Office OpenLDAP LDAP Lightweight Directory Access Protocol
  10. 10. 10 Estructura y componentes LDAP Árbol Modelo basado en entradas organización → estructura jerárquica /almacén de información Estructura de directorios de UNIX estructura
  11. 11. 11 Estructura y componentes LDAP Distinguished Name (dn) → identificador único y global RDN + Camino a la raíz dn base → nivel superior Ejemplo: Empresa “Datanobo” Contenedores → separación lógica Organizational Units (ou) ou=people, ou=groups, ou=devices componentes Empresa DATANOBO DN base: dc=datanobo,dc=com Fusión: dc=cencrea,dc=com
  12. 12. 12 Estructura y componentes LDAP Entrada = colección de atributos  tipo y valores Clase de objetos Definición de atributos (atributo ∈ clase de objetos) requeridos vs permitidos Esquema → reglas de diseño Entrada con más de una clase persona → person, inetOrgPerson, organization, ... cuenta usuario → posixAccount obligatorios: cn, uid, uidNumber, gidNumber permitidos: userPassword, loginShell,... componentes
  13. 13. 13 Estructura y componentes LDAP Formato LDIF (LDAP Data Interchange Format) Exportación/importación de datos independiente del servidor LDAP Almacenamiento en disco duro → migración entre servidores Formato de texto ASCII: componentes número arbitrario de pares atributo­valor Ventajas copias de seguridad importar cambios dn:<nombre distinguido> <objectclass>:nombre clase <nombre_atributo>:valor <nombre_atributo>:valor
  14. 14. 14 Estructura y componentes LDAP Formato LDIF (cont) componentes dn: uid=sara,ou=users,dc=ccia,dc=uvigo,dc=es uid: sara givenName: Sara sn: Carrera Carrera userPassword:: claveacceso loginShell: /bin/bash uidNumber: 0000 gidNumber: 0000 homeDirectory: /home/sara shadowMin: -1 shadowMax: 999999 shadowWarning: 7 shadowInactive: -1 shadowExpire: -1 shadowFlag: 0 objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson cn: Sara Carrera Carrera modifiersName: cn=admin,ou=people,dc=ccia,dc=uvigo,dc=es structuralObjectClass: inetOrgPerson
  15. 15. 15 Estructura y componentes LDAP Esquemas  Definición de clases y atributos: ejemplo.schema componentes 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 ( rut $ rol $ foto $ mail $ anotacion $ promocion) )
  16. 16. 16 Estructura y componentes LDAP Esquemas Soporte de usuarios y grupos /etc/passw /etc/groups /etc/shadow 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  componentes
  17. 17. 17 Estructura y componentes LDAP Modelo cliente/servidor Información del árbol Cliente preguntas → servidor Visión transparente  Operaciones Directorio → interrogar y actualizar Entrada → añadir , borrar y modificar Consultar información búsqueda según criterio  → filtro entradas concordantes cómo trabaja  respuesta  puntero búsqueda: José Pérez      dc=datanobo,dc=com
  18. 18. 18 Estructura y componentes LDAP LDAP v2. Histórico Interoperabilidad limitada OpenLDAP → deshabilitado LDAP v3. Remplaza a LDAP v2. Autentificación Protección de integridad y confidencialidad Descubrimiento de esquemas Extensibilidad versiones
  19. 19. 19 OpenLDAP Descripció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 propias Componentes OpenLDAP Release (2.3.42, 2.4.10) OpenLDAP Stable Release (2.3.39) OpenLDAP Test Release
  20. 20. 20 OpenLDAP Paquetes DEBIAN apt­get install slpad → servidor apt­get install ldap­utils → servidor y cliente Componentes SLAPD  LDAP v3.  control de acceso a la información  backends  peticiones → porciones del árbol diferentes  creación de módulo frontend módulos de tareas específicas configurable para copias
  21. 21. 21 OpenLDAP Componentes SLURPD  servicio de replicación  distribución de cambios  reenvío de peticiones fallidas  slapd + slurpd → archivo de texto BACKEND  base de datos segundo plano  LDBM Utilidades: slapcat, slaptest, ldapadd, ldapsearch, ldapdelete, ldapmodify
  22. 22. 22 Configuración OpenLDAP Ficheros slapd. conf → servidor ldap.conf → cliente Definición del servidor Backend asignación de permisos /bin/chmod -v 600 /etc/ldap/slapd.conf database ldbm suffix "dc=ejemplo,dc=net" rootdn "cn=root,dc=ejemplo,dc=net" rootpw claveacceso directory /var/lib/ldap index objectClass,uid,uidNumber,gidNumber index cn,mail,surname,givenname
  23. 23. 23 Configuración OpenLDAP Definición del servidor Esquemas ACL (access control list) access to <algo> [ by <quién> <niveldeacceso> ]+ 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 access to dn=".*,dc=datanobo,dc=com" attr=userPassw by dn="cn=root,dc=datanobo,dc=com" write by self write by * auth
  24. 24. 24 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=mail by dn="cn=root,dc=datanobo,dc=com" write by self write by * read access to dn=".*,dc=datanobo,dc=com" by self write by * read
  25. 25. 25 Configuración OpenLDAP 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 database ldbm suffix "dc=ejemplo,dc=net" rootdn "cn=root,dc=ejemplo,dc=net" rootpw claveacceso directory /var/lib/ldap index objectClass,uid,uidNumber,gidNumber index cn,mail,surname,givenname access to dn=".*,dc=datanobo,dc=com" attr=userPassw by dn="cn=root,dc=datanobo,dc=com" write by self write by * auth access to dn=".*,dc=datanobo,dc=com" attr=mail by dn="cn=root,dc=datanobo,dc=com" write by self write by * read access to dn=".*,dc=datanobo,dc=com" by self write by * read
  26. 26. 26 Configuración OpenLDAP Definición del cliente Fichero /etc/ldap/ldap.conf ubicación servidor y raíz acceso común   acceso con privilegios autenticación 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 ssl yes sslpath /usr/local/ssl/certs
  27. 27. 27 Configuración OpenLDAP Definició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 ssl yes sslpath /usr/local/ssl/certs
  28. 28. 28 Autentificación en GNU/Linux con LDAP Requisitos del servidor Esquemas include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema
  29. 29. 29 Autentificación en GNU/Linux con LDAP Requisitos del servidor Esquemas top, posixAccount, shadowAccount, posixGroup include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema
  30. 30. 30 Autentificación en GNU/Linux con LDAP Requisitos 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
  31. 31. 31 Autentificación en GNU/Linux con LDAP Requisitos del servidor Certificado ssl   lado cliente y servidor→ Recompilar soporte OpenSSL OpenSSL + configuración puerto 389 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.conf TLSCipherSuite HIGH:MEDIUM:+SSLv2 TLSCertificateFile /usr/share/ssl/certs/slapd.pem TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem
  32. 32. 32 Autentificación en GNU/Linux con LDAP Requisitos del cliente Mapeado: nº id. del usuario vs nombre  servicio de nombres → /etc/nsswitch.conf Autenticación subsistema PAM → /etc/pam.d OpenSSL + configuración puerto 389 Ambos ficheros harán uso de LDAP
  33. 33. 33 Herramientas de administración Herramientas en modo texto Ficheros ldif Comandos slapcat , slaptest, slappasswd ldapadd ldappsearch ldapdelete ldapadd -x -D “cn=root,dc=ejemplo,dc=net” -W -f /tmp/usuario1.ldif ldapsearch -b 'o=TUDelt,c=NL' 'objectclass=*' ldapsearch -b 'o=TUDelt,c=NL' 'cn=Roberto Gómez*' ldapdelete 'cn=Roberto Gómez, o=TUDelt,c=NL'
  34. 34. 34 Herramientas de administración Herramientas en modo texto Comandos ldapmodify dn: uid=sgonzalez, ou=emplados ,dc=datanobo,dc=com changetype: modify replace: mail mail: modifica@datanobo.com - add: title title: Gran Cañon - add: jpegPhoto jpegPhoto: /tmp/modifica.jpeg - delete: description ldapmodify -b -r -f /tmp/modif_entrada
  35. 35. 35 Herramientas de administración Interfaces gráficos GNOME → LAT(ldap administration tool) KDE → LUMA
  36. 36. 36 Herramientas de administración Interfaces WEB phpLDAPadmin(http://thesmithfam.org/phpldapadmindemo/htdocs/index.php) LDAP­account­manager
  37. 37. 37 Herramientas de administración Interfaces WEB gosa
  38. 38. 38 Herramientas de administración Interfaces de programación perl python java etc
  39. 39. 39 Ejemplos (presentar/describir los ejercicios que se harán por la  tarde) Instalación básica de OpenLDAP Configuración de servicios de autenticación en los  clientes Uso de conexiones cifradas SSL Instalación y uso de herramientas de administración phpLDAPadmin o LDAP­account­manager
  40. 40. 40 Introducción a Kerberos Definición Mitología griega Servicio de autenticación → MIT Propósito Acceso a fichero y aplicaciones protegidas Autenticación por tercera parte → Servidor Kerberos Uso de DES
  41. 41. 41 Introducción a Kerberos Servidores Servidores de aplicaciones Servidor Kerberos servicios de autenticación ficheros con nombres y claves de cifrado → mantiene una BD todas las claves Servidores de tickets privilegios de duración limitada ticket identificador de cifrado del usuario clave secreta del emisor un cliente y durante un período de tiempo
  42. 42. 42 Introducción a Kerberos Funcionamiento
  43. 43. 43 Introducción a Kerberos Funcionamiento identificación  petición
  44. 44. 44 Introducción a Kerberos Funcionamiento envío de mensaje 1  generación de un mensaje  verificar validez usuario
  45. 45. 45 Introducción a Kerberos Funcionamiento clave sesión mensaje 2  clave  de  sesión  entre  cliente y servidor de tickets  mensaje para servidor de  tickets, cliente admitido  cifrado con clave servidor  de tickets
  46. 46. 46 Introducción a Kerberos Funcionamiento envío de mensaje 2  envío al cliente, no al  servidor de tickets  cifrado  con  clave  del  cliente
  47. 47. 47 Introducción a Kerberos Funcionamiento mensaje 3  nombre servidor  aplicación  mensaje autenticación  autenticador (clave de  sesión)
  48. 48. 48 Introducción a Kerberos Funcionamiento comprobación genera ticket  comprobaciones  generación de ticket  cifrado del ticket (clave  servidor de aplicación)  envío al cliente.
  49. 49. 49 Introducción a Kerberos Funcionamiento crear un autenticador ticket  autenticador:  nombre cliente  dirección cliente  hora  clave sesión  añadir ticket
  50. 50. 50 Introducción a Kerberos Funcionamiento descifra ticket compara autenticador  con  su  clave  descifra  el  ticket  compara  la  información  con el autenticador que ha  enviado el cliente
  51. 51. 51 Enlaces y referencias Seguridad de la información (Redes, informática y sistemas de información) Javier  Areitio. ED. PARANINFO http://es.wikipedia.org/wiki/LDAP http://www.openldap.org/ http://es.tldp.org/COMO­INSFLUG/COMOs/LDAP­Linux­Como/ http://fabregaruz.net/documentos/validacion_ldap/book1.html http://www.ldc.usb.ve/~carmen/Coloquio/ldap/ldap/node1.html http://phpldapadmin.sourceforge.net/ http://lam.sourceforge.net/ http://lam.sourceforge.net/

×