  Linux LDAP HOWTO
  Thomas Bendler (thomas.bendler@informatik.fh-hamburg.de)
  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 rpms 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.  Zuknftige Versionen

  Die von mir vorgestellte Beispieldatenbank stellt natrlich nur einen
  kleinen Teil der Mglichkeiten 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 nchsten Zeit zu erweitern, um weitere Mglichkeiten im Umgang mit
  LDAP aufzuzeigen. Dabei bin ich allerdings auf die Hilfe der LDAP
  Cracks angewiesen, da ich mich noch nicht allzulange mit LDAP
  beschftige. Um dieses Dokument also so vollstndig wie mglich 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 mglich in dieses Dokument aufnehmen kann.


  1.3.  Feedback

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


  Thomas Bendler (thomas.bendler@informatik.fh-hamburg.de)


  1.4.  Haftung

  Fr 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 geschtzt. 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
  Lizenzgebhren verbreitet werden darf, solange dieser Copyright
  Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
  und ausdrcklich erwnscht. Bei einer Publikation in Papierform ist
  das Deutsche Linux HOWTO Projekt hierber zu informieren.



  2.  Eine kleine Einfhrung in LDAP

  2.1.  Was ist LDAP?

  LDAP ist die Abkrzung von Lightweight Directory Access Protokoll. Das
  LDAP entstand ursprnglich als Front End fr den X.500
  Verzeichnisdienst.  Da X.500 als kompletter OSI Stack implementiert
  ist, war es nicht mglich, diesen Verzeichnisdienst flchendeckend zu
  implementieren. LDAP ist ein Verzeichnisdienst, der auf dem TCP/IP-
  Protokoll basiert und somit Resourcenschonender fr die Netzwerk
  Infrastruktur ist. Obwohl LDAP nur einen Teil der Funktionen des DAP
  zur Verfgung stellt, reicht es aus, um die fehlenden Funktionen
  vollstndig zu emulieren. Basis fr LDAP sind die im Abschnitt
  ``RFC's'' aufgefhrten RFCs.


  2.2.  Welche Informationen kann LDAP zur Verfgung stellen?

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



    Benutzer

    Gruppen

    IP Dienste

    IP Protokolle

    RPCs

    NIS Netzwerkgruppen

    Boot-Informationen

    Einhngepunkte fr 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 Bedrfnisse 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
  mglichst groe Kompatibilitt 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 zuknftiger Releases sollte sich nicht
  grundlegend von der hier vorgestellten Methode abweichen. Sollte dies
  trotzdem der Fall sein, werde ich das in zuknftigen Versionen dieses
  Dokumentes bercksichtigen.


  4.1.  Quellen fr 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 knnen von:



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



  bezogen werden.


  Eine einfachere Mglichkeit 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, knnen Sie diesen Abschnitt auslassen. Wenn Sie sich die
  Quellen des OpenLDAP Servers gezogen haben, mssen 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





  Anschlieend mssen 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 Bedrfnisse anpassen. In der
  Regel sollten aber die voreingestellten Werte in Ordnung sein. Nun
  gehts ans bersetzten und Installieren des Programmpaketes. Fhren Sie
  dazu folgende Befehle aus:




       ./configure
       make depend
       make





  Um die Kompilation zu testen, knnen noch folgende Anweisungen
  ausgefhrt werden:




       cd test
       make





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




       su
       make install





  Thats 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, zustzliche Tools
       /usr/include/                   Include Dateien
       /usr/lib/                       Bibliotheken
       /usr/share/openldap/            Dateien fr 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 fr X.500 Gateway






  5.  Anpassen der Konfigurationsdateien

  Die Pfade fr 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 mssen.


  5.1.  Liste der Konfigurationsdateien



       ldap.conf               Client Konfiguration
       ldapfilter.conf         Filterregeln
       ldapsearchprefs.conf    Bevorzugte Suchkriterien
       ldaptemplates.conf      Templates fr 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 fr den Client
  festgelegt. Fr das folgende Beispiel im Abschnitt ``Erstellen eines
  Beispielverzeichnisses'' wird die Basisadresse mit der Domain
  geleichgesetzt.




       #
       # ldap.conf fr 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 standardmig abgefragte Struktur festgelegt. Die Variable
  HOST gibt den Server an, der standardmig 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 enthlt die Eintrge fr die Konfiguration des
  slapd Standalone Server. Der slapd beantwortet die LDAP Anfragen der
  Clients. Fr das folgende Beispiel bekommt die Datei folgenden Inhalt:




       #
       # slapd.conf fr Structure Net (SuSE Style)
       #
       # Beachten Sie auch "man slapd.conf"
       #
       # Diese Datei sollte nicht global lesbar sein, da sie ein
       # Pawort enthlt.
       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 berprft, 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 fr den
  laufenden Betrieb (pid=prozess id, args=argumente). Mit dem
  Schlsselwort database wird festgelegt, welches Datenbankformat
  benutzt wird. Es sind auch Abfragen von anderen Datenbanken mglich.
  Im directory wird spezifiziert, wo die Datenbank zu finden ist bzw.
  angelegt werden soll. Da dieses Verzeichnis frei whlbar 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 knnen. Die rootdn und rootpw
  Eintrge 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.  Standardmig erhlt jeder Benutzer Lesezugriff auf die
  Datenbank.  Verndern drfen die Benutzer nur ihren eigenen Eintrag.
  Diese Aktion wird ber das Attribut userpassword verifiziert. Der
  Benutzer admin darf alle Eintrge unterhalb structure-net verndern.
  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 mssen in diesem Beispiel nicht verndert
  werden. Die Dateien enthalten die Objektklassen und die Attribute fr
  die Objektklassen. Die standardmig gegebenden Dateien sind fr die
  meisten Standard Anwendungen ausreichend. Fr weitere Informationen
  konsultieren Sie bitte die entsprechenden Manual Pages.


  Sollen die Benutzer ihre Eintrge selbst verndern knnen, so empfielt
  sich noch eine Anpassung der ldaptemplates.conf an die eigene
  Bedrfnisse. Sie stellt die Standard-Einstellungen zur Verfgung.


  6.

  Erstellen eines Beispielverzeichnisses

  6.1.  Erstellen der LDIF Dateien

  Nach der Installation und Konfiguration des LDAP Servers mu dieser
  mit Daten gefttert werden. Das folgende Beispiel erklrt den LDAP
  Server anhand einer fiktiven Firma mit mehreren Abteilungen. Die
  einzelnen Felder mssen den lokalen Gegebenheiten nur angepat werden,
  um eine simple Konfiguration aufzusetzten.

  Fr das folgende Beispiel wird im Verzeichnis /etc/openldap das
  Unterverzeichnis ldif/ angelegt. In diesem Verzeichnis kann mit jedem
  x-beliebigen Editor, der ASCII untersttzt, eine Datei mit dem Namen
  firmenstruktur.ldif erstellt werden. Der Name und das Verzeichnis fr
  die Beispiel LDIF-Dateien sind beliebig. Es mssen fr den Fall, das
  andere Namen oder Pfade verwendet werden, diese nur an die lokalen
  Gegebenheiten angepat werden.

  Das Beispiel erstellt den DIT (Directory Information Tree) fr 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 Eintrge fr was verantwortlich sind, habe ich die Beispiel
  LDIF in eine Datei fr die Firmenstruktur und in eine Datei pro
  Abteilung aufgeteilt. Der admin Account mu natrlich schon in der
  Firmenstrukur angegeben werden, da sonst keine weiteren Eintrge ber
  ldapadd mglich sind; doch dazu spter 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: tbendler@structure-net.de
  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: ahueser@structure-net.de
  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: jwiener@structure-net.de
  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: tbendler@structure-net.de
       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: tlippert@structure-net.de
       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: emueller@structure-net.de
       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: elemke@structure-net.de
       l: Hamburg
       postalcode: 21033
       streetadress: billwiese 22
       telephonenumber: 040-7654321
       facsmiletelephonenumber: 040-7654321





  Die vorgestellte Datenbank ist natrlich weder sonderlich umfangreich
  noch besonders trickreich. Doppelte Datenstze wie z.B. Admin und
  Bendler, die sich auf die selbe Person beziehen, knnen auch ber
  Verweise aufgelst werden. So kann man z.B. eine Gruppe People
  erstellen, in der man alle bekannten Personen unterbringt. In den
  Gruppen Sales, Development und Support trgt man dann Verweise auf
  diese Personen ein.


  6.2.  Umwandeln der LDIF Datei in das LDBM Format

  Als nchstes 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 dafr ein init-Skript zur Verfgung:




       /sbin/init.d/ldap start





  Wenn der LDAP Server wunschgem luft, 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 Rckantwort bergeben.


  6.4.  Hinzufgen von Datenstzen

  Nun gehts an das Hinzufgen von Datenstzen. Dazu werden die bereits
  erstellten LDIF Dateien benutzt. Das Hinzufgen geschieht mit Hilfe
  des Befehls ldapadd.  Dies geschieht folgendermaen:




       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 knnen auch weitere Eintrge hinzugefgt werden. Eine
  etwas komfortablere Variante stellt das X.500 Webgateway, da welches
  als Frontend beschrieben wird.


  7.  Tuning des LDAP Servers

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


  8.  Frontends fr den LDAP Server

  Da auf Dauer die Bedienung des LDAP Servers mit Hilfe der
  mitgelieferten Tools wie z.B. ldapmodify relativ umstndlich 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 Mglichkeit,
  auf den LDAP Server via einem Browser zuzugreifen.  Es erlaubt auch
  die Pawort gesttzte Modifikation der Eintrge.


  8.1.  Installation von Web500gw

  Das Web500gw wird von Frank Richter, Technische Universitt 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, Universitt
  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 wrde.
  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 bichen
  einfacher.  Sie mssen 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 trgt. Wesentlich
  hierfr ist die Datei web500gw.conf im Verzeichnis /etc/web500. Bei
  SuSE wird web500gw standardmig unter /usr/local installiert. Im
  folgenden habe ich eine beispielhafte Konfigurationsdatei fr 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 fr web500gw - dies kann durch das Flag -p gendert werden
  port: 8888

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

  # Standard LDAP Port - dies kann durch das Flag -P gendert werden
  ldapport: 389

  # Erlaube die Nutzung von anderen LDAP Servern
  otherservers: no

  # Maximales Zeitlimit fr LDAP Anfragen in Sekunden
  timelimit: 30

  # Maximale Anzahl der Ergebnisse bei Anfragen auerhalb der Basis DN.
  sizelimit: 0

  # Standard Basis DN
  # kann durch die ACCESS Regeln gendert 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 gendert werden
  web500dn: dc=structure-net,dc=de

  # ... und das Pawort fr 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 fr 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 abhngige 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 handelsblichen 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 Eintrge
  verweisst. Diese Eintrge wurden in der Version, die mir vorlag,
  standardmig nicht angezeigt.


  9.  Client Zugriff auf LDAP

  Beispielhaft fr den Zugriff auf den LDAP Server sei hier der Netscape
  Communicator beschrieben. Der Communicator bietet unterschiedlich
  Mglichkeiten, um auf den LDAP Server zuzugreifen. Im folgenden werde
  ich mich auf die Abfrage der Adressen, die im Beispiel erzeugt wurden,
  beschrnken. Da der LDAP Server in der Lage ist, fast alles in seiner
  Baumhierachie zu speichern, ist es natrlich auch mglich, Profile der
  einzelnen Benutzer zu speichern. Mglichkeiten und Wege dies zu
  realisieren, werde ich in einer zuknftigen Version dieses Dokumentes
  bercksichtigen.





  9.1.  Konfiguration des Netscape Communinicator

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

  Ist diese installiert, mu als erstes das Adressbuch geffnet 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 ...
  ausgewhlt werden mu. Nun mssen in das erscheinende Formular
  folgende Daten eingetragen werden (ich beziehe mich auf das Beispiel
  aus Sektion 4 und 5, gegebenfalls mssen die Eintrge an die lokale
  Konfiguration angepat 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 Lnder 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 selbstttig 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 mglich. Eine detailierte Anleitung findet sich
  auf der Web-Site von Netscape unter folgender Adresse:



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



  10.  Ntzliche 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
  Vollstndigkeit.


  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 berfhren. Die LDAP Migration Tools sind
  erhltlich 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 fr 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 erhltlich:



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



  10.3.  kldap

  Kldap ist ein Client fr den LDAP Server, der z.B. die Struktur der
  Baumhierachie visualisieren kann. Um Kldap fr SuSE Linux zu
  kompilieren, mu das Makefile angepat werden. Ein angepates Makefile
  kann beim Autor bezogen werden (via E-Mail). Nhrere Informationen und
  die Mglichkeit zum Download finden sich unter:



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



  10.4.  GQ

  GQ ist das quivalent fr Kldap unter Gnome. Nhrere Informationen und
  die Mglichkeit 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 Bcherliste mit Informationen
  zu LDAP zusammengestellt, auf die sich im wesentlichen auch dieses
  HOWTO sttzt. In diesem Zusammenhang mchte ich mich auch nochmal fr
  hilfreiche Beitrge aus dem USENET zu diesem Thema bedanken.


  11.1.  Adressen im Internet

  OpenLDAP HomePage



       http://www.openldap.org/



  LDAP Einfhrung im Linux Magazin



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


  slapd und slurpd Administrators 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.  Bcher


    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.

  RFCs


    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




