NFSv4 + kerberos im UNIX Netzwerk

Zugegeben – NFSv3 war bequem und gleichzeitig sehr performant. Allerdings wurde das Synchronisieren der uid’s auf verschiedenen Rechnern mit der Zeit immer schwieriger. Im heterogenen UNIX Netzwerk mit macOS Rechnern umso mehr.

Im Enterprise Bereich wäre die Abhilfe Single Sign-On mit LDAP, welcher Ausprägung auch immer.

Im privaten/SOHO Bereich könnte man auf SMB/CIFS umsteigen – aber diverse Interoperabilitätsprobleme und schlechtere Performance im Datendurchsatz machen diesen Ausweg nicht unbedingt zur ersten Wahl.

Der Königsweg ist NFSv4 – mit username mapping – gesichert über ein kerberos Ticketcenter.

Herzstück dieses Setups ist der Kerberos Server (auch Key Distribution Center), der einerseits auf dem NFS Server den NFS service, andererseits auf dem NFS Client den Benutzer authentifiziert.
Ein Setup ohne tieferes Verständnis von Kerberos erscheint mit ziemlich gewagt, warum ich Einsteigern das Buch Kerberos von Mark Pröhl, herausgegeben von dpunkt.verlag empfehle.

Die notwendigen Installationen sind im Internet hinreichend erklärt, so dass ich mich in diesem Artikel nur auf das Konzept und einige Besonderheiten konzentriere. Für die Installation empfehle ich folgende Seiten:
https://wiki.ubuntuusers.de/Kerberos/NFS_mit_Kerberos_sichern/
https://wiki.ubuntuusers.de/Kerberos/
https://help.ubuntu.com/lts/serverguide/kerberos.html
https://help.ubuntu.com/community/Kerberos

eine zusätzliche Seite für die NFSv4 Konfiguration, schon ein bischen älter..

Zwei wichtige Begriffe in der Kerberos Terminologie sind der

  • Realm
  • Principal

Unter Realm versteht man das Authentifizierungsgebiet („Reich“), welches alle Hosts, Dienste und User umfasst die sich gegenseitig authentifizieren können.

Ein Principal ist ein Eintrag in der Kerberos Datenbank, welcher ein Host, Dienst oder User repräsentiert. Jeder User der im Realm authentifiziert werden möchte, benötigt ein Principal.

Das Erstellen eines Principals in einer Kerberos Datenbank hat an sich noch keine Konsequenzen – weder sicherheitstechnisch, noch operational – auf den Betrieb im Netzwerk. Erst wenn die Principals auf dem Zielrechner (NFS Server, NFS Client oder ein beliebiger Rechner der eine Kerberos Authentifizierung benötigt) hinterlegt sind und die Konfiguration des Dienstes angepasst ist, wird der Mechanismus aktiv.

Konkret heißt dies, dass auf dem Zielrechner normalerweise folgende Dateien betroffen sind.

Plattformübergreifend (POSIX konformes OS):

/etc/krb5.keytab
Dort ist der Key der Kerberos Datenbank (Principal) gespeichert

/etc/krb5.conf
Dort werden die Informationen über Realm, Keys und den/die Kerberos Server eingetragen

macOS spezifisch:

/etc/pam.d/authorization
Zumindest unter macOS Catalina (10.15) stellt man an dieser Stelle sicher, dass die Pluggable Authentification Moduls die Kerberos Authentifizierung benutzen. Auch wenn die generelle Kerberisierung standardmässig schon aktiviert ist, sollte man die Datei modifizieren um bei der Anmeldung automatisch das Ticket Granting Ticket im Credential Cache zu bekommen (default_principal als Option setzen). Sinngemäß muss dies auch in der Datei screensaver im gleichen Verzeichnis vorgenommen werden.

auth   optional   pam_krb5.so use_first_pass use_kcminit default_principal

/etc/nfs.conf
Stellt sicher, dass der NFS Client Kerberos Authentifizierung verwendet. Beispielsweise so (<REALM> muss natürlich durch den eigenen Realm ersetzt werden).

nfs.client.mount.options = sec=krb5,vers=4,timeo=600,realm=<REALM>,intr,nfc,nonamedattr,async

Linux spezifisch:

/etc/pam.d/common-*
Zumindest unter Ubuntu ab Bionic Beaver (18.04) stellen 5 Dateien beginnend mit common- sicher, dass die Pluggable Authentification Moduls die Kerberos Authentifizierung benutzen. Sobald man das package libpam-krb5 installiert, werden die Einträge passend für krb5 vorkonfiguriert in die Dateien durch den package installer geschrieben.

etc/default/nfs-common
Stellt die kerberisierte Umgebung auf einem NFS-client sicher. Folgende Einträge müssen in der Datei vorkommen:

IDMAP daemon is also required for mapping same users with different UIDs
NEED_IDMAPD=yes
Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=yes

etc/auto.net
Stellt in einer automount Umgebung sicher, dass der NFS Client Kerberos Authentifizierung verwendet. Folgende Zeile steuert die richtige Kerberisierung:

opts="-fstype=nfs4,soft,nodev,nosuid,async,sec=krb5"

Als Hinweis zum Thema Lebensdauer eines Kerberos Tickets kann man diesen Blogeintrag lesen

Ein weiteres wichtiges Thema ist Ausfallsicherheit, welches man am besten mit einem zweiten Kerberos Server umgeht. Dazu bitte auch folgenden Post lesen…

Viele Details und Problemchen, die während einer Installation oder des Betriebes auftreten sind momentan noch gar nicht erwähnt worden. Rückfragen via Kommentarfunktion werden aber gerne beantwortet!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.