Wie können Sie das Internet weiterhin nutzen, wenn Sie alle eingehenden Verbindungen blockieren?


22

Wenn Ihr Internetdienstanbieter oder Ihre Firewall alle eingehenden Verbindungen blockiert, wie können Webserver Ihnen dennoch Daten an Ihren Browser senden? Sie senden die Anfrage (ausgehend) und der Server sendet Daten (eingehend). Wie kann der Webserver reagieren, wenn Sie alle eingehenden Nachrichten blockieren?

Was ist mit Video-Streaming und Multiplayer-Spielen, bei denen UDP verwendet wird? UDP ist verbindungslos, es muss also keine Verbindung hergestellt werden. Wie wird die Firewall oder der ISP damit umgehen?


2
Alle eingehenden Anrufe blockieren / Alle eingehenden Anrufe an Voicemail weiterleiten? Hält Sie nicht davon ab, jemanden anzurufen.
WernerCD

Antworten:


43

"Eingehende Blockierung" bedeutet, dass eingehende neue Verbindungen blockiert werden, der eingerichtete Datenverkehr jedoch zulässig ist. Wenn also ausgehende neue Verbindungen zulässig sind, ist die eingehende Hälfte dieser Konversation in Ordnung.

Die Firewall verwaltet dies durch Nachverfolgung des Verbindungsstatus (eine solche Firewall wird häufig als "Stateful Firewall" bezeichnet). Es erkennt das ausgehende TCP-SYN und lässt es zu. Es sieht ein eingehendes SYN / ACK und kann überprüfen, ob es mit dem ausgehenden SYN übereinstimmt, das es gesehen hat, und lässt dies durch und so weiter. Wenn ein Drei-Wege-Handshake zulässig ist (z. B. gemäß den Firewall-Regeln), ist diese Konversation zulässig. Und wenn es das Ende dieser Konversation sieht (FINs oder RST), wird diese Verbindung von der Liste der zuzulassenden Pakete gestrichen.

UDP wird in ähnlicher Weise ausgeführt, obwohl die Firewall sich genügend erinnert, um vorzutäuschen, dass UDP eine Verbindung oder Sitzung hat (was UDP nicht tut).


1
Bei UDP verfolgt die Firewall normalerweise die Ziel-IP und den Port ausgehender UDP-Pakete, da keine tatsächliche Verbindung besteht. Wenn es ein eingehendes Paket mit derselben IP und demselben Port wie die Quelle gibt, geht sie davon aus, dass es sich um eine Antwort handelt, und lässt es zu in.
WhiteWinterWolf

17

@gowenfawr hat das High-Level-Bild nach unten. Ich dachte jedoch, ich würde einige Details hinzufügen, wie das "Matching" für das Verbindungs-Tracking durchgeführt wird, da es für den Uneingeweihten wie Zauberei klingen könnte.

Jede TCP-Verbindung hat eine Portnummer von jeder Seite. Wie die meisten Techniker wissen, werden HTTP-Server auf Port 80 ausgeführt. Wenn Ihr Browser eine Verbindung zu einem Webserver herstellt, fordert er das Betriebssystem auf, eine "lokale" Portnummer zu generieren, die wie 29672 zufällig ist und von keinem anderen verwendet wird TCP-Verbindung von diesem Computer (und das Betriebssystem kann dies tun, da es über alle aktiven TCP-Verbindungen Bescheid weiß). Anschließend wird ein erstes TCP-Setup-Paket von der IP-Adresse (IP_YOURS) Ihres Computers und der Portnummer 29672 an die IP-Adresse (IP_WEBSERVER) und die Portnummer 80 des Webservers gesendet. Zu diesem Zeitpunkt sagt die zustandsbehaftete Firewall "Aha, zukünftige Pakete vom IP_WEBSERVER-Port" 80, die zu IP_YOURS Port 29672 gehen, sind keine neuen Verbindungen, sondern Antworten auf eine bestehende Verbindung und müssen zugelassen werden ". Stateful Firewalls pflegen einen Tisch,


3
Dies ist größtenteils richtig, aber, wie ein paar kleinere Punkte, hören Portnummern bei 65535 auf (es handelt sich um 16-Bit-Zahlen ohne Vorzeichen) und zusätzlich zu dem Timeout können Pakete mit gesetzten FIN- oder RST-Flags auch signalisieren, dass ein TCP vorliegt Verbindung ist jetzt geschlossen.
Reirab

@reirab Oh whoops, ja Portnummer ausfallen. Beim Schließen wäre es natürlich möglich, TCP-Flags zu überprüfen, aber es ist kompliziert genug, den möglichen Paketverlust und die erneute Übertragung von Abschlusssequenzen zu berücksichtigen, sodass ich davon ausgehe, dass die meisten Firewalls den zuletzt verwendeten Tabelleneintrag einfach neu verwenden, anstatt ihn beizubehalten genau verfolgen.

@atsby Kannst du deinen Beitrag immer bearbeiten und die Portnummern durch etwas passenderes ersetzen?

All dies sind großartige Informationen. Ich wollte nur eine Sache zu den in den obigen Kommentaren diskutierten Ports hinzufügen. Sie werden als "ephemere Ports" bezeichnet und ihr Bereich wird durch den für jedes Betriebssystem spezifischen Kernel definiert. Unter Linux erhalten Sie diese über "cat / proc / sys / net / ipv4 / ip_local_port_range" - der Standardbereich ist "32768 bis 61000"
Arul Selvan
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.