Wenn ein Port hinter NAT ein Paket an einen böswilligen Host sendet, kann dieser Host Pakete an jeden offenen Port senden oder nur an den Port, der das Paket gesendet hat?

Wenn ein Port hinter NAT ein Paket an einen böswilligen Host sendet, kann dieser Host Pakete an jeden offenen Port senden oder nur an den Port, der das Paket gesendet hat?

Beispielsweise verwendet ein Computer hinter einem NAT-Router Skype. Skype verwendet Port 4000, um Pakete an einen Server zu senden und indirekte Verbindungen mit anderen Skype-Clients herzustellen.

Da Skype ein Paket an den Server gesendet hatteErste, der Server kann offensichtlich Pakete an den Router zurücksenden, der NAT verwendet.

Meine Frage ist nun: Darf der Server, wenn man bedenkt, dass der Router NAT verwendet, Pakete an alle offenen/weitergeleiteten Ports senden, die das NAT hat, oder nur an Port 4000?

Ich weiß, dass Skype-Server überhaupt nicht bösartig sind, es war nur ein Beispiel

Antwort1

Für eingehenden Datenverkehr, der von anderen initiiert wurde: Ein böswilliger Host kann jederzeit Daten an jeden Port Ihres Routers senden (Port-Scanning). Wenn der Port nicht weitergeleitet wird, kann Ihr Router entscheiden, ob er das unerwünschte Paket verwirft oder höflich antwortet, dass die Verbindung ungültig ist. Wenn der Port weitergeleitet wurde, bedeutet dies, dass er den Endhost hinter dem Router erreicht.

Für ausgehenden Datenverkehr, der von Ihrem Host initiiert wird: Es gibt keine Regel, welchen Ursprungsport Sie zur Kommunikation mit dem Skype-Relay-Server verwenden müssen. Außerdem könnte Skype auf Ihrem Endhost TCP 4000 verwenden, aber NAT könnte tatsächlich einen anderen Port zum Senden der Nachricht verwenden, beispielsweise Port A. Der Skype-Server sieht nur Port A, nicht Port 4000. Wenn der Skype-Server auf einen anderen Port als A antwortet, gilt die unter „Für eingehenden Datenverkehr“ beschriebene Situation. Wenn der Skype-Server auf Port A antwortet, leitet NAT dies zurück an Ihren Host, indem es an Port 4000 sendet.

Zur Klarstellung: Der NAT (Network Address Translator) ist Ihr Router. Und verwechseln Sie den Teil „Für eingehenden Datenverkehr“ nicht mit der Netzwerkantwort an Ihren Host. Es bedeutet tatsächlich, dass der externe Server der erste ist, der mit Ihrem Host spricht, um eine Verbindung herzustellen.

Antwort2

Die einfache Antwort lautet: „Pakete (an den Client hinter dem NAT-Router) können nur an den Port gesendet werden, der das Paket gesendet hat.“ Dies ist zwar größtenteils, aber nicht ganz richtig.

Die Antwort hängt davon ab, wie IPTables eingerichtet ist, um welchen Port es sich handelt und welche Module verwendet werden. Einfache NAT-Geräte würden nur die Zuordnung von Datenverkehr zu demselben Port zulassen, von dem er stammt, aber nicht alle Geräte sind so einfach. Unter Linux und anderen Betriebssystemen gibt es „Stateful Firewalls“, die normalerweise „etablierte und verwandte“ Ports verwenden, zusammen mit verschiedenen Modulen, die den Verbindungsstatus prüfen – wenn also beispielsweise eine ausgehende FTP-Anforderung gestellt wird (Port 21), kann der Router auch Port 20 für Daten öffnen, wenn das FTP-Modul geladen ist. Es ist auch möglich, dass FTP andere Ports öffnet, und ein böswilliger Server könnte dies tun, um auf einen Port mit einer beliebigen hohen Nummer zuzugreifen. Einige gängige Tracking-Module, die genutzt werden könnten, sind FTP, SIP, Netbios, PPTP, gre, tftp, h323, irc. Es gibt einen Fehler CVE-2014-8160, der unter bestimmten Bedingungen eine willkürliche Umgehung der Firewall bei Verwendung von Verbindungstracking ermöglichen könnte – möglicherweise auf die von Ihnen erdachte Weise.

Für einen böswilligen Server wäre es ziemlich schwierig, andere Ports zu öffnen, aber vielleicht nicht unmöglich. Natürlich bräuchten Sie etwas Anfälliges, das die anderen Ports überwacht – und (unter Linux) könnten Sie dieses Risiko verringern, indem Sie sicherstellen, dass Ihre Verbindungsverfolgungsregeln nach den Regeln kommen, die den allgemeinen Zugriff auf diese Ports verweigern.

verwandte Informationen