Ich verstehe, dass man eine Firewall implementieren kann, um nur den Zugriff auf einen Server von bestimmten IP-Adressen aus zuzulassen, aber kann man die Quell-IP-Adresse in einem TCP-Paket nicht vortäuschen? Wie kann man damit tatsächlich skrupellose Personen davon abhalten, auf Ihren Server zuzugreifen?
Antwort1
Was Dude gesagt hat, ist die Antwort, die Sie suchen.
Ich glaube, Sie denken Folgendes:
SERVER.......................CLIENT
............[FIREWALL].........|
..|............................|
..|_>___[CHECK FOR AUTHORITY]_<_|
Dieses Diagramm geht davon aus, dass sowohl der Server als auch der Client über Firewalls verfügen (was normalerweise der Fall ist).
Wenn die Autorität fehlschlägt, wird der Aufruf des Servers/Clients ignoriert.
Wenn also die Server-IP xxx.xxx.xxx.1 und die des Clients xxx.xxx.xxx.2 ist und der Client versucht, auf den Server zuzugreifen, indem er ohne Autorisierung einen Befehl sendet, würde Ihr Serverprotokoll folgendermaßen aussehen: xxx.xxx.xxx.2 [Autorisierung fehlgeschlagen – IGNORIEREN]
Wenn xxx.xxx.xxx.2 seine IP als xxx.xxx.xxx.3 verschleiert, das berechtigt ist, auf den Server zuzugreifen, dann würde dies passieren... xxx.xxx.xxx.3 -> Befehlspaket an xxx.xxx.xxx.1 senden xxx.xxx.xxx.1 -> Auf Befehl antworten und Paket an xxx.xxx.xxx.3 senden
Daher würde xxx.xxx.xxx.1 den abgerufenen Befehl nie erhalten.
Nun, was Sie wahrscheinlich denken istWIE IST DAS SICHER?
Nun ja, die meisten Server funktionieren tatsächlich so...
SERVER..............................CLIENT
..|______________[CONNECT]___________<_|
............|
...[TEST AUTHORIZATION]
...........|
......[PASSED]
..........|
...........[SEND CONNECTED RESPONSE]...|
Wenn der Client also autorisiert ist und einen Anruf beim Server tätigt, reagiert der Server mit einer verbundenen Antwort, die an den Client zurückgesendet wird. Wenn der Client diese Antwort erhält, weiß der Server, dass dies der richtige Client ist.
Antwort2
Natürlich kann jemand seine IP-Adresse fälschen, um TCP/IP-Pakete zu SENDEN, aber er wird nie eine ANTWORT erhalten, weil diese an die gefälschte IP-Adresse geht, die er verwendet hat! Diese Methode ist also nutzlos für jemanden, der eine bidirektionale Kommunikation aufbauen möchte!
Antwort3
Es wurde festgestellt, dass es nicht ausreicht, den Absender zu fälschen. Sie möchten auch die Antwort zurückbekommen, um viel/überhaupt etwas Nützliches zu tun. Sie müssten dann also einen kompletten Man-in-the-Middle einsetzen.
Allerdings „erlauben“ Firewalls normalerweise nicht viel, allein basierend auf der Quell-IP.
Firewalls werden vor allem eingesetzt fürBlockierung, aber nicht zur Autorisierung.
Das heißt, eine nicht vertrauenswürdige IP weiß nicht einmal, dass ein VPN vorhanden ist, und kann sich auch nicht mit dem VPN-Dienst verbinden. Oder ihn leicht angreifen. Das wichtigste Sicherheitsmerkmal ist jedoch das VPN selbst.
Da IP-basierte Filterung günstig ist, ist sie eine guteerste Verteidigungslinie. Das Ablehnen eines Pakets an der Firewall bedeutet, dass die dahinter liegenden Dienste mit viel weniger „Angriffen“ (und anderem Lärm) zu kämpfen haben. Ein DDoS gegen eine Firewall ist schwieriger als ein DDoS gegen einen tatsächlichen Dienst, da Sie die Internetverbindung und nicht die CPU des Servers, der die Anfragen bearbeitet, belasten müssen.
Antwort4
Es ist tatsächlich möglich, mit Einwegverbindungen Schaden anzurichten (z. B. mit zustandslosen Protokollen wie UDP), aber dann läuft es darauf hinaus, eine IP-basierte (unsichere) Authentifizierung zu vermeiden.
TCP
TCP ist im Allgemeinen nicht betroffen, da zum Herstellen einer Verbindung ein Paket an den ursprünglichen Host zurückgesendet werden muss. Und so läuft es ab:
Alice steht auf der Liste der autorisierten Hosts.
- Alice sendet ein SYN-Paket an Bob.
- Bob gibt Alice ein SYN-ACK zurück, um ihr zu signalisieren, dass sie fortfahren kann
- Alice fährt mit einem ACK-Paket fort und fährt mit der beabsichtigten Nutzlast fort.
Charlie versucht, eine Verbindung zum Dienst herzustellen.
- Charlie sendet ein SYN-Paket an Bob.
- Die Firewall blockiert das Paket, Bob erhält nichts (oder eine Warnung in den Protokollen, dass Charlie versucht hat, eine Verbindung zu ihm herzustellen).
- Charlie weiß möglicherweise, dass seine Anfrage abgelehnt wurde, muss es aber nicht (je nach Firewall-Konfiguration läuft die Anfrage entweder ab oder Bob sendet explizit ein ICMP-Paket, das besagt, dass er abgelehnt/nicht erreichbar ist).
Charlie weiß irgendwie, dass Alice auf den Dienst zugreifen kann.
- Charlie sendet ein SYN-Paket an Bob und gibt vor, Alice zu sein.
- Das Paket geht durch die Firewall, Bob gibt ein SYN-ACK an Alice zurück.
- Alice antwortet mit RST-ACK (Reset Acknowledgement) oder ICMP Unreachable, da sie nichts von Bob erwartet hat.
- Charlie wird nie erfahren, ob die Anfrage überhaupt durchgegangen ist.
Was nun, wenn die Verbindung bereits hergestellt ist? Dafür gibt es Sequenznummern: Sie können (sollten) nicht von anderen vorhergesagt werden und beide Parteien erwarten, dass Sequenzen immer um eins erhöht werden.
- Beim Verbindungsaufbau wählen beide Parteien eine möglichst zufällige Sequenznummer.
- Bei jedem gesendeten Paket sollte die Sequenznummer um eins erhöht werden. Dadurch kann der Empfänger Pakete mit falschen Sequenznummern ablehnen und diejenigen neu anordnen, die innerhalb des akzeptierten Fensters liegen.
Jetzt hat Charlie keine Möglichkeit mehr, Pakete in eine bestehende Verbindung zwischen Alice und Bob „einzuschleusen“, da er die Sequenznummer nicht vorhersagen kann und seine Pakete von Bob abgelehnt werden, möglicherweise zusammen mit einer Warnung oder einem Hinweis in den Protokollen.
UDP
Wenn es sich bei dem Protokoll um UDP handelt, ist es sehr anfällig für Spoofing, da Peers in der Lage sind, gefälschte Pakete in das Internet einzuschleusen. Daher müssen Sie statt beim Transport einen Authentifizierungs- oder Verschlüsselungsmechanismus auf der Anwendungsebene hinzufügen.
Milderung
ISPs werden Maßnahmen ergreifen, um IP-Adress-Spoofing zu verhindern. Das kann ganz einfach sein, indem alle Pakete, die nicht mit ihren eigenen Netblocks übereinstimmen, vom Router abgewiesen werden und Pakete, die mit ihren Netblocks übereinstimmen, nicht in ihr Netzwerk gelangen.
In einem lokalen Netzwerk ist Spoofing oft sehr einfach, da es nicht viele Mechanismen gibt, um jemanden daran zu hindern.