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
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!