NFS4 Grundlagen

NFS4 Grundlagen

NFS steht für Network FileSystem, ein Netzwerkdateisystem, das ursprünglich von der Firma SUN Microsystems entwickelt worden ist.  NFS erlaubt den transparenten Zugriff über ein Netzwerk auf ein Dateisystem.

NFS Version 4 ist die aktuelle Version dieses Netzwerk-Dateisystems das bei Linux-Systemen sehr verbreitet ist. Auch hier an der Universität wird es zum Datenaustausch zwischen Linux-Servern und Linux-Clients verwendet. Selbst wenn Sie Windows Netzwerklaufwerke über den smbhost hier an der Uni verwenden, laufen die Daten, die Sie übertragen vor der Auslieferung an Ihren Windows-Rechner über NFS.

Melden Sie sich an dem Linux-Rechner penguin2 (aka linux) oder an einem der Pool-Rechner unter Linux an, werden  die Daten, die sie auf diesen Rechnern in Ihrem Home-Laufwerk sehen über NFS von unseren zentralen File-Servern übertragen. Für Sie als Benutzer erscheint es jedoch immer so, als ob diese Daten von einer lokalen an dem Rechner angeschlossenen Festplatte stammen.

NFS4-Merkmale

Bei NFS4 liegt der Schwerpunkt auf Sicherheit. Der Zugriff auf Daten über NFS4 ist nur dann möglich, wenn der Benutzer sich eindeutig authentifiziert hat. Zu diesem Zweck arbeitet NFS4 mit einem Kerberos-Server zusammen, einem Authentifizierungsdienst, der nur bei erfolgreicher Authentifizierung den Zugriff auf weitere Services wie z.B. NFS4 erlaubt. Darüber hinaus ist es auch möglich den gesamten Datenverkehr zu verschlüsseln, falls die Daten über unsichere Netzwerke hinweg übertragen werden müssen. Bei NFS4-Verzeichnissen hat auch der Benutzer root keinen uneingeschränkten Zugriff mehr auf die NFS Daten, sondern sieht diese als ob er der Benutzer "nobody" wäre, d.h. ohne besondere Rechte.

Bei den Linux-Rechnern hier an der Uni erfolgt schon bei der Anmeldung des Benutzers eine Authentifizierung gegen den Kerberos- Server. Das sichtbare Zeichen hierfür ist ein sogenanntes Kerberos Ticket-Granting-Ticket (TGT), ein digitales Zertifikat, das eine zeitlich begrenzte Gültigkeit hat und notwendig ist, um auf NFS4-Ressource zuzugreifen. Das Kerberos Ticket wird immer lokal auf dem Rechner zwischengespeichert, auf dem Sie gerade angemeldet sind und befindet sich im Ordner /tmp/krb5cc_<uid>, wobei <uid> für die Unix User Id der Benutzerkennung steht. Wenn Sie auf mehreren Rechnern angemeldet sind, befindet sich auf jedem dieser Rechner ein eigenes Kerberos-TGT, das auf dem jeweiligen Rechner  unabhängig von anderen existieren Tickets des gleichen Benutzers genutzt werden kann.

Mit Hilfe des Linux-Kommandos  klist kann man sich dieses Ticket ansehen und z.B, herausfinden wie lange das Kerberos-Ticket auf einem System gültig ist. Ist die Gültigkeit abgelaufen, wird es automatisch bis zu einer Woche verlängert. Anschließend ist erst wieder ein Zugriff auf NFS4-Ressourcen möglich, wenn durch eine neue Anmeldung am System ein neues TGT vom Kerberos-Server bezogen werden konnte.

$klist 

Ticket cache: FILE:/tmp/krb5cc_12345
Default principal: user@LINUXDC.UNI-KOBLENZ.DE

Valid starting       Expires              Service principal
10.09.2015 08:17:01  10.09.2015 18:17:01  krbtgt/LINUXDC.UNI-KOBLENZ.DE@LINUXDC.UNI-KOBLENZ.DE
renew until 17.09.2015 08:17:01

Der sogenannte principal entspricht der Benutzerkennung, an den der Uni Kerberos-Domainname LINUXDC.UNI-KOBLENZ.DE angehängt werden muß.

Sicherheit

Ein TGT ist zunächst für 10 Stunden gültig.  Nach Ablauf  dieser Zeit, kann es bis maximal einer Woche automatisch verlängert werden.

Wer aus Gründen der Datensicherheit garantieren will, das sein Kerberos-Ticket bei der Abmeldung zerstört wird, kann das Kommando  /usr/lib/mit/bin/kdestroy dazu verwenden, das Ticket zu invalidieren. Dadurch wird ein Zugriff via NFS  auf die eigenen Daten nach wenigen Minuten unterbunden.

Das kdestroy-Kommando könnte für Nutzer der bash z.B. in die Datei .bash_logout eingetragen werden, wo es bei der Abmeldung vom System automatisch ausgeführt wird. Wird eine andere Shell (csh, tcsh) verwendet muß in den Manual-Seiten der Shell  nach der entsprechenden-Datei gesucht werden, die beim Abmelden vom System ausgeführt wird.  Für die angesprochene tcsh ist es die Datei .logout im eigenen Home-Verzeichnis.