Privat benutze ich seit einer ganzen Weile primär FreeBSD und auch schon ewig benutze ich für die Benutzerauthentifizierung LDAP. Leider hatte Thunderbird mit genau dieser Konstellation Probleme und direkt beim Starten gab es einen Crash. Mit normalen lokalen Benutzern hingegen lief Thunderbird problemlos. Ich habe dazu auch ein paar Bug-Reports gefunden, die angeblich auch gefixt sind. Aber bis vor kurzem ging es definitiv noch nicht.
Aber jetzt habe ich es mal wieder getestet und siehe da, es funktioniert! Es geschehen offenbar doch noch Wunder.
Hier eine kleine Anleitung, wie man Authentifizierung über LDAP in FreeBSD konfiguriert. Es gibt auch eine offizielle Anleitung, jedoch ist mir aufgefallen, dass nicht alle Schritte dort nötig sind.
Nach einer frischen FreeBSD-Installation müssen erst folgende Pakete installiert werden:
$ pkg install openldap26-client pam_ldap nss_ldap
Dies dürfte zum einen erstmal überhaupt das Too pkg installieren und anschließend die angegebenen Pakete.
Jetzt wird es spannend. Die offizielle FreeBSD-Dokumentation erwähnt zum einen die Konfigurationsdatei /usr/local/etc/ldap.conf. Des Weiteren muss noch pam unter /etc/pam.d/ und nss über die Konfigurationsdatei /etc/nsswitch.conf konfiguriert werden.
Aber interessanterweise scheint dies in meinem FreeBSD 12.1 nicht so der Fall zu sein. Die Datei ldap.conf existiert, jedoch musste ich sie nicht anpassen. Stattdessen muss die Datei /usr/local/etc/nss_ldap.conf angepasst werden. Hier muss der LDAP-Server angegeben werden.
host 192.168.178.20 # ldap server ip or hostname
# The distinguished name of the search base.
base dc=example,dc=com
Falls nötig kann auch ein binddn angegeben werden:
binddn cn=admin,dc=example,dc=com
bindpw secret
Danach müssen in der Datei /etc/nsswitch.conf folgende Zeilen geändert werden, damit Benutzer und Gruppen auch über LDAP geladen werden:
group: files ldap
passwd: files ldap
Das wars. PAM musste ich aus irgendeinem Grund nicht anpassen. Meine ldap-User werden mit getent passwd
angezeigt. Login mit su oder ssh funktioniert auch.
Update vom 09.10.2022: Package-Name openldap-client auf openldap26-client geändert.
Dieser Artikel ist eine kurze Anleitung für die Einrichtung des LDAP-Clients unter Solaris. Der Artikel gilt sowohl für das aktuelle Solaris 11 als auch Solaris 10.
Netzwerk-Konfiguration (nur Solaris 11)
Solaris 11 hat für die Netzwerkkonfiguration zwei Profile (NCP): DefaultFixed und Automatic. Der LDAP-Client funktioniert jedoch nicht mit dem Automatic-NCP, daher muss zwingend DefaultFixed verwendet werden. Zumindestens wenn Solaris über die Live-CD installiert wurde ist standardmäßig das Automatic-NPC aktiv. Dies muss dann geändert werden.
netadm enable -p ncp defaultfixed
Danach muss noch das Netzwerk manuell konfiguriert werden. Wer einfach DHCP verwenden will kann dies folgendermaßen tun:
ipadm create-ip net0
ipadm create-addr -T dhcp net0/v4
DNS geht dann übrigens noch nicht, das beheben wir aber später.
LDAP-Client konfigurieren
Dieser Schritt ist identisch unter Solaris 10 und 11. Der folgende Befehl konfiguriert den LDAP-Client.
ldapclient manual -a credentialLevel=proxy -a authenticationMethod=simple \
-a defaultSearchBase=dc=example,dc=com -a domainName=example.com \
-a defaultServerList=<ip> -a proxyDN=<admin-cn> -a proxyPassword=<admin-pw> \
-a serviceSearchDescriptor=group:ou=Groups,dc=example,dc=com
Standardmäßig werden Benutzer in ou=People,dc=example,dc=com gesucht (für den Basis-DN dc=example,dc=com). Wo genau nach Gruppen gesucht wird weiß ich gar nicht, weshalb ich auch mit -a serviceSearchDescriptor=group:ou=Groups,dc=example,dc=com
den passenden DN angebe. Wer dies für User ändern will kann dies mit -a serviceSearchDescriptor=passwd
und -a serviceSearchDescriptor=shadow
tun.
Name-Service konfigurieren
Nachdem der LDAP-Client konfiguriert ist, ist der Name Service Switch für die meisten eher suboptimal konfiguriert, denn Hostnamen werden per LDAP gesucht und nicht mehr mittels DNS. Unter Solaris 11 ändert man dies nur mit ein paar Befehlen:
svccfg -s "name-service/switch" setprop 'config/host = astring: "files dns"'
svcadm refresh name-service/switch
svcadm restart name-service/switch
Unter Solaris 10 muss die Datei /etc/nsswitch.conf
angepasst werden. Dafür ändert man nur folgende zwei Zeilen:
hosts: files dns
ipnodes: files dns
PAM konfigurieren
Die User existieren zwar schon, einloggen kann man sich jedoch nicht. Unter Solaris 11 ersetzt man dafür in den Dateien /etc/pam.d/login
und /etc/pam.d/other
die Zeile auth required pam_unix_auth.so.1
mit folgenden zwei Zeilen:
auth binding pam_unix_auth.so.1 server_policy
auth required pam_ldap.so.1
Unter Solaris 10 muss nur die Datei /etc/pam.conf
geändert werden. Die Zeile
login auth required pam_unix_auth.so.1
ersetzt man durch
login auth binding pam_unix_auth.so.1 server_policy
login auth required pam_ldap.so.1
und die Zeile
other auth required pam_unix_auth.so.1
mit
other auth binding pam_unix_auth.so.1 server_policy
other auth required pam_ldap.so.1
Danach kann man sich gewohnt mit su oder in Gnome mit LDAP-Benutzern einloggen.
Unter Fedora/RHEL kommt standardmäßig der System Security Services Daemon für die Authenticationverwaltung zum Einsatz, aber auch unter anderen Distributionen lässt sich SSSD nachinstallieren. Ich möchte hier kurz beschreiben, wie sich mit SSSD LDAP-Authentication einrichten lässt. Die traditionellere Methode wird in einem anderen Artikel beschrieben.
Unter Fedora/RHEL gibt es das Tool authconfig-gtk, mit dem sich ldap per GUI konfigurieren lässt. Ohne GUI reicht es die Datei /etc/sssd/sssd.conf zu bearbeiten. Dazu fügt man zuerst die ldap-Konfiguration ein:
[domain/mydomain]
autofs_provider = ldap
cache_credentials = True
ldap_search_base = dc=example,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://ldapserver/
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/cacerts
Der Domainname ist frei wählbar und es muss noch angegeben werden, dass diese Domain verwendet werden soll. Die [sssd] Sektion enthält den Eintrag domains, der die Domainnamen kommagetrennt enthält.
[sssd]
...
domains = mydomain
Das war nur ein einfaches Beispiel. Mehr Informationen gibt es in der sehr ausführlichen Dokumentation.
LDAP-Server gibt es einige. Am meisten verbreitet ist wohl OpenLDAP. Ich persöhnlich finde OpenLDAP allerdings zu frickelig, vor allem seit slapd.conf abgeschafft wurde, und die Konfiguration auch über ldap geschieht. Glücklicherweise gibt es einige Alternativen, z.B. den 389 Directory Server von Red Hat, und natürlich OpenDJ, worum es in diesem Artikel auch gehen soll.
OpenDJ ist ein Fork von OpenDS, einem von Sun Microsystems in Java entwickelten LDAP-Server. Nach der Übernahme von Sun durch Oracle wurde die Entwicklung von OpenDS jedoch eingestellt, daher gründeten ehemalige Sun-Mitarbeitern die Firma ForgeRock und forkten OpenDS. OpenDJ hat daher einen gewissen kommerziellen Charakter, allerdings ist es trotzdem OpenSource-Software.
OpenDJ gibt es unter anderem als einfaches zip-Package zu downloaden. Für die normalen Releases muss man sich registrieren, jedoch nicht für die Nightly-Builds. Da es sich um Java-Software handelt, benötigt man natürlich eine JRE. Nach dem Download einfach das zip-Package in den gewünschten Installationsort entpacken. Danach muss nur noch das setup-Script ausgeführt werden. Dieses startet einen kinderleichten grafischen- oder CLI-Assistenten, in dem alles nötige konfiguriert wird.
Nach dem Setup wird gewöhnlich eine Server-Instanz gestartet und es wird gefragt, ob man das Control-Panel (Button mit der Aufschrift "Steuerbereich starten") starten möchte. Dies kann man später auch alles manuell machen. Im opendj/bin Verzeichnis liegen alle nötigen Skripte (start-ds, stop-ds, control-panel).
Das Control-Panel macht OpenDJ so benutzerfreundlich. Es ist sowohl möglich lokale Server, als auch entfernte Server damit zu administrieren.
Neben typischen Aufgaben wie LDIF Im- und Export und Schema-Verwaltung, gibt es auch die Möglichkeit, LDAP-Einträge zu verwalten. Man kann sich also auch einen separaten LDAP-Client sparen.
Ganz nett ist auch, dass OpenDJ standardmäßig mit allen wichtigen Schemas ausgeliefert wird. Einfacher kann man den Einstieg in die LDAP-Welt nicht machen.