Ein grosses Problem mit NFS entsteht aufgrund der Tatsache, dass
standardmässig ein vertrauensvolles Verhältnis zwischen Client und
NFS-Server besteht. In dem Fall, dass der root-Account des Servers
kompromittiert wird, wird auch der des Clients kompromittiert.
Ein Client darf nicht blind einem Server trauen und umgekehrt, deshalb
muss man einschränkende Optionen spezifizieren, wenn der Befehl mount
benutzt wird. Die erste wurde bereits erwähnt: nosuid. Es macht den
Effekt des SUID und SGID Bits rückgängig. Das heisst, eine als root
angemeldetet Person auf dem Server muss sich zuerst als Benutzer auf
dem Client anmelden und wird erst dann root. Eine andere, restriktivere
Option ist noexec. Diese verbietet das Ausführen von Programmen auf
exportierten Dateisystemen. Diese Option ist nur auf Systemen
sinnvoll, die nur Daten enthalten.
Auf der NFS-Serverseite kann man ebenso spezifizieren, dass dem
root-Account des Client nicht vertraut werden soll. Man muss dies
in /etc/exports mit der Option root_squash spezifizieren. Wenn ein
Benutzer mit UID 0 ( root) auf dem Client auf das Dateisystem, das
vom Server exportiert wurde, zugreift, wird er für alle Abfragen zum
Benutzer nobody umgewandelt. Diese Option ist standardmäßig unter
Linux aktiv, kann aber mit der Option no_root_squash abgeschaltet
werden. Eine Menge von UIDs kann spezifiziert werden, auf die diese
Option angewendet werden soll. Es ist auch möglich, mit den Optionen
anonuid und anongid Optionen den Zielbenutzer zu definieren, auf den
die Anfrage umgewandelt werden soll.
Einige Aktionen sind allgemeiner und haben Auswirkungen auf den
portmapper. Zum Beispiel kann man mit der folgenden Zeile in der Datei
/etc/hosts.deny allen Rechner den Zugriff verbieten:
/etc/hosts.deny
|
# hosts.deny :
# use the portmap
portmap: ALL
|
Die Datei /etc/hosts.allow stellt das Gegengewicht zu diesem strikten
Verbot dar und erlaubt den Zugriff von den eingetragenen Maschinen.
Gute Firewall-Regeln tragen auch zu einem besseren Schutz bei. Es
werden verschiedene Ports von den unterschiedlichen Diensten genutzt:
Service
|
Port
|
Protokoll(e)
|
portmap
|
111
|
upd / tcp
|
nfsd
|
2049
|
udp
|
mountd
|
variabel
|
udp / tcp
|
Weitere Informationen zur Sicherheit sind im Kapitel
Grundlagen Sicherheit
und Iptables zu finden.
|