
Ich möchte einige Linux-Dienste auf nicht standardmäßige Ports einstellen – was ist die höchste gültige Portnummer?
Antwort1
(2^16)-1 oder 0-65.535 (-1 liegt daran, dass Port 0 reserviert und nicht verfügbar ist). (bearbeitet, weil o_O Tync mich daran erinnert hat, dass wir Port 0 nicht verwenden können, und Steve Folly mich daran erinnert hat, dass Sie nach dem höchsten Port gefragt haben, nicht nach der Anzahl der Ports)
Aber Sie gehen das wahrscheinlich falsch an. Es gibt Leute, die für und gegen nicht standardmäßige Ports argumentieren. Ich sage, sie sind irrelevant, außer für den beiläufigsten Scanner, und der beiläufigste Scanner kann durch die Verwendung aktueller Software und geeigneter Firewall-Techniken sowie sicherer Passwörter in Schach gehalten werden. Mit anderen Worten: Best Practices für die Sicherheit.
Antwort2
1-65535 sind verfügbar, und Ports im Bereich 1-1023 sind dieprivilegiertones: Eine Anwendung muss als Root ausgeführt werden, um diese Ports abzuhören.
Antwort3
Obwohl 1-65535 legitime TCP-Ports sind und 1-1023 für bekannte Portdienste verwendet werden, können bei Ihren eigenen Diensten zufällige Probleme auftreten, wenn diese gestartet werden, nachdem ein temporärer Port eingerichtet wurde. Für diejenigen, die es vielleicht nicht wissen: Temporäre Ports sind solche, die lokal für Remote-Endpunkte (oder so ähnlich) verbunden sind. Wenn Sie also einen TCP-Dienst schreiben, der auf Port 20001 lauscht, ist das vielleicht heute gut ... und morgen. Aber eines Tages wird Ihr Dienst möglicherweise gestartet und versucht, sich an 20001 zu binden, und es wird fehlschlagen, weil dieser als temporärer Port verwendet wurde. Es gibt eine Lösung. Sie müssen Ihren Administrator oder sich selbst bitten, die Systemrichtlinie für temporäre Portbereiche auf Ihrem Server zu ändern. Auf Linux-Systemen geschieht dies in zwei Schritten:
- Dynamisch
- Permanent
Beide Schritte müssen ausgeführt werden, es sei denn, Sie planen einen Neustart (in diesem Fall ist der dynamische Schritt nicht erforderlich). Um Ihren Bereich auf 40000 bis 65535 einzustellen, gehen Sie wie folgt vor:
Dynamisch
echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range
oder
sysctl -w net.ipv4.ip_local_port_range="40000 65535"
Dauerhaft
Fügen Sie /etc/sysctl.conf Folgendes hinzu:
net.ipv4.ip_local_port_range = 40000 65535
Um die aktuelle Einstellung abzulesen oder die Änderung zu bestätigen:
/sbin/sysctl net.ipv4.ip_local_port_range
Die Ausgabe sieht ungefähr so aus:
net.ipv4.ip_local_port_range = 9000 65500
Stellen Sie sicher, dass Sie den Zweck Ihres Servers verstehen. Eine zu starke Reduzierung des Bereichs kann zu anderen Problemen führen.
Viel Spaß beim Programmieren! (oder was auch immer Sie tun)
Antwort4
alle, die 65.535 sagen, haben recht.
ABER!!! Mit etwas vorsichtiger Manipulation der über den Kernel einstellbaren Parameter können Sie Linux anweisen, mehr zu verwenden. Einige kommerzielle UNIX-Systeme würden Dienste auf technisch nicht zulässigen Ports ohne Probleme ausführen. Auch ein super einfacher Weg, um einige der durch Firewall/ACL geschützten Netzwerke zu umgehen! :P
Ich habe früher einen zweiten Telnet-Server auf TCP/99999 laufen lassen und das hat bei mir immer funktioniert. Sogar in Fällen, in denen die typischen privilegierten Ports (1-1024) durch ACL oder Netzwerk-Firewall blockiert sind.
Fast niemand sucht nach Ports, die über 65.535 lauschen. Die meisten Netzwerkgeräte können nichts außerhalb des definierten Bereichs (0-65535) prüfen und leiten den Datenverkehr blind weiter, sofern sie nicht per Regel dazu angewiesen werden. Jetzt, da wir 64-Bit-Systeme haben, ist der obere Bereich technisch gesehen die 64-Bit-Grenze. Das bedeutet nicht, dass Netzwerke den Datenverkehr weiterleiten, aber normalerweise leiten sie alles weiter, was nicht per Regel gelöscht oder abgelehnt wird.