OpenLDAP Server Installation und Konfiguration auf Ubuntu | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

OpenLDAP Server Installation Konfiguration

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

OpenLDAP Server Installation und Konfiguration auf Ubuntu

Was ist LDAP?

LDAP (Lightweight Directory Access Protocol, RFC 4511) ist ein offenes Protokoll für den Zugriff auf Verzeichnis-Services. Es speichert Informationen über Benutzer, Gruppen, Geräte und andere Ressourcen in einer hierarchischen Baumstruktur und ermöglicht zentrale Benutzerverwaltung und Single-Sign-On (SSO). OpenLDAP ist die am weitesten verbreitete Open-Source LDAP-Implementierung.

Anwendungsfälle für LDAP

  • Zentrale Benutzerverwaltung: Ein Directory für alle Systeme, Anwendungen und Services
  • Single-Sign-On (SSO): Einmaliges Anmelden für multiple Services und Anwendungen
  • Active Directory Alternative: Open-Source Lösung als Alternative zu Microsoft Active Directory
  • Linux System Integration: PAM-basierte User Authentifizierung auf Linux-Systemen
  • Email-Server Integration: Outlook, Postfix, Dovecot und andere nutzen LDAP für Adressen
  • VoIP/Telefon-Systeme: Viele IP-PBX-Systeme integrieren mit LDAP für Verzeichnisse
  • WiFi Access Control: RADIUS mit LDAP Backend für WiFi-Authentifizierung

LDAP-Grundkonzepte und Terminologie

LDAP verwendet eine hierarchische Baumstruktur zum Speichern von Daten:

  • DN (Distinguished Name): Eindeutiger vollständiger Name eines Objekts im Baum (z.B. cn=John Doe,ou=People,dc=example,dc=com)
  • DC (Domain Component): Komponente der Domain (dc=example, dc=com - entspricht example.com)
  • OU (Organizational Unit): Abteilung, Kategorie oder Container (ou=People, ou=Groups, ou=Departments)
  • CN (Common Name): Der tatsächliche Name des Objekts (z.B. cn=John Doe oder cn=admin-group)
  • Schema: Definition von erlaubten Attributen und Objektklassen (z.B. inetOrgPerson, groupOfNames)
  • Attributes: Spezifische Daten-Felder (z.B. mail, phoneNumber, loginShell)
  • ObjectClass: Art des Objekts (z.B. person, organizationalUnit, groupOfNames)
💡 Tipp: OpenLDAP mit TLS ist ideal für sichere Authentifizierung. Kombinieren Sie es mit Keycloak oder Kanidm für OAuth2, SAML und moderneSSO-Funktionen.

Installation von slapd und ldap-utils

Aktualisieren Sie die Paketlisten und installieren Sie OpenLDAP Server und Tools:

sudo apt update
sudo apt install -y slapd ldap-utils

Der slapd-Service wird automatisch installiert und gestartet. Die ldap-utils enthalten client-seitige Tools zur Verwaltung.

Initiale Konfiguration mit dpkg-reconfigure

Führen Sie die interaktive Konfiguration aus:

sudo dpkg-reconfigure slapd

Folgende Fragen werden gestellt:

Omit OpenLDAP server configuration? [no] → no
DNS domain name: example.com
Organization name: Example Inc.
Administrator password: [enter password twice]
Database backend to use: [MDB]
Do you want the database to be removed when slapd is purged? [yes] → no (Backups wegen!)
Move old database? [yes] → yes

Nach der Konfiguration wird ein initialer LDAP-Verzeichnis mit Basis-DN "dc=example,dc=com" erstellt.

Überprüfung der Installation

Überprüfen Sie, ob der LDAP-Server läuft:

sudo systemctl status slapd

Überprüfen Sie die aktuellen Verzeichnis-Inhalte:

sudo slapcat

Dies zeigt alle Einträge in LDIF-Format (LDAP Data Interchange Format).

Suche durchführen mit ldapsearch:

ldapsearch -x -b dc=example,dc=com -H ldap:///

Dies zeigt alle LDAP-Einträge in Ihrer Basis-DN.

Schritt 1: Organizational Units (OUs) erstellen

Erstellen Sie eine LDIF-Datei zur Strukturierung des Verzeichnisses:

sudo nano /tmp/create_ous.ldif

Fügen Sie folgende Inhalte hinzu:

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
description: Users

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups
description: Groups

dn: ou=Services,dc=example,dc=com
objectClass: organizationalUnit
ou: Services
description: Service Accounts

Importieren Sie die OUs in das LDAP-Verzeichnis:

sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f /tmp/create_ous.ldif

Geben Sie das Admin-Passwort ein, das Sie bei der dpkg-reconfigure gesetzt haben.

Schritt 2: Benutzer (Users) anlegen

Erstellen Sie eine LDIF-Datei mit Benutzerinformationen:

sudo nano /tmp/create_users.ldif
dn: uid=jdoe,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: jdoe
cn: John Doe
sn: Doe
givenName: John
mail: jdoe@example.com
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/jdoe
userPassword: {SSHA}HASHED_PASSWORD_HERE

dn: uid=asmith,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: asmith
cn: Alice Smith
sn: Smith
givenName: Alice
mail: asmith@example.com
loginShell: /bin/bash
uidNumber: 10002
gidNumber: 10002
homeDirectory: /home/asmith
userPassword: {SSHA}HASHED_PASSWORD_HERE

Passwörter hashen

Generieren Sie sichere SSHA-Hashes für die Passwörter:

slappasswd -h {SSHA}

Geben Sie das gewünschte Passwort ein und erhalten Sie einen Hash. Ersetzen Sie HASHED_PASSWORD_HERE mit diesem Hash.

Importieren Sie die Benutzer:

sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f /tmp/create_users.ldif

Schritt 3: Gruppen erstellen

Erstellen Sie LDIF-Datei für Gruppen:

sudo nano /tmp/create_groups.ldif
dn: cn=developers,ou=Groups,dc=example,dc=com
objectClass: groupOfNames
cn: developers
description: Development Team
member: uid=jdoe,ou=People,dc=example,dc=com
member: uid=asmith,ou=People,dc=example,dc=com

dn: cn=admin,ou=Groups,dc=example,dc=com
objectClass: groupOfNames
cn: admin
description: System Administrators
member: uid=jdoe,ou=People,dc=example,dc=com

Importieren Sie die Gruppen:

sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f /tmp/create_groups.ldif

Schritt 4: Benutzer verändern und aktualisieren

Um einen Benutzer zu modifizieren, erstellen Sie eine LDIF-Datei mit Änderungen:

sudo nano /tmp/modify_user.ldif
dn: uid=jdoe,ou=People,dc=example,dc=com
changetype: modify
replace: mail
mail: john.doe@newcompany.com

Wenden Sie die Änderungen an:

sudo ldapmodify -x -D cn=admin,dc=example,dc=com -W -f /tmp/modify_user.ldif

Schritt 5: Benutzer löschen

Löschen Sie einen Benutzer aus dem Verzeichnis:

sudo ldapdelete -x -D cn=admin,dc=example,dc=com -W "uid=jdoe,ou=People,dc=example,dc=com"

Schritt 6: Beispiele für LDAP-Suchen

Suchen Sie nach allen Benutzern in der People-OU:

ldapsearch -x -b ou=People,dc=example,dc=com

Suchen Sie nach einem spezifischen Benutzer:

ldapsearch -x -b ou=People,dc=example,dc=com "(uid=jdoe)"

Suchen Sie nach Benutzern mit bestimmtem Namen:

ldapsearch -x -b ou=People,dc=example,dc=com "(cn=John*)"

Suchen Sie nach Gruppen:

ldapsearch -x -b ou=Groups,dc=example,dc=com "(objectClass=groupOfNames)"

Suchen Sie nach Benutzern in einer bestimmten Gruppe:

ldapsearch -x -b ou=People,dc=example,dc=com "memberOf=cn=developers,ou=Groups,dc=example,dc=com"

Schritt 7: TLS/SSL Konfiguration

Für produktive Umgebungen sollten Sie TLS/SSL aktivieren:

SSL-Zertifikat generieren

Verwenden Sie Let's Encrypt oder generieren Sie ein selbstsigniertes Zertifikat:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ldap/private/ldap-server.key \
  -out /etc/ldap/certs/ldap-server.crt

Setzen Sie korretto Berechtigungen:

sudo chown openldap:openldap /etc/ldap/private/ldap-server.key
sudo chmod 600 /etc/ldap/private/ldap-server.key

LDAP-Konfiguration für TLS anpassen

Bearbeiten Sie /etc/ldap/ldap.conf:

sudo nano /etc/ldap/ldap.conf

Fügen Sie hinzu:

TLS_CACERT /etc/ldap/certs/ldap-server.crt

Modifizieren Sie die slapd-Konfiguration:

sudo nano /etc/ldap/slapd.d/cn=config/olcDatabase=\{1\}mdb.ldif

Oder verwenden Sie ldapmodify:

sudo ldapmodify -Y EXTERNAL -H ldapi:/// <

Konfigurieren Sie slapd für LDAPS (LDAP über TLS) auf Port 636. Bearbeiten Sie /etc/default/slapd:

sudo nano /etc/default/slapd

Ändern Sie SLAPD_SERVICES zu:

SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

Starten Sie slapd neu:

sudo systemctl restart slapd

Testen Sie LDAPS-Verbindung:

ldapsearch -x -b dc=example,dc=com -H ldaps://localhost:636

Schritt 8: PAM LDAP konfigurieren für Linux-Systeme

Um LDAP-Benutzer auf Linux-Systemen anmelden zu können, installieren Sie PAM-LDAP:

sudo apt install -y libpam-ldapd nslcd

Konfigurieren Sie nslcd:

sudo dpkg-reconfigure nslcd

Beantworten Sie die Fragen: - LDAP server: ldap://ldap.example.com - LDAP base: dc=example,dc=com - Welche Services sollen nslcd verwenden: [Enter für alle]

Aktivieren Sie PAM-LDAP Module:

sudo pam-auth-update

Wählen Sie "LDAP authentication" aus der Liste.

Überprüfen Sie /etc/nsswitch.conf:

sudo nano /etc/nsswitch.conf

Es sollte enthalten:

passwd: files ldap
group: files ldap
shadow: files ldap

Schritt 9: Testen der LDAP-Login

Testen Sie, ob LDAP-Benutzer sich anmelden können:

sudo su - jdoe

Dies sollte den jdoe-Benutzer von LDAP authentifizieren und anmelden. Das Home-Directory wird automatisch erstellt (wenn pam_mkhomedir konfiguriert ist).

Überprüfen Sie /var/log/auth.log auf Login-Versuche:

sudo tail -f /var/log/auth.log | grep ldap

Schritt 10: LDAP-Backup und Wiederherstellung

Backup erstellen

Sicherung des gesamten LDAP-Verzeichnisses:

sudo slapcat -l /backups/ldap-backup.ldif

Oder erstellen Sie ein Backup der Konfiguration:

sudo slapcat -b cn=config -l /backups/ldap-config-backup.ldif

Wiederherstellung aus Backup

Stoppen Sie slapd und löschen Sie die alte Datenbank:

sudo systemctl stop slapd
sudo rm -rf /var/lib/ldap/*

Stellen Sie aus der LDIF-Datei wieder her:

sudo slapadd -l /backups/ldap-backup.ldif

Setzen Sie Berechtigungen:

sudo chown -R openldap:openldap /var/lib/ldap/

Starten Sie slapd:

sudo systemctl start slapd

Schritt 11: LDAP Account Policies (ppolicy)

Implementieren Sie Passwort-Policies mit dem ppolicy-Overlay:

Erstellen Sie eine Policy-LDIF:

sudo nano /tmp/ppolicy.ldif
dn: cn=default,ou=policies,dc=example,dc=com
objectClass: device
objectClass: pwdPolicy
cn: default
pwdMaxAge: 7776000
pwdInHistory: 5
pwdMinLength: 8
pwdExpireWarning: 604800
pwdLockout: TRUE
pwdLockoutDuration: 1800
pwdMaxFailure: 5
pwdMustChange: TRUE
pwdAllowUserChange: TRUE

Importieren Sie die Policy:

sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f /tmp/ppolicy.ldif

Fehlerbehebung

Error 32: No such object

Der Basis-DN existiert nicht. Überprüfen Sie:

sudo slapcat | head -20

Stellen Sie sicher, dass die dc=example,dc=com-Struktur existiert.

Error 49: Invalid credentials

Passwort oder DN ist falsch. Überprüfen Sie: - Korrekte Admin-DN: cn=admin,dc=example,dc=com - Korrektes Passwort - User existiert mit ldapsearch

Error 34: Invalid DN syntax

DN hat falsche Syntax. Überprüfen Sie auf Tippfehler in LDIF-Dateien.

LDAP Server antwortet nicht

sudo systemctl status slapd
sudo tail -f /var/log/syslog | grep slapd

Vergleich: OpenLDAP vs Active Directory vs Kanidm

Feature OpenLDAP Microsoft Active Directory Kanidm
Lizenzskosten Kostenlos (Open Source) Teuer (Pro Benutzer) Kostenlos (Open Source)
OS-Support Linux, Unix, macOS, BSD Windows Server nur Linux, Linux-fokussiert
Komplexität Setup Moderat Komplex Einfach
LDAP Support Native (ist LDAP) LDAP kompatibel LDAP API verfügbar
OAuth2/OIDC Via Keycloak/etc Ja (mit Extra-Config) Native
Scalability Gut Excellent Gut (modern)
Best für Linux/Unix-Umgebungen Windows-dominierte Umgebungen Modern Hybrid-Cloud Umgebungen

Zusammenfassung

Sie haben nun einen vollständigen OpenLDAP Server mit Benutzern, Gruppen und Policies konfiguriert. OpenLDAP ist eine mächtige und flexible Lösung für zentrale Benutzerverwaltung, besonders in Linux/Unix-Umgebungen. Die Kombination mit Keycloak oder anderen SSO-Systemen ermöglicht moderne OAuth2/SAML-Integration mit Legacy-Anwendungen.

Wichtige nächste Schritte: - TLS/SSL aktivieren für Produktionsumgebungen - Regelmäßige Backups durchführen - PAM-LDAP auf allen Clients konfigurieren - Mit Keycloak/FreeIPA für erweiterte SSO-Features integrieren

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120