Download - Integración de servicios con LDAP

Transcript
Page 1: Integración de servicios con LDAP

Integración de servicios con LDAP

Universidad de NavarraCentro de Tecnología Informática

Ignacio Coupeau Borrás011023.01

Page 2: Integración de servicios con LDAP

CTI

Integración de servicios con LDAP

Evolución histórica de nuestra instalación Objetivos finales Servicios integrados con el LDAP en la actualidad Descripción del sistema Estructura y configuración El cambio a OpenLdap v2.x Seguridad en LDAP Experiencias

Page 3: Integración de servicios con LDAP

CTI

Objetivos finales

Centralización/coordinación

Repositorio de perfiles de usuario para el acceso a distintos

servicios/sistemas

Autentificación/autorización para el acceso a recursos

Page 4: Integración de servicios con LDAP

CTI

Servicios integrados con el LDAP

Inicio de sesión NT (perfiles, policies, etc.). Samba 2.2.2 Acceso a recursos compartidos SMB (Samba):

impresoras: sistema de cuotas; faxserver discos (shares)

Autentificación y accounting de usuarios de correo (POP, IMAP y SMTP) y servicios (TELNET, WEB, FTP, SSH, etc.) en máquinas unix: pam y nsswitch

Libro de direcciones (y routing/addressing del correo smtp [RFC822]) Validación para Acceso Remoto (Radius) Acceso a espacios Web restringidos mod_auth_ldap Validación para acceso a Internet en los proxies (Squid-ldap_aut) Almacenamiento de certificados digitales para firma electrónica (X509v3)

[RFC2377] Calendario: Netscape vs Steltor.

Page 5: Integración de servicios con LDAP

CTI

Servicios integrados con el LDAP

servidor de correo

SMTPencam inam iento

Mail HUB

Servidor de archivos

Usuarionavegador W eb

(Netscape, Explorer, etc.)

Servidores w eb y proxies

POP/IMAP user

PD C

Mbox

Hom e user

RadiusLDAP

POP/IMAPvalidación

acceso buzones

centro de correo

Equipos NT 4Salas de ordenadores

Sam baPDC-LDAP

Controlador dedom inio

rlog inLogin?

Directorio electrónicoFirm a digital (PKI)

SAMBA

SAMBASAMBA

SAMBA

?

CachéW EB

In ternet

LDAP

LDAP

LDAP

LDAP

Calendar

Sala deordenadores

Correoelectrónico

Acceso remoto

1 3

4

5

6

7

LDAPvalidación

acceso http

2

---------------------

Oracleaprint

PrintQuota

8

Sistema de cuota de impresión

$?

Lightw eigthDirectory AccessProtocol

Rev. 20010908.01

Page 6: Integración de servicios con LDAP

CTI

El cambio a OpenLdap v2.x

Open Source code (Netscape, iPlanet, ...) con muy buen soporte en listas y en proyectos relacionados;

cambio de protocolo; de LDAPv2 a LDAPv3 [] esquema de directorio distribuido; soporte de referrals [RFC3088] definición de clases y atributos con sintáxis según Attribute Syntax

Definitions según [RFC2252] ldap seguro: protección de datos (TLS y SSL) [RFC2830] soporte de backends DBBerkeley 3.x y gdbm, y threads POSIX. posibilidad de cambios menos traumáticos en la estructura,

organización y distribución de las bases de datos. diacríticos

Page 7: Integración de servicios con LDAP

CTI

Descripción del sistema

4 servidores linux RH6.2, kernel 2.4.x; Intel 2x450; 1 sparc

software- OpenLdap 2.x

- OpenSSL 0.9x

- ldbm backend: Berkeley DB 3.x y gdbm

o=<people>,dc=unav,dc=es : 20.815 usuarios, 2 LDAP

samba: 2 LDAP, 10 PDC linux; 450 NT4.0-SP3+; raid de discos; 26.844 usuarios; cuota de impresión y discos, acceso a las aulas/equipos públicos.

gestión centralizada vía web

Page 8: Integración de servicios con LDAP

CTI

Estructura

dc=unav,dc=es o=Universidad de Navarra, c=ES

sistema#1

sistema#2

LDAP 1.1master

LDAP 1.2slave

LDAP 2.2slave

LDAP 2.1master

slurpdslupd

o=sm b o=webo=alum nio=people

referraldependencia

Page 9: Integración de servicios con LDAP

CTI

Configuración: Schemas, password, TLS

#include /usr/local/etc2/openldap_2/etc/openldap/schema/core.schemainclude /usr/local/etc2/openldap_2/etc/openldap/schema/cosine.schemainclude /usr/local/etc2/openldap_2/etc/openldap/schema/nis.schemainclude /usr/local/etc2/openldap_2/etc/openldap/schema/unav.schemainclude /usr/local/etc2/openldap_2/etc/openldap/schema/samba.schema

# Define global ACLs to disable default read access# before ldbm’s ACL# Do not enable referrals until AFTER you have a working directory# service AND an understanding of referrals.#referral ldap://arcos.cti.unav.es

pidfile /usr/local/etc2/openldap_2/var/slapd.pidargsfile /usr/local/etc2/openldap_2/var/slapd.args

#The <hash> to use for userPassword generation. One#of {SSHA}, {SHA}, {SMD5}, {MD5}, {CRYPT},#KERBEROS}, {SASL}, and {UNIX}. The default is {SSHA}.password-hash {CRYPT}

#CertificadosTLSCertificateFile /usr/local/etc2/openldap_2/etc/openldap/ssl/arcos-cert.pemTLSCertificateKeyFile /usr/local/etc2/openldap_2/etc/openldap/ssl/arcos-key.pemTLSCACertificateFile /usr/local/etc2/openldap_2/etc/openldap/ssl/CAcerts

# ldbm database definitions comes after ...

Page 10: Integración de servicios con LDAP

CTI

Configuración: TLS

CAcerts (Chain: CA concatenados) -----BEGIN CERTIFICATE-----MIIDmjCCAwOgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBj...OAx+35dmVo9gu/elsCquZcToV7g+OzTbutAE+GXlzB8lE/yKzOk9l3Bk=-----END CERTIFICATE----------BEGIN CERTIFICATE-----MIIDqzCCAxSgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBjEDAOBgNVBAgTB05hdmFycmExETAPBgNVBAcTCFBhbXBsbbml2ZXJzaWRhZCBkZSBOYXZhcnJhMQwwCgYDVQQLEwNDV...IikjnIYcPaUmFGZTybHJ09zgO5zxWrnLDlMS1uAVqazNAfY3+gYo6vvQE1prJNFm4ZqoFHAv2s61AA+5RVa+84A==-----END CERTIFICATE-----

arcos-cert.pem -----BEGIN CERTIFICATE-----MIIEKDCCA5GgAwIBAgICAngwDQYJKoZIhvcNAQEEBQAwgZ....Ma+5+DaA3l9Gi2lwHVNUMbAHbW+RGHHRRNJHJHKJKJ9908t5axwx531IiE2ecB1f0CghU673a81tRFSTYSGStIKJ0Ml5cS6de24tQ/1kgWEk-----END CERTIFICATE-----

arcos-key.pem -----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQjejejjeL9H9Ey9vTcjmHEoANQjVAESc1v+7c1H2sGwUURHVdqc...xF/rVGPVcnflmatarileYg0CQFu+/iIAb4uTRv4dhGhHw4GKg431M2Hj27tnCGHi=-----END RSA PRIVATE KEY-----

Page 11: Integración de servicios con LDAP

CTI

Configuración: ACL (no ACIs)

# UNAV SMB########################################################################database ldbmsuffix "o=smb,dc=unav,dc=es"rootdn "cn=diradmin,dc=unav,dc=es"rootpw <passwd_diradmin>directory /usr/local/etc2/openldap_2/unav-smbreplogfile /usr/tmp/slurpd.replogreplica host=saruman.cti.unav.es binddn="cn=replicador,dc=unav,dc=es" bindmethod=simple credentials=<passwd_replicador>#index ntuid,grouprid,rid eqindex cn,sn,uid,mail sub,eqindex sambaMember eq,subindex objectClass eqindex default sub#access to dn=".*,o=smb,dc=unav,dc=es" by dn="cn=replicator,dc=unav,dc=es" write by self write by * readaccess to dn="o=smb,dc=unav,dc=es" by dn="cn=replicator,dc=unav,dc=es" write by self write by * read

Page 12: Integración de servicios con LDAP

CTI

Configuración: slapd.conf (parcial)

######################################################################### UNAV PEOPLE-ORGANIZATION #######################################################################database ldbmsuffix "o=Universidad de Navarra, c=ES"rootdn "cn=dirman, o=Universidad de Navarra, c=ES"rootpw {crypt}mejor_crypteddirectory /usr/local/etc2/openldap_2/unav-old##index ...########################################################################## UNAV PEOPLE ######################################################################## database ldbm suffix "dc=unav,dc=es" rootdn "cn=dirman,dc=unav,dc=es" rootpw {crypt}que_plain_textdirectory /usr/local/etc2/openldap_2/unav-person#replogfile /usr/tmp/slurpd.replogreplica host=arcos.cti.unav.es:8011 binddn="cn=replicator,dc=unav,dc=es" bindmethod=simple credentials={crypt}mejor_crypted#

referral

Page 13: Integración de servicios con LDAP

CTI

Configuración: ldif tree

unav-ldif.tree

dn: dc=unav, dc=esdc: unavobjectClass: dcObjectobjectClass: organizationo: Universidad de Navarra

dn: o=people, dc=unav, dc=eso: peopleobjectClass: organization

dn: o=smb,dc=unav,dc=esobjectClass: referralobjectClass: extensibleObjecto: smbref: ldap://arcos.cti.unav.es:8002/o=smb,dc=unav,dc=es

unav-ldif-organization

dn: o=Universidad de Navarra, c=ESo: Universidad de Navarraobjectclass: organizationobjectClass: referralobjectClass: extensibleObjectref: ldap://arcos.cti.unav.es:8001/o=people,dc=unav,dc=es

Page 14: Integración de servicios con LDAP

CTI

Configuración: 1 ldif y n objectClass

dn: uid=099147, o=smb, dc=unav, dc=esobjectClass: sambaAccountobjectClass: posixAccountuid: 037148ntuid: 037148rid: 3ecuidNumber: 17603gecos: Ignacio Coupeaucn: Ignacio CoupeauhomeDirectory: /usr/local/etc3/disco2/037148loginShell: /bin/bashlmPassword: 58AE48B2A256C127A17527F32FFC1D17ntPassword: 27F32FFC1E250389860B1658AE48B2A2pwdLastSet: 3BCC0486acctFlags: [U ]profile: \\%L\profiles\prn1homeDrive: U:smbHome: \\saco5\disco2pwdCanChange: 00000000pwdMustChange: FFFFFFFFgidNumber: 203grouprid: 207

objectclass ( 1.3.6.1.4.1.9183.2.2.1 NAME 'sambaAccount' DESC 'Provisional sambaAccount' SUP top STRUCTURAL MUST ( ObjectClass $ uid $ uidNumber $ ntuid $ rid ) MAY ( gidNumber $ grouprid $ ou $ cn $ description $ lmPassword $ ntPassword $ pwdLastSet $ pwdCanChange $ pwdMustChange $ logonTime $ logoffTime $ kickoffTime $ smbHome $ homeDrive $ script $ profile $ acctFlags ) )

objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY DESC 'Account with POSIX attributes' MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) MAY ( userPassword $ loginShell $ gecos $ description ) )

Page 15: Integración de servicios con LDAP

CTI

Evolución: 1997/1998

septiembre 1997 Inicio de nuestra experiencia con ldapv2 con el servidor ldap de la Univ. de Michigan. La idea inicial era la recogida en Slapd Administration Guide: un servicio de directorio y una pasarela para X500: 100% puro directorio electrónico.

Se habló por primera vez del LDAP en las JT de 1997, en Zaragoza (cfr. Javier Masa)

Page 16: Integración de servicios con LDAP

CTI

Evolución: 1998/1999

De Umich a OpenLdap; ldap+samba; certificados x509 y Netscape calendar server diciembre de 1999: Sendmail+ldap

Page 17: Integración de servicios con LDAP

CTI

Evolución: 1999/2000

samba+aprint (sistema de impresión con cuotas) autentificación proxy-cache

- directa

- indirecta vía samba (pam-squid samba|ldap) autentificación espacios web

Page 18: Integración de servicios con LDAP

CTI

Evolución: 2000/2001

desarrollo de los servicios de accounting basados en pam y nsswitch;

febrero de 2001: primeros contactos con el OpenLdap v2.0a gateway oracle-ldap; radius de telefónica radiusddll agosto/septiembre de 2001 migramos a LDAPv3 y cambiamos el

esquema y distribución de las bases

Page 19: Integración de servicios con LDAP

CTI

Evolución: 2001/2002

Integración con DNS [RFC1034] Conexiones seguras ldaps y slurpds de forma "nativa" sin

wrappers (stunnel, etc). Los acentos Posibilidad de utilización de diversos métodos de autentificación

en LDAP para centralizar/coordinar diversos mecanismos/api de (pam, MIT Kerberos, SASL/GSSAPI, etc.).

Page 20: Integración de servicios con LDAP

CTI

Seguridad en LDAP

Seguridad: Autentificación, integridad, confidencialidad y autorización. El protocolo no contempla el nivel de autorización que debe desarrollarse con ACL y similares.

El LDAP v2 define tres tipos de autentificacion: anonymous, simple (clear-text password), y Kerberos V4.

The LDAP v3 soporta autentificacion: anonymous, simple y SASL.- mecanismos sasl [RFC2222] :

- GSSAPI (MIT Kerberos 5 or Heimdal Kerberos 5) - EXTERNAL (requiere TLS: X509 [ietf-draft])- DIGEST-MD5 [RFC2831] - ANONYMOUS [RFC2245]

- LDAPv3-HOWTO- IBM RedBooks pp. 42-49

Page 21: Integración de servicios con LDAP

CTI

Autentificación ... autorización en LDAP

pam _ldap

nsswitch_ldapnsswitch_files

...

ID?

account?user logged

user login

user rejected

user rejected

TLS

TLS

no

si

si

kerberoskerberized?

no

si

ldapldapslave

SASL

TLS

MD5

p la in

TLS

S A S L d rive r

K erberized

GSSAPI

The Simple Authentication and Security Layer (SASL) is a method for adding authentication support to connection-based protocols. To use this specification, a protocol includes a command for identifying and authenticating a user to a server and for optionally negotiating a security layer for subsequent protocol interactions.

Page 22: Integración de servicios con LDAP

CTI

Experiencias (1)

El GB: lo mejor Log y debug

slapd -f slapd-4.conf -H "ldap://arcos/ ldaps://arcos.cti.unav.es/" -l LOCAL4syslog.conf/var/log/messages

Usuarios administrativos De la Redundancia: si pero... ¿24x7?

slapd-1.conf -d 16 -o -r /tmp/slurpd.replog Saltos entre jerarquías: referrals (subordinate, superior) y ciclos:

-M[M] Enable manage DSA IT control-C Automatically chase referrals.

ACL: dónde y como

Page 23: Integración de servicios con LDAP

CTI

Experiencias (2)

exportar/importar/reindexar

slapcat slapadd vs ldapaddslapindex

si todo va mal: C Utilidades para mantenimiento y desarrollo: perl+módulos Net-

LDAPapi y C+libldap vs wrappers No olvide sus aplicaciones: bases, sintáxis de comandos: -x, –LL,

-H, ldif, der... (userCertificate;binary:< file:///<derfile>)

Del ldappasswdy del bind../../bin/ldappasswd -D "cn=Ejemplo,o=people,dc=unav,dc=es" -w pepe -H

"ldap://ldap/" -s pepe01

Page 24: Integración de servicios con LDAP

CTI

Experiencias (3)

Indices: qué, cómo, cuándoOct 23 14:46:46 trancos slapd[2031]: conn=25926 op=1 SRCH base="o=smb, dc=unav,

dc=es" scope=1 filter="(&(uid=D8$)(objectClass=sambaAccount))" Oct 23 14:50:39 boromir slapd[7877]: conn=9426 op=1 SRCH

base="o=people,dc=unav,dc=es" scope=2 filter="(cn=*estibaliz*)" Base64

perl <<EOF

use MIME::Base64;

print decode_base64('SWduYWNpbyBDb3VwZWF1IEJvcnLDoXM=') . "\n";

EOF

Acentos

---add: ouou: Centro de Tecnología Informática - CTI---

./Latin1_to_UTF8 < ldif-modify-acentos > ldif-modify-acentos.utf8

ldapmodify -d 256 -H "ldap://arcos:8001/" -D "cn=diradmin,dc=unav, dc=es" -W -crf ldif-modify-acentos.utf8