rpc.mountd
, rpc.statd
und lockd
. Jedoch verwenden diese Dienste standardmäßig zufällige Ports (vom portmapper zugewiesen), wodurch es schwierig ist, Datenverkehr, der diese Dienste zum Ziel hat, zu filtern. Die Falcot Corp. Administratoren haben die unten beschriebene Problemumgehung gefunden.
/etc/init.d/nfs-kernel-server
beziehungsweise /etc/init.d/nfs-common
. Sie stellen Konfigurationsoptionen zur festen Einstellung bestimmter Ports bereit; die Dateien, die zur Festlegung dieser Optionen geändert werden müssen, sind /etc/default/nfs-kernel-server
und /etc/default/nfs-common
.
Beispiel 11.22. Die Datei /etc/default/nfs-kernel-server
# Number of servers to start up RPCNFSDCOUNT=8 # Runtime priority of server (see nice(1)) RPCNFSDPRIORITY=0 # Options for rpc.mountd. # If you have a port-based firewall, you might want to set up # a fixed port here using the --port option. For more information, # see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS # To disable NFSv4 on the server, specify '--no-nfs-version 4' here RPCMOUNTDOPTS="--manage-gids --port 2048" # Do you want to start the svcgssd daemon? It is only required for Kerberos # exports. Valid alternatives are "yes" and "no"; the default is "no". NEED_SVCGSSD= # Options for rpc.svcgssd. RPCSVCGSSDOPTS=
Beispiel 11.23. Die Datei /etc/default/nfs-common
# If you do not set values for the NEED_ options, they will be attempted # autodetected; this should be sufficient for most people. Valid alternatives # for the NEED_ options are "yes" and "no". # Do you want to start the statd daemon? It is not needed for NFSv4. NEED_STATD= # Options for rpc.statd. # Should rpc.statd listen on a specific port? This is especially useful # when you have a port-based firewall. To use a fixed port, set this # this variable to a statd argument like: "--port 4000 --outgoing-port 4001". # For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS STATDOPTS="--port 2046 --outgoing-port 2047" # Do you want to start the idmapd daemon? It is only needed for NFSv4. NEED_IDMAPD= # Do you want to start the gssd daemon? It is required for Kerberos mounts. NEED_GSSD=
rpc.mountd
Port 2048; rpc.statd
wartet an Port 2046 auf Anfragen und benutzt Port 2047 für ausgehende Verbindungen.
lockd
wird durch einen Kernel-Thread (einen leichtgewichtigen Prozess) gehandhabt; dieses Leistungsmerkmal ist als Modul in Debian-Kernel eingebaut. Das Modul bietet zwei Optionen, um die dauerhafte Einstellung desselben Ports zu ermöglichen, nlm_udpport
und nlm_tcpport
. Damit diese Optionen konsequent benutzt werden, muss eine Datei namens /etc/modprobe.d/lockd
wie die folgende vorhanden sein:
/etc/exports
, listet die Verzeichnisse auf, die über das Netzwerk zur Verfügung gestellt werden (exported). Zu jeder NFS-Freigabe wird nur den Rechnern Zugang gewährt, die auf dieser Liste stehen. Eine feiner eingestellte Zugangskontrolle kann durch einige Optionen erzielt werden. Die Syntax dieser Datei ist recht einfach:
/freizugebendes/verzeichnis rechner1(option1,option2,...) rechner2(...) ...
*.falcot.com
oder ein IP-Adressbereich wie 192.168.0.0/255.255.255.0
oder 192.168.0.0/24
verwendet wird.
ro
) schreibgeschützt bereitgestellt. Die Option rw
ermöglicht Schreibzugriff. NFS-Clients nehmen typischerweise über einen Port Verbindung auf, der Administratorrechte erfordert (mit anderen Worten, unterhalb von 1024); diese Einschränkung kann mit der Option insecure
aufgehoben werden (die Option secure
ist stillschweigend eingestellt, kann aber auch ausdrücklich angegeben werden, wenn dies der Deutlichkeit halber erforderlich ist).
sync
); dies kann durch die Option async
abgestellt werden. Asynchrones Schreiben erhöht die Leistung ein wenig, es verringert jedoch die Zuverlässigkeit, da die Gefahr eines Datenverlusts besteht, falls der Server zwischen der Annahmebestätigung des Schreibauftrags und dem tatsächlichen Schreibvorgang auf der Festplatte abstürzt. Da der voreingestellte Wert (im Vergleich zur früheren Einstellung von NFS) kürzlich geändert wurde, empfiehlt es sich, ihn ausdrücklich einzustellen.
nobody
. Dieses Verhalten entspricht der Option root_squash
und ist standardmäßig aktiviert. Die Option no_root_squash
, die dieses Verhalten abstellt, ist gefährlich und sollte nur in überwachten Umgebungen eingesetzt werden. Die Optionen anonuid=uid
und anongid=gid
ermöglichen es, anstelle von UID/GID 65534 (was dem User nobody
und der Gruppe nogroup
entspricht) einen anderen fingierten Benutzer anzugeben.
mount
und der Datei /etc/fstab
erforderlich.
Beispiel 11.25. Manuelles Einhängen mit dem Befehl mount
#
mount -t nfs -o rw,nosuid arrakis.internal.falcot.com:/srv/shared /shared
Beispiel 11.26. NFS-Eintrag in der Datei /etc/fstab
arrakis.internal.falcot.com:/srv/shared /shared nfs rw,nosuid 0 0
/srv/shared/
des Servers arrakis
in das lokale Verzeichnis /shared/
ein. Schreibzugriff ist erwünscht (daher der Parameter rw
). Die Option nosuid
ist eine Schutzmaßnahme, die jegliches setuid
- oder setgid
-Bit von Programmen, die auf der Freigabe gespeichert sind, entfernt. Falls die NFS-Freigabe nur zum Speichern von Dokumenten dienen soll, ist noexec
eine weitere empfehlenswerte Option, die das Ausführen von auf der Freigabe gespeicherten Programmen verhindert.