Wie Skype & Co. Firewalls umgehen

Peer-to-Peer-Software ist der Albtraum eines Netzwerk-Admins. Um möglichst direkt Pakete mit dem Gegenüber austauschen zu können, bohrt sie mit raffinierten Tricks Löcher in Firewalls, die eigentlich keine Pakete von draußen reinlassen sollen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 10 Min.
Inhaltsverzeichnis

Hinter einer Firewall, die das System vor den Gefahren aus dem Internet schützen soll, sitzen immer mehr Rechner. Im Idealfall realisiert diese Firewall-Funktion ein Router, der auch noch die lokale Netzwerkadresse des PC passend auf die öffentliche IP-Adresse umsetzt (Network Adress Translation, NAT). So kann kein Angreifer von außen den PC erreichen - Verbindungsaufbau ist nur von drinnen nach draußen möglich.

Problematisch wird das natürlich, wenn zwei Rechner jeweils hinter so einer NAT-Firewall sitzen und trotzdem direkt miteinander reden sollen - beispielsweise weil ihre Besitzer via Voice over IP miteinander telefonieren wollen. Das Dilemma ist offensichtlich: Egal, wer von den beiden wen anruft - die Firewall des Gegenübers wehrt den vermeintlichen Angriff ab und wirft die Datenpakete einfach weg; ein Gespräch kommt nicht zustande. So würde das ein Netzwerkadministrator jedenfalls erwarten.

Doch wer schon einmal die populäre Internet-Telefonie-Software Skype eingesetzt hat, weiß, dass die hinter einer NAT-Firewall genauso reibungslos funktioniert, als hinge der PC direkt am Internet. Denn die Erfinder von Skype & Co. haben sich für dieses Problem etwas einfallen lassen.

Selbstverständlich muss jede Firewall auch Pakete ins lokale Netz hereinlassen - schließlich will der Anwender Webseiten betrachten, E-Mails lesen und so weiter. Dazu muss die Firewall die zugehörigen Datenpakete von außen an den Arbeitsplatzrechner im LAN weiterleiten. Sie tut dies aber nur, wenn sie zu der Überzeugung gelangt, dass ein Paket die Antwort auf ein ausgehendes Datenpaket darstellt. Dazu führt ein NAT-Router Tabellen, welcher interne Rechner mit welchem externen gesprochen hat und welche Ports die beiden dabei verwendet haben.

Der Trick der VoIP-Software besteht nun darin, der eigenen Firewall vorzugaukeln, es existiere eine Verbindung, der sie die später eingehenden Datenpakete zuordnen soll. Zugute kommt Skype dabei die Tatsache, dass die Audiodaten für VoIP ohnehin über das verbindungslose UDP verschickt werden. Anders als bei TCP, das in jedem Paket zusätzliche Verbindungsinformationen transportiert, sieht eine Firewall bei UDP nur die Adressen und Ports von Quell- und Zielsystem. Stimmen die bei einem eingehenden UDP-Paket mit den Daten eines NAT-Tabelleneintrags überein, leitet sie das Paket guten Gewissens an den internen Rechner weiter.

Eine wichtige Aufgabe beim Gesprächsaufbau mit Skype übernimmt ein Vermittlungsserver, mit dem beide Kommunikationspartner in ständigem Kontakt stehen. Dies geschieht über eine TCP-Verbindung, die die Clients selber aufbauen. Der Skype-Server weiß somit ständig, unter welcher Adresse ein Skyper aktuell im Internet zu erreichen ist. Die eigentlichen Telefonverbindungen laufen wenn irgend möglich nicht über den Skype-Server. Stattdessen tauschen die Clients diese Daten direkt aus.

Angenommen Alice will ihren Freund Bob anrufen. Ihr Skype-Client teilt diesen Wunsch dem Skype-Server mit. Der weiß dabei schon einiges über Alice: An der ankommenden Anfrage sieht er, dass Alice derzeit unter der IP-Adresse 1.1.1.1 zu erreichen ist und ein kurzer Test enthüllt, dass ihre Audiodaten immer von UDP-Port 1414 kommen. Diese Informationen übermittelt der Skype-Server an den Skype-Client von Bob, den er laut seiner Datenbank derzeit unter der IP-Adresse 2.2.2.2 erreicht und der bevorzugt den UDP-Port 2828 verwendet.

Bobs Skype-Programm bohrt daraufhin ein Loch in seine eigene Netzwerk-Firewall: Es schickt ein UDP-Paket an 1.1.1.1 Port 1414. Das wirft Alices Firewall zwar weg, aber das weiß ja Bobs Firewall nicht. Die denkt fürderhin, dass alles, was von 1.1.1.1 Port 1414 kommt und an Bobs IP-Adresse 2.2.2.2 und den Port 2828 gerichtet ist, schon seine Richtigkeit hat - es ist ja vermutlich die Antwort auf die eben verschickte Anfrage.

Jetzt reicht der Skype-Server Bobs Koordinaten an Alice weiter, deren Skype dann versucht, ihn unter 2.2.2.2:2828 zu erreichen. Bobs Firewall sieht die bekannte Absenderadresse und leitet die vermeintliche Antwort nach drinnen zu Bobs PC weiter - es klingelt bei Bob.