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 start

Bitte 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" -W

Daten 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.ldif

Jetzt 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.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/group.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/passwd.ldif
ldapadd -D "cn=Manager,dc=domain,dc=com" -W -f /tmp/hosts.ldif

Sie können versuchen, nach einigen Daten zu suchen:

ldapsearch uid=foouser

Client-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 foouser

Sie 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.so

Jetzt 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.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.