Welche Ports muss ich in der Firewall öffnen, um NFS verwenden zu können?


73

Ich verwende Ubuntu 11.10 - richte NFS ein, um ein Verzeichnis für viele andere Server freizugeben. Welche Ports müssen in der Firewall geöffnet sein?


6
Dies hängt von der Version des Protokolls ab, das Sie verwenden möchten. NFS 4 benötigt nur 2049, während ältere Versionen mehr benötigen.
lzap

Antworten:


97
$ rpcinfo -p | grep nfs

Port 111 (TCP und UDP) und 2049 (TCP und UDP) für den NFS-Server.

Es gibt auch Ports für den Cluster- und Clientstatus (Port 1110 TCP für den ersteren und 1110 UDP für den letzteren) sowie einen Port für den NFS-Sperrmanager (Port 4045 TCP und UDP). Nur Sie können bestimmen, welche Ports Sie zulassen müssen, je nachdem, welche Dienste über das Gateway hinweg benötigt werden.


4
Ich wusste nichts über rpcinfo, das ist sehr nützlich. Ich habe den Port 111 mit dem nicht gesehen grep nfs, aber ich habe das grep weggelassen, um zu erfahren, dass 111 für ist portmapper. Auch gut zu wissen! (und wie du schon erwähnt hast, notwendig)
kenny

@KennyYounger rpcinfo ist auch nützlich. Wenn dies Ihre Frage beantwortet hat, vergessen Sie nicht, sie als Antwort für zukünftige Zuschauer zu markieren.
Wesley

6
Sie müssen mountd öffnen, wenn Sie das Dateisystem zum ersten Mal mounten. Es läuft auf einem dynamischen Port, daher ist es nicht immer dasselbe. Ich habe in meiner Antwort einen Link zu einer Anleitung eingefügt.
Bonsaiviking

1
Vielen Dank @bonsaiviking. Kritische Informationen für diesen Prozess. Ich habe deine Antwort positiv bewertet!
Kenny

Können Sie kurz beschreiben, was diese Dienste ("Cluster- und Client-Status", "NFS-Sperr-Manager") tun und wann sie möglicherweise benötigt werden? Wenn diese Dienste von einer Firewall blockiert werden, werden die NFS-Server und -Clients dann ordnungsgemäß beeinträchtigt, oder wird nur das Warten auf eine Antwort gesperrt?
Nathan Craike

27

Zusätzlich zu 111 für portmapper und 2049 für nfs müssen Sie den mountd-Port und möglicherweise rquotad, lockd und statd zulassen, die alle dynamisch sein können. In diesem hervorragenden NFS-Sicherheitshandbuch wird empfohlen, die Startskripts und Kernelmodulkonfigurationen so zu ändern, dass sie statische Ports verwenden.

Zusätzlich zu der obigen Anleitung, die einen Abschnitt über Firewalls enthält , finden Sie meine Antwort auf eine andere Frage zum Härten von NFS.


7
Wir bevorzugen wirklich Inhalte, keine Verweise auf Inhalte. Eine Vorschau des Inhalts mit einem Link ist auch in Ordnung und einem Link vorzuziehen.
User9517

2
Ich bin mir 2012 nicht sicher, aber die Empfehlung in den Links scheint grob veraltet zu sein. NFS über TCP wird aus verschiedenen Gründen bevorzugt, und NFS über UDP kann aufgrund von Protokollbeschränkungen zu einer unbeaufsichtigten Datenbeschädigung bei einer schnellen Verbindung führen. Sicherheitsleitfaden hat keine Erwähnung von Kerberos / GSS usw.
Maciej Piechotka

In Bezug auf mountd ist das Leben viel einfacher, wenn Sie eine Neukonfiguration durchführen, um sicherzustellen, dass der mountd-Port fest ist. Bearbeiten Sie auf Debian-Systemen den Wert von RPCMOUNTDOPTS auf so etwas wie RPCMOUNTDOPTS="--port 34567"und starten Sie dann mit sysctl --systemund neu/etc/init.d/nfs-kernel-server restart
user45793

14

Auf dieser Seite habe ich nützliche Anweisungen für mein Problem gefunden, aber es gab kein leicht zu befolgendes Rezept. Also hier ist mein Rezept.

TL; DR - müssen beide nfs-Ports (111, 2049) und mountd-Port nach der Korrektur zulassen.

Anleitung:


Einen festen Port für mountd einrichten

gksudo gedit /etc/default/nfs-kernel-server
  • Kommentiere diese Zeile aus: RPCMOUNTDOPTS=--manage-gids
  • füge dies stattdessen hinzu: RPCMOUNTDOPTS="--port 33333"

Oder eine andere Portnummer.

versuche nun nfs zurückzusetzen mit:

sudo service nfs-kernel-server restart

Und testen Sie, ob es geholfen hat mit:

rpcinfo -p | grep "tcp.*mountd"

Für mich war es nicht genug, aber ein vollständiger Neustart behebt das Problem.

( Kredit )


Firewall einrichten

(1) alte Regeln löschen, manuell ausführen oder zurücksetzen, wenn dies die einzige Verwendung für die Firewall ist:

sudo ufw reset
sudo ufw enable

(2) nfs & mountd ports hinzufügen

sudo ufw allow in from 10.0.0.1/20 to any port 111 
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333

(Wechseln Sie zu Ihrer lokalen IP-Adresse oder zu " any" anstelle von 10.0.0.1/20)

Das ist alles, was dazu gehört.


3
Sie müssen nicht die gesamte Box neu starten. Eine einfache sudo service nfs-config restartvor dem Neustart der nfs-kernel-serverwird gut tun.
showp1984

@ showp1984 danke, ich werde das nächste Mal versuchen
Amir Uval

Oder wenn Ihr System verwendet systemctl, ist es systemctl restart nfs-kernel-server.service.
7.

Sie können auch alles in einem Wellengang machen: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333gefolgt von (ok, zwei Wellengänge) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333. Beachten Sie, dass Port 33333 dem obigen Beispiel entspricht. Sie können einen anderen Port verwenden, wie in der Antwort angegeben.
7.

5

Dies gibt eine Liste aller Ports, die von allen NFS-bezogenen Programmen verwendet werden:

rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq

3

Mit FERM kann man Backticks verwenden , um die Ports von rpcinfo abzurufen, zum Beispiel:

Server:

proto tcp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}

Klient:

proto udp {saddr ($SERVER) {ACCEPT;}}  # NFS

(Wenn Sie nur TCP verwenden möchten, benötigen Sie nur den proto tcpTeil).


1

Für die Datensätze musste ich Berechtigungen für die Ports 111, 2049 UND 1048 für eine Konfiguration hinzufügen, bei der eine NFS-Freigabe von einem Windows 2008 R2-Server exportiert wird und die Clients Ubuntu 12.04.4 sind.

Ich hoffe das hilft jemandem.


2
Es kann hilfreich sein, zu erklären, warum Sie Port 1048 benötigten und wie Sie dies festgestellt haben.
HBruijn

3
Ehrlich gesagt habe ich keine Ahnung, warum ich eine Erlaubnis für 1048 hinzufügen musste, aber das Hinzufügen löste mein Problem. Ich wollte nur mitteilen, ob das in Zukunft jemand anderem Zeit spart. Es tut mir leid, dass ich die Frage nicht beantworten kann.
Erdem KAYA
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.