240 likes | 481 Views
Integración de servicios con LDAP. Universidad de Navarra Centro de Tecnología Informática. Ignacio Coupeau Borrás 011023.01. Integración de servicios con LDAP. Evolución histórica de nuestra instalación Objetivos finales Servicios integrados con el LDAP en la actualidad
E N D
Integración de servicios con LDAP Universidad de Navarra Centro de Tecnología Informática Ignacio Coupeau Borrás 011023.01
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
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
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.
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
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
Configuración: Schemas, password, TLS # include /usr/local/etc2/openldap_2/etc/openldap/schema/core.schema include /usr/local/etc2/openldap_2/etc/openldap/schema/cosine.schema include /usr/local/etc2/openldap_2/etc/openldap/schema/nis.schema include /usr/local/etc2/openldap_2/etc/openldap/schema/unav.schema include /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.pid argsfile /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} #Certificados TLSCertificateFile /usr/local/etc2/openldap_2/etc/openldap/ssl/arcos-cert.pem TLSCertificateKeyFile /usr/local/etc2/openldap_2/etc/openldap/ssl/arcos-key.pem TLSCACertificateFile /usr/local/etc2/openldap_2/etc/openldap/ssl/CAcerts # ldbm database definitions comes after ...
Configuración: TLS CAcerts (Chain: CA concatenados) -----BEGIN CERTIFICATE----- MIIDmjCCAwOgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBj ... OAx+35dmVo9gu/elsCquZcToV7g+OzTbutAE+ GXlzB8lE/yKzOk9l3Bk= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDqzCCAxSgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBj EDAOBgNVBAgTB05hdmFycmExETAPBgNVBAcTCFBhbXBsb bml2ZXJzaWRhZCBkZSBOYXZhcnJhMQwwCgYDVQQLEwNDV ... IikjnIYcPaUmFGZTybHJ09zgO5zxWrnLDlMS1uAVqazNA fY3+gYo6vvQE1prJNFm4ZqoFHAv2s61AA+5RVa+84A== -----END CERTIFICATE----- arcos-key.pem -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQjejejjeL9H9Ey9vTcj mHEoANQjVAESc1v+7c1H2sGwUURHVdqc ... xF/rVGPVcnflmatarileYg0CQFu+/iIA b4uTRv4dhGhHw4GKg431M2Hj27tnCGHi= -----END RSA PRIVATE KEY----- arcos-cert.pem -----BEGIN CERTIFICATE----- MIIEKDCCA5GgAwIBAgICAngwDQYJKoZIhvcNAQEEBQAwgZ .... Ma+5+DaA3l9Gi2lwHVNUMbAHbW+RGHHRRNJHJHKJKJ9908 t5axwx531IiE2ecB1f0CghU673a81tRFSTYSGStIKJ0Ml5 cS6de24tQ/1kgWEk -----END CERTIFICATE-----
Configuración: ACL (no ACIs) # UNAV SMB ####################################################################### # database ldbm suffix "o=smb,dc=unav,dc=es" rootdn "cn=diradmin,dc=unav,dc=es" rootpw <passwd_diradmin> directory /usr/local/etc2/openldap_2/unav-smb replogfile /usr/tmp/slurpd.replog replica host=saruman.cti.unav.es binddn="cn=replicador,dc=unav,dc=es" bindmethod=simple credentials=<passwd_replicador> # index ntuid,grouprid,rid eq index cn,sn,uid,mail sub,eq index sambaMember eq,sub index objectClass eq index default sub # access to dn=".*,o=smb,dc=unav,dc=es" by dn="cn=replicator,dc=unav,dc=es" write by self write by * read access to dn="o=smb,dc=unav,dc=es" by dn="cn=replicator,dc=unav,dc=es" write by self write by * read
Configuración: slapd.conf (parcial) ######################################################################## # UNAV PEOPLE-ORGANIZATION ####################################################################### database ldbm suffix "o=Universidad de Navarra, c=ES" rootdn "cn=dirman, o=Universidad de Navarra, c=ES" rootpw {crypt}mejor_crypted directory /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_text directory /usr/local/etc2/openldap_2/unav-person # replogfile /usr/tmp/slurpd.replog replica host=arcos.cti.unav.es:8011 binddn="cn=replicator,dc=unav,dc=es" bindmethod=simple credentials={crypt}mejor_crypted # referral
Configuración: ldif tree unav-ldif.tree dn: dc=unav, dc=es dc: unav objectClass: dcObject objectClass: organization o: Universidad de Navarra dn: o=people, dc=unav, dc=es o: people objectClass: organization dn: o=smb,dc=unav,dc=es objectClass: referral objectClass: extensibleObject o: smb ref: ldap://arcos.cti.unav.es:8002/o=smb,dc=unav,dc=es unav-ldif-organization dn: o=Universidad de Navarra, c=ES o: Universidad de Navarra objectclass: organization objectClass: referral objectClass: extensibleObject ref: ldap://arcos.cti.unav.es:8001/o=people,dc=unav,dc=es
Configuración: 1 ldif y n objectClass dn: uid=099147, o=smb, dc=unav, dc=es objectClass: sambaAccount objectClass: posixAccount uid: 037148 ntuid: 037148 rid: 3ec uidNumber: 17603 gecos: Ignacio Coupeau cn: Ignacio Coupeau homeDirectory: /usr/local/etc3/disco2/037148 loginShell: /bin/bash lmPassword: 58AE48B2A256C127A17527F32FFC1D17 ntPassword: 27F32FFC1E250389860B1658AE48B2A2 pwdLastSet: 3BCC0486 acctFlags: [U ] profile: \\%L\profiles\prn1 homeDrive: U: smbHome: \\saco5\disco2 pwdCanChange: 00000000 pwdMustChange: FFFFFFFF gidNumber: 203 grouprid: 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 ) )
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)
Evolución: 1998/1999 • De Umich a OpenLdap; • ldap+samba; • certificados x509 y • Netscape calendar server • diciembre de 1999:Sendmail+ldap
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
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
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.).
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
Autentificación ... autorización en LDAP 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.
Experiencias (1) • El GB: lo mejor • Log y debug slapd -f slapd-4.conf -H "ldap://arcos/ ldaps://arcos.cti.unav.es/" -l LOCAL4 syslog.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
Experiencias (2) • exportar/importar/reindexar slapcat slapaddvsldapadd slapindex 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
Experiencias (3) • Indices: qué, cómo, cuándo Oct 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: ou ou: 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