Anmeldung von AD-Domänenbenutzern auf Linux mit SSSD und PAM

Szenario

Ich habe (wie in meinem früheren Artikel „SAMBA4 Domain Controller zu existierender W2012R2 AD Domäne hinzufügen“ beschrieben) eine 2008R2 AD Domäne MYDOM.LOCAL mit mindestens einem Domain Controller, LINDC.MYDOM.LOCAL (Debian GNU/Linux „jessie/sid“ mit SAMBA4 aus GIT).

Auf LINDC möchte ich nun auch die Benutzerkonten des Active Directory bei der Anmeldung zur Verfügung stehen haben. Das möchte ich mit dem System Security Services Daemon (SSSD) und Pluggable Authentication Modules (PAM) lösen.

SSSD installieren

Auf Debian installiere ich SSSD mit Active Directory Back End mit

~# apt-get install sssd sssd-ad

Ich deaktiviere den Dienst „nscd“ (SSSD macht sein eigenes Caching, mit NSCD kann er durcheinandergeraten)

~# systemctl disable nscd.service
~# service nscd stop

Hinweis: Die Debian-Installationsroutine hat die benötigten Einträge in /etc/nsswitch.conf und den Dateien in /etc/pam.d/ bereits hinzugefügt, darum brauche ich mich nicht mehr zu kümmern.

Kerberos konfigurieren

Die Datei /etc/krb5.conf bleibt wie im vorangegangenen Artikel:

[libdefaults]
default_realm = MYDOM.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true

Kerberos-Anmeldedaten in Keytab abspeichern

Der Security Principal, der im AD die Benutzerkonten abfragen möchte, ist der lokale Rechner, hier identifiziert durch den Namen seines Maschinen-Kontos, LINDC$@MYDOM.LOCAL. Dessen Anmeldeinformationen für Kerberos speichere ich lokal in einer Datei ab, die nur für Benutzer „root“ lesbar ist:

~# samba-tool domain exportkeytab /etc/krb5.keytab --principal LINDC\$@MYDOM.LOCAL
~# chown root:root /etc/krb5.keytab
~# chmod 600 /etc/krb5.keytab

Hinweis: /etc/krb5.keytab ist der Standard-Dateiname für die Kerberos-Keytab und muss in der Konfiguration von Kerberos nicht gesondert angegeben werden.

SSSD konfigurieren

Die Datei /etc/sssd/sssd.conf sieht so aus:

[sssd]
config_file_version = 2
domains = mydom.local
services = nss, pam

[domain/mydom.local]
id_provider = ad
auth_provider = ad
access_provider = ad

SSSD starten

 ~# service sssd start

Optional: Kerberos-Keytab in SAMBA4 verwenden

Ich kann die Anmeldeinformationen aus der Datei /etc/krb5.keytab auch in SAMBA4 verwenden, dazu füge ich in der Datei /etc/samba/smb.conf in der Sektion [global] folgende Zeilen hinzu:

kerberos method = dedicated keytab
dedicated keytab file = /etc/krb5.keytab

Test

Ich lege einen AD-Benutzeraccount an und verwende ihn als Account in Linux:

~# samba-tool user create tilt Pass123
User 'tilt' created successfully
~# id tilt
uid=1396201605(tilt) gid=1396200513(domänen-benutzer)  Gruppen=1396200513(domänen-benutzer)

Hinweis: Ich muss beim Aufruf von samba-tool keine Anmeldeinformationen mehr angeben, weil die aus der Kerberos-Keytab genommen werden (siehe vorangegangener Abschnitt), und da ich einen DC als Principal verwende, habe ich das Recht, Benutzerkonten anzulegen.