LDAP Authentifizierung · 5 min read · Dec 13, 2025
LDAP-Authentifizierung in Linux

Dieses Howto zeigt Ihnen, wie Sie Ihre Benutzer in LDAP speichern und einige der Dienste dagegen authentifizieren. Ich werde nicht zeigen, wie man bestimmte Pakete installiert, da dies distributions- bzw. systemabhängig ist. Ich werde mich auf die “reine” Konfiguration aller Komponenten konzentrieren, die benötigt werden, um LDAP-Authentifizierung/Speicherung von Benutzern zu haben. Das Howto geht davon aus, dass Sie irgendwie von einer regulären passwd/shadow-Authentifizierung migrieren, ist aber auch für Personen geeignet, die es von Grund auf neu machen.
Anforderungen
- OpenLDAP
- pam_ldap
- nss_ldap
- PADL-Migrationstools
Einführung
Das Ziel, das wir erreichen wollen, ist, unsere Benutzer in LDAP zu speichern, gegen LDAP (direkt oder pam) zu authentifizieren und ein Tool zu haben, um dies auf eine für Menschen verständliche Weise zu verwalten.
Auf diese Weise können wir alle Software verwenden, die LDAP-Unterstützung hat oder auf das PAM-LDAP-Modul zurückgreift, das als PAM->LDAP-Gateway fungiert.
Weitere Informationen zur LDAP-Idee finden Sie auf Wikipedia: LDAP Wikipedia
Konfiguration von OpenLDAP
OpenLDAP besteht aus den Daemons slapd und slurpd. Dieses Howto behandelt einen LDAP-Server ohne Replikation, daher konzentrieren wir uns nur auf slapd. Ich gehe auch davon aus, dass Sie Ihre OpenLDAP-Installation installiert und initialisiert haben (abhängig vom System/Distribution). Wenn ja, lassen Sie uns zum Konfigurationsteil übergehen.
Auf meinem System (Gentoo) wird die Konfiguration von OpenLDAP in /etc/openldap gespeichert, wir sind an der Datei /etc/openldap/slapd.conf interessiert. Aber zuerst müssen wir ein Passwort für den LDAP-Administrator generieren, um es in die Konfigurationsdatei einzufügen:
slappasswd -h {md5}Die Konfiguration sieht folgendermaßen aus:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/lib/openldap/openldap
access to attrs=userPassword
by dn="uid=root,ou=People,dc=domain,dc=com" write
by dn="cn=Manager,dc=domain,dc=com" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=Manager,dc=domain,dc=com" write
by * read
database bdb
suffix "dc=domain,dc=com"
rootdn "cn=Manager,dc=domain,dc=com"
rootpw {MD5}Tk1sMytv5ipjr+Vhcf03JQ==
directory /var/lib/openldap-data
index objectClass eq
Denken Sie daran, Suffix und Pfade nach Ihren Bedürfnissen zu ändern.
Dies sind grundlegende Optionen mit einigen grundlegenden ACLs, die benötigt werden, um Passwörter durch Benutzer zu ändern. Wenn Sie mehr Funktionalität wünschen, lesen Sie bitte das Handbuch zu OpenLDAP. Jetzt, da wir eine ordnungsgemäße Konfiguration für slapd haben, können wir den Daemon starten:
service slapd startBitte denken Sie daran, etwas wie das in die Konfigurationsdatei einzufügen, das für die an slapd übergebenen Argumente verantwortlich ist (der Pfad sollte auf die slapd.sock zeigen):
OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"Jetzt können wir testen, ob OpenLDAP läuft und ordnungsgemäß funktioniert. Wir haben noch keine Daten im Verzeichnis, aber wir können versuchen, uns als cn=Manager,dc=domain,dc=com zu verbinden. Wenn Sie nach dem Passwort gefragt werden, sollten Sie das verwenden, das Sie generiert haben (natürlich die Klartextversion davon):
ldapsearch -D "cn=Manager,dc=domain,dc=com" -WDaten in das Verzeichnis migrieren/hinzufügen
Jetzt, wo wir einen laufenden LDAP-Server haben, müssen wir ihn mit Daten füllen, entweder Einträge erstellen oder migrieren. Ich werde Ihnen zeigen, wie Sie vorhandene Einträge aus der regulären /etc/passwd, /etc/shadow, /etc/groups migrieren.
Der erste Schritt besteht darin, die Migrationstools nach Ihren Bedürfnissen zu konfigurieren. Die Konfigurationsdatei auf Gentoo befindet sich in /usr/share/migrationtools/migrate_common.ph.
Im Allgemeinen müssen Sie nur diese ändern:
$DEFAULT_BASE = "dc=domain,dc=com";
$EXTENDED_SCHEMA = 1;
Jetzt sind Sie bereit, die Daten zu migrieren (tatsächlich funktioniert es sogar ohne den Exportbefehl):
export ETC_SHADOW=/etc/shadow
./migrate_base.pl > /tmp/base.ldif
./migrate_group.pl /etc/group /tmp/group.ldif
./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif
./migrate_passwd.pl /etc/passwd /tmp/passwd.ldifJetzt haben wir die Daten im Format, das vom LDAP-Server verstanden wird. Bitte öffnen Sie eine der Dateien mit einem Texteditor, um sich mit der Syntax vertraut zu machen. Danach können wir die Daten aus den ldifs hinzufügen.
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/base.ldifldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/group.ldifldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/passwd.ldifldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/hosts.ldifSie können versuchen, nach einigen Daten zu suchen:
ldapsearch uid=foouserClient-Konfiguration
Mit Client meine ich die Maschine, die sich mit dem LDAP-Server verbindet, um Benutzer zu erhalten und zu autorisieren. Es kann auch die Maschine sein, auf der der LDAP-Server läuft. In beiden Fällen müssen wir drei Dateien bearbeiten: /etc/ldap.conf, /etc/nsswitch.conf und /etc/pam.d/system-auth.
Lassen Sie uns mit ldap.conf, dem LDAP-Client, beginnen:
BASE dc=domain, dc=com
scope sub
suffix "dc=domain,dc=com"
## wenn Sie das Passwort eines Benutzers als root ändern möchten
rootbinddn cn=Manager,dc=domain,dc=com
## diese sind nötig, wenn Ihr LDAP ausfällt
timelimit 5
bind_timelimit 5
uri ldap://ldap.domain.com/
pam_password exop
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
nss_base_passwd ou=Computers,dc=cognifide,dc=pl
nss_base_passwd ou=People,dc=cognifide,dc=pl
nss_base_shadow ou=People,dc=cognifide,dc=pl
nss_base_group ou=Group,dc=cognifide,dc=pl
nss_base_hosts ou=Hosts,dc=cognifide,dc=pl
Jetzt ist es Zeit für nsswitch.conf und pam.
Fügen Sie diese zu nsswitch.conf hinzu:
passwd: files ldap
shadow: files ldap
group: files ldap
Und ändern Sie die system-auth (oder was auch immer Sie wie login, sshd usw. haben) zu:
auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account sufficient pam_unix.so
account sufficient pam_ldap.so
account required pam_ldap.so
password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password sufficient pam_unix.so nullok md5 shadow use_authtok
password sufficient pam_ldap.so use_first_pass
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
session optional pam_ldap.so
Es ist Zeit, es zu testen. Das beste Tool dafür ist ein gutes altes getent. Wählen Sie einen Benutzer aus Ihrem System und geben Sie ein:
getent passwd | grep foouserSie sollten das Ergebnis zweimal erhalten, wenn ja, funktioniert nss_ldap einwandfrei. Der pam-Teil kann getestet werden, indem ein Benutzer aus der /etc/passwd gelöscht wird und versucht wird, sich über ssh anzumelden.
Apache mod_auth_ldap
Um LDAP-Authentifizierung in Apache zu haben, müssen Sie das mod_auth_ldap-Modul laden:
LoadModule mm_auth_ldap_module modules/mod_auth_ldap.soJetzt reicht es aus, eine .htaccess so zu erstellen:
AuthName "Eingeschränkt"
AuthType Basic
AuthLDAPURL ldap://ldap.domain.com:389/ou=People,dc=domain,dc=com?uid
AuthLDAPBindDN "cn=Manager,dc=domain,dc=com"
AuthLDAPBindPassword "your_secret_secret_password_to_ldap_admin"
require valid-user
Beachten Sie, dass diese Methode auch für die WebDAV-Subversion-Authentifizierung verwendet werden kann.
Verwaltungstools für LDAP
Es gibt einige Tools, die ich empfehle, um den OpenLDAP-Server zu verwalten:
- phpldapadmin - webbasierte Anwendung
- ldapvi - vim-Browsing
- PADL-Migrationstools - Migrationstools
- IDEALX sambaldap-Tools - Samba LDAP-Tools
Andere LDAP-bewusste Anwendungen
- Postfix
- Courier IMAP
- jabberd
- eGroupware
Zusammenfassung
Wenn jemand etwas hinzuzufügen hat, bitte tun Sie es. Ich weiß, die Konfiguration ist möglicherweise nicht perfekt.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.