Lenny/LDAP

Aus Delixs
Zur Navigation springen Zur Suche springen


Baustelle Archiv: Dieser Artikel beschreibt nicht die Funktionalität des derzeit aktuellen delixs-Servers. Er beschreibt ältere Schulserver-Funktionen und dient dem Zweck der Archivierung.


LDAP

Warum LDAP?

Eigentlich alle derzeit aktuellen Serverdienste können einen LDAP-Server zur Authentifizierung ihrer Benutzer verwenden, so z.B. PAM, ftp, Mail, Apache, Squid, SAMBA und viele andere. Damit wird die Voraussetzung für die Realisierung von "single sign on" geschaffen, der einmaligen netzweiten Anmeldung zur Nutzung unterschiedlichster Dienste.

Da LDAP in die Verzeichnisdienste NDS der Firma Novell und ADS der Firma MicroSoft integriert ist, können Benutzerinformationen für heterogene Netze zentral verwaltet werden.


Open-LDAP

Die OpenLDAP-Software ist eine open source Implementation des Lightweight Directory Access Protocol.

Sie enthält:

  • slapd - den stand-alone LDAP daemon (Server)
  • libraries - die Bibliotheken für das LDAP Protokoll,
  • utilities, tools, und Beispiel-Clients.


Installation des LDAP-Servers

Wir benötigen zuerst Tools für die Manipulation der LDAP-Datenbank. Weiter ermöglichen die Systemutilities, das andere Dienste des delixs-Servers (DNS, DHCP, SAMBA...) ihre Daten aus dem LDAP direkt beziehen können.

Fangen wir also an, LDAP zu installieren:

 aptitude install slapd

Zuerst wird der OpenLDAP (Lightweight Directory Access Protocol)-Server "slapd" selbst installiert.


Administrator Passwort
Abbildung: Administrator Passwort


Dieses Administratorpasswort hat nichts mit dem "root"-Passwort des Betriebssystems zu tun und sollte möglichst auch nicht gleich lauten. Geben Sie jetzt ein Passwort ein und notieren Sie dies an sicherer Stelle. Nach der Bestätigung geht die Installation weiter. Im Entwicklungsserver lautet das Passwort "schule".


Der LDAP Baum

Die Definitionen für LDAP liegen unter /etc/ldap. Zuerst wird die Datei "ldap.conf" angepasst:

 cd /etc/ldap
 mcedit ldap.conf

Die vollständige Liste aller möglichen Optionen erhalten Sie mit

 man ldap.conf

Tragen Sie nun die folgenden Daten ein.


ldap.conf
Abbildung: ldap.conf


In den meisten Zeilen muss nur das Kommentarzeichen am Anfang entfernt werden. Der wichtigste Eintrag ist

 BASE dc=delixs-schule,dc=de

Dies entspricht der DNS-Domain "delixs-schule.de".

Das ist auch die Wurzel des LDAP-Baumes und der Suffix-Eintrag der 1. Datenbank. Seit Erscheinen von OpenLDAP v2.3 ist HDB (Hierarchical Data Base) der voreingestellte Datenbanktyp. HDB hat gegenüber BDB (Berkeley Data Base) den Vorteil, das es von Haus aus Daten in einer hierarchischen Struktur (Baumstruktur) speichert.

Der Suffix Eintrag der Datenbank ist gleichzeitig der namingContext der DB.


Installation der benötigten LDAP-Tools

Schritt 1 "ldap-utils"

Das Paket "ldap-utils" enthält die OpenLDAP Kommandozeilenprogramme, um den LDAP-Server administrieren zu können. NSS und PAM sind die primären Systemutilities.

Installieren Sie nun mit folgenden Befehlen:

 aptitude install ldap-utils libsasl2-modules


Der erste Befehl sollte ohne Nachfragen in einigen Minuten ablaufen.


Schritt 2 "libnss-ldap"

Beim zweiten Befehl sind einige Nachfragen zu beantworten.

 aptitude install libnss-ldap


Hinweis: Seit 2008 gibt es für libnss-ldap einen Daemon als Ersatz. Der Daemon ist im Paket libnss-ldapd enthalten. Er soll helfen, Probleme beim Booten des Rechners zu vermeiden. Wir setzen trotzdem libnss-ldap ein und werden die Probleme durch geeignete Konfiguration umschiffen.


Libnssldap01
Abbildung: URI libnss-ldap


Hier geben Sie einfach die IP-Nummer (hier ldap://10.100.0.1) ihres Servers ein, eine Portnummer brauchen Sie nicht anhängen.


Libnssldap02
Abbildung: DN libnss-ldap


Jetzt wird die DN (distinguished name) der Suchbasis erfragt. Geben Sie hier die gleichen Daten wie oben in der Datei "ldap.conf" ein.


Libnssldap03
Abbildung: Version libnss-ldap


Bei der Frage nach der LDAP-Version lassen Sie die eingestellte Versionsnummer 3 und drücken Enter.


Libnssldap04
Abbildung: Benutzerkonto libnss-ldap


Als berechtigter Nutzer wird nichts eingetragen, weil libnss-ldap keinen root Zugang haben soll. Somit werden bei NSS Anfragen später die shadow Daten (Passwörter) nicht übers Netz transferiert.


Libnssldap05
Abbildung: Passwort libnss-ldap


Geben Sie hier kein Passwort ein und drücken einfach Enter.


Libnssldap06
Abbildung: Hinweis libnss-ldap

Den abschließenden Hinweis sollten Sie genau lesen und bei eventuellen späteren Veränderungen unbedingt beachten.

Die Datei "/etc/libnss-ldap.conf" wird nun konfiguriert:

<source highlight="1-9" lang="text">

 base dc=delixs-schule,dc=de
 deref   always
 uri ldap://127.0.0.1/
 ldap_version 3
 rootbinddn  cn=admin,dc=delixs-schule,dc=de
 scope sub
 bind_timelimit 30
 bind_policy soft
 nss_connect_policy persist

</source>

In der Datei "/etc/nsswitch.conf" werden drei Änderungen vorgenommen und konfiguriert:

<source highlight="1-3" lang="text">

 passwd:      compat ldap
 shadow:      compat ldap
 group:       compat ldap

</source>


Schritt 3 "libpam-ldap"

Nun folgt der dritte Installationsschritt der benötigten LDAP-Tools:

 aptitude install libpam-ldap

Auch hier müssen Sie Fragen zur Installation beantworten


Libpamldap01
Abbildung: root libpam-ldap


Beantworten Sie die Frage mit "Ja", denn der lokale Nutzer "root" darf Datenbank-Administrator sein.


Libpamldap02
Abbildung: Anmeldung libpam-ldap


Beantworten Sie die zweite Frage mit "Nein", denn die lokale LDAP-Datenbank benötigt keine Anmeldung.


Libpamldap03
Abbildung: root-Zugang libpam-ldap


Geben Sie hier die Daten (cn=admin,dc=delixs-schule,dc=de) ein.

Libpamldap04
Abbildung: root-Zugang libpam-ldap


Geben Sie nun das Passwort für den "root"-Zugang auf die LDAP-Basis ein. Das Passwort haben Sie bereits ganz oben in diesem Kapitel festgelegt. Beim Entwicklungsserver lautet das Passwort "schule".

Die Konfigurationsdatei "/etc/pam_ldap.conf" wird nun noch angepasst:

<source highlight="1-7" lang="text">

 base dc=delixs-schule,dc=de
 uri ldap://127.0.0.1/                         
 ldap_version 3
 rootbinddn cn=admin,dc=delixs-schule,dc=de
 scope sub                                     
 bind_policy soft                              
 pam_password exop                             

</source>


Die Konfigurationsdatei "/etc/pam.d/common-account" wird nun noch angepasst:

<source highlight="1-7" lang="text">

 account [success=1 default=ignore]  pam_unix.so
 account required                    pam_ldap.so
 account required                    pam_permit.so

</source>


Die Konfigurationsdatei "/etc/pam.d/common-auth" wird nun noch angepasst:

<source highlight="1-3" lang="text">

 auth    [success=1 default=ignore]  pam_unix.so
 auth    required      pam_ldap.so use_first_pass ignore_authinfo_unavail
 auth    required                    pam_permit.so

</source>


Die Konfigurationsdatei "/etc/pam.d/common-password" wird nun noch angepasst:

<source highlight="1-4" lang="text">

 password    [success=1 default=ignore]  pam_unix.so nullok obscure min=4 max=8 md5
 password    required         pam_ldap.so try_first_pass
 password    required         pam_smbpass.so nullok use_authtok try_first_pass
 password    required         pam_permit.so

</source>


Die Konfigurationsdatei "/etc/pam.d/common-session" wird nun noch angepasst:

<source highlight="1-2" lang="text">

 session     required          pam_unix.so
 session     required          pam_mkhomedir.so skel=/etc/skel umask=0022

</source>


Schritt 4 "Initialisierung des LDAP"

Da die smbldap-tools davon ausgehen, dass alle Gruppen unter einer 'ou' zu finden sind, wird diese sehr einfache Struktur gewählt.


            .----- ou=groups
           /
          /
         /                   .------ ou=people
        /                   /
 LDAPBASE -------- ou=accounts
        \                   \
         \                   `------ ou=machines
          \
           \
            `----- cn=admin


Anmerkung: die Einträge für sambaDomain und für DHCP kommen später die Einträge für LDAPBASE und cn=admin sind schon drin.



<source highlight="1-25" lang="text"> dn: ou=groups,dc=delixs-schule,dc=de ou: groups objectClass: top objectClass: organizationalUnit description: Container fuer alle Gruppen

dn: ou=accounts,dc=delixs-schule,dc=de ou: accounts objectClass: top objectClass: organizationalUnit description: Container fuer alle Accounts

dn: ou=people,ou=accounts,dc=delixs-schule,dc=de ou: people objectClass: top objectClass: organizationalUnit description: Container fuer alle schul-spezifischen Accounts

dn: ou=machines,ou=accounts,dc=delixs-schule,dc=de ou: machines objectClass: top objectClass: organizationalUnit description: Container der Samba-Maschinen-Accounts </source>


Datei: initldap.ldif

Speichern Sie diese Datei als "/root/initldap.ldif" ab und spielen Sie sie dann mit folgendem Befehl ein:


 ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/initldap.ldif

Sie werden nach dem LDAP Password gefragt, beim Entwicklungsserver geben Sie "schule" ein.


Kontrolle

Wenn alles richtig installiert ist, können Sie mit folgendem Befehl eine Kontrolle durchführen:

 ldapsearch -x -LLL -s base -b "" "objectclass=*" namingContexts


Die Ausgabe am Bildschirm sollte so aussehen:

 dn:
 namingContexts: dc=delixs-schule,dc=de


Konfiguration des LDAP

Konfigurationsdateien für LDAP

Die systemweite LDAP-Konfiguration ist in folgenden Dateien gespeichert:

  • /etc/ldap/ldap.conf enthält allgemeine Einstellungen
  • /etc/ldap/slapd.conf enthält globale Einstellungen, wie Schemata, Direktiven, Datenbankeinstellungen usw., aber kein Passwort

Die Konfiguration für libnss-ldap wird in folgenden Dateien gespeichert:

  • /etc/libnss-ldap.conf enthält die Einstellungen
  • /etc/libnss-ldap.secret enthält das Passwort (hier natürlich nicht, wir haben ja keins eingegeben)

Die Konfiguration für pam_ldap wird in folgenden Dateien gespeichert:

  • /etc/pam_ldap.conf enthält die Einstellungen
  • /etc/pam_ldap.secret enthält das Passwort


Admin-Passwort

Die Dateien, die das admin-Passwort enthalten, dürfen ausschließlich root gehören und müssen die Dateirechte 600 (rw - -) haben:

  • /var/lib/samba/secrets.tdb
  • /etc/smbldap-tools/smbldap_bind.conf
  • /etc/pam_ldap.secret

In die nss-Konfiguration (libnss-ldap.secret) und in die slapd.conf gehört kein Passwort.


Die erste Konfiguration des LDAP

Neben den Fragen, die in diesem Kapitel schon beantwortet und somit in die Konfigurationsdateien eingeflossen sind, werden nun noch weitere Grundeinstellungen vorgenommen. Dafür bearbeiten wir die Datei /etc/ldap/slapd.conf im Abschnitt "Schema and objectClass" und fügen dort weitere Zeilen ein:

# Schema and objectClass definitions
include   /etc/ldap/schema/corba.schema
include   /etc/ldap/schema/core.schema
include   /etc/ldap/schema/cosine.schema
include   /etc/ldap/schema/nis.schema
include   /etc/ldap/schema/inetorgperson.schema
include   /etc/ldap/schema/openldap.schema


Hinweis: Fügen Sie nicht das in einigen Quellen im Internet empfohlene Schema "misc.schema" ein.

Und weiter bearbeiten wir die gleiche Datei /etc/ldap/slapd.conf im Abschnitt "Indexing options" und fügen dort auch weitere Zeilen ein:

# Indexing options for database
index   objectClass             eq
index   cn                      pres,sub,eq
index   sn                      pres,sub,eq
index   uid                     pres,sub,eq
index   displayName             pres,sub,eq
index   default                 sub
index   uidNumber               eq
index   gidNumber               eq
index   mail,givenName          eq,subinitial
index   dc                      eq

Nachdem diese neuen Indices eingetragen sind, muss natürlich auch die Datenbank des LDAP neu aufgebaut werden. Mit den folgenden vier Befehlen passiert genau das:

  /etc/init.d/slapd stop
  slapindex
  chown -R openldap:openldap /var/lib/ldap
  /etc/init.d/slapd start


Erklärung: Da der Index mittels slapindex als Benutzer "root" neu erzeugt wird, müssen anschließend mit dem chown-Befehl die Eigentumsverhältnisse wieder richtig gestellt werden.

Hinweis: Falls bei der Installation oder Konfiguration etwas schief gegangen ist, setzen Sie einfach den "loglevel" in der Datei "slapd.conf" auf 261 (=256+4+1) und beobachten die Fehlermeldungen in /var/log/messages. Läuft alles zufriedenstellend, dann setzen Sie unbedingt den loglevel wieder auf "none" zurück.

Testen der PAM-Konfiguration

Erzeugen Sie die Datei "/root/mmustermann.ldif" mit folgendem Inhalt:

<source highlight="1-26" lang="text">

  1. Login: mmustermann
  2. Passwort: geheim

dn: uid=mmustermann,ou=people,ou=accounts,dc=delixs-schule,dc=de objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: mmustermann sn: mmustermann givenName: mmustermann uid: mmustermann uidNumber: 2000 gidNumber: 1002 homeDirectory: /home/students/mmustermann loginShell: /bin/bash gecos: Schueler displayName: mmustermann userPassword:: e1NTSEF9dGpzaVNabEVaYXBiTW1PZ0JHdXlWR09xYlJLVFRJdTk= </source>

Diese Datei spielen Sie nun in den LDAP ein mit dem Befehl:

   ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/mmustermann.ldif


Jetzt wechseln Sie die Konsole mit "Alt-F2" und melden sich dort an

  • Nutzer: 'mmustermann' und Passwort: 'geheim'

Das sollte ohne Probleme funktionieren. Geben Sie nun den folgenden Befehl ein:

 getent passwd mmustermann

Die Ausgabe sollte liefern:

 mmustermann:x:2000:1002:Schueler:/home/students/mmustermann:/bin/bash

Der weitere Befehl:

 id mmustermann

sollte diese Ausgabe liefern:

    uid=2000(mmustermann) gid=1002(students) Gruppen=1002(students)

Mit dem Befehl:

 passwd mmustermann

können Sie das Passwort dieses Nutzers ändern.

Es ging hier nur um den Test der PAM-Konfiguration, also werden Sie diesen User nun wieder löschen. Geben Sie dazu den Befehl in eine einzige lange Zeile ein:

   ldapdelete -x -D "cn=admin,dc=delixs-schule,dc=de" -W  "uid=mmustermann,ou=people,ou=accounts,dc=delixs-schule,dc=de"

Damit ist der Test abgeschlossen.


SAMBA - LDAP Support

Da zu gegenwärtigen Zeitpunkt der File-Server SAMBA noch nicht installiert ist, wird die Konfiguration von LDAP später nochmals angefasst und bearbeitet werden müssen. Das wird dann im Kapitel Lenny/LDAP_User passieren.


LDAP komplett löschen

Falls die Installation fehlschlägt und die gesamte Prozedur einfach nochmals von vorn begonnen werden soll, kann alles bisher Installierte auf einfache Weise komplett entsorgt werden.

   aptitude purge slapd
   aptitude purge ldap-utils libsasl2-modules
   aptitude purge libnss-ldap libpam-ldap libpam-smbpass

Damit ist das komplette Löschen der alten LDAP-Installation erfolgt.

Sie können nun das Kapitel von vorn beginnen.


Weblinks



zurück | Hauptseite

Hans-Dietrich Kirmse, Harry Jede 2009