29.3. Serverkonfiguration mit slapd.conf

Wenn das System installiert ist, ist /etc/openldap/slapd.conf als vollständige Konfigurationsdatei für den LDAP-Server vorhanden. Im Folgenden werden die einzelnen Einträge kurz beleuchtet und notwendige Anpassungen erklärt. Einträge mit führendem # sind inaktiv. Um solche Einträge zu aktivieren, entfernen Sie dieses Kommentarzeichen.

29.3.1. Globale Anweisungen in slapd.conf

Beispiel 29.2. slapd.conf: Include-Anweisung für Schemata

include /etc/openldap/schema/core.schema 
include /etc/openldap/schema/inetorgperson.schema

Mit dieser ersten Anweisung in slapd.conf wird das Schema spezifiziert, nach dem Ihr LDAP-Verzeichnis organisiert ist (siehe Beispiel 29.2, „slapd.conf: Include-Anweisung für Schemata“). Der Eintrag core.schema ist zwingend erforderlich. Sollten Sie weitere Schemata benötigen, fügen Sie sie hinter dieser Anweisung ein (als Beispiel wurde hier inetorgperson.schema hinzugefügt). Weitere verfügbare Schemata finden Sie im Verzeichnis /etc/openldap/schema/. Soll NIS durch einen analogen LDAP-Dienst ersetzt werden, binden Sie hier die Schemata cosine.schema und rfc2307bis.schema ein. Informationen zu dieser Problematik entnehmen Sie der mitgelieferten OpenLDAP-Dokumentation.

Beispiel 29.3. slapd.conf: pidfile und argsfile

pidfile /var/run/slapd/slapd.pid 
argsfile /var/run/slapd/slapd.args

Diese zwei Dateien enthalten die PID (engl. process id) und einige Argumente, mit denen der slapd Prozess gestartet wird. An dieser Stelle ist keine Änderung erforderlich.

Beispiel 29.4. slapd.conf: Zugangskontrolle

# Sample Access Control 
#       Allow read access of root DSE 
#	Allow self write access 
#       Allow authenticated users read access
#       Allow anonymous users to authenticate 
# access to dn="" by * read 
  access to * by self write 
              by users read 
              by anonymous auth 
# 
# if no access controls are present, the default is: 
#       Allow read by all 
# 
# rootdn can always write!

Beispiel 29.4, „slapd.conf: Zugangskontrolle“ ist der Ausschnitt aus slapd.conf, der die Zugangskontrolle zum LDAP-Verzeichnis auf dem Server regelt. Die Einstellungen, die hier im globalen Abschnitt der slapd.conf gemacht werden, gelten, soweit nicht im datenbankspezifischen Abschnitt eigene Zugangsregeln aufgestellt werden, die sie überschreiben. So wie hier wiedergegeben, können alle Benutzer lesend auf das Verzeichnis zugreifen, aber nur der Administrator (rootdn) kann auf diesem Verzeichnis schreiben. Das Regeln der Zugriffsrechte unter LDAP ist ein sehr komplexer Prozess. Daher hier einige Grundregeln, die Ihnen helfen, diesen Vorgang nachzuvollziehen.

  • Jede Zugangsregel ist folgendermaßen aufgebaut:

    access to <what> by <who> <access> 
    
  • what steht für das Objekt oder Attribut, zu dem Sie Zugang gewähren. Sie können einzelne Verzeichnisäste explizit durch separate Regeln schützen oder aber mit Hilfe regulärer Ausdrücke ganze Regionen des Verzeichnisbaums mit einer Regel abarbeiten. slapd wird alle Regeln in der Reihenfolge evaluieren, in der diese in der Konfigurationsdatei eingeführt wurden. Demnach führen Sie allgemeinere Regeln immer hinter spezifischeren auf. Die erste Regel, die slapd als zutreffend bewertet, wird ausgewertet und alle folgenden Einträge ignoriert.

  • who legt fest, wer Zugriff auf die unter what festgelegten Bereiche erhalten soll. Auch hier können Sie durch die Verwendung passender regulärer Ausdrücke viel Aufwand sparen. Wiederum wird slapd nach dem ersten „Treffer“ mit der Auswertung von who abbrechen, d.h. spezifischere Regeln sollten wieder vor den allgemeineren aufgeführt werden. Folgende Einträge sind möglich (siehe Tabelle 29.2, „Zugangsberechtigte Benutzergruppen“):

    Tabelle 29.2. Zugangsberechtigte Benutzergruppen

    Bezeichner

    Bedeutung

    *

    ausnahmslos alle Benutzer

    anonymous

    nicht authentifizierte („anonyme“) Benutzer

    users

    authentifizierte Benutzer

    self

    Benutzer, die mit dem Zielobjekt verbunden sind

    dn.regex=<regex>

    Alle Benutzer, auf die dieser reguläre Ausdruck zutrifft

  • access spezifiziert die Art des Zugriffs. Es wird hier unterschieden zwischen den in Tabelle 29.3, „Zugriffsarten“ aufgeführten Möglichkeiten:

    Tabelle 29.3. Zugriffsarten

    Bezeichner

    Bedeutung

    none

    Zutritt verboten

    auth

    zur Kontaktaufnahme mit dem Server

    compare

    zum vergleichenden Zugriff auf Objekte

    search

    zur Anwendung von Suchfiltern

    read

    Leserecht

    write

    Schreibrecht

    slapd vergleicht die vom Client angeforderte Berechtigung mit der in slapd.conf gewährten. Werden dort höhere oder gleiche Rechte gewährt als der Client anfordert, wird dem Client der Zugang erlaubt. Fordert der Client höhere Rechte als dort angegeben, erhält er keinen Zugang.

Beispiel 29.5, „slapd.conf: Beispiel für Zugangskontrolle“ zeigt ein Beispiel für eine Zugangskontrolle, die Sie durch Einsatz regulärer Ausdrücke beliebig ausgestalten können.

Beispiel 29.5. slapd.conf: Beispiel für Zugangskontrolle

access to  dn.regex="ou=([^,]+),dc=suse,dc=de" 
   by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write 
   by user read 
   by * none

Diese Regel besagt, dass zu allen ou-Einträgen nur der jeweilige Administrator schreibenden Zugang hat. Die übrigen authentifizierten Benutzer sind leseberechtigt und der Rest der Welt erhält keinen Zugang.

[Tip]Aufstellen von Access Regeln

Falls es keine access to Regel oder keine by <who> Anweisung greift, ist der Zugriff verboten. Nur explizit angegebene Zugriffsrechte werden gewährt. Für den Fall, dass keine einzige Regel aufgestellt wird, gilt das Standardprinzip: Schreibrecht für den Administrator und Leserecht für den Rest der Welt.

Detailinformationen und eine Beispielkonfiguration für LDAP-Zugriffsrechte finden Sie in der Online-Dokumentation des installierten openldap2-Pakets.

Neben der Möglichkeit, Zugriffskontrollen über die zentrale Serverkonfigurationsdatei (slapd.conf) zu verwalten, gibt es den Weg über ACIs (engl. Access Control Information). Mittels ACIs können die Zugangsinformationen zu einzelnen Objekten im LDAP-Baum selbst abgespeichert werden. Da diese Art der Zugangskontrolle noch nicht sehr verbreitet ist und von den Entwicklern als experimentell eingestuft wird, verweisen wir an dieser Stelle auf die entsprechende Dokumentation auf den Seiten des OpenLDAP-Projekts: http://www.openldap.org/faq/data/cache/758.html.

29.3.2. Datenbankspezifische Anweisungen in slapd.conf

Beispiel 29.6. slapd.conf: Datenbankspezifische Anweisungen

database ldbm 
suffix "dc=suse,dc=de" 
rootdn "cn=admin,dc=suse,dc=de" 
# Cleartext passwords, especially for the rootdn, should 
# be avoided.  See slappasswd(8) and slapd.conf(5) for details. 
# Use of strong authentication encouraged. 
rootpw secret 
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd/tools. Mode 700 recommended. 
directory /var/lib/ldap 
# Indices to maintain 
index   objectClass     eq

In der ersten Zeile dieses Abschnitts (siehe Beispiel 29.6, „slapd.conf: Datenbankspezifische Anweisungen“) wird der Datenbanktyp festgelegt, hier LDBM. Über suffix in der zweiten Zeile wird festgelegt, für welchen Teil des LDAP-Verzeichnisbaumes dieser Server verantwortlich sein soll. Das folgende rootdn legt fest, wer Administratorzugriff auf diesen Server besitzt. Der hier angegebene Benutzer muss keinen LDAP-Eintrag besitzen oder als „normaler“ Benutzer existieren. Mit der rootpw Anweisung wird das Administratorpasswort gesetzt. Sie können hier statt secret auch den mit slappasswd erzeugten Hash des Administratorpassworts eintragen. Die directory Anweisung gibt das Verzeichnis an, in dem die Datenbankverzeichnisse auf dem Server abgelegt sind. Die letzte Anweisung, index objectClass eq, bewirkt, dass ein Index über die Objektklassen gepflegt wird. Ergänzen Sie hier unter Umständen einige Attribute, nach denen Ihrer Erfahrung nach am häufigsten gesucht wird. Wenn nachgestellt für die Datenbank eigene Access Regeln definiert werden, werden diese statt der globalen Access Regeln angewendet.

29.3.3. Start und Stopp des Servers

Ist der LDAP-Server fertig konfiguriert und sind alle gewünschten Einträge im LDAP-Verzeichnis nach dem unten beschriebenen Muster (siehe Abschnitt 29.4, „Handhabung von Daten im LDAP-Verzeichnis“) erfolgt, starten Sie den LDAP-Server als Benutzer root durch Eingabe des folgenden Befehls rcldap status. Möchten Sie den Server manuell wieder stoppen, geben Sie entsprechend rcldap stop ein. Die Statusabfrage über den Laufzustand des LDAP-Servers nehmen Sie mit rcldap status vor.

Um Start und Stopp des Servers beim Starten bzw. Herunterfahren des betreffenden Rechners zu automatisieren, nutzen Sie den YaST Runlevel-Editor (vergleiche Abschnitt 7.6, „System Services (Runlevel)“) oder Sie legen die entsprechenden Links der Start- und Stoppskripten mittels insserv auf der Kommandozeile selbst an (siehe Abschnitt 7.5.1, „Init-Skripten hinzufügen“).


SUSE LINUX Administrationshandbuch 9.3