Authentisierung mit realmd

Im folgenden wird beschrieben wie Sie ein Red Hat Enterprise Linux System (ab Version 7.x) so einrichten, dass sich dessen Benutzer über den sssd AD-Provider an der ETHZ Infrastruktur authentisieren können und beim Login automatisch ein lokales Homeverzeichnis erstellt wird, falls dieses noch nicht existiert.

Table Of Contents

Voraussetzungen

Pakete

Bitte stellen Sie sicher, dass die folgenden Pakete installiert sind:

krb5-workstation oddjob-mkhomedir realmd sssd sssd-ad samba-common-tools

Die Paketnamen können bei anderen Distributionen abweichen.

Posix Attribute

Das an der ETHZ genutzte Active Directory D.ETHZ.CH enthält bereits die notwendigen Posix Erweiterungen (Services for Unix).

Attribute wie das Home Verzeichnis, oder die Login Shell lassen sich mit dem nethz Admin-Tool in den Mailbox-Service-Einstellungen bearbeiten.

Die empfohlene Einstellung für das Unix-Home-Verzeichnis lautet /home/IHR_USERNAME, wobei Sie bitte IHR_USERNAME durch den Namen Ihres Benutzerkontos ersetzen. Standardmässig ist der Wert für das Home-Verzeichnis auf /nas/IHR_USERNAME gesetzt. Möchten Sie diese Einstellung beibehalten, beachten Sie bitte die Hinweise im Abschnitt SELinux.

DNS

Stellen Sie bitte sicher, dass die DNS Server korrekt konfiguriert sind und in der Suchreihenfolge zuerst d.ethz.ch gelistet wird. Sollten Sie den DHCP Server der ID KOM nutzen, werden diese Einstellungen automatisch korrekt befüllt. Für eine manuelle Konfiguration finden Sie ein Beispiel in der Beschreibung für sssd.

Zeitsynchronisation

Die Uhrzeit des Rechners sollte nicht wesentlich von der Zeit des Domaincontrollers abweichen. Deshalb sollte unbedingt ein Zeitserver zur Synchronisation verwendet werden.

realmd

Das Programm realm ermöglicht es Ihnen auf einem einfachen Weg einen Rechner an das Active Directory der ETH Zürich zu joinen.

realm join --user=IHR_OUADMIN --computer-ou=OU=computers,OU=ID-RHN,OU=Services,OU=ID-BD-CD,OU=Hosting,DC=d,DC=ethz,DC=ch d.ethz.ch

Ersetzen Sie bitte IHR_OUADMIN durch den Namen des Kontos, das join Rechte auf die unter --computer-ou angegebene OU hat. Die im obigen Beispiel angegebene OU passen Sie bitte an Ihre Gegebenheiten an.

Sollte nach dem Ausführen des Kommandos keine Fehlermeldung angezeigt werden, wurde der Domainjoin erfolgreich durchgeführt.

Test

Nach der erfolgreichen Einrichtung, sollten sich mit Hilfe von:

getent passwd IHR_USERNAME@d.ethz.ch

Benutzerinformationen abrufen lassen. Ersetzen Sie hierbei bitte IHR_USERNAME durch den Active Directory Benutzernamen, den Sie abfragen möchten.

Den Status der realmd Konfiguration können Sie mit Hilfe von:

realm list

abrufen.

Jetzt sollten Sie sich mit Ihrem Active Directory Benutzeraccount einloggen können. Beachten Sie bitte, dass Sie auch hier @d.ethz.ch anfügen müssen.

Security

Standardmässig können sich alle Active Directory Benutzer anmelden. Um dies zu verhindern können Sie zunächst den Zugriff für alle Domainuser unterbinden:

realm deny --all

Und danach für einzelne Benutzerkonten freigeben:

realm permit USERNAME@d.ethz.ch

Wobei Sie bitte USERNAME durch den Namen des Benutzer ersetzen, der Zugriff erhalten soll.

Es besteht ausserdem die Möglichkeit den Zugriff für Benutzergruppen zu erlauben:

realm permit -g IHRE_ADGRUPPE

Ersetzen Sie bitte IHRE_ADGRUPPE durch den tatsächlichen Namen der Gruppe die Zugriff erhalten soll.

sudo

Zur Einrichtung von sudo können Sie eine Datei /etc/sudoers.d/IHRE_ADGRUPPE mit folgendem Inhalt erstellen:

%IHRE_ADGRUPPE ALL=ALL

Ersetzen Sie auch hier bitte wieder IHRE_ADGRUPPE durch den tatsächlichen Namen der Gruppe, der Sie sudo-Zugriff ermöglichen möchten. Beachten Sie bitte, dass das führende %-Zeichen erhalten bleiben muss, wenn Sie eine Gruppe angeben möchten.

Passen Sie bitte nach der Erstellung der Datei die Rechte wie folgt an:

chmod 700 /etc/sudoers.d/IHRE_ADGRUPPE

SELinux

Sollten Sie SELinux aktiviert haben und das Defaulthome /nas verwenden wollen, gehen Sie bitte wie folgt vor:

mkdir /nas
semanage fcontext -a -e /home /nas
restorecon -R -v /nas

FQDN

In der Standardkonfiguration muss immer der Domainname mit an den Usernamen angehängt werden. Wenn Sie keine lokalen Benutzerkonten angelegt haben, die mit Domainkonten in Konflikt stehen könnten, haben Sie die Möglichkeit diese Funktion abzuschalten.

Dazu setzen Sie bitte in der Konfigurationsdatei /etc/sssd/sssd.conf unterhalb der Domainkonfiguration die Option use_fully_qualified_names = False.

/etc/sssd/sssd.conf

[domain/d.ethz.ch]
use_fully_qualified_names = False

und starten danach den Service sssd neu:

systemctl restart sssd

UID Mapping

Per Default werden uids und gids automatisch erstellt. Möchten Sie stattdessen, dass die im Active Directory hinterlegten Werte verwendet werden (wie im RFC2307 beschrieben), fügen Sie bitte in der Konfigurationsdatei /etc/sssd/sssd.conf den Parameter ldap_id_mapping = false unterhalb der Domain-Konfiguration ein:

/etc/sssd/sssd.conf

[domain/d.ethz.ch]
ldap_id_mapping = false

Beenden Sie dannach bitte den sssd Service, löschen den Cache und starten den sssd Service neu:

systemctl stop sssd
rm /var/lib/sss/db/cache*
systemctl start sssd

Gruppen werden nicht aufgelöst

Wenn Gruppen mit

getent group my-group

nicht aufgelöst werden, kann dies ebenfalls mit dem mapping zusammenhängen. Mit der Option

[domain/d.ethz.ch]
debug_level = 6
und dem Aufruf (nach Stoppen des sssd) von

# sssd -i
ist in der Ausgabe dann zu sehen

(Wed Sep 28 16:29:29 2016) [sssd[be[D.ETHZ.CH]]] [sdap_idmap_sid_to_unix] (0x0080): Could not convert objectSID [S-1-5-21-2025429265-764733703-1417001333-401394] to a UNIX ID
(Wed Sep 28 16:29:29 2016) [sssd[be[D.ETHZ.CH]]] [sdap_save_group] (0x0080): Could not convert SID string: [Eingabe-/Ausgabefehler]
Dieses Problem lässt sich ebenfalls mit ldap_id_mapping = false beheben.