LDAP
von Sebastian Streitberger
Inhalt
Was ist LDAP? Geschichte und Versionen von LDAP Schema und Verzeichniseinträge LDAP Konzepte und Architektur Praktisches Beispiel: Adressbuch Quellen
Was ist LDAP?
LDAP ist die Abkürzung für das Lightweight Directory Access Protocol. Wie der Name sagt, unterstützt dieses Protokoll einen Verzeichnisdienst (Directory).
Was ist ein Verzeichnis?
Ist eine Auflistung von Informationen über Objekte in einer gewissen Ordnung. Zu jedem Objekt kann man Detailinformationen abfragen.
Beispiel: In einem Telefonbuch sind die Objekte die Personen, die Ordnung ist alphabetisch, und die Detailinformationen, die man bekommen kann, sind Adresse und Telefonnummer.
Was ein Verzeichnis nicht ist ...
Ein Verzeichnis ist keine Allzweckdatenbank
Ein Verzeichnis ist kein Dateisystem
Ein Verzeichnis ist kein Ersatzfür eine lokale Dateiablage
Ein Verzeichnis ist kein
'Netzwerkmanagement-Tool'
Wie kann ein LDAP-Verzeichnis die Arbeit im Netzwerk erleichtern?
LDAP ermöglicht einfach und schnell:
Normalisierte Datenhaltung
Zentrale Verwaltung der Informationen
Konsistenz in der Schnittstelle zum User
Konsistenz in den Richtlinien für das Netzwerkmanagement
Konsistenz in den Security Policies
Wieso habe ich noch nichts von LDAP gehört, wenn es so toll ist?
LDAP ist dann doch nicht ganz das Allheilmittel für alle Netzwerkwehwehchen
Fehlende Unterstützung
Microsoft stetzt intern auch auf LDAP -> Windows 2000 Active Directory; .net-Server volle LDAP-Kompatibilität
Viele Hersteller verzichten auf eine LDAP – Schnittstelle
Wenig Support und Dokumentation für Einsteiger
Geschichte und Versionen
Das alte Problem: Gewachsene Strukturen und nicht kompatible Systeme. Die Lösung: Standards
X.500 - Der Directory Service Standard
Directory Services - Verzeichnisdienste. 1988 wurde der X.500 Standard verabschiedet
X.500 organisiert Einträge in einem Verzeichnis über einen hierarchisch aufgebauten Namensraum
Als Protokoll für die Kommunikation zwischen dem Directory -Client und dem Directory-Server wurde das so genannte Directory Access Protocol (DAP) spezifiziert.
Als Protokoll des obersten OSI-Layers, dem Application Layer, ist es auf den vollständigen darunterliegenden Schichtenstapel angewiesen
Es musste ein leichtgewichtig-eres Protokoll her, eben das Lightweight Directory Access Protocol
LDAP setzt als 'Light'-Version von DAP auf die verbreitete TCP/IP-Schicht auf. Außerdem vereinfacht LDAP einige X.500-Operationen
Versionen
LDAP v3 wurde im Dezember 1997 von der IETF als 'Proposed Internet Standard' bestätigt und hat LDAP v2 in einigen wichtigen Aspekten verbessert:
Globalisierungssupport: Verwendung von Unicode für die interne Repräsentierung für Daten, können Zeichen aller Weltsprachen benutzt werden
Sicherheit: LDAP v3 hat nun Standardmechanismen, um Simple Authentication and Security Layer (SASL) und Transport Layer Security (TLS) zu unterstützen. damit bietet LDAP ein umfassende Datensicherheit
Erweiterbarkeit
Offenlegen von Funktionen und Schemas
Schema und Verzeichniseinträge LDAP-Schema definiert die Liste möglicher Typen von Einträgen
(die man als Objektklassen bezeichnet) zusammen mit den mit ihnen verknüpften Attributen. Schema-Definitionen werden in Dateien gespeichert.
Jeder LDAP-Server hat ein oder mehrere bekannte Standard-Schemas
Beispiel: Durchsuchen eines LDAP Servers!öffentliche Suchanfragen akzeptiert der Server -> Objektklasse inetOrgPerson.
Damit kann ich schon nach den vollen Namen [cn]den Nachnamen [sn] die E-Mail Adresse [mail] oder den Vornamen [givenname] suchen!
Objektklassen sind hierarchisch angeordnet, wobei die Objektklasse top die Wurzel des Baums bildet
Objekte der ersten Ebene (Level) sind Child-Objekte!
Aufbau einer *ldif Datei
dn: cn=cool-divers,ou=users,dc=lokal,dc=de cn: cool-divers givenName: cool-divers sn: cool-divers l: Troisdorf postalCode: 53842 street: Heidegraben 30 facsimileTelephoneNumber: 02246-900695 mobile: 170-2774400 mail: [email protected] objectClass: top objectClass: inetOrgPerson telephoneNumber: 02246-302940
Schemaübersicht
/etc/openldap/schema
LDAP - Architektur
Bei LDAP ist die Adresse LDAP host-URL + DN weltweit eindeutig. So wird dann auch eine LDAP-URL zusammengesetzt: ldap://ldap.canon.com/o=canon,c=us
LDAP Adressbuch
Das Praxis Beispiel
Aufbau
Linux Server Linux o. Windows Client
SuSE Linux 9.3 Windows 9x, 2000 o. XP
Linux Server: LDAP installieren
Unterschiede zwischen der Orginal-OpenLDAP-Installation und der SuSE-OpenLDAP-Installation
Anpassen des LDAP Servers#/etc/openldap/slapd.conf## See slapd.conf(5) for details on configuration options.# This file should NOT be world readable.#Include /etc/openldap/schema/core.schemaInclude /etc/openldap/schema/cosine.schemaInclude /etc/openldap/schema/inetorgperson.schemainclude /etc/openldap/schema/mozilla_op20.schemainclude /etc/openldap/schema/extension.schemainclude /etc/openldap/schema/nis.schema
# Define global ACLs to disable default read access.
# Do not enable referrals until AFTER you have a working directory# service AND an understanding of referrals.#referral ldap://root.openldap.org
loglevel 256pidfile /var/run/slapd/slapd.pidargsfile /var/run/slapd/slapd.args
# Load dynamic backend modules:modulepath /usr/lib/openldap/modules
# Sample security restrictions# Require integrity protection (prevent hijacking)# Require 112-bit (3DES or better) encryption for updates# Require 63-bit encryption for simple bind# security ssf=1 update_ssf=112 simple_bind=64
# Sample access control policy:# Root DSE: allow anyone to read it# Subschema (sub)entry DSE: allow anyone to read it# Other DSEs:# Allow self write access to user password# Allow anonymous users to authenticate# Allow read access to everything else# Directives needed to implement policy:
access to * by dn="cn=manager, dc=lokal,dc=de" write by anonymous write# by users write
# if no access controls are present, the default policy# allows anyone and everyone to read anything but restricts# updates to rootdn. (e.g., "access to * by * read")## rootdn can always read and write EVERYTHING!
#######################################################
# BDB database definitions#####################################################
##
database ldbmcheckpoint 1024 5cachesize 10000suffix "dc=lokal,dc=de"rootdn "cn=manager,dc=lokal,dc=de"# Cleartext passwords, especially for the rootdn, should# be avoid. See slappasswd(8) and slapd.conf(5) for details.# Use of strong authentication encouraged.rootpw geheim# The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools.# Mode 700 recommended.directory /var/lib/ldap# Indices to maintainindex objectClass eq
Client File ldap.conf
#ldap.conf for lokal de # # Beachten Sie auch man ldap.conf # BASE dc=lokale,dc=de HOST 127.0.0.1
/etc/openldap/ldap.conf
„Container *.ldif anlegen“# LDAP Domainedn: dc=lokal,dc=deobjectClass: domainobjectClass: dcObjectdc: lokal
# Container fr die Benutzerdn: ou=users,dc=lokal,dc=deou: usersobjectClass: topobjectClass: organizationalUnit
# Container fr die NT-Maschinendn: ou=hosts,dc=lokal,dc=deou: hostsobjectClass: topobjectClass: organizationalUnit
# Container fr die Gruppendn: ou=groups,dc=lokal,dc=deou: groupsobjectClass: topobjectClass: organizationalUnit
# Manager des LDAP Verzeichnisdn: cn=manager,dc=lokal,dc=deobjectClass: organizationalRolecn: manager
main.ldif
ldapadd –x –D „cn=Manager,dc=lokal,dc=de“ –W –f main.ldif
-x -> Simple Authentication
-D -> Bind dn
-W -> promt password line
-f -> File
$ adding new entry „…“
Der 1. Eintrag
Die Daten werden ebenfalls per *.ldif File eingefügt!
dn: cn=cool-divers,ou=users,dc=lokal,dc=decn: cool-diversgivenName: cool-diverssn: cool-diversl: TroisdorfpostalCode: 53842street: Heidegraben 30facsimileTelephoneNumber: 02246-900695mobile: 170-2774400mail: [email protected]: topobjectClass: inetOrgPersontelephoneNumber: 02246-302940
eintrag.ldif
Hinzufügen des Eintrages
ldapadd –x –D „cn=manager,dn=lokal,dc=de“ –W –f eintrag.ldif
adding new entry „…“
Nun können wir schon testen ob alles klappt!
ldapsearch -x
Es wird alles im Directory ausgegeben! Da sollte auch unser Eintrag stehen!
Konfigurieren des Clients
Nehmen wir Thunderbird, das bietet ein sehr gutes Adressbuch und ist für Windows und Linux erhältlich
Ebenso gut geht unter Linux das KDE,Gnome Adressbuch oder andere Adressbücher Anwendungen
Quellen LDAP System Administration O‘ReillyISBN 1-56592-491-6
pro-linux.dehttp://pro-linux.de/t_office/openldap-adressbuch.html
Linux LDAP Howtohttp://www.linuxhaven.de/dlhp/HOWTO/DE-LDAP-HOWTO.html
Linux Magazinhttp://www.linux-magazin.de/Artikel/ausgabe/1998/09/LDAP/ldap.html
OpenLDAPhttp://www.openldap.org
MitLinXhttp://www.mitlinx.de/ldap
Das Verzeichnis für Verzeichnisdienstehttp://www.verzeichnisdienst.de/
Ende