Einfacher Versand
Netzwerkdateisystem NFS
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.
Steht Ihnen keine Firewall zur Verfügung, bringt das Einschränken der Dienste via TCP-Wrapper ein wenig zusätzliche Sicherheit. Dazu sperren Sie diese Dienste erst einmal über die Datei /etc/hosts.deny global und geben Sie dann für das lokale Netzwerk über /etc/hosts.allow wieder frei (siehe Listings 3 und 4).
Listing 3
# /etc/hosts.deny … # Alle für NFS notwendigen # Dienste global sperren portmap : ALL mountd : ALL lockd : ALL statd : ALL rquotad : ALL …
Listing 4
# /etc/hosts.allow … # Alle für NFS notwendigen Dienste # für lokales Netzwerk freigeben portmap : 192.168.1.0/24 mountd : 192.168.1.0/24 lockd : 192.168.1.0/24 statd : 192.168.1.0/24 rquotad : 192.168.1.0/24 …
Dies macht bei den Diensten lockd und statd auch für die NFS-Clients Sinn. Prüfen Sie, ob der jeweilige Dienst mittels TCP-Wrapper geschützt ist. Liefert zum Beispiel strings /sbin/portmap | grep hosts mindestens hosts_ctl zurück, sollte es klappen. Der Befehl rpcinfo -p NFS-Server
teilt bei fehlender Berechtigung dann schlicht mit, keine entfernten Programme gefunden zu haben. Mit Debian Sarge und Suse 10.1 funktionierte es, mit der aktuellen Ausgabe von Debian Testing (Etch) und portmap 5-21 hingegen nicht.
Der Autor
Martin Steigerwald arbeitet als Systemadministrator mit Schwerpunkt Second Level Support für Linux als Business-Desktop. Er hat Linux schon vor Jahren auf seinem Amiga 4000 installiert und nutzt es auch privat.
Glossar
IETF
Internet Engineering Task Force. Organisation, die sich mit der Entwicklung und Standardisierung von Internetprotokollen befasst.
Userspace
Unprivilegierterer Bereich, in dem Benutzer-Anwendungen laufen. Kernel-Module und Prozesse laufen hingegen im Kernelspace.
RPC
Remote Procedure Call. System, um auf einen anderen Computer eine Funktion aufzurufen, ohne dass sich der Programmierer mit den Details der Netzwerkkommunikation befassen muss.
Daemons
Programme, die im Hintergrund arbeiten und einen Dienst anbieten.
Port
Nummer zwischen 0 und 65535, die dazu dient, Pakete den richtigen Diensten oder Clients zuzuordnen.
Export
Im NFS-Jargon ein freigegebenes Verzeichnis.
Dateihandle
Im NFS-Kontext eine eindeutige Kennung aus der Inode-Nummer eines Verzeichniseintrags und der Gerätenummer der Partition.
Inode
Struktur mit Verwaltungsinformationen zu einem Dateisystem-Eintrag wie ein Verzeichnis oder eine Datei.
Iptables
Leistungsfähiger Paketfilter für den Linux-Kernel.
Infos
[1] NFS-Grundlagen: Thorsten Scherf, "Speicher mit Anschluss", Linux-Magazin Sonderheft 4/2006, S. 58
[2] Linux-Fibel, Netzwerkserver – NFS-Server: http://www.de.linwiki.org/index.php/Linuxfibel_-_Netzwerk_Server_-_NFS_Server
[3] Linux-Fibel, Netzwerkclients – NFS-Clients: http://www.de.linwiki.org/index.php/Linuxfibel_-_Netzwerk_Clients_-_NFS_Clients
[4] Linux-Fibel, Netzwerk Grundlagen – RPC: http://www.de.linwiki.org/index.php/Linuxfibel_-_Netzwerk_Grundlagen_-_Remote_Procedure_Call
[5] Linux NFS FAQ zu Subtree-Checking: http://nfs.sourceforge.net/#faq_c7
[6] Linux NFS Howto, Optimize Transfer Speeds: http://nfs.sourceforge.net/nfs-howto/ar01s05.html#block_size
[7] Rechteverwaltung: Heike Jurzik, "Gleiches Recht für alle?", LinuxUser 07/2004, S. 69, http://www.linux-user.de/ausgabe/2004/07/069-zubefehl/
[8] Fstab: Heike Jurzik, "Ganz schön anhänglich", LinuxUser 05/2006, S. 94,http://www.linux-user.de/ausgabe/2006/05/094-zubefehl/
[9] Rechner absichern: Ralf Spenneberg, "Vorsorge ist besser", LinuxUser 05/2004, S. 27, http://www.linux-user.de/ausgabe/2004/05/027-abdichten/
[10] Verbindungen überwachen: Marc André Selig, "Private Feuerwände", Linux User 05/2002, S. 30, Kasten 2, http://www.linux-user.de/ausgabe/2002/05/030-firewall/firewall-4.html
[11] Linux NFS Howto, Security and NFS: http://nfs.sourceforge.net/nfs-howto/ar01s06.html
[12] Debian Wiki, Securing NFS: http://wiki.debian.org/?SecuringNFS



