autenticación remota y servicios de directorio ldap

40
21 de xuño de 2010 Ferramentas de seguridade en GNU/Linux Curso de Extensión Universitaria Fco. José Ribadas Pena Sara Carrera Carrera Departamento de Informática Universidade de Vigo Autenticación remota y servicios de directorio LDAP

Upload: seguridadelinux

Post on 12-Jun-2015

4.285 views

Category:

Education


6 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Autenticación remota y servicios de directorio LDAP

21 de xuño de 2010

Ferramentas de seguridade en GNU/LinuxCurso de Extensión Universitaria

Fco. José Ribadas PenaSara Carrera CarreraDepartamento de InformáticaUniversidade de Vigo Autenticación remota y servicios

de directorio LDAP

Page 2: Autenticación remota y servicios de directorio LDAP

2

Indice

Servicios de directorioLDAP (Lightweight Directory Access Protocol)Estructura y componentes de LDAPOpenLDAPConfiguración de OpenLDAPAutenticación con LDAPHerramientas de administraciónEjercicios LDAP

Page 3: Autenticación remota y servicios de directorio LDAP

3

Servicios de directorio

¿ Qué son los servicios de directorio?Almacenan/organizan info. de usuarios/recursos de una redBase de datos → lecturas, navegación, búsqueda avanzada

↑ lecturas ↓escriturasNi transacciones ni esquemas de vuelta atrásActualizaciones simples

CaracterísticasInformación sobre usuariosInfraestructura compartida

nombre + conjunto atributosProporciona interfaz de acceso + autenticaciónReplicar información → disponibilidad y fiabilidad

inconsitencias temporalesservicios a nivel global vs servicios a nivel local

Page 4: Autenticación remota y servicios de directorio LDAP

4

Servicios de directorio

ImplementacionesNIS (Network Information System)

páginas amarillasSun Microsystemsredes de entorno UNIXsigue un modelo RPC

eDirectory (NetWare Directory Services, NDS)servicio de directorio de Novell compatible con X.500arquitecturas: Windows, NetWare, Linuxadministración de usuariosgestión de configuraciones y software

Servidor de directorio RedHatparte del núcleo de Fedora

Page 5: Autenticación remota y servicios de directorio LDAP

5

LDAP Lightweight Directory Access Protocol

¿ Qué es LDAP ?Protocolo ligero → acceso a un servicio de directorioBasado en X.500: LDAP implementación simplificada del protocolo DAP (Directory Access Protocol) de X.500

acceso sobre pila de red TCP/IPorientado a conexión, arquitectura cliente-servidor

satisfacer necesidades usuariomantiene 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 consultaNo soporta ingreso/actualización de gran cantidad de datosNi transacción ni rollbackObjetivo: organización de la información.

Info. de una organización almacenada en un repositorio centralizado optimizado para la consulta

Page 6: Autenticación remota y servicios de directorio LDAP

6

X.500Conjunto 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 directorioprotocolo de ocultación de informaciónprotocolo de gestión de enlaces de directorio

Usos concretosComo libreta de direcciones compartidaAutenticación de usuarios centralizadaPerfiles de usuarios centralizadosAccesos a equipos de una red...

LDAP Lightweight Directory Access Protocol

Page 7: Autenticación remota y servicios de directorio LDAP

7

¿ 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)

Acceso

LDAP Lightweight Directory Access Protocol

distintas plataformaslugares remotos

Page 8: Autenticación remota y servicios de directorio LDAP

8

¿ Cuando usar LDAP?

Lecturas intensivas

Cambios poco frecuentesteléfonos de empleados vs web e-commerce

Sugerenciasdatos disponibles entre varias plataformasgran número de máquinasalmacenamiento de datos

LDAP Lightweight Directory Access Protocol

Protocolo de acceso unificadoServicio flexible para administración central de serviciosFacilidad de mantenimiento

Protocolo de acceso unificadoServicio flexible para administración central de serviciosFacilidad de mantenimiento

Page 9: Autenticación remota y servicios de directorio LDAP

9

ImplementacionesActive Directory (AD)

Microsoft → almacen centralizadoimpresoras, usuarios, equipos...

LDAP v.3iPlanet

netscapeOracle Internet DirectoryIBM SecureWayTeamware OfficeOpenLDAP

LDAP Lightweight Directory Access Protocol

Page 10: Autenticación remota y servicios de directorio LDAP

10

Estructura y componentes LDAP

Información estructurada en un árbolModelo basado en entradas

organización → estructura jerárquica /almacén de informaciónAnálogo a estructura de directorios de UNIX

cada directorio LDAP es un árbol únicolos identificadores (DN) de todas sus entradas tienen un sufijo común (por convención deriba del nombre de dominio DNS)

estructura

Page 11: Autenticación remota y servicios de directorio LDAP

11

Estructura y componentes LDAP

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 superiorEjemplo: Empresa “Datanobo”

Contenedores → separación lógicaOrganizational Units (ou)ou=people, ou=groups, ou=devices

componentes

Empresa DATANOBODN base: dc=datanobo,dc=com

Fusión: dc=cencrea,dc=com

Empresa DATANOBODN base: dc=datanobo,dc=com

Fusión: dc=cencrea,dc=com

Page 12: Autenticación remota y servicios de directorio LDAP

12

Estructura y componentes LDAP

Entrada = colección de atributos Tiene un tipo y un conjunto de valores

Clase de objetos (ObjectClass)Definición de atributos (atributo ∈ clase de objetos)

requeridos vs permitidosEsquema → 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, gidNumberatributos permitidos: userPassword, loginShell,...

componentes

Page 13: Autenticación remota y servicios de directorio LDAP

13

Estructura y componentes LDAP

Formato LDIF (LDAP Data Interchange Format)Exportación/importación de datos

independiente del servidor LDAPAlmacenamiento en disco duro → migración entre servidores

unificar tratamiento de los datosFormato de texto ASCII:

componentes

número arbitrario de pares atributo-valorVentajas

copias de seguridadimportar cambios

dn:<nombre distinguido>objectClass: <nombre clase><nombre_atributo>:valor<nombre_atributo>:valor

Page 14: Autenticación remota y servicios de directorio LDAP

14

Estructura y componentes LDAP

Formato LDIF (cont)componentes

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

Page 15: Autenticación remota y servicios de directorio LDAP

15

Estructura y componentes LDAP

EsquemasDefinición de clases y atributos: ejemplo.schemaCada atributo: nombre, tipo, valores posibles, restricciones, ...

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 ( atributo1 $ atributo2) )

Page 16: Autenticación remota y servicios de directorio LDAP

16

Estructura y componentes LDAP

Algunos esquemas (de interés para servcios de autenticación)Dan soporte a info. sobre usuarios y gruposReemplazan a ficheros de configuración tradicionales en Unix/Linux

/etc/passwd y /etc/shadow/etc/groups/etc/hosts, etc

Esquemas definidosesquemas 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 gruposrama del directorio para usuarios: dn: uid=XXXX,ou=people,dc=...,dc=...,...rama del directorio para grupos:dn: gid=XXXX,ou=groups,dc=...,dc=...,...

componentes

Page 17: Autenticación remota y servicios de directorio LDAP

17

Estructura y componentes LDAP

Modelo cliente/servidorInformación del árbolCliente preguntas → servidorVisión transparente

OperacionesDirectorio → interrogar y actualizarEntrada → añadir , borrar y modificarConsultar información

búsqueda según criterio → filtroentradas concordantes

cómo trabaja

respuestapuntero

Búsqueda por José Pérez uid=jperez,ou=empleados,dc=datanobo,dc=comBúsqueda por José Pérez uid=jperez,ou=empleados,dc=datanobo,dc=com

Page 18: Autenticación remota y servicios de directorio LDAP

18

Estructura y componentes LDAP

LDAP v2.HistóricoInteroperabilidad limitadaOpenLDAP → deshabilitado

LDAP v3.Remplaza a LDAP v2.Mayores posibilidades respecto a la autenticaciónProtección de integridad y confidencialidadDescubrimiento de esquemasExtensibilidad

versiones

Page 19: Autenticación remota y servicios de directorio LDAP

19

OpenLDAP

Implementación de código de abiertos del protocolo LDAPDescripción del proyecto

1998, Kurt ZeilengaVersion 3.3 del servidor LDAP (Universidad de Michigan)Servidor LDAP → licencia GNU

descarga gratuitaeducación / profesionalcódigo fuente → modificaciones propias

ReleaseOpenLDAP Release (2.4.16)

OpenLDAP Stable Release (2.4.16)

OpenLDAP Test Release

Page 20: Autenticación remota y servicios de directorio LDAP

20

OpenLDAP

Paquetes DEBIANapt-get install slpad → servidorapt-get install ldap-utils → servidor y cliente

ComponentesSLAPD: 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 clientesmódulos de tareas específicas

configurable para copias/replicación (slurpd)

Page 21: Autenticación remota y servicios de directorio LDAP

21

OpenLDAP

ComponentesSLURPD

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, slaptestde cliente: ldapadd, ldapsearch, ldapdelete, ldapmodify

Page 22: Autenticación remota y servicios de directorio LDAP

22

Configuración OpenLDAP

Ficherosslapd. conf → servidorldap.conf → cliente

Nota: desde la version 2.4 la configuración del servidor puede almacenarse también en el propio directorio (como un árbol más)

Definición del servidorBackend

asignación de permisos/bin/chmod -v 600 /etc/ldap/slapd.conf

database ldbmsuffix "dc=datanobo,dc=com"rootdn "cn=root,dc=datanobo,dc=com"rootpw claveaccesodirectory /var/lib/ldapindex objectClass,uid,uidNumber,gidNumber index cn,mail,surname,givenname

Page 23: Autenticación remota y servicios de directorio LDAP

23

Configuración OpenLDAP

Definición del servidorEsquemas

Control de acceso: ACL (access control list)access to <algo> [ by <quién> <niveldeacceso> ]+

include /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.schema

access to dn=".*,dc=datanobo,dc=com" attr=userPasswby dn="cn=root,dc=datanobo,dc=com" writeby self writeby * auth

Page 24: Autenticación remota y servicios de directorio LDAP

24

Configuración OpenLDAP

Definición del servidorACL (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 writeby * 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 autenticadosself 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

Page 25: Autenticación remota y servicios de directorio LDAP

25

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,gidNumber index cn,mail,surname,givenname access 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

Page 26: Autenticación remota y servicios de directorio LDAP

26

Configuración OpenLDAP

Configuración del lado clienteFichero /etc/ldap/ldap.conf

ubicación servidor y DN raíz

usuario (DN de entrada LDAP) para consultar el directorio

acceso con privilegios (DN del usuario privilegiado del directorio)

autenticación/acceso cifrado

host 127.0.0.1base dc=datanobo,dc=com

binddn cn=user,dc=datanobo,dc=combindpw claveacceso

rootbinddn cn=root,dc=datanobo,dc=com

Port 636 # conexiones SSLssl yesTLS_CACERT /etc/tls/CA.cert.pem

Page 27: Autenticación remota y servicios de directorio LDAP

27

Configuración OpenLDAP

Definición del clienteFichero /etc/ldap/ldap.conf

host 127.0.0.1base dc=datanobo,dc=combinddn cn=user,dc=datanobo,dc=combindpw claveaccesorootbinddn cn=root,dc=datanobo,dc=comport 636TLS_CACERT /etc/tls/CA.cert.pem

Page 28: Autenticación remota y servicios de directorio LDAP

28

Autentificación en GNU/Linux con LDAP

Requisitos del servidorEsquemas

include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema

Page 29: Autenticación remota y servicios de directorio LDAP

29

Autentificación en GNU/Linux con LDAP

Requisitos del servidorEsquemas

top, posixAccount, shadowAccount, posixGroup

include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema

Page 30: Autenticación remota y servicios de directorio LDAP

30

Autentificación en GNU/Linux con LDAP

Requisitos del servidorEsquemas

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=comuid: jperezcn: José Pérezobjectclass: posixAccountobjectclass: topobjectclass: shadowAccountobjectclass: posixGroupuserpassword: claveaccesologinshell:/bin/bashuidnumber: 1000gidnumber: 1000homedirectory:/home/empleados/jperez

Page 31: Autenticación remota y servicios de directorio LDAP

31

Autentificación en GNU/Linux con LDAP

Requisitos del servidorCertificado SSL → lado servidor (opcional en cliente)Recompilar soporte SSL/TLS: OpenSSL ó gnuTLS

OpenSSL/gnuTLS + configuración puerto 389 correctaTSL/SSL

SSL → 636: comunicación encriptada desde el principioTSL → inicialmente 389, cambio a modo seguro: 636

Certificado formato PEMred local → generación localeditar slapd.conf

TLSCipherSuite TLS_RSA_AES_256_CBC_SHA1TLSCACertificateFile /etc/tls/CA/CA.cert.pemTLSCertificateFile /etc/tls/ldap.cert.pemTLSCertificateKeyFile /etc/tls/ldap.key.pemTLSVerifyClient never

Page 32: Autenticación remota y servicios de directorio LDAP

32

Autentificación en GNU/Linux con LDAP

Requisitos del clienteMapeado: nº id. del usuario vs nombre

servicio de nombres → /etc/nsswitch.confAutenticación

subsistema PAM → /etc/pam.d

Ambos ficheros harán uso de LDAP

Page 33: Autenticación remota y servicios de directorio LDAP

33

Herramientas de administración

Herramientas en modo textoFicheros ldifComandos

slapcat , slaptest, slappasswd (sólo en el servidor)ldapadd

Ldappsearch

ldapdelete

ldapadd -x -D “cn=root,dc=datanobo,dc=com” -W -f /tmp/usuario1.ldif

ldapsearch -b 'dc=datanobo,dc=com' 'objectclass=*'ldapsearch -b 'dc=datanobo,dc=com' 'cn=Roberto Gómez'

ldapdelete 'cn=Roberto Gómez,dc=datanobo,dc=com'

Page 34: Autenticación remota y servicios de directorio LDAP

34

Herramientas de administración

Herramientas en modo textoComandos

ldapmodify

dn: uid=sgonzalez, ou=emplados ,dc=datanobo,dc=comchangetype: modify replace: mail mail: [email protected] add: title title: Gran Cañon - add: jpegPhoto jpegPhoto: /tmp/modifica.jpeg - delete: description

ldapmodify -r -f /tmp/modif_entrada

Page 35: Autenticación remota y servicios de directorio LDAP

35

Herramientas de administración

Interfaces gráficosGNOME → LAT(ldap administration tool)

KDE → LUMA

Page 36: Autenticación remota y servicios de directorio LDAP

36

Herramientas de administración

Interfaces WEBphpLDAPadmin(http://thesmithfam.org/phpldapadmindemo/htdocs/index.php)

LDAP-account-manager

Page 37: Autenticación remota y servicios de directorio LDAP

37

Herramientas de administración

Interfaces WEBgosa

Page 38: Autenticación remota y servicios de directorio LDAP

38

Herramientas de administración

Interfaces 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

Page 39: Autenticación remota y servicios de directorio LDAP

39

Ejemplos

Instalación básica de OpenLDAPConfiguración del cliente y del servidorEjemplos de consultas y modificacionesUso de phpLDAPadmin

Configuración PAM con LDAP

Page 40: Autenticación remota y servicios de directorio LDAP

21 de xuño de 2010

Ferramentas de seguridade en GNU/LinuxCurso de Extensión Universitaria

Fco. José Ribadas PenaSara Carrera CarreraDepartamento de InformáticaUniversidade de Vigo Autenticación remota y servicios de

directorio OpenLDAP