{"id":739,"date":"2019-08-31T02:53:09","date_gmt":"2019-08-31T00:53:09","guid":{"rendered":"http:\/\/www.instruyete.org\/?page_id=739"},"modified":"2021-06-05T02:29:23","modified_gmt":"2021-06-05T00:29:23","slug":"nfsv4-kerberos-im-unix-netzwerk","status":"publish","type":"page","link":"https:\/\/www.instruyete.org\/?page_id=739","title":{"rendered":"NFSv4 + kerberos im UNIX Netzwerk"},"content":{"rendered":"\n<p>Zugegeben &#8211; <em>NFSv3<\/em> war bequem und gleichzeitig sehr performant. Allerdings wurde das Synchronisieren der <em>uid<\/em>&#8217;s auf verschiedenen Rechnern mit der Zeit immer schwieriger. Im heterogenen UNIX Netzwerk mit <em>macOS<\/em> Rechnern umso mehr.<\/p>\n\n\n\n<p>Im Enterprise Bereich w\u00e4re die Abhilfe Single Sign-On mit <em>LDAP<\/em>, welcher Auspr\u00e4gung auch immer.<\/p>\n\n\n\n<p>Im privaten\/SOHO Bereich k\u00f6nnte man auf <em>SMB\/CIFS<\/em> umsteigen &#8211; aber diverse Interoperabilit\u00e4tsprobleme und schlechtere Performance im Datendurchsatz machen diesen Ausweg nicht unbedingt zur ersten Wahl.<\/p>\n\n\n\n<p><strong>Der K\u00f6nigsweg ist NFSv4 &#8211; mit username mapping &#8211; gesichert \u00fcber ein kerberos Ticketcenter.<\/strong><\/p>\n\n\n\n<p>Herzst\u00fcck dieses Setups ist der Kerberos Server (auch <strong>K<\/strong>ey <strong>D<\/strong>istribution <strong>C<\/strong>enter), der einerseits auf dem NFS Server den NFS service, andererseits auf dem NFS Client den Benutzer authentifiziert.  <br>Ein Setup ohne tieferes Verst\u00e4ndnis von Kerberos erscheint mit ziemlich gewagt, warum ich Einsteigern das Buch <a href=\"https:\/\/www.dpunkt.de\/buecher\/10822\/9783898644440-kerberos.html\">Kerberos von Mark Pr\u00f6hl, herausgegeben von dpunkt.verlag<\/a> empfehle.<\/p>\n\n\n\n<p>Die notwendigen Installationen sind im Internet hinreichend erkl\u00e4rt, so dass ich mich in diesem Artikel nur auf das Konzept und einige Besonderheiten konzentriere. F\u00fcr die Installation empfehle ich folgende Seiten:<br><a href=\"https:\/\/wiki.ubuntuusers.de\/Kerberos\/NFS_mit_Kerberos_sichern\/\">https:\/\/wiki.ubuntuusers.de\/Kerberos\/NFS_mit_Kerberos_sichern\/<\/a><br><a href=\"https:\/\/wiki.ubuntuusers.de\/Kerberos\/\">https:\/\/wiki.ubuntuusers.de\/Kerberos\/<\/a><br><a href=\"https:\/\/help.ubuntu.com\/lts\/serverguide\/kerberos.html\">https:\/\/help.ubuntu.com\/lts\/serverguide\/kerberos.html<\/a><br><a href=\"https:\/\/help.ubuntu.com\/community\/Kerberos\">https:\/\/help.ubuntu.com\/community\/Kerberos<\/a><br><\/p>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-stephen-r-lang\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"e1zgcid2lg\"><a href=\"https:\/\/www.stephenrlang.com\/2016\/01\/setup-nfsv4-on-ubuntu-or-debian\/\">Setup NFSv4 on Ubuntu or Debian<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Setup NFSv4 on Ubuntu or Debian&#8221; &#8212; Stephen R Lang\" src=\"https:\/\/www.stephenrlang.com\/2016\/01\/setup-nfsv4-on-ubuntu-or-debian\/embed\/#?secret=jTZH8AHJF3#?secret=e1zgcid2lg\" data-secret=\"e1zgcid2lg\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><figcaption>eine zus\u00e4tzliche Seite f\u00fcr die NFSv4 Konfiguration, schon ein bischen \u00e4lter..<\/figcaption><\/figure>\n\n\n\n<p>Zwei wichtige Begriffe in der Kerberos Terminologie sind der<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Realm<\/li><li>Principal<\/li><\/ul>\n\n\n\n<p>Unter <em>Realm<\/em> versteht man das Authentifizierungsgebiet (&#8222;Reich&#8220;), welches alle Hosts, Dienste und User umfasst die sich gegenseitig authentifizieren k\u00f6nnen.<\/p>\n\n\n\n<p>Ein <em>Principal<\/em> ist ein Eintrag in der Kerberos Datenbank, welcher ein Host, Dienst oder User repr\u00e4sentiert. Jeder User der im Realm authentifiziert werden m\u00f6chte, ben\u00f6tigt ein Principal.<\/p>\n\n\n\n<p>Das  Erstellen eines Principals in einer Kerberos Datenbank hat an sich noch keine Konsequenzen &#8211; weder sicherheitstechnisch, noch operational &#8211; 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\u00f6tigt) hinterlegt sind und die Konfiguration des Dienstes angepasst ist, wird der Mechanismus aktiv.<\/p>\n\n\n\n<p>Konkret hei\u00dft dies, dass auf dem Zielrechner normalerweise folgende Dateien betroffen sind.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Plattform\u00fcbergreifend (POSIX konformes OS):<\/p>\n\n\n\n<p><strong>\/etc\/krb5.keytab<\/strong><br>Dort ist der Key der Kerberos Datenbank (Principal) gespeichert<\/p>\n\n\n\n<p><strong>\/etc\/krb5.conf<\/strong><br>Dort werden die Informationen \u00fcber Realm, Keys und den\/die Kerberos Server eingetragen<\/p>\n\n\n\n<p class=\"has-medium-font-size\">macOS spezifisch:<\/p>\n\n\n\n<p><strong>\/etc\/pam.d\/authorization<\/strong><br>Zumindest unter macOS Catalina (10.15) stellt man an dieser Stelle sicher, dass die <em><strong>P<\/strong>luggable <strong>A<\/strong>uthentification <strong>M<\/strong>oduls<\/em> die Kerberos Authentifizierung benutzen. Auch wenn die generelle Kerberisierung standardm\u00e4ssig schon aktiviert ist, sollte man die Datei modifizieren um bei der Anmeldung automatisch das <em><strong>T<\/strong>icket <strong>G<\/strong>ranting <strong>T<\/strong>icket<\/em> im Credential Cache zu bekommen (<strong>default_principal<\/strong> als Option setzen). Sinngem\u00e4\u00df muss dies auch in der Datei <strong>screensaver<\/strong> im gleichen Verzeichnis vorgenommen werden.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">auth   optional   pam_krb5.so use_first_pass use_kcminit default_principal<\/pre>\n\n\n\n<p><strong>\/etc\/nfs.conf<\/strong><br>Stellt sicher, dass der NFS Client Kerberos Authentifizierung verwendet. Beispielsweise so (&lt;REALM> muss nat\u00fcrlich durch den eigenen <em>Realm<\/em> ersetzt werden).<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nfs.client.mount.options = sec=krb5,vers=4,timeo=600,realm=&lt;REALM&gt;,intr,nfc,nonamedattr,async<\/pre>\n\n\n\n<p class=\"has-medium-font-size\">Linux spezifisch:<\/p>\n\n\n\n<p><strong>\/etc\/pam.d\/common-*<\/strong><br>Zumindest unter Ubuntu ab Bionic Beaver (18.04) stellen 5 Dateien beginnend mit common- sicher, dass die <em><strong>P<\/strong>luggable <strong>A<\/strong>uthentification <strong>M<\/strong>oduls<\/em> die Kerberos Authentifizierung benutzen. Sobald man das package <strong>libpam-krb5<\/strong> installiert, werden die Eintr\u00e4ge passend f\u00fcr krb5 vorkonfiguriert in die Dateien durch den package installer geschrieben. <\/p>\n\n\n\n<p><strong>etc\/default\/nfs-common<\/strong><br>Stellt die kerberisierte Umgebung auf einem NFS-client sicher. Folgende Eintr\u00e4ge m\u00fcssen in der Datei vorkommen: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">IDMAP daemon is also required for mapping same users with different UIDs\nNEED_IDMAPD=yes\nDo you want to start the gssd daemon? It is required for Kerberos mounts.\nNEED_GSSD=yes<\/pre>\n\n\n\n<p><strong>etc\/auto.net<\/strong><br>Stellt in einer automount Umgebung sicher, dass der NFS Client Kerberos Authentifizierung verwendet. Folgende Zeile steuert die richtige Kerberisierung:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">opts=\"-fstype=nfs4,soft,nodev,nosuid,async,sec=krb5\"<\/pre>\n\n\n\n<p>Als Hinweis zum Thema Lebensdauer eines Kerberos Tickets kann man diesen Blogeintrag lesen<\/p>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-instruyete\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"thJaa9CB5K\"><a href=\"https:\/\/www.instruyete.org\/?p=744\">lifetime von kerberos tickets<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8222;lifetime von kerberos tickets&#8220; &#8212; instruyete\" src=\"https:\/\/www.instruyete.org\/?p=744&#038;embed=true#?secret=2om3hLUxv7#?secret=thJaa9CB5K\" data-secret=\"thJaa9CB5K\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Ein weiteres wichtiges Thema ist Ausfallsicherheit, welches man am besten mit einem zweiten Kerberos Server umgeht. Dazu bitte auch folgenden Post lesen&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-instruyete\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"mlDworafOh\"><a href=\"https:\/\/www.instruyete.org\/?p=633\">Kerberos KDC replication mit systemd units<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8222;Kerberos KDC replication mit systemd units&#8220; &#8212; instruyete\" src=\"https:\/\/www.instruyete.org\/?p=633&#038;embed=true#?secret=yFmmRceb0u#?secret=mlDworafOh\" data-secret=\"mlDworafOh\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Viele Details und Problemchen, die w\u00e4hrend einer Installation oder des Betriebes auftreten sind momentan noch gar nicht erw\u00e4hnt worden. R\u00fcckfragen via Kommentarfunktion werden aber gerne beantwortet!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zugegeben &#8211; NFSv3 war bequem und gleichzeitig sehr performant. Allerdings wurde das Synchronisieren der uid&#8217;s auf verschiedenen Rechnern mit der Zeit immer schwieriger. Im heterogenen UNIX Netzwerk mit macOS Rechnern umso mehr. Im Enterprise Bereich w\u00e4re die Abhilfe Single Sign-On mit LDAP, welcher Auspr\u00e4gung auch immer. Im privaten\/SOHO Bereich k\u00f6nnte man auf SMB\/CIFS umsteigen &#8211; &hellip; <a href=\"https:\/\/www.instruyete.org\/?page_id=739\" class=\"more-link\"><span class=\"screen-reader-text\">NFSv4 + kerberos im UNIX Netzwerk<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-739","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/pages\/739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=739"}],"version-history":[{"count":9,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/pages\/739\/revisions"}],"predecessor-version":[{"id":882,"href":"https:\/\/www.instruyete.org\/index.php?rest_route=\/wp\/v2\/pages\/739\/revisions\/882"}],"wp:attachment":[{"href":"https:\/\/www.instruyete.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}