NFS mit Kerberos: Verständnisfragen

Probleme mit Samba, NFS, FTP und Co.
Antworten
stillebucht
Beiträge: 31
Registriert: 30.10.2013 11:13:19

NFS mit Kerberos: Verständnisfragen

Beitrag von stillebucht » 10.01.2021 17:16:19

Hallo zusammen,

ich habe auf meinem Debian-Server zu Hause NFS-Freigaben für meine Linux-Clients eingerichtet. Das ganze soll mit Kerberos abgesichert werden, aber ohne LDAP. Ich habe bereits alles zum Laufen bekommen, sprich, ich habe Zugriff auf die Freigaben und das statische Idmapping funktioniert ebenfalls, wie es soll. Dennoch habe ich noch ein paar Verständnisfragen zum Kerberos-Setup und den Keytabs.

Ein paar Hintergrundinfos:
Der NFS-Server und der Kerberos-KDC-Server laufen auf demselben Host. Ich habe aktuell nur zwei Linux-Clients, mit denen ich darauf zugreifen möchte, daher eigentlich keinen Bedarf an einem Verzeichnisdienst. Aktuell habe ich folgende Kerberos-Principals eingerichtet:
mein-admin-user/admin@MEINE.DOMAIN
nfs/server-hostname.meine.domain@MEINE.DOMAIN
nfs/client-1-hostname.meine.domain@MEINE.DOMAIN
mein-client-user@MEINE.DOMAIN

Meine Fragen:
1) Benötige ich den mein-admin-user/admin@MEINE.DOMAIN principal überhaupt?
Es genügt mir eigentlich principals auf dem Server mit root-Rechten via kadmin.local einzurichten. Insofern frage ich mich, ob ich überhaupt einen extra Admin-Account benötige. Den habe ich eingerichtet, weil ich mich an diversen Tutorials orientiert habe. Ich glaube mittlweile aber, dass dieser vielleicht gar nicht nötig ist.

2) Welche princpials sind in welcher keytab nötig?
Die keytab auf dem Server enthält momentan alle principals. Ist das nötig oder würde der principal nfs/server-hostname.meine.domain@MEINE.DOMAIN genügen?
Auf client-1 ist in der root-keytab /etc/krb5.keytab die beiden principals nfs/server-hostname.meine.domain@MEINE.DOMAIN sowie nfs/client-1-hostname.meine.domain@MEINE.DOMAIN gespeichert. Würde ich hier mit dem Client-Principal auskommen oder braucht der Client auch den Server-princial?
In der Keytab meines lokalen Nutzers auf client-1 sind derzeit die beiden nfs/ principals sowie der Principal des Nutzers mein-client-user@MEINE.DOMAIN gespeichert. Auch hier die Frage, benötige ich die beiden nfs-Principals an der Stelle überhaupt?

3) Wie fordere ich als Client am Besten ein Kerberos-TIcket automatisiert an?
Die Anmeldung am PC erfolgt aktuell normal mittels Passwort. Ich habe aktuell eine keytab für den Nutzer mit einem zufälligen Schlüssel. Die keytab liegt im Home-Verzeichnis des Nutzers und ist nur für diesen lesbar. Sollte dennoch jemand Zugriff auf die keytab erhalten, könnte er sich aber - soweit ich es verstanden habe - passwortlos am KDC authentifizieren. Gibt es einen sichereren Weg, das zu lösen? Ich denke aktuell daran, einen principal mit Passwort für den Nutzer anzulegen und das Passwort in meinem Schlüsselbund (KWallet) zu speichern, welcher nach Benutzeranmeldung entsperrt wird. In einem Loginskript könnte ich dann das Passwort aus dem Schlüsselbund abfragen und damit automatisiert ein Ticket vom KDC anfordern. Ist das sinnvoll? Geht das besser? Soweit ich es verstanden habe, dient das PAM-Modul krb5 dazu, dass sich der Client nur gegenüber dem KDC authentifiziert und nicht lokal. Da ich mich ja weiterhin lokal anmelden möchte, vermute ich also, dass mit das PAM-Modul nicht unbedingt helfen würde.

4) Kann man User-Principals auf Hosts beschränken?
Aktuell enthält der Principal für meinen Nutzer am Client ja keinen Hostnamen. Kann man den Principal so einrichten, dass er nur an diesem Host nutzbar ist?

5) Wann benötigt man einen host-Principal in der Form host/server-hostname.meine.domain@MEINE.DOMAIN ?
Einige Tutorials schreiben davon, dass man neben den nfs/-Principals auch einen für jeden host einrichten sollte. Wann benötigt man das? Denn aktuell habe ich diese ja nicht und es funktioniert trotzdem alles.

Danke und schöne Grüße

Timo

Benutzeravatar
jph
Beiträge: 860
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: NFS mit Kerberos: Verständnisfragen

Beitrag von jph » 11.01.2021 07:37:52

stillebucht hat geschrieben: ↑ zum Beitrag ↑
10.01.2021 17:16:19
1) Benötige ich den mein-admin-user/admin@MEINE.DOMAIN principal überhaupt?
Es genügt mir eigentlich principals auf dem Server mit root-Rechten via kadmin.local einzurichten.
Du solltest diesen Principal einrichten, weil du dich sonst nicht von einem Client aus an kadmin anmelden kannst. kadmin ist in Debiankrb5-user und somit auf jedem Client verfügbarbar. kadmin.local dagegen ist nur in Debiankrb5-admin-server enthalten. Dieses Paket solltest du nur auf dem tatsächlichen Admin-Server installieren.
stillebucht hat geschrieben: ↑ zum Beitrag ↑
10.01.2021 17:16:19
2) Welche princpials sind in welcher keytab nötig?
Die nfs-Principals benötigst du auf jedem NFS-Client und NFS-Server.

Die Principals für die User werden keiner Keytab hinzugefügt.
stillebucht hat geschrieben: ↑ zum Beitrag ↑
10.01.2021 17:16:19
3) Wie fordere ich als Client am Besten ein Kerberos-TIcket automatisiert an?
Die Anmeldung am PC erfolgt aktuell normal mittels Passwort. Ich habe aktuell eine keytab für den Nutzer mit einem zufälligen Schlüssel. Die keytab liegt im Home-Verzeichnis des Nutzers und ist nur für diesen lesbar.
Die Keytab gehört nicht ins User-Verzeichnis!

Die Anmeldung am PC erfolgt über Passwort, über Debianlibpam-krb5 wird die Anmeldung im Hintergrund über Kerberos abgewickelt. Bei Laptops kann Debianlibpam-ccreds interessant sein. Beide Module müssen über # pam-auth-update aktiviert werden; im Regelfall nur für User ab UID 1000.
stillebucht hat geschrieben: ↑ zum Beitrag ↑
10.01.2021 17:16:19
5) Wann benötigt man einen host-Principal in der Form host/server-hostname.meine.domain@MEINE.DOMAIN ?
Den benötigst du bspw., wenn du ssh über Kerberos abwickeln möchstest.

stillebucht
Beiträge: 31
Registriert: 30.10.2013 11:13:19

Re: NFS mit Kerberos: Verständnisfragen

Beitrag von stillebucht » 11.01.2021 19:52:03

Danke für die ausführliche Antwort.
jph hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 07:37:52
stillebucht hat geschrieben: ↑ zum Beitrag ↑
10.01.2021 17:16:19
1) Benötige ich den mein-admin-user/admin@MEINE.DOMAIN principal überhaupt?
Es genügt mir eigentlich principals auf dem Server mit root-Rechten via kadmin.local einzurichten.
Du solltest diesen Principal einrichten, weil du dich sonst nicht von einem Client aus an kadmin anmelden kannst. kadmin ist in Debiankrb5-user und somit auf jedem Client verfügbarbar. kadmin.local dagegen ist nur in Debiankrb5-admin-server enthalten. Dieses Paket solltest du nur auf dem tatsächlichen Admin-Server installieren.
Für administrative Aufgaben melde ich mich sowieso am Server an. Den kadmnid-Port habe ich aktuell auch nicht in der Firewall freigegeben. Die keytabs habe ich mit kadmin.local auf dem Server erstellt und dann per ssh übertragen. Da ich zu Hause ja eh nicht viele (Linux-)Clients habe, auf denen ich das benötige, stört mich das nicht, dass ich das nicht vom Client aus direkt machen könnte.
jph hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 07:37:52
stillebucht hat geschrieben: ↑ zum Beitrag ↑
10.01.2021 17:16:19
2) Welche princpials sind in welcher keytab nötig?
Die nfs-Principals benötigst du auf jedem NFS-Client und NFS-Server.
Hmm, ich hab das gestern spät abends einfach nochmal ausprobiert und keytabs erstellt, die jeweils nur einen principal enthalten. Sprich, auf dem Server liegt eine Keytab mit lediglich dem nfs principal für den Server. Auf dem Client ist eine Keytab mit lediglich dem Client-nfs-principal installiert und der Nutzer hat eine mit dem User-principal (letztere werde ich heute Abend zugunsten eines passwortgeschützten Zugangs wieder löschen). Der Zugriff funktioniert ohne Probleme. Wenn das jetzt nicht nur zufällig deshalb so war, weil sich die Clients alles aus vorherigen Tickets gemerkt hatten, würde ich vermuten, das geht auch so. Ich hatte sowohl Client und Server zwischendurch aber auch neu gestartet, sodass ich eigentlich erwartet hätte, dass die vorigen Tickets damit nicht mehr nutzbar wären.
jph hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 07:37:52
stillebucht hat geschrieben: ↑ zum Beitrag ↑
10.01.2021 17:16:19
3) Wie fordere ich als Client am Besten ein Kerberos-TIcket automatisiert an?
Die Anmeldung am PC erfolgt aktuell normal mittels Passwort. Ich habe aktuell eine keytab für den Nutzer mit einem zufälligen Schlüssel. Die keytab liegt im Home-Verzeichnis des Nutzers und ist nur für diesen lesbar.
Die Keytab gehört nicht ins User-Verzeichnis!

Die Anmeldung am PC erfolgt über Passwort, über Debianlibpam-krb5 wird die Anmeldung im Hintergrund über Kerberos abgewickelt. Bei Laptops kann Debianlibpam-ccreds interessant sein. Beide Module müssen über # pam-auth-update aktiviert werden; im Regelfall nur für User ab UID 1000.
Hmm, die Benutzeranmeldung mittels des PAM-Moduls direkt am KDC zu machen, wollte ich eigentlich vermeiden, um das Setup möglichst simpel zu halten und weil ich auch nicht weiß, wie das dann mit dem PAM-Modul zusammenspielt, das nach dem Login meinen Schlüsselbund öffnet. Aber ich probiere das heute vielleicht einfach mal aus. Wenn beides zusammen geht, kann ich das natürlich auch machen. Das ccreds Modul würde ich dann auch auf beiden Clients installieren, da ein Gerät ein Laptop ist und ich mich auch auf dem anderen Gerät (kabelgebunden) anmelden können möchte, wenn der Server mal kurz zu Wartungszwecken offline ist oder so.

Danke!

Benutzeravatar
jph
Beiträge: 860
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: NFS mit Kerberos: Verständnisfragen

Beitrag von jph » 13.01.2021 12:34:42

stillebucht hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 19:52:03
Hmm, ich hab das gestern spät abends einfach nochmal ausprobiert und keytabs erstellt, die jeweils nur einen principal enthalten. Sprich, auf dem Server liegt eine Keytab mit lediglich dem nfs principal für den Server. Auf dem Client ist eine Keytab mit lediglich dem Client-nfs-principal installiert
Genau so hatte ich’s gemeint, mich aber nicht präzise genug ausgedrückt: auf dem NFS-Server liegt der NFS-Principals des Servers in der Keytab und auf jedem NFS-Client der jeweils eigene NFS-Principal.

stillebucht hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 19:52:03
und der Nutzer hat eine mit dem User-principal (letztere werde ich heute Abend zugunsten eines passwortgeschützten Zugangs wieder löschen). Der Zugriff funktioniert ohne Probleme. Wenn das jetzt nicht nur zufällig deshalb so war, weil sich die Clients alles aus vorherigen Tickets gemerkt hatten, würde ich vermuten, das geht auch so. Ich hatte sowohl Client und Server zwischendurch aber auch neu gestartet, sodass ich eigentlich erwartet hätte, dass die vorigen Tickets damit nicht mehr nutzbar wären.
Das wiederum verstehe ich nicht – die User-Principals werden nicht in Keytabs eingetragen.
stillebucht hat geschrieben: ↑ zum Beitrag ↑
11.01.2021 19:52:03
Hmm, die Benutzeranmeldung mittels des PAM-Moduls direkt am KDC zu machen, wollte ich eigentlich vermeiden, um das Setup möglichst simpel zu halten und weil ich auch nicht weiß, wie das dann mit dem PAM-Modul zusammenspielt, das nach dem Login meinen Schlüsselbund öffnet.
Erfahrungsbericht hier: funktioniert, Anmeldung funktioniert, GNOME-Keyring wird automatisch entsperrt. Login ohne Verbindung zum KDC (unterwegs mit Laptop) klappt auch, dauert nur etwas länger, weil erst einmal nach dem KDC gesucht wird.

Was Nacharbeit erfordert: du änderst dein Kennwort auf Client A, dann wird (zumindest auch unter GNOME) das Kennwort des Keyrings geändert. Nun kannst du dich auf Client B mit dem neuen Kennwort anmelden, da dort aber nicht das Kennwort des Keyrings geändert wurde, wird dieser nicht entsperrt. Du musst die Kennwortänderung für den Keyring von Hand nachziehen.

Antworten