Warum sollte ich eine bekannte Portnummer verwenden? (Bsp. 22, 80 usw.)

7

Ich habe gerade zum ersten Mal Remote-SSH mit openssh eingerichtet.

Ich konnte mit Kitt mit den folgenden drei Einstellungen auf meinen Server ssh:

  1. /etc/init.d/ssh Neustart

    # What ports, IPs and protocols we listen for
    Port 1234
    
  2. dd-wrt Netzwerksteuerung (192.168.1.1 in die URL des Browsers)

    Anwendung ---- Port von ---- Protokoll ---- IP-Adresse ---- Port von ---- Aktivieren

    myssh ---------- 1234 ---------- TCP --------- 192.168.1.x --- 1234 ------- ja

  3. Kitt

    Hostname (oder IP-Adresse) ---- Port

    wxyz ----------------------------- 1234

Gibt es einen Grund, warum ich Port 22 anstelle von 1234 verwenden sollte?

user784637
quelle
Sie sollten diese Frage überprüfen: serverfault.com/questions/174951/…
gWaldo

Antworten:

8

Erstens sind bekannte Portnummern "bekannt". Sie eliminieren einige Vermutungen darüber, welchen Port ein bestimmter Dienst abhört.

Zweitens können die Ports 1024 und darunter nur von geöffnet werden root. Dies gibt diesen Diensten ein zusätzliches Maß an "Vertrauen". IE, der Dienst, mit dem ich über Port 22 eine Verbindung herstelle, muss als Root ausgeführt werden (oder gestartet worden sein). Wenn ein Dienst auf 1234 ausgeführt wird, kann es sich um jeden Benutzer handeln, der Zugriff auf die Box hat, die ein Programm "Programm, das sich wie SSHD verhält, aber Kennwörter abfängt" geöffnet und gestartet hat. (Dies setzt voraus, dass kein NAT oder andere Umleitungen vorhanden sind - siehe die Antwort von mmi.)

Auch mit einem Punkt von mmi einverstanden - ich würde nicht unnötig ein Programm als root ausführen, nur um die gewünschte Portnummer zu erhalten. Wenn ein Programm, das als Root ausgeführt wird, gefährdet wird, wird das gesamte System gefährdet. Wenn ein Programm jedoch bereits als Root für andere Anforderungen ausgeführt wird, kann auch die richtige Portnummer verwendet werden.

Einige Leute raten davon ab, die bekannten Ports zu verwenden, um allgemeine Dienste zu "verbergen", die für Exploit-Versuche verwendet werden könnten, aber ich betrachte dies nur als "Sicherheit durch Dunkelheit" - und rate davon ab.

ziesemer
quelle
Danke, Mann. Was sind die Fallstricke bei der Verwendung eines anderen bekannten Ports wie 37 für ssh anstelle von 22 oder eines nicht zugewiesenen?
user784637
2
@LedZeppelin - Möglicherweise treten Konflikte mit anderen Diensten auf, die erwarten, dass diese Portnummern verfügbar sind. IE, Port 37 ist für "Zeit" reserviert. Sie können die vollständige Liste unter iana.org/assignments/service-names-port-numbers/… oder en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers einsehen . Sie sollten wirklich nur nicht zugewiesene Portnummern verwenden, wenn Sie keine verwenden möchten, die bereits Ihrem Zweck entspricht.
ziesemer
Die Gefahr besteht darin, dass ein anderer Dienst auf Ihrem Server seinen Dienst möglicherweise an einem so bekannten Port bereitstellen möchte. Also IMHO-mach weiter - du solltest wissen, was auf deinem Server läuft.
Nils
Meinten Sie 1234 statt 1022? Das letzte Mal, als ich nachgesehen habe, 1022 <1024. Außerdem denke ich, dass ein klarerer Wortlaut "... Ports 1024 und darunter können nur von geöffnet werden können root" lautet. Ihr aktueller Wortlaut impliziert, dass rootkeine höheren Ports geöffnet werden können.
Keith Thompson
@ KeithThompson - danke für die Fänge. Antwort entsprechend aktualisiert.
ziesemer
6

Es hängt im Wesentlichen davon ab, wie sehr Sie diesen Dienst verbergen möchten.

Personen (und Bots, die nach Sicherheitslücken suchen) gehen davon aus, dass SSH auf Port 22, HTTP auf Port 80 usw. ausgeführt wird. Wenn ein Dienst auf einem nicht standardmäßigen Port ausgeführt wird, ist er weniger leicht zu erkennen, für legitime Benutzer jedoch schwieriger zu verwenden.

  • HTTP läuft auf Port 80:
    • Sie können es mit erreichen http://servername
    • Es ist für jeden leicht erreichbar, der einen Webbrowser darauf zeigt
  • HTTP läuft auf Port 8042:
    • Sie müssen eingeben http://servername:8042, um es zu erreichen
    • Es wird nicht leicht als Webserver erkannt

  • SSH läuft auf Port 22:
    • Sie können es erreichen, indem Sie Putty (oder einem ähnlichen Programm) anweisen, eine Verbindung zum Hostnamen oder zur IP-Adresse Ihres Servers herzustellen
    • Es ist für jeden leicht erreichbar, der einen SSH-Client darauf verweist
  • SSH läuft auf Port 2242:
    • Sie müssen Ihren SSH-Client anweisen, diesen benutzerdefinierten Port zu verwenden
    • Es wird nicht leicht als SSH-Server erkannt

Und so weiter...

Massimo
quelle
3

Sie können einen beliebigen Port verwenden. Die Verwendung von Port 22 für sshist konventionell, und Sie werden feststellen, dass viele Firewalls, SSH-Clients und Daemons dies aus Bequemlichkeitsgründen standardmäßig verwenden.

Die bessere Frage sollte lauten: "Warum sollte ich Port 22 nicht verwenden?". Dies hat einige umstrittene Sicherheitsvorteile, die mich jedoch nie persönlich überzeugt haben.

wachsen
quelle
und natürlich ist NAT manchmal am Rande beteiligt, aber ich stimme Ihnen zu, halten Sie den echten Host auf dem bekannten Port.
SpacemanSpiff
3

Ich bin irgendwann nicht mehr mit ziesemer einverstanden: Diese Programme müssen NICHT unbedingt von root ausgeführt werden. Es wird NICHT empfohlen, einen netzwerkbezogenen Dienst als Root auszuführen, es sei denn, Sie müssen dies tun. Wenn jemand Ihren Dienst nutzen kann, erhält er Root-Rechte.

Außerdem kann ein NAT Port 80 von außen in einen beliebigen Port im LAN übersetzen. Daher können Sie einen Dienst als Nicht-Root ausführen.

Der Hauptvorteil bekannter Ports (insbesondere Port 80): Sie werden normalerweise nicht durch Firewalls (Portfilter) blockiert. Wenn Sie versuchen, von der Schule aus auf Ihren Server zuzugreifen, kann dies je nach Routerkonfiguration der Schule fehlschlagen.

mmi
quelle
1
Bei @ziesemer handelte es sich um Berechtigungsbeschränkungen in einigen Betriebssystemen, für die Root-Berechtigungen erforderlich sind (oder die Berechtigungen über authbind oder eine Reihe anderer Methoden erteilt werden), um an Ports <= 1023 zu binden.
Shane Madden
2
Ich weiß, aber er sagt: "Dies gibt diesen Diensten ein zusätzliches Maß an" Vertrauen ". IE, der Dienst, mit dem ich über Port 22 eine Verbindung herstelle, muss als Root ausgeführt werden (oder gestartet worden sein)." Das ist meiner Meinung nach eine falsche Schlussfolgerung. Ich weiß, dass Sie auf UNIX-Systemen root sein müssen, aber NAT kann diese "Illusion" leicht zerstören.
mmi
+1 auch für deine Antwort. Ich denke, beide Standpunkte sind gültig - alles hängt davon ab, was alles berücksichtigt wird. Auch zu beachten - vereinbart, Dinge nicht als root auszuführen, wenn dies überhaupt möglich ist, aber wenn nötig, kann dann auch die richtige Portnummer verwendet werden.
ziesemer
1

Gibt es einen Grund, warum ich Port 22 anstelle von 1234 verwenden sollte?

Denn dort hören die anderen 99% der SSH-Dienste zu und die Leute werden es erwarten. Konvention ist keine feste Regel, aber Sie werden feststellen, dass die meisten Administratoren SSH auf Port 22, HTTP auf Port 80 usw. erwarten. Es sei denn, Sie haben einen sehr guten Grund, von der etablierten Konvention abzuweichen - ich schlage vor, Sie tun dies nicht.

Neun von zehn Fällen hat jemand, der viel schlauer ist als Sie (oder ich), die Standardeinstellungen aus gutem Grund ausgewählt, und wenn Sie keine bessere haben, warum sollten Sie sie ändern?

(Es ist wirklich ärgerlich, wenn Sie Ihren ersten Arbeitstag damit verbringen müssen, alles abzubilden, um herauszufinden, auf welchen "nicht konventionellen" Ports der vorherige Administrator / Berater / BOFH beschlossen hat, alles auszuführen).


quelle
1

Es gibt einen guten Grund, 22 für ssh zu verwenden. Vermeiden Sie die Notwendigkeit, das Konfigurieren oder zusätzliche Parameter für die Verwendung in mehreren Clients, ssh, scp, git, rsync usw. zu erlernen. Vermeiden Sie es auch, vorgefertigte Skripte zu ändern, die so geschrieben wurden, dass sie den Standardport annehmen.

Es gibt immer subjektive Sicherheitsgewinne beim Ändern eines Standardports, aber ich denke, dass dies ein guter und nicht zu umgehender Grund sein sollte, ein Standardverhalten zu ändern.

Theist
quelle