Linux LDAP HOWTO
 Thomas Bendler ([email protected])
 v0.65-2, 7. Oktober 1999

 Dieses HOWTO soll die Installation und Konfiguration eines LDAP
 Servers auf Basis des OpenLDAP veranschaulichen. Desweiteren finden
 sich Informationen zum Zugriff auf den LDAP Server.


 1.  Einleitung

 1.1.  Besonderheiten

 Dieses HOWTO bezieht sich auf die Installation des OpenLDAP Servers
 1.2.4-2 aus der Serie n unter SuSE Linux 6.2. Die Konfiguration
 unterscheidet sich von der Installation des Orginal OpenLDAP Paketes
 durch unterschiedliche Verzeichnisse, die per Default in den rpm�s der
 SuSE Distribution eingestellt sind. In einem gesonderten Kapitel gehe
 ich auf die einzelnen Unterschiede ein, so da� die Anpassung an die
 lokalen Gegebenheiten kein Problem sein sollte.


 1.2.  Neue Versionen

 1.2.1.  Aktuelle Version

 Die aktuelle Version dieses Dokumentes ist auf dem Server des
 Deutschen Linux HOWTO Projektes unter



      http://www.tu-harburg.de/dlhp/



 zu finden.


 1.2.2.  Zuk�nftige Versionen

 Die von mir vorgestellte Beispieldatenbank stellt nat�rlich nur einen
 kleinen Teil der M�glichkeiten dar, die LDAP bietet. Sie soll in
 erster Linie als Einstieg dienen und den geneigten Nutzer zum
 experimentieren animieren. Ich werde versuchen, dieses HOWTO im Laufe
 der n�chsten Zeit zu erweitern, um weitere M�glichkeiten im Umgang mit
 LDAP aufzuzeigen. Dabei bin ich allerdings auf die Hilfe der LDAP
 Cracks angewiesen, da ich mich noch nicht allzulange mit LDAP
 besch�ftige. Um dieses Dokument also so vollst�ndig wie m�glich zu
 gestalten, bitte ich funtionierende Verfahren (z.B. Passwort
 Authentifizierung via LDAP, Roaming, SAMBA und LDAP, etc.) an die
 unter Feedback angegebende E-Mail Adresse zu senden, damit ich sie so
 schnell wie m�glich in dieses Dokument aufnehmen kann.


 1.3.  Feedback

 Bei Fragen und Kommentaren zu diesem Dokument sowie bei Anregungen und
 Verbesserungsvorschl�gen wenden Sie sich bitte an:


 Thomas Bendler ([email protected])


 1.4.  Haftung

 F�r die hier vorgestellten Verfahren �bernehme ich keine Haftung.
 Sollten sich Fehler eingeschlichen haben oder Verfahren nicht
 funtionieren, siehe Feedback.

 1.5.  Copyright

 Dieses Dokument ist urheberrechtlich gesch�tzt. Das Copyright liegt
 bei Thomas Bendler.


 Das Dokument darf gem�� der GNU General Public License verbreitet
 werden. Insbesondere bedeutet dieses, da� der Text sowohl �ber
 elektronische wie auch physikalische Medien ohne Zahlung von
 Lizenzgeb�hren verbreitet werden darf, solange dieser Copyright
 Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
 und ausdr�cklich erw�nscht. Bei einer Publikation in Papierform ist
 das Deutsche Linux HOWTO Projekt hier�ber zu informieren.



 2.  Eine kleine Einf�hrung in LDAP

 2.1.  Was ist LDAP?

 LDAP ist die Abk�rzung von Lightweight Directory Access Protokoll. Das
 LDAP entstand urspr�nglich als Front End f�r den X.500
 Verzeichnisdienst.  Da X.500 als kompletter OSI Stack implementiert
 ist, war es nicht m�glich, diesen Verzeichnisdienst fl�chendeckend zu
 implementieren. LDAP ist ein Verzeichnisdienst, der auf dem TCP/IP-
 Protokoll basiert und somit Resourcenschonender f�r die Netzwerk
 Infrastruktur ist. Obwohl LDAP nur einen Teil der Funktionen des DAP
 zur Verf�gung stellt, reicht es aus, um die fehlenden Funktionen
 vollst�ndig zu emulieren. Basis f�r LDAP sind die im Abschnitt
 ``RFC's'' aufgef�hrten RFC�s.


 2.2.  Welche Informationen kann LDAP zur Verf�gung stellen?

 LDAP speichert seine Informationen in einer Baumhierarchie. Diese
 Hierarchie kann diverse Informationen enthalten. Einen �berblick
 verschafft RFC 2307, in dem m�gliche Inhalte der LDAP Hierarchie
 spezifiziert sind:



 �  Benutzer

 �  Gruppen

 �  IP Dienste

 �  IP Protokolle

 �  RPCs

 �  NIS Netzwerkgruppen

 �  Boot-Informationen

 �  Einh�ngepunkte f�r Dateisysteme

 �  IP Hosts und Netzwerke

 �  RFC 822 konforme Mail-Aliase


 3.  Technische Daten des LDAP Server

 Der Zugriff auf den LDAP Server erfolgt �ber das LDAP Protokoll via
 TCP/IP.  Per Default lauscht der slapd auf dem Port 389. Dies ist im
 RFC 1777 spezifiziert. Der LDAP Server speichert seine Informationen
 in einer baumartigen Struktur. Diese wird auch Directory Information
 Tree genannt, kurz DIT. Zum Speichern benutzt der LDAP Server Objekte,
 die er mit Attributen versehen kann. Dadurch kann man die Struktur
 flexibel an die eigenen Bed�rfnisse anpassen. Das RFC 2256
 spezifiziert die Standard Objekte des LDAP Servers.  Man wird zwar von
 niemanden gezwungen, diese Vorgaben auch zu benutzen, um aber eine
 m�glichst gro�e Kompatibilit�t zu erzielen, sollte man diese Vorgaben
 einhalten.


 4.  Installation des OpenLDAP

 Beschrieben wird im folgenden die Installation des OpenLDAP in der
 Version 1.2.1. Die Installation zuk�nftiger Releases sollte sich nicht
 grundlegend von der hier vorgestellten Methode abweichen. Sollte dies
 trotzdem der Fall sein, werde ich das in zuk�nftigen Versionen dieses
 Dokumentes ber�cksichtigen.


 4.1.  Quellen f�r den OpenLDAP Server

 Der Quellcode der aktuellen Version des OpenLDAP Servers in einem
 komprimierten Archiv finden sich auf der Homepage der OpenLDAP
 Foundation.  Die aktuellen Quellen k�nnen von:



      ftp.OpenLDAP.org:/pub/OpenLDAP/openldap-release.tgz



 bezogen werden.


 Eine einfachere M�glichkeit der Installation bieten sogenannte rpm-
 Archive. Dies sind bereits kompilierte Pakete, die auf die
 Besonderheiten der jeweils eingesetzten Distribution zugeschnitten
 sind. Die jeweilige Installationsprozedur entnehmen Sie bitte Ihrem
 Handbuch. In der SuSE Distribution ist der OpenLDAP Server in der
 Serie n zu finden.


 4.2.  Installation des OpenLDAP Servers

 Haben Sie den OpenLDAP mit Hilfe der Distributions eigenen rpm-Archive
 installiert, k�nnen Sie diesen Abschnitt auslassen. Wenn Sie sich die
 Quellen des OpenLDAP Servers gezogen haben, m�ssen Sie diese noch
 installieren. Zu diesem Zweck wechseln Sie in das Verzeichnis, in dem
 Sie die Quellen gespeichert haben und entpacken Sie die Quellen mit
 folgendem Kommando:




      tar xvfz ./openldap-release.tgz





 Anschlie�end m�ssen Sie mit cd ldap in das Installationsverzeichnis
 wechseln. Dort befindet sich die Datei include/ldapconfig.h.edit.  In
 ihr kann man den LDAP an die eigenen Bed�rfnisse anpassen. In der
 Regel sollten aber die voreingestellten Werte in Ordnung sein. Nun
 gehts ans �bersetzten und Installieren des Programmpaketes. F�hren Sie
 dazu folgende Befehle aus:




      ./configure
      make depend
      make





 Um die Kompilation zu testen, k�nnen noch folgende Anweisungen
 ausgef�hrt werden:




      cd test
      make





 Die Installation des Paketes mu� als Superuser (root) mit folgendem
 Befehl erfolgen:




      su
      make install





 That�s it. Nun sollte der OpenLDAP Server installiert sein.


 4.3.

 Unterschiede zwischen dem Orginal OpenLDAP Paket und den        SuSE
 rpm-Archiven

 Die beiden Pakete sind zwar nach der Installation inhaltlich fast
 identisch, unterscheiden sich aber gravierend in den verwendeten
 Pfaden. Folgende �bersicht soll die Unterschiede verdeutlichen:


 SuSE rpm-Archive:



      /etc/openldap/                  Konfigurationsdateien
      /usr/bin/                       Hilfsdateien
      /usr/libexec/openldap/          Server
      /sbin/init.d/ldap               Startskript
      /usr/doc/packages/openldap/     Dokumentation, zus�tzliche Tools
      /usr/include/                   Include Dateien
      /usr/lib/                       Bibliotheken
      /usr/share/openldap/            Dateien f�r X.500 Gateway


 OpenLDAP Original:



      /usr/local/etc/openldap/        Konfigurationsdateien
      /usr/local/bin/                 Hilfsdateien
      /usr/local/sbin/                Server
      /usr/src/ldap/doc/              Dokumentation (wenn Installationsverzeichnis)
      /usr/local/include/             Include Dateien
      /usr/local/lib/                 Bibliotheken
      /usr/local/share/               Dateien f�r X.500 Gateway






 5.  Anpassen der Konfigurationsdateien

 Die Pfade f�r die Konfigurationsdateien entnehmen sie bitte dem
 Abschnitt ``Unterschiede  zwischen dem Orginal OpenLDAP Paket und den
 SuSE rpm-Archiven''.  Mit dem OpenLDAP Server werden mehrere
 Konfigurationsdateien ausgeliefert, die teilweise noch an die lokalen
 Gegebenheiten angepasst werden m�ssen.


 5.1.  Liste der Konfigurationsdateien



      ldap.conf               Client Konfiguration
      ldapfilter.conf         Filterregeln
      ldapsearchprefs.conf    Bevorzugte Suchkriterien
      ldaptemplates.conf      Templates f�r Formulare
      slapd.conf              Server Konfiguration
      slapd.at.conf           Beschreibung der Attribute
      slapd.oc.conf           Beschreibung der Objektklassen





 5.2.  Konfigurieren der ldap.conf

 In der Datei ldap.conf wird die Basis Domain f�r den Client
 festgelegt. F�r das folgende Beispiel im Abschnitt ``Erstellen eines
 Beispielverzeichnisses'' wird die Basisadresse mit der Domain
 geleichgesetzt.




      #
      # ldap.conf f�r Structur Net
      #
      # Beachten Sie auch man ldap.conf
      #
      BASE    dc=structure-net,dc=de
      HOST    ldap.structure-net.de





 Was bewirkt die hier vorgestellte ldap.conf? Mit der Variable BASE
 wird die standardm��ig abgefragte Struktur festgelegt. Die Variable
 HOST gibt den Server an, der standardm��ig abgefragt wird. �ber die
 Variable PORT kann alternativ auch ein anderer Default Port
 eingestellt werden.


 5.3.  Konfiguration der slapd.conf

 Die Datei slapd.conf enth�lt die Eintr�ge f�r die Konfiguration des
 slapd Standalone Server. Der slapd beantwortet die LDAP Anfragen der
 Clients. F�r das folgende Beispiel bekommt die Datei folgenden Inhalt:




      #
      # slapd.conf f�r Structure Net (SuSE Style)
      #
      # Beachten Sie auch "man slapd.conf"
      #
      # Diese Datei sollte nicht global lesbar sein, da sie ein
      # Pa�wort enth�lt.
      include         /etc/openldap/slapd.at.conf
      include         /etc/openldap/slapd.oc.conf
      schemacheck     on
      referral        ldap://ldap.infospace.com
      pidfile         /var/run/slapd.pid
      argsfile        /var/run/slapd.args
      database        ldbm
      directory       /var/openldap
      suffix          "dc=structure-net,dc=de"
      rootdn          "uid=admin,dc=structure-net,c=de"
      rootpw          secret
      index           cn,sn,uid       pres,eq,approx,sub
      index           objectclass     pres,eq
      index           default         none
      defaultaccess   read
      access to attr=userpassword
         by self write
         by dn="uid=admin,dc=structure-net,dc=de" write
         by * compare





 Was bewirkt die hier vorgestellte slapd.conf? Die include Anweisungen
 bewirken ein Einbinden der angegebenen Dateien. In diesem Fall werden
 die Objektklassen (oc) und deren Attribute (at) eingelesen. Mit dem
 schemacheck wird �berpr�ft, ob modifizierte oder neu installierte
 Daten den Regeln der Objektklassen entsprechen. Ist der ldap nicht in
 der Lage, eine Anfrage zu beantworten, fragt er den unter referral
 angegebenden Server. Die Zeilen pidfile und argsfile sind f�r den
 laufenden Betrieb (pid=prozess id, args=argumente). Mit dem
 Schl�sselwort database wird festgelegt, welches Datenbankformat
 benutzt wird. Es sind auch Abfragen von anderen Datenbanken m�glich.
 Im directory wird spezifiziert, wo die Datenbank zu finden ist bzw.
 angelegt werden soll. Da dieses Verzeichnis frei w�hlbar ist, mu� es
 noch von Hand angelegt werden. Dazu reicht ein einfaches:



      cd /var
      mkdir openldap



 Die unter suffix angegebende Struktur legt fest, welche Anfragen �ber
 die lokale Datenbank beanwortet werden k�nnen. Die rootdn und rootpw
 Eintr�ge spezifizieren den Administrator der Datenbank. Mit Hilfe der
 index Anweisung wird der Datenbank mitgeteilt, wie sie Indexe anlegen
 soll.  Zum Schlu� werden noch die Zugriffsrechte auf den LDAP Server
 festgelegt.  Standardm��ig erh�lt jeder Benutzer Lesezugriff auf die
 Datenbank.  Ver�ndern d�rfen die Benutzer nur ihren eigenen Eintrag.
 Diese Aktion wird �ber das Attribut userpassword verifiziert. Der
 Benutzer admin darf alle Eintr�ge unterhalb structure-net ver�ndern.
 Ein Vergleich ist jedem gestattet.


 5.4.  Sonstige Konfigurationsdateien

 Wie man bereits in der Konfigurationsdatei slapd.conf sehen kann,
 werden zwei Konfigurationsdateien eingebunden (slapd.at.conf,
 slapd.oc.conf). Diese m�ssen in diesem Beispiel nicht ver�ndert
 werden. Die Dateien enthalten die Objektklassen und die Attribute f�r
 die Objektklassen. Die standardm��ig gegebenden Dateien sind f�r die
 meisten Standard Anwendungen ausreichend. F�r weitere Informationen
 konsultieren Sie bitte die entsprechenden Manual Pages.


 Sollen die Benutzer ihre Eintr�ge selbst ver�ndern k�nnen, so empfielt
 sich noch eine Anpassung der ldaptemplates.conf an die eigene
 Bed�rfnisse. Sie stellt die Standard-Einstellungen zur Verf�gung.


 6.

 Erstellen eines Beispielverzeichnisses

 6.1.  Erstellen der LDIF Dateien

 Nach der Installation und Konfiguration des LDAP Servers mu� dieser
 mit Daten gef�ttert werden. Das folgende Beispiel erkl�rt den LDAP
 Server anhand einer fiktiven Firma mit mehreren Abteilungen. Die
 einzelnen Felder m�ssen den lokalen Gegebenheiten nur angepa�t werden,
 um eine simple Konfiguration aufzusetzten.

 F�r das folgende Beispiel wird im Verzeichnis /etc/openldap das
 Unterverzeichnis ldif/ angelegt. In diesem Verzeichnis kann mit jedem
 x-beliebigen Editor, der ASCII unterst�tzt, eine Datei mit dem Namen
 firmenstruktur.ldif erstellt werden. Der Name und das Verzeichnis f�r
 die Beispiel LDIF-Dateien sind beliebig. Es m�ssen f�r den Fall, das
 andere Namen oder Pfade verwendet werden, diese nur an die lokalen
 Gegebenheiten angepa�t werden.

 Das Beispiel erstellt den DIT (Directory Information Tree) f�r die
 fiktive Firma Structure Net in Deutschland; hoffentlich gibts die
 wirklich nicht.  Die Firma Structure Net bekommt drei Abteilungen
 spendiert: Sales, Development und Support. Jeder Abteilung werden zwei
 Mitarbeiter zugeordnet. Daraus ergibt sich folgende Struktur:













 DE
 |
 +-- Structure Net --+
                     |
                     +-- Sales --+-- Mitarbeiter 1 (Axel Hueser)
                     |           |
                     |           +-- Mitarbeiter 2 (Jared Wiener)
                     |
                     +-- Development --+-- Mitarbeiter 3 (Thomas Bendler)
                     |                 |
                     |                 +-- Mitarbeiter 4 (Thomas Lippert)
                     |
                     +-- Support --+-- Mitarbeiter 5 (Elmar Mueller)
                                   |
                                   +-- Mitarbeiter 6 (Enrico Lemke)





 Um das Beispiel �bersichtlich zu gestalten und dem Nutzer zu zeigen,
 welche Eintr�ge f�r was verantwortlich sind, habe ich die Beispiel
 LDIF in eine Datei f�r die Firmenstruktur und in eine Datei pro
 Abteilung aufgeteilt. Der admin Account mu� nat�rlich schon in der
 Firmenstrukur angegeben werden, da sonst keine weiteren Eintr�ge �ber
 ldapadd m�glich sind; doch dazu sp�ter mehr.


 6.1.1.  Beispiel LDIF firmenstruktur.ldif





































 dn: dc=structure-net, dc=de
 objectclass: organization
 objectclass: top
 o: Structure Net
 l: Hamburg
 postalcode: 21033
 streetadress: Billwiese 22

 dn: ou=Sales, dc=structure-net, dc=de
 objectclass: organizationalunit
 ou: Sales
 description: Verkauf
 telephonenumber: 040-7654321
 facsmiletelephonenumber: 040-7654321

 dn: ou=Development, dc=structure-net, dc=de
 objectclass: organizationalunit
 ou: Development
 description: Verkauf
 telephonenumber: 040-7654321
 facsmiletelephonenumber: 040-7654321

 dn: ou=Support, dc=structure-net, dc=de
 objectclass: organizationalunit
 ou: Support
 description: Verkauf
 telephonenumber: 040-7654321
 facsmiletelephonenumber: 040-7654321

 dn: uid=admin, dc=structure-net, dc=de
 objectclass: person
 objectclass: organizationalperson
 objectclass: inetorgperson
 cn: admin
 cn: Systemverwalter
 cn: Thomas Bendler
 sn: Bendler
 uid: admin
 mail: [email protected]
 l: Hamburg
 postalcode: 21033
 streetadress: billwiese 22
 telephonenumber: 040-7654321
 facsmiletelephonenumber: 040-7654321





 6.1.2.  Beispiel LDIF sales.ldif
















 dn: uid=ahueser, ou=Sales, dc=structure-net, dc=de
 objectclass: person
 objectclass: organizationalperson
 cn: Axel Hueser
 sn: Hueser
 uid: ahueser
 mail: [email protected]
 l: Hamburg
 postalcode: 21033
 streetadress: billwiese 22
 telephonenumber: 040-7654321
 facsmiletelephonenumber: 040-7654321

 dn: uid=jwiener, ou=Sales, dc=structure-net, dc=de
 objectclass: person
 objectclass: organizationalperson
 cn: Jared Wiener
 sn: Wiener
 uid: jwiener
 mail: [email protected]
 l: Hamburg
 postalcode: 21033
 streetadress: billwiese 22
 telephonenumber: 040-7654321
 facsmiletelephonenumber: 040-7654321





 6.1.3.  Beispiel LDIF development.ldif



      dn: uid=tbendler, ou=Development, dc=structure-net, dc=de
      objectclass: person
      objectclass: organizationalperson
      objectclass: inetorgperson
      cn: tbendler
      cn: Systemverwalter
      cn: Thomas Bendler
      sn: Bendler
      uid: tbendler
      mail: [email protected]
      l: Hamburg
      postalcode: 21033
      streetadress: billwiese 22
      telephonenumber: 040-7654321
      facsmiletelephonenumber: 040-7654321

      dn: uid=tlippert, ou=Development, dc=structure-net, dc=de
      objectclass: person
      objectclass: organizationalperson
      cn: Thomas Lippert
      sn: Lippert
      uid: tlippert
      mail: [email protected]
      l: Hamburg
      postalcode: 21033
      streetadress: billwiese 22
      telephonenumber: 040-7654321
      facsmiletelephonenumber: 040-7654321




 6.1.4.  Beispiel LDIF support.ldif



      dn: uid=emueller, ou=Support, dc=structure-net, dc=de
      objectclass: person
      objectclass: organizationalperson
      cn: Elmar Mueller
      sn: Mueller
      uid: emueller
      mail: [email protected]
      l: Hamburg
      postalcode: 21033
      streetadress: billwiese 22
      telephonenumber: 040-7654321
      facsmiletelephonenumber: 040-7654321

      dn: uid=elemke, ou=Support, dc=structure-net, dc=de
      objectclass: person
      objectclass: organizationalperson
      cn: Enrico Lemke
      sn: Lemke
      uid: elemke
      mail: [email protected]
      l: Hamburg
      postalcode: 21033
      streetadress: billwiese 22
      telephonenumber: 040-7654321
      facsmiletelephonenumber: 040-7654321





 Die vorgestellte Datenbank ist nat�rlich weder sonderlich umfangreich
 noch besonders trickreich. Doppelte Datens�tze wie z.B. Admin und
 Bendler, die sich auf die selbe Person beziehen, k�nnen auch �ber
 Verweise aufgel�st werden. So kann man z.B. eine Gruppe People
 erstellen, in der man alle bekannten Personen unterbringt. In den
 Gruppen Sales, Development und Support tr�gt man dann Verweise auf
 diese Personen ein.


 6.2.  Umwandeln der LDIF Datei in das LDBM Format

 Als n�chstes mu� die LDIF Datei ins LDBM Format konvertiert werden.
 Dazu dient der Befehl ldif2ldbm. In der SuSE Distribution ist dieser
 unter /usr/sbin/ zu finden. Der Befehl lautet also:




      ldif2ldbm -i /etc/openldap/ldif/firmenstruktur.ldif \
                -f /etc/openldap/slapd.conf





 Sollten sich irgendwelche Dateien nicht in den Standardpfaden
 befinden, so kann man so nach den Dateien suchen lassen:



      find / -name <Dateiname>

 Ist die LDIF Datei konvertiert, mu� der LDAP Server gestartet werden.
 SuSE stellt daf�r ein init-Skript zur Verf�gung:




      /sbin/init.d/ldap start





 Wenn der LDAP Server wunschgem�� l�uft, kann dieser auch automatisch
 gestartet werden, indem man die Variable START_LDAP in der rc.config
 auf yes setzt.


 Ist kein Startskript vorhanden, wird der LDAP Server mit folgendem
 Kommando gestartet:




      slapd -f /usr/local/etc/openldap/slapd.conf





 6.3.  Testen des LDAP Servers

 Um den LDAP Server zu testen, kann man jetzt eine Anfrage an selbigen
 schicken. Dies geschieht mit folgendem Befehl:




      ldapsearch objectclass=\*





 Der Server sollte nun eine Struktur, wie in der Datei
 firmenstruktur.ldif beschrieben, als R�ckantwort �bergeben.


 6.4.  Hinzuf�gen von Datens�tzen

 Nun gehts an das Hinzuf�gen von Datens�tzen. Dazu werden die bereits
 erstellten LDIF Dateien benutzt. Das Hinzuf�gen geschieht mit Hilfe
 des Befehls ldapadd.  Dies geschieht folgenderma�en:




      ldapadd -v -D dn="uid=admin,dc=structure-net,dc=de" \
              -w secret -f /etc/openldap/ldif/sales.ldif
      ldapadd -v -D dn="uid=admin,dc=structure-net,dc=de" \
              -w secret -f /etc/openldap/ldif/development.ldif
      ldapadd -v -D dn="uid=admin,dc=structure-net,dc=de" \
              -w secret -f /etc/openldap/ldif/support.ldif




 Auf diese Weise k�nnen auch weitere Eintr�ge hinzugef�gt werden. Eine
 etwas komfortablere Variante stellt das X.500 Webgateway, da welches
 als Frontend beschrieben wird.


 7.  Tuning des LDAP Servers

 Es gibt unterschiedliche M�glichkeiten, den LDAP Server zu tunen. Die
 M�glichkeiten, den LDAP Server zu tunen, beziehen sich in erster Linie
 auf die LDBM Datenbank.  Deutliche Performancegewinne lassen sich aber
 erst in Verbindung mit gro�en Datenbest�nden erzielen. Das The SLAPD
 and SLURPD Administration Guide bietet einen �berblick der
 M�glichkeiten zum Tunen des LDAP Servers. Weitere Informationen finden
 sich im FAQ-O-MATIC auf der Homepage des OpenLDAP Projektes.


 8.  Frontends f�r den LDAP Server

 Da auf Dauer die Bedienung des LDAP Servers mit Hilfe der
 mitgelieferten Tools wie z.B. ldapmodify relativ umst�ndlich ist,
 sehnt man sich nach einem grafischen Interface zur Modifizierung und
 Abfrage der LDAP Datenbank. Ich habe dazu das X.500 Webgateway
 installiert. Das X.500 Webgateway bietet eine komfortable M�glichkeit,
 auf den LDAP Server via einem Browser zuzugreifen.  Es erlaubt auch
 die Pa�wort gest�tzte Modifikation der Eintr�ge.


 8.1.  Installation von Web500gw

 Das Web500gw wird von Frank Richter, Technische Universit�t Chemnitz
 entwickelt.  Es basiert auf dem Gopher-LDAP Gateway (go500gw)
 Implementierung von Tim Howes.  Erweiterungen stammen von Mark Smith,
 Rakesh Patel, Rutgers University und Hallvard B Furuseth, Universit�t
 Oslo. Das Web500gw kann unter folgender Adresse bezogen werden:



      ftp.tu-chemnitz.de/pub/Local/urz/web500gw/web500gw.tgz



 Die Installation des Quellcodes wird in der mitgelieferten INSTALL-
 Datei beschrieben. Ich gehe im folgenden nicht auf die Installation
 des Gateways ein, da dies den Rahmen des Dokumentes sprengen w�rde.
 Dem geneigten Benutzer sei die Online Hilfe empfohlen, die unter



      http://www.tu-chemnitz.de/~fri/web500gw/



 zu finden ist. Die Benutzer von SuSE Linux haben es dort ein bi�chen
 einfacher.  Sie m�ssen nur web500gw aus der Serie n installieren. Das
 Gateway kann dann kompfortabel �ber das Skript /sbin/init.d/webgw
 gestartet werden. Soll das Gateway automatisch beim Hochfahren
 gestartet werden, mu� es in die Datei rc.config eingetragen werden.
 Alternativ kann das Gateway auch mit web500gw gestartet werden. Dies
 bietet sich auch zur Fehlersuche an, da man mit den Parametern -v -d
 32 das Verhalten des Gateways kontrollieren kann.


 8.2.  Konfiguration von Web500gw

 Nach der Installation von Web500gw mu� das Gateway konfiguriert
 werden, damit es den lokalen Gegebenheiten Rechnung tr�gt. Wesentlich
 hierf�r ist die Datei web500gw.conf im Verzeichnis /etc/web500. Bei
 SuSE wird web500gw standardm��ig unter /usr/local installiert. Im
 folgenden habe ich eine beispielhafte Konfigurationsdatei f�r den
 Beispiel LDAP Server abgedruckt.  Das Anpassen der restlichen
 Konfigurationsdateien ist optional.  Eine entsprechende Dokumentation
 ist in der Online Hilfe zu finden.


 8.3.  Die web500gw.conf

























































 #
 # web500gw.conf erstellt von Thomas Bendler 13.08.1999
 #

 # Standard Port f�r web500gw - dies kann durch das Flag -p ge�ndert werden
 port: 8888

 # Standard LDAP Server - dies kann durch das Flag -x ge�ndert werden
 ldapserver: ldap.structure-net.de

 # Standard LDAP Port - dies kann durch das Flag -P ge�ndert werden
 ldapport: 389

 # Erlaube die Nutzung von anderen LDAP Servern
 otherservers: no

 # Maximales Zeitlimit f�r LDAP Anfragen in Sekunden
 timelimit: 30

 # Maximale Anzahl der Ergebnisse bei Anfragen au�erhalb der Basis DN.
 sizelimit: 0

 # Standard Basis DN
 # kann durch die ACCESS Regeln ge�ndert werden
 homedn: dc=structure-net,dc=de

 # Was macht web500gw, wenn keine Basis DN angegeben wurde
 rootishome: on: /M = "dc=structure-net,dc=de", / = "X.500 root"

 # Anbindung �ber spezifizierte DN
 # kann durch die ACCESS Regeln ge�ndert werden
 web500dn: dc=structure-net,dc=de

 # ... und das Pa�wort f�r web500dn (simple auth)
 web500pw:

 # Anzeige eines Eintrages, wenn Suche erfolgreich war
 showonematch: yes

 # Try a UFN search if a search value contains a comma
 # Boolean value - Default is yes
 ufnsearch: on

 # Durchsuche Subtree nach folgenden Klassen
 subsearch: organization, organizationalUnit

 # Send "Last-Modified:" HTTP header if entry has a "lastModifiedTime"
 # attribute. Boolean value - Default is yes
 lastmodified: on

 # Send "Expire:" HTTP header: default: -1 == don't expire
 # 0 == expire now (no caching), > 0 == expire after seconds
 expires: 3600

 # Pfad der Dateien
 etcdir:       /etc/web500

 g3togif: /usr/local/bin/g3togif
 jpegtogif: /usr/bin/djpeg -gif

 # wenn Robots anfragen sende folgende Zeile
 robots: User-agent: *
 Disallow: /

 # Maximale Anzahl von Werten f�r ein Attribut
 maxvalues: 5
 # access: Name : Pattern : rights : sizelimit : def-lang : Homedn : Bind_as : Bind-PW : suffix

 access: Local       : .*\.structure-net\.de$ : full : 50 : de : : : :.internal
 access: German      : .*\.de$                : read : 50 : de : c=DE :::
 access: World       : .*                     : read : 50 : en : / : : :

 # language: HTTP-Content-Language : pattern for Accept-Language : suffix for lang spec files
 language: de : de.* : .de
 language: fr : fr.* : .fr
 language: en : .* :

 # Browser abh�ngige Konfiguration
 #browser: Name : User-Agent pattern : options : def. display flags : navigation
 browser: Mozilla : Mozilla/* : html32           : table   : top,menu
 browser: Lynx    : Lynx.*    : forms,mailto     : oneline : bottom,small
 browser: Other   : .*        : forms,mailto,img : list    : top,list





 8.4.  Zugriff auf Web500gw

 Auf das Web500gw kann mit jedem handels�blichen Browser zugegriffen
 werden. In dem Beispiel ist die URL folgende:




      http://ldap.structure-net.de:8888/





 Wenn das Gateway richtig konfiguriert ist, sollte nun ein Auswahlmen�
 erscheinen.  Dort ist auch die Online Hilfe integriert.


 8.5.  Weitere Konfigurationsdateien

 Um das Gateway an die lokalen Gegebenheiten anzupassen, sollte man
 einen Blick in die restlichen Konfigurationsdateien werfen und zum
 Beispiel Vorgaben und E-Mail Adressen an die lokalen Gegebenheiten
 anpassen. Desweiteren kann auch eine Modifizerung der Templates
 notwendig sein, wenn man z.B. via member auf andere Eintr�ge
 verweisst. Diese Eintr�ge wurden in der Version, die mir vorlag,
 standardm��ig nicht angezeigt.


 9.  Client Zugriff auf LDAP

 Beispielhaft f�r den Zugriff auf den LDAP Server sei hier der Netscape
 Communicator beschrieben. Der Communicator bietet unterschiedlich
 M�glichkeiten, um auf den LDAP Server zuzugreifen. Im folgenden werde
 ich mich auf die Abfrage der Adressen, die im Beispiel erzeugt wurden,
 beschr�nken. Da der LDAP Server in der Lage ist, fast alles in seiner
 Baumhierachie zu speichern, ist es nat�rlich auch m�glich, Profile der
 einzelnen Benutzer zu speichern. M�glichkeiten und Wege dies zu
 realisieren, werde ich in einer zuk�nftigen Version dieses Dokumentes
 ber�cksichtigen.





 9.1.  Konfiguration des Netscape Communinicator

 Die Konfiguration des Netscape Communicators gestaltet sich relativ
 einfach.  Voraussetzung f�r die Benutzung des LDAP Servers ist eine
 Version ab 4.5.

 Ist diese installiert, mu� als erstes das Adressbuch ge�ffnet werden.
 Dies findet sich unter communicator, adress book. Nun �ffnet sich ein
 Fenster, in dem bereits drei Verzeichnisse eingetragen sind:
 Netcenter, InfoSpace und Verisign. Ein Klick mit der rechten Maustaste
 auf Netcenter �ffnet ein Popup Fenster, in dem New Directory ...
 ausgew�hlt werden mu�. Nun m�ssen in das erscheinende Formular
 folgende Daten eingetragen werden (ich beziehe mich auf das Beispiel
 aus Sektion 4 und 5, gegebenfalls m�ssen die Eintr�ge an die lokale
 Konfiguration angepa�t werden): eine Beschreibung des Dienstes unter
 description (z.B.  Structure Net), der Name des LDAP Servers
 (ldap.structure-net.de) und zu guter letzt der Server Root (c=DE,
 c=US). In diesem Feld werden die L�nder spezifiziert, die durchsucht
 werden. Optional kann noch das Feld Login with name and password
 aktiviert werden, falls die einzelnen Benutzer in der Lage sein
 sollen, Ihre Daten selbstt�tig zu �ndern.

 Der LDAP Server kann jetzt �ber das search Feld befragt werden. Gibt
 man nun z.B.  den Nachnamen an, erscheint eine Liste der Personen, die
 im sn Feld diesen Namen stehen haben.


 9.2.  Erweiterte Konfiguration

 Um das Adressbuch an die lokalen Gegebenheiten anzupassen, sind noch
 weitere Einstellungen m�glich. Eine detailierte Anleitung findet sich
 auf der Web-Site von Netscape unter folgender Adresse:



      http://developer.netscape.com/docs/manuals/communicator/ldap45.htm



 10.  N�tzliche Tools

 Neben dem vorgestellten Netscape Communicator und Web500gw als Client
 bzw.  Front End zum LDAP Server existieren noch weitere Tools, um die
 Arbeit mit dem LDAP Server zu erleichtern. Im folgenden habe ich ein
 paar zusammengestellt.  Diese Liste erhebt keinen Anspruch auf
 Vollst�ndigkeit.


 10.1.  LDAP Migration Tools

 Die LDAP Migration Tools sind eine Sammlung von PERL-Skripten, die bei
 der Konvertierung von vorhandenen Datenbanken ins LDAP Format (bzw.
 ins LDIF Format) behilflich sind. So kann man z.B. die /etc/passwd
 Datei ins LDIF Format �berf�hren. Die LDAP Migration Tools sind
 erh�ltlich unter:



      http://www.padl.com/tools.html



 Die Migration Tools sind vor allem dann hilfreich, wenn man den LDAP
 Server z.B. zur Benutzer Authentifizierung nutzen will. Soll der LDAP
 Server nur als Adressbuch verwendet werden, sind die Tools nicht
 notwendig.
 10.2.  PAM LDAP Module

 Um den LDAP Server als erste Instanz f�r User Authentifizierungen zu
 nutzen, wird ein gesicherter Transport vorrausgesetzt. Dies wird mit
 Hilfe des Pluggable Authentification Module (PAM) API erreicht. Die
 PAM sind unter folgender Adresse erh�ltlich:



      http://www.padl.com/pam_ldap.html



 10.3.  kldap

 Kldap ist ein Client f�r den LDAP Server, der z.B. die Struktur der
 Baumhierachie visualisieren kann. Um Kldap f�r SuSE Linux zu
 kompilieren, mu� das Makefile angepa�t werden. Ein angepa�tes Makefile
 kann beim Autor bezogen werden (via E-Mail). N�hrere Informationen und
 die M�glichkeit zum Download finden sich unter:



      http://www.mountpoint.ch/oliver/kldap



 10.4.  GQ

 GQ ist das �quivalent f�r Kldap unter Gnome. N�hrere Informationen und
 die M�glichkeit zum Download finden sich unter:



      http://biot.com/gq/



 11.  Weitere Quellen und Dokumentationen

 Leider sieht die derzeitige Situation in Bezug auf die LDAP-
 Dokumentation nicht sehr rosig aus. Es gibt zwar die ein oder andere
 brauchbare Dokumentation, sie sind allerdings nicht einfach zu finden.
 Ich habe daher eine Link Liste und eine B�cherliste mit Informationen
 zu LDAP zusammengestellt, auf die sich im wesentlichen auch dieses
 HOWTO st�tzt. In diesem Zusammenhang m�chte ich mich auch nochmal f�r
 hilfreiche Beitr�ge aus dem USENET zu diesem Thema bedanken.


 11.1.  Adressen im Internet

 OpenLDAP HomePage



      http://www.openldap.org/



 LDAP Einf�hrung im Linux Magazin



      http://www.linux-magazin.de/ausgabe.1998.09/LDAP/ldap.html


 slapd und slurpd Administrator�s Guide



      http://www.umich.edu/~dirsvcs/ldap/doc/guides/



 Introducing to Directory Service (X.500)



      http://www.nic.surfnet.nl/surfnet/projects/x500/introducing/



 Linux Driectory Service



      http://www.rage.net/ldap/



 11.2.  B�cher


 �  Implementing LDAP by Mark Wilcox

 �  LDAP: Programming Directory-Enabled Applications with Lightweight
    Directory Access Protocol by Howes and Smith

 �  Understanding and Deploying LDAP Directory Servers by Howes, Smith,
    and Good


 11.3.

 RFC�s


 �  RFC 1558: A String Representation of LDAP Search Filters

 �  RFC 1777: Lightweight Directory Access Protocol

 �  RFC 1778: The String Representation of Standard Attribute Syntaxes

 �  RFC 1779: A String Representation of Distinguished Names

 �  RFC 1781: Using the OSI Directory to Achieve User Friendly Naming

 �  RFC 1798: Connectionless LDAP

 �  RFC 1823: The LDAP Application Programming Interface

 �  RFC 1959: An LDAP URL Format

 �  RFC 1960: A String Representation of LDAP Search Filters

 �  RFC 2251: Lightweight Directory Access Protocol (v3)

 �  RFC 2307: LDAP as a Network Information Service