Aus LinuxUser 12/2006

Netzwerkdateisystem NFS (Seite 2)

TIPP

Vermeiden Sie, Dateisysteme wie FAT zu exportieren, die keine stabilen Inode-Nummern zur Verfügung stellen. Mit Ext2/3, ReiserFS und JFS sollte es keine Probleme geben.

Export-Optionen

Export-Option Bedeutung
ro Verzeichnis nur mit Lesezugriff exportieren
rw Verzeichnis lesend und schreibend exportieren
sync Synchrone Schreibvorgänge. Der Client wartet, bis der Schreibvorgang beendet ist. Langsamer, mit NFS v2 sicherer und empfohlen.
async Asynchrone Schreibvorgänge. Erlaubt das Zwischenspeichern von zu schreibenden Daten bei Client und Server. Unsicherer mit NFS v2, ab NFS v3 nicht mehr nötig.
root_squash Setzt root auf den nicht priviligierten Benutzer @TL:nobody mit der Gruppe nobody um. Empfohlen und Standard.
no_root_squash Erlaubt root vollen Zugriff mit Root-Rechten.
subtree_check Überprüft, ob ein Dateihandle wirklich innerhalb des exportierten Verzeichnisses liegt. Sicherer, jedoch auch fehleranfällig.
no_subtree_check Keine diesbezügliche Überprüfung. Empfohlen und Standard ab nfs-utils 1.10[5].

Auf dem Client zeigt der Befehl showmount -e NFS-Server eine Liste der Exports. Mit mount -o intr NFS-Server:/tmp /mnt/nfs mounten Sie auf dem Client den Export /tmp des Servers NFS-Server im Verzeichnis /mnt/nfs mit der Option intr (siehe Tabelle „Mount-Optionen“). Geben Sie keine Optionen für das Einhängen an, so wählt Linux sinnvolle Vorgaben, die Sie nach dem Mounten mit cat /proc/mounts anzeigen.

Mit umount /mnt/nfs melden Sie das Dateisystem wieder ab, und mit exportfs -u 192.168.1.0/24:/tmp beenden Sie auf dem Server den Export.

Mount-Optionen

Mount-Option Bedeutung
intr Unterbrechung von NFS-Vorgängen mit [Strg]+[C] erlauben
hard NFS-Clients warten bei unterbrochener Netzwerkverbindung oder Servercrash auf erneute Verbindung. Standard.
soft NFS-Clients brechen bei unterbrochener Netzwerkverbindung nach einer eingestellten Zeit ab (timeo-Option). Bei UDP nicht empfehlenswert wegen erhöhtem Risiko von Datenverlusten bei Verbindungsabbrüchen.
rsize, wsize Puffergröße fürs Lesen und Schreiben (in Bytes). Schneller geht es bei aktuellen Netzwerk-Karten mit 8192 Bytes [6].

Exporte automatisieren

Es ist umständlich, Verzeichnisse jedes Mal von Hand zu exportieren und zu mounten. Tragen Sie Exports daher in /etc/exports ein (oder verwenden Sie YaST). Der Aufbau der Exports-Datei folgt dem Muster VerzeichnisHostoderNetz(Export-Optionen)HostoderNetz(Export-Optionen) … (siehe Listing 1). Mit exportfs -ra informieren Sie den Server über angefallenene Änderungen.

Listing 1

# /etc/exports auf Server deepdance
#
# Verzeichnis für einen einzelnen Host
/srv/deepdance  deepdance(rw,sync,no_subtree_check)
# Austausch-Verzeichnis
/srv/tausch     192.168.1.0/24(rw,sync,no_subtree_check) 127.0.0.0/8(rw,sync,no_subtree_check)
# Nur-Lesen-Verzeichnis
/srv/lesen      192.168.1.0/24(ro,sync,no_subtree_check) *.local(ro,sync,no_subtree_check)

Der NFS-Kernel-Server setzt die Rechte zwischen Client und Server anhand der numerischen Benutzer- und Gruppen-ID eins zu eins um. Das auf dem Server exportierte Verzeichnis muss für den Benutzer auf dem Client beschreibbar sein, wenn Sie Dateien speichern und Verzeichnisse anlegen möchten.

Arbeiten Sie mit mehreren Benutzern und Gruppen gleichen Namens auf unterschiedlichen Maschinen, sollten diese jeweils die gleiche Benutzer- und Gruppen-ID haben. Für Gruppenverzeichnisse eignet sich das setgid-Recht (s) [7]. Für Root wählt NFS standardmäßig den Benutzer und die Gruppe nobody, um den direkten Root-Zugriff auf den NFS-Server zu vermeiden (root_squash).

Auf der Client-Seite bietet /etc/fstab die Möglichkeit zur NFS-Automatisierung [8]: In der ersten Spalte der Datei steht der Export, in der zweiten das lokale Verzeichnis, in Spalte 3 als Dateisystem nfs, in Spalte 4 die gewünschten Mount-Optionen und in den nächsten beiden Spalten jeweils „0“, da weder ein etwaiges Backup via dump noch ein Dateisystemcheck auf dem Client Sinn machen (siehe Listing 2). Eine grafische Oberfläche zu Einrichtung bietet YaST unter Netzwerkdienste | NFS-Client.

Listing 2

# /etc/fstab
…
### NFS-Importe von deepdance
# NFS zu Haus
deepdance:/srv/tausch  /mnt/nfs-tausch  nfs  user,noauto,intr,rsize=8192,wsize=8192  0 0
# Nur lesen
deepdance:/srv/lesen   /mnt/nfs-lesen   nfs  user,noauto,intr,rsize=8192,wsize=8192  0 0
# Beispiel für Homeverzeichnisse
#deepdance:/srv/homes  /home            nfs  intr,rsize=8192,wsize=8192              0 0
…

Und die Sicherheit?

Die Entwickler von NFS hatten zentrale, geschützte Netzwerke im Sinn. NFS v3 bietet daher von Haus kaum Sicherheitsfeatures. So erlaubt das Erraten des passenden Dateihandles einem NFS-Client, auf Dateien von Exports zuzugreifen, die auf dem Client gar nicht gemountet sind. Sie vermeiden dies mit dem fehleranfälligen subtree_check[5] – oder indem Sie jeden Export auf ein eigenes lokales Dateisystem legen.

Verwenden Sie daher NFS v3 von vorneherein nur in durch Firewalls geschützten lokalen Netzen und sperren Sie externe Zugriffe auf NFS-Ports. Am einfachsten ist es, aus dem Internet nur Pakete zuzulassen, die Antworten auf ausgehende Verbindungen darstellen. Das sollte heutzutage die Standard-Konfiguration der meisten DSL-Router sein. Auch Iptables bietet mit dem Connection Tracker eine entsprechende Möglichkeit ([9],[10]).

Andere Ansätze basieren darauf, die RPC-Dienste für NFS mit festen Ports laufen und Pakete an diese Ports ausfiltern zu lassen ([11],[12]). Läuft NFS wie bei NFSv3 standardmäßig mit TCP, sperren Sie zumindest den TCP-Port 2049 sowie den TCP- und UDP-Port 111 des Portmappers für Zugriffe von außen. Die Personal Firewall von Suse kennt nur ein „Ganz oder gar nicht“ und eignet sich nicht für Router, da sie nur den lokalen Host schützt.

LinuxUser 12/2006 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: