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.
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“):
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 |
|---|---|
| Zutritt verboten |
| zur Kontaktaufnahme mit dem Server |
| zum vergleichenden Zugriff auf Objekte |
| zur Anwendung von Suchfiltern |
| Leserecht |
| 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.
![]() | Aufstellen von Access Regeln |
|---|---|
Falls es keine | |
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.
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.
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“).