Warum muss Port 80 nicht nach aussen offen sein

Garack

Captain
Registriert
Mai 2006
Beiträge
3.675
Hallo,

Wo ist mein Denkfehler?

Wenn ich von meinem PC und Router eine Webseite anspreche geht das über Port 80 oder 443.
Meine Router hat ja Port 80 outgoing offen. Mein Browser sendet also einen Request zum Webserver.
Der Server hat den einegehenden Port offen und empfängt meine Anfrage.

Wie geht es nun weiter. Der Server sollte mir nun pakete senden, aber mein Port 80 bleibt eingehend durch die NAT Firewall ja weiter gesperrt..
 
Du öffnest einen Port der dann auf die Rückantwort des Servers lauscht.

Zum Beispiel Port 45632. Oder einen anderen Port der nicht standardisiert für etwas anderes vorgesehen ist
 
  • Gefällt mir
Reaktionen: Garack
Sende und Empfangsport sind nicht identisch.
Wenn du eine anfrage stellt (an einen Webserver auf Port80) teiltst du automatisch einen Port mit
auf dem du gerne deine Antwort haben möchtest (dieser Port ist idr. Dynamisch)

Das NAT erkennt bei deiner anfrage das du gerne eine Antwort haben möchtest, und leitet bei diesem Port die Antwort des Webservers zu deiner Maschine um.
 
  • Gefällt mir
Reaktionen: Garack
Port 80 ist der Port für Webserver. 443 mit SSL.

Wenn du eine eigene Interneseite auf deinem Rechner betreiben willst (Webserver) musst du diesen Port öffnen bzw. weiterleiten.
 
ByteFax schrieb:
Sende und Empfangsport sind nicht identisch.
Wenn du eine anfrage stellt (an einen Webserver auf Port80) teiltst du automatisch einen Port mit
auf dem du gerne deine Antwort haben möchtest (dieser Port ist idr. Dynamisch)

Das NAT erkennt bei deiner anfrage das du gerne eine Antwort haben möchtest, und leitet bei diesem Port die Antwort des Webservers zu deiner Maschine um.

Ah ok, das bedeutet dieser dynamisch zugewiesene Port ist dann, während der Web Session eingehend geöffnet, korrekt?

Und diesen Port darf der Browser dann auch ohne upnp öffnen..
 
Garack schrieb:
Und diesen Port darf der Browser dann auch ohne upnp öffnen..
Der Browser hat damit nix zu tun. Das macht der Router alles selbst.
 
  • Gefällt mir
Reaktionen: Garack
Garack schrieb:
Ah ok, das bedeutet dieser dynamisch zugewiesene Port ist dann, während der Web Session eingehend geöffnet, korrekt?

Und diesen Port darf der Browser dann auch ohne upnp öffnen..

Nunja im Grunde kann man das so nennen, eingehende Pakete (ausschließlich von der zuvor angefragten quelle) werden an diesen Port umgeleitet.
Das ist eigentlich der ganze clou an NAT , das NAT merkt sich an wen du anfragen schickst, und leitet die antworten die zurückkommen wieder an die anfragende Maschine.

Dafür brauchts dann kein upnp oder so.

Andere anfragen auf dem Port (von anderen maschinen halt) werden nicht umgeleitet.
 
  • Gefällt mir
Reaktionen: Garack
Garack schrieb:
Und diesen Port darf der Browser dann auch ohne upnp öffnen..
Das hat mit UPNP nichts zu tun. UPNP und Portfreigaben brauchst du nur, wenn du einen Server bei dir irgendwo lauschen lässt. Bspw. einen Apache, Nginx, MySQL, Redis oder sonstiges. Dann wartet dieser auf Port x und wartet auf Anfragen.

Rufst du mit dem Browser bspw. www.computerbase.de auf, verbindet sich dein Browser zu Port 80 des Servers. Der Rückkanal ist dann im TCP Paket als Destination Port definiert, auf welchen der Server dann deinem Rechner wiederum das Ergebnis mitteilt. Da Router ja nicht bescheuert sind, analysieren sie die Pakete und leiten die ankommenden Pakete an bestimmten Ports dynamisch weiter, sodass der Server trotz Router eine Verbindung zu deinem Rechner dahinter aufbauen kann.
 
  • Gefällt mir
Reaktionen: Garack
Wobei NAT und Firewall zwei Paar Schuhe sind.

NAT passiert im Router. Dieser merkt sich wie oben beschrieben die Quell-IP des PCs sowie den Quell- bzw. Antwort-Port und leitet dadurch die Antwort des Webservers ohne explizite Portweiterleitung trotzdem zum PC weiter. Vereinfacht ausgedrückt erstellt der Router eine temporäre Portweiterleitung für die Dauer der Verbindung, beschränkt diese jedoch ausschließlich auf diesen einen Server.

Der zweite Part ist die Firewall, sowohl im Router als auch im PC. Eine übliche Firewall beinhaltet stets eine "established/related"-Regel. Sobald der PC dem Server eine Verbindungsanfrage sendet und dieser (positiv) antwortet, gilt die Verbindung als hergestellt bzw. "established" und der dazugehörige Port wird temporär in der Firewall freigegeben. Diese Firewall-Regel steht normalerweise an erster Stelle, um ausgehende Verbindungen bzw. deren Antworten möglichst performant zu akzeptieren. Auch eine Firewall ist ja nicht blöd und wenn der PC eine (Verbindungsan)Frage stellt, ist anzunehmen, dass er auch eine Antwort bekommen möchte.
 
Das ist durchaus so. Genau genommen wird gar nicht der Port in der Firewall freigegeben, sondern explizit die Verbindung. Das war vielleicht etwas missverständlich ausgedrückt. Der Netzwerkstack merkt sich jede einzelne Verbindung mit allen ihren Parametern (Quelle, Ziel, Port, etc) und merkt sich zudem deren Status (bzw. definiert ihn).

Grundsätzlich gibt es 4 Verbindungszustände: New, Established, Related und Invalid. Jeweils das erste Paket einer Verbindung, die Verbindungsanfrage, gilt als "new". Sobald die Anfrage vom Ziel bestätigt wurde, wird die Verbindung auf "established" gesetzt. Genau auf diese Eigenschaft triggert dann die Firewall, die sich keinen Kopf mehr um den Port machen muss, sondern quasi nur noch die Verbindungs-ID nebst deren Status beachtet.

Der Status "related" hat dabei eine besondere Bedeutung. Bei bestimmten Protokollen gibt es bekannte Nebenports. Im Falle von aktivem FTP sind das zB Port 20 bw. 21 für die Data/Control Verbindungen. Wird aus einer FTP-Control-Verbindung (21; Client->Server) anschließend die separate Data-Rückverbindung (20; Server->Client) vom Server zum Client hergestellt, bekommt diese Verbindung den Status "related", weil beide zusammengehören. Deswegen ist die "established-Regel" einer Firewall meistens eine "established/related" Regel. So würde die Firewall daher explizit eine eingehende Verbindung auf Port 20 erlauben, wenn zuvor eine ausgehende Verbindung zum selben Verbindungspartner auf Port 21 hergestellt wurde. Genau hier liegt aber der Knackpunkt von aktivem FTP hinter einem herkömmlichen NAT-Router. Auch wenn die Firewall im Router und im PC den related-Port akeptieren würde (bzw. die related-Verbindung), interessiert das die NAT-Engine im Router herzlich wenig, da diese keine Ahnung vom Verbindungsstatus hat, sondern nur dumm Pakete hin und herleitet -> keine Portweiterleitung für den Data-Port des aktiven FTPs, keine Chance. Deswegen funktioniert FTP hinter einem Router in 99,9% aller Fälle nur mit passivem FTP.

Das führt jetzt aber etwas zu weit. Ich wollte eigentlich nur ergänzen, dass eine Portweiterleitung als solche nur ein Teil des Puzzles ist. NAT und Firewall müssen Hand in Hand gehen, sonst war's das mit dem Surfen. Bei einem Consumer-Router sind solche Regeln bereits vom Hersteller vordefiniert und der Endanwender sieht nur die benutzerdefinierten NAT-Regeln, also die Portweiterleitungen. Im Hintergrund wird der Router allerdings auch die Firewall entsprechend anpassen bzw. die established/related-Regel ist sowieso fest integriert. Bei fortgechrittenen Routern muss das nicht zwangsläufig der Fall sein und der Nutzer ist gut darin beraten, sich mit obigen Konzepten auseinanderzusetzen, da solche Router (zB EdgeRouter von Ubiquiti) ab Werk bis auf eine IP-Adresse komplett nackt daherkommen, keine Firewall, kein NAT.
 
Zuletzt bearbeitet:
Zurück
Oben