Network File System

Aus Tuxfutter

(Weitergeleitet von NFS)
Wechseln zu: Navigation, Suche

Network File System (NFS) ist ein von Sun Microsystems entwickeltes, standardisiertes Protokoll für die Dateifreigabe in Netzwerken.

Wenn Nutzer sich an verschiedenen Rechnern anmelden und immer ihre persönlichen Daten vorfinden möchten, benötigt man ein Dateisystem, welches die Dateien über das Netzwerk ausliefert - ein sogenanntes Netzwerk-Dateisystem (man sollte sich nicht davon verwirren lassen, dass die Langform des Kürzels 'NFS' diesem Begriff entspricht sondern es einfach hinnehmen :).

NFS, das man zurecht als Klassiker der Netzwerk-Dateisysteme bezeichnen kann, zeichnet sich durch eine einfache Konfiguration, aber auch einige sicherheitsrelevante Mängel aus. Es wurde im RFC 1813 definiert.

Inhaltsverzeichnis

[Bearbeiten] Funktionsweise

Um NFS verwenden zu können, muss es durch den Betriebssystem-Kern unterstützt werden. Dies lässt sich damit erklären, dass der NFS-Klient dem virtuellen Dateisystem (dasjenige, welches der Nutzer mittels ls, cp, cat usw. verwendet) die gemounteten Geräte zur Verfügung stellen kann. Der NFS-Server muss nicht zwingend im Kern-Adressraum laufen. Es bietet sich jedoch an, da Kontextwechsel zwischen Benutzer- und Kern-Modus sehr zeitaufwändig ist.

NFS verwendet RPC (Remote Procedure Call); eine Implementierung, welche ähnliche Systemrufe für (netztopologisch betrachtet) entfernte Rechnersysteme wie für lokale Anwendungen zur Verfügung stellt.

Weiterhin verwendet es in der Transportschicht UDP als Protokoll.

[Bearbeiten] Informationen zur Sicherheit

[Bearbeiten] Authentifizierung und Verschlüsselung

Da NFS keine Authentifizierung (wie bspw. AFS) durchführt kann theoretisch jeder NFS-Klient im lokalen Netz, der den NFS-Server erreichen kann, NFS-Verzeichnisse (='Volumes') mounten. Auf dem Server kann man zwar die Rechner angeben, welche die verteilten Daten mounten dürfen, jedoch kann man sich diese Privilegien durch Maßnahmen wie IP-Spoofing erschleichen.

NFS überträgt Daten unverschlüsselt.

[Bearbeiten] Zugriffsrechte

Natürlich ist es nicht ganz so einfach, an fremde Daten zu kommen, wie oben beschrieben. NFS unterstützt natürlich die unter UNIX-Systemen üblichen Zugriffsrechte. Sollte also ein Angreifer in der Lage sein, ein fremdes Verzeichnis zu mounten, kann er diese Daten nicht lesen, da er nicht die entsprechenden Zugriffsrechte besitzt.

[Bearbeiten] Konfiguration

[Bearbeiten] Voraussetzungen

Auf allen beteiligten Rechnern (Clients und Server) müssen die nfs-utils installiert sein; weiterhin benötigen die Clients Kernel-Unterstützung für NFS.

Auf dem Server müssen diverse Dienste laufen: portmap für den Zugriff auf die NFS-Filehandles, rpc als Dienst, der die entfernten Prozeduraufrufe ermöglicht, nfsd (der eigentliche Serverdienst), lockd (wird vom nfsd gestartet) und statd für das Filelocking sowie mountd für den initialen Mount-Prozess. Das Installieren und Starten dieser Dienste ist distributionspezifisch und nicht Teil dieses Artikels.

Um sogenannte Access Control Lists (ACLs) auch über NFS verwenden zu können, werden entsprechende Patches angeboten.

[Bearbeiten] Server

Die exportierten Verzeichnisse werden in der Datei /etc/exports definiert. Diese könnte folgendermaßen aussehen:

 # <exportiertes Verzeichnis> <[Rechner](Optionen )>
 /home                        192.168.31.0/255.255.255.0(rw,no_all_squash)
 /usr/global                  192.168.0.0/255.255.0.0(ro,root_squash)

Für die optionale Angabe von Rechnern kommen folgende Möglichkeiten in Betracht

IP-Adressen entweder es werden konkrete IP-Adressen angegeben oder (wie im obigen Beispiel) Adressbereiche mit Netzmaske
Hostnamen Voll qualifizierte (admin.domain.com), zu expandierende (*.domain.com) oder auch einfache Hostnamen (admin) sind hier möglich
localnet Das Verzeichnis wird an alle Rechner im lokalen Netz exportiert

Mit Hilfe der Optionen können die Zugriffsmodalitäten auf das exportierte Verzeichnis definiert werden:

secure Dieses Flag erzwingt Anfragen an den Server von privilegierten Ports (per default gesetzt)
insecure inverse Bedeutung des 'secure'-Flags
ro Volume kann nur 'nur lesen'-Modus gemountet (per default gesetzt) werden
rw auf das gemountete Volume darf auch geschrieben werden
root_squash Der Superuser root wird auf einen Nobody-User/-Gruppe gemappt; er verliert so seine Privilegien auf dem gemounteten Volume, dies ist der Default.
no_root_squash o.g. Verhalten wird verhindert
all_squash UIDs von Nutzern werden auf 'Nobody' gemappt
no_all_squash kehrt o.g. Verhalten um (per default gesetzt)

Es gibt noch einige weitere Optionen, die eher seltener gebräuchlich sind. Für eine detaillierte Auflistung sei auf den 'Linux Network Administrators Guide' verwiesen (siehe Verweise).

[Bearbeiten] Client

Um auf den Clients ein NFS-Volume mounten zu können, sind entsprechende Einträge in der /etc/fstab ausreichend. Beispielsweise könnte ein Eintrag folgendermaßen aussehen:

 # <Server-Host>:<remote-directory> <local-directory> nfs <Optionen>
 server:/usr/global                 /usr/global       nfs auto,ro,nosuid,soft,rsize=8192,wsize=8192 0 0

Um das exportierte Verzeichnis per Hand zu mounten, gebe man

mount -t nfs <nfs-server>:<exportiertes Verzeichnis> <mount-point>

ein.

Beispiel für einen NFS-Server mit der IP-Adresse 192.168.31.1, dessen Verzeichnis nach /mnt gemountet werden soll:

mount -t nfs 192.168.31.1:/home /mnt

Für die einzelnen Optionen sei auf die manpages von mount, nfs und fstab verwiesen.

[Bearbeiten] Alternativen

Da NFS Daten vollkommen unverschlüsselt überträgt und auch nur rudimentäre Authentifizierungs-Mechanismen bietet, ist eine Nutzung nur innerhalb einer relativ kleinen und als verhältnismäßig vertrauenswürdig anzusehenden Administrationsdomäne sinnvoll.

Als Alternativen zu NFS bieten sich folgende Systeme an:

  • Andrew File System (AFS) ist die Hauptalternative zu NFS. Es setzt erheblich aggressivere Cache-Strategien ein als NFS, bietet erheblich bessere Möglichkeiten zur Authentifizierung durch die Nutzung von Kerberos und ermöglicht integrierte Backup-Lösungen (Erklären von einzelnen Volumes als 'read-only' etc.)
  • das Protokoll Server Message Block (SMB) für die Freigabe von Dateien, Druckern, seriellen Ports usw., die von Windows-Betriebssystemen verwendet wird. Samba bzw. Samba-TNG ist ein Dienst, der Nutzung des Protokolls unter Linux ermöglicht.
  • In Version 4 von NFS sind diverse Sicherheitsmängel beseitigt worden; seit April 2003 existiert ein entsprechender RFC dazu. Allerdings konnte NFSv4 sich bisher noch nicht durchsetzen.
  • Coda setzt ähnliche Strategien wie AFS ein und kann ebenfalls mit Authentifizierungs-Servern umgehen. Es erreicht derzeit jedoch nicht die Verbreitung von AFS.

[Bearbeiten] Externe Verweise

'Persönliche Werkzeuge
Andere Sprachen