Ubuntu 20.04 - LDAP Client Authentifizierung einrichten
Vorwort
Diese Dokumentation beschreibt den Installationsvorgang und Einrichtung der LDAP-Authentifizierung unter Ubuntu.
Bitte vergewissern Sie sich, dass Ihr System über die nötigen Voraussetzungen verfügt, wie in der Infobox beschrieben. Weiterhin sind Grundkenntnisse im Umgang mit Linux erforderlich, da die Vorgehensweise, wie sie hier beschrieben ist, in manchen Teilen abweichen kann. Kein System ist wie das Andere. Die Dokumentation wurde sorgfältig von mir geprüft. Dennoch kann ich keinerlei Haftung für Schäden an Ihrem System oder eine Gewährleistung übernehmen. Bitte verwenden Sie diese Dokumentation auf eigene Gefahr.
Verwendete Software:
Voraussetzungen:
Weitere, empfohlene Dokumentationen:
Was muss ich in der Konfiguration anpassen?
Einige Parameter müssen auf Ihre Umgebung angepasst werden. Im Verlauf dieser Dokumentation müssen Sie nur die Parameter anpassen, die in der nachfolgenden Tabelle aufgelistet sind. Sie können also ganz einfach durch die Funktion "Suchen und Ersetzen" (STRG + H), die Konfigurationsdateien auf Ihre Umgebung anpassen. Das Gleiche gilt für auszuführende Kommandos.
Folgende Parameter werden verwendet:
Wert | Hinweis | |
---|---|---|
Allgemein: | ||
Back-End LDAP-Server | ldap.example.com | Ersetzen Sie diesen Wert durch den FQDN Ihres Back-End LDAP-Server. |
LDAP: | ||
RootBindDN | CN=Admin,CN=Users,DC=example,DC=com | Ersetzen Sie diesen Wert durch die BindDN Ihres Back-End LDAP-Server. |
BindDN | CN=ReadOnly,CN=Users,DC=example,DC=com | Ersetzen Sie diesen Wert durch die BindDN Ihres Back-End LDAP-Server. |
BindPW | SicheresPasswortVerwenden! | Ersetzen Sie diesen Wert durch das Bind-Passwort Ihres Back-End LDAP-Server. |
Base | DC=example,DC=com | Ersetzen Sie diesen Wert durch die Base Ihres Back-End LDAP-Server. |
Konfigurations-Dateien werden immer nach dem gleichen Muster erstellt. Unter jeder Datei, die eine Anpassung erfordert, finden Sie die nötigen Hinweise.
Dateien, die zwar Parameter aber keine eigentliche Konfiguration enthalten, werden nach dem vorgegebenen Syntax erstellt.
Beispiel:
Im folgenden Beispiel ist die Datei /home/beispiel.conf
zu erstellen und der Parameter domain
anzupassen.
Erstellen Sie eine neue Datei /home/beispiel.conf
mit folgendem Inhalt:
# nano /home/beispiel.conf
url = www.twlnet.com
content = Dokumentationen
domain = example.com
owner = root
# beispiel.conf
[...]
domain = example.com
[...]
Im folgenden Beispiel ist die Datei /home/beispiel.map
mit einer Liste Ihrer E-Mail-Adressen zu erstellen.
Erstellen Sie eine neue Datei /home/beispiel.map
nach folgendem Syntax:
# nano /home/beispiel.map
benutzer1@example.com
benutzer2@example.com
benutzer3@example.com
Server vorbereiten
Root-Rechte einräumen
Während der gesamten Dokumentation werden Root-Rechte benötigt. Um auf das Voranstellen von sudo
zu verzichten, verschaffen Sie sich für die gesamte Sitzung erhöhte Rechte mit:
# sudo -i
Update durchführen
Bringen Sie den Server auf den aktuellen Patchstand:
# apt update && apt upgrade
Software herunterladen und installieren
Installieren Sie die benötigte Software:
# apt install ldap-auth-client ldap-auth-config libnss-ldap libpam-ldap
Der Konfigurationsdialog von ldap-auth-config
kann ignoriert werden.
Eingaben aus dem Konfigurationsdialog werden nicht berücksichtigt, da die Konfiguration im Verlauf dieser Dokumentation manuell erstellt wird.
LDAP Client-Authentifizierung einrichten
Konfiguration erstellen
/etc/ldap.conf
ist die zentrale Konfigurations-Datei und in zwei Abschnitte unterteilt.Sie beinhaltet sowohl die Konfiguration von PAM (pam_ldap
) als auch die von Name Service Switch (nss_ldap
). PAM ist dabei für die Authentifizierung von Benutzern zuständig, während Name Service Switch die lokalen Datenquellen passwd
, group
, etc. um LDAP ergänzt.
Es würde den Umfang dieser Dokumentation sprengen, wenn ich auf die gesamte Konfiguration der ldap.conf
eingehen würde. Alle Konfigurations-Parameter finden Sie in den Ubuntu-Manpages für pam_ldap und nss_ldap.
In unserem Setup erstellen wir eine Konfiguration für die Kommunikation mit einem Samba4-Domain-Controller (Microsoft Active-Directory):
Abschnitt pam_ldap
uri ldap://ldap.example.com
Die Adresse des LDAP-Back-End-Servers (ldap://...)
base DC=example,DC=com
Der Punkt, wo im Verzeichnisbaum abwärts die Suche nach Objekten gestartet werden soll.
rootbinddn CN=Admin,CN=Users,DC=example,DC=com
Der Benutzer, der den Zugriff auf den LDAP-Back-End-Server durchführen soll. Damit Passwörter für Benutzer geändert werden können, muss dieser Benutzer über Schreibrechte im Verzeichnis verfügen. Aus Sicherheitsgründen wird das Password in der Dateildap.secret
im gleichen Verzeichnis gespeichert.
ldap_version 3
Die verwendete LDAP-Version.
ssl start_tls
SSL-Konfiguration. Mögliche Werte sind:on
,off
oderstarttls
pam_filter &(objectClass=posixAccount)(memberOf=CN="Domain Admins",CN=Users,DC=example,DC=com)
Attributwert-Filter, der mit der Benutzereingabe übereinstimmen muss. In unserem Beispiel muss der Benutzer das AttributposixAccount
und die GruppenzugehörigkeitDomain Admins
enthalten, um sich anmelden zu können.
pam_login_attribute sAMAccountName
Das Attribut, mit dem der Benutzeranmeldename überbeistimmen muss. Im Microsoft Active-Directory wird das AttributsAMAccountName
verwendet.
pam_password ad
Das Protokoll, welches für einen Passwortwechsel verwendet werden soll.
Abschnitt nss_ldap
binddn CN=ReadOnly,CN=Users,DC=example,DC=com
Der Benutzer, der den Zugriff auf den LDAP-Back-End-Server durchführen soll. Da fürnss_ldap
keine Schreibrechte erforderlich sind, sollte diese Benutzer auch nur über Leserechte im Verzeichnis verfügen.
Wichtig! Auch wenn der gleiche Benutzer wie im Abschnitt pam_ldap verwendet wird, muss er unbedingt auch hier angegeben werden, da der Zugriff durchnss_ldap
ansonsten anonym durchgeführt wird.
bindpw SicheresPasswortVerwenden!
Da der Benutzer nicht über erhöhte Rechte im Verzeichnis verfügt, kann das Passwort in der Datei konfiguriert werden.
nss_base_group DC=example,DC=com?sub
Der Punkt, wo im Verzeichnisbaum abwärts die Suche nach Gruppen gestartet werden soll. Der Zusatz...?sub
gibt an, dass in diesem Objekt und überall darunter (sub) gesucht werden soll.
nss_map_attribute uid sAMAccountName
Ändert die Zuordnung vonuid
zusAMAccountName
. Im Microsoft Active-Directory wird das AttributsAMAccountName
verwendet.
nss_map_objectclass posixGroup group
Ändert die Zuordung der Objekt-KlasseposixGroup
zugroup
, da im Microsoft Active-DirectoryposixGroup
nicht bekannt ist.
nss_map_attribute uniqueMember member
Ändert die Zuordung vonuniqueMember
zumember
, da im Microsoft Active-DirectoryuniqueMember
nicht bekannt ist.
nss_map_attribute homeDirectory unixHomeDirectory
Ändert die Zuordung vonhomeDirectory
zuunixHomeDirectory
, da im Microsoft Active-Directory unterhomeDirectory
normalerweise ein UNC-Pfad angegeben wird.
Benennen Sie zunächst die /etc/ldap.conf
um, damit Sie eine Sicherheitskopie der Original-Datei haben:
# mv /etc/ldap.conf /etc/ldap.conf.bak
Erstellen Sie eine neue Datei ldap.conf
mit folgendem Inhalt:
# nano /etc/ldap.conf
# pam_ldap
uri ldap://ldap.example.com
base DC=example,DC=com
rootbinddn CN=Admin,CN=Users,DC=example,DC=com
ldap_version 3
ssl start_tls
pam_filter &(objectClass=posixAccount)(memberOf=CN="Domain Admins",CN=Users,DC=example,DC=com)
pam_login_attribute sAMAccountName
pam_password ad
# nss_ldap
binddn CN=ReadOnly,CN=Users,DC=example,DC=com
bindpw SicheresPasswortVerwenden!
nss_base_group DC=example,DC=com?sub
nss_map_attribute uid sAMAccountName
nss_map_objectclass posixGroup group
nss_map_attribute uniqueMember member
nss_map_attribute homeDirectory unixHomeDirectory
# ldap.conf
[...]
# pam_ldap
uri ldap://ldap.example.com
base DC=example,DC=com
rootbinddn CN=Admin,CN=Users,DC=example,DC=com
[...]
# nss_ldap
binddn CN=ReadOnly,CN=Users,DC=example,DC=com
bindpw SicheresPasswortVerwenden!
[...]
nss_base_group DC=example,DC=com?sub
[...]
Passwort-Datei für pam_ldap erstellen
Erstellen Sie die Passwort-Datei für pam_ldap
und passen Sie die Zugriffsrechte an:
(Ersetzen Sie SicheresPasswortVerwenden!
durch Ihr LDAP-Back-End Passwort)
# echo 'SicheresPasswortVerwenden!' > /etc/ldap.secret # chmod 600 /etc/ldap.secret
Name Service Switch für nss_ldap einrichten
Editieren Sie Datei /etc/nsswitch.conf
und fügen Sie die Parameter ldap
hinzu:
# nano /etc/nsswitch.conf
# nsswitch.conf
[...]
passwd: files ldap systemd
group: files ldap systemd
shadow: files ldap
[...]
Group-Mapping (pam_group) einrichten
pam_group
werden Benutzern lokale Unix-Gruppen (z.B. sudo
) zugewiesen.Die Konfiguration findet in der Datei /etc/security/group.conf
statt.
Auch hier gehe ich nur auf die für unser Setup relevanten Parameter ein. Alle Konfigurations-Parameter finden Sie in der Ubuntu-Manpage für pam_group.
Der Syntax für die Gruppen-Zuweisung ist folgender:
services;ttys;users;time;groups
services
PAM-Service(s) für den die Regel gelten soll.ttys
Terminal(s) für das die Regel gelten soll.users
Benutzer oder Gruppe(n) für welche die Regel gelten soll.time
Der Zeitraum, innerhalb dessen die Regel gelten soll.groups
Gruppen, die entsprechend der Kriterien zugewiesen werden sollen.
In unserem Setup ergeben sich folgende Gruppenzuweisungen:
Alle Benutzer, unabhängig ihrer Gruppenzugehörigkeit, erhalten die lokalen Unix-Gruppen audio
, cdrom
, plugdev
und video
:
*;*;*;Al0000-2400;audio cdrom plugdev video
*
Alle PAM-Services*
Alle Terminals*
Alle Benutzer oder GruppenAl0000-2400
An allen Tagen der Woche(Al)
in der Zeit von 00:00-24:00 Uhr(0000-2400)
audio cdrom plugdev video
Erhalten diese lokalen Unix-Gruppen.
Alle Mitglieder der Gruppe Domain Admins
erhalten die lokalen Unix-Gruppen sudo
, adm
, dip
und lpadmin
:
*;*;%Domain Admins;Al0000-2400;sudo adm dip lpadmin
*
Alle PAM-Services*
Alle Terminals%Domain Admins
Nur Mitglieder der GruppeDomain Admins
Al0000-2400
An allen Tagen der Woche(Al)
in der Zeit von 00:00-24:00 Uhr(0000-2400)
audio cdrom plugdev video
Erhalten diese lokalen Unix-Gruppen.
Benennen Sie zunächst die /etc/security/group.conf
um, damit Sie eine Sicherheitskopie der Original-Datei haben:
# mv /etc/security/group.conf /etc/security/group.conf.bak
Erstellen Sie eine neue Datei group.conf
nach folgendem Syntax:
# nano /etc/security/group.conf
*;*;*;Al0000-2400;audio cdrom plugdev video
*;*;%Domain Admins;Al0000-2400;sudo adm dip lpadmin
PAM-Konfigurationen erstellen
pam_group
Erstellen Sie eine neue Datei ldap_groups
mit folgendem Inhalt:
# nano /usr/share/pam-configs/ldap_groups
Name: Add local Groups from /etc/security/group.conf
Default: yes
Priority: 900
Auth-Type: Primary
Auth:
required pam_group.so
pam_mkhomedir
Editieren Sie die Datei /usr/share/pam-configs/mkhomedir
und ändernd Sie fügen Sie folgendes hinzu:
# nano /usr/share/pam-configs/mkhomedir
# mkhomedir [...] optional pam_mkhomedir.so skel=/etc/skel umask=077 [...]
Alternativ können Sie auch folgende Sed-Anweisung verwenden:
# sed -i 's/pam\_mkhomedir\.so/pam\_mkhomedir\.so\ skel\=\/etc\/skel\ umask\=077/g' /usr/share/pam-configs/mkhomedir
PAM-Konfigurationen anwenden
Aktivieren Sie PAM-Konfigurationen mit folgendem Kommando:
# pam-auth-update
Wählen Sie im Fenster PAM-Konfiguration
folgende Parameter aus und bestätigen Sie mit der Enter-Taste
:
Abschluss und Test
Melden Sie sich mit einem LDAP-Account an und prüfen Sie mit id
die Gruppenzugehörigkeit:
$ id
Die Ausgabe sollte für Domain Admins in etwa so aussehen:
uid=65546(testuser) gid=2513(Domain Users) Gruppen=2513(Domain Users),4(adm),24(cdrom),27(sudo),29(audio),30(dip),44(video),46(plugdev),2512(Domain Admins)
Alternativ kann die Gruppenzugehörigkeit auch mit groups
geprüft werden:
$ groups
Die Ausgabe sollte für Domain Admins in etwa so aussehen:
Domain Users adm cdrom sudo audio dip video plugdev Domain Admins