Ports und Firewall

  • Unser Forumsmitglied "erikro" hat in einem anderen Thread eine sehr verständliche Anleitung über Ports und Firewall geschrieben, die ich mit seinem Einverständnis hier unter Tutorials/Howtos kopiere.


    Wann ist ein Port offen?
    Hallo zusammen,


    es ist eine weit verbreitete irrige Annahme, dass ein Port dann offen wäre, nur weil man ihn in der Firewall freigeschaltet hat. Dem ist nicht so. Ich habe hier in meinem gesamten internen Netz keine einzige Firewall laufen und dennoch zeigt mir nmap bei den verschiedenen Rechnern nur sehr wenige offene Ports an. Ein Port wird nicht dadurch geöffnet, dass die Firewall angewiesen wird, Traffic durchzulassen, oder sie ganz abgeschaltet wird. Ein Port öffnet sich nur dann, wenn eine Anwendung ihn benutzt und auf eingehenden Traffic hört.


    Dabei müssen zwei Fälle unterschieden werden. Der erste Fall ist der Server. Servern wurden vor langer Zeit die Well-Known-Ports zugewiesen. Die heißen deswegen so, weil sie aller Welt bekannt sind. So ist der Port 80 z. B. http, der Port 110 POP3 und der Port 23 ssh zugewiesen. Die Server horchen in der Regel auf diesen Ports. Das muss nicht so sein, wie man z. B. am Webinterface von Cups sieht, das z. B. auf dem Port 631 horcht. Es ist aber recht praktisch, da wir deshalb im Browser nicht immer den Port angeben müssen. Auch der Browser weiß, dass wir Port 80 meinen, wenn wir http benutzen. Wenn wir also nicht explizit was anderes sagen, wird der Port 80 benutzt.


    Aber das nur zur Vollständigkeit. Allen Servern sind zwei Dinge gemein. Der Port muss in der Firewall offen für Traffic von außen sein. Wäre er es nicht, dann wäre es wieder Essig mit meinem Webserver. Er würde zwar auf Port 80 horchen. Das würde sogar mit netstat angezeigt. Aber die Firewall sagt nein und der Traffic kommt gar nicht an. Das zweite was allen gemein ist, sie lauchen ständig an dem Port auf eingehenden Traffic. Damit ist der Port dauerhaft geöffnet. Das ist nichts schlimmes, sondern eine technische Notwendigkeit.


    Der zweite Fall ist der User Agent. Nehmen wir wieder den Browser. Tippe ich in meinem Browser eine Adresse ein und drücke "Enter" passiert folgendes: Mein Browser spricht den Server auf Port 80 an. Gleichzeitig öffnet er einen beliebigen Port, auf dem er die Rückantwort wünscht. Diesen Port teilt er dem Server mit. Das sieht so aus:

    Code
    tcp        0      0 192.168.1.10:49761      78.46.94.67:80          VERBUNDEN   1000       1928596    22427/seamonkey-bin
    tcp        0      0 192.168.1.10:36034      78.46.94.67:80          VERBUNDEN   1000       1928600    22427/seamonkey-bin




    In der vierten Spalte siehst Du, dass mein Computer den Port 49761 und den Port 36034 offen hält für die Rückantwort vom Server. Die Ports sind offen. Auch das ist kein Grund zur Panik. Wären Sie nicht offen, dann könnte ich diese Antwort nicht schreiben. Ich hätte nämlich nie die Frage zu lesen bekommen. Allerdings ist dieser Port nur zeitweise geöffnet. Ist die Kommunikation abgeschlossen, dann wird der Port auch wieder geschlossen sprich die Anwendung horcht nicht mehr auf diesem Port.


    In der Firewall kann man auf zwei Weisen damit umgehen. Entweder lässt man diese Ports von vornherein offen. Das macht keinen Ärger, ist aber nicht so sicher. Oder man schließt erst einmal alle Ports und lässt nur Traffic durch, der auch an den Computer und an die Anwendung gerichtet ist, von dem die Anfrage ausgelöst wurde. Das nennt man dann Stateful Packet Inspection oder kurz SPI. Aber auch ohne dieses SPI kämen die Pakete immer noch nicht bei Deinem Rechner sicher an. Das hat allerdings einen anderen Grund. Der Router.


    Wenn Du ein privates Netz mit dem Internet verbindest, benutzt Du in der Regel einen NAT/PAT-Router. Wie merkt sich ein solcher Router, von welchem Rechner aus, welche Seite aufgerufen wird? Ganz einfach. Er tauscht die Ports in der Sendeadresse aus. Er führt eine Tabelle, in der steht drin, dass z. B. mein Rechner die Rückantwort vom Server auf Port 49761 erwartet und die vom Router verwendete Portadresse lautet 56982. Oder auch jede andere außer den Well-Known-Ports. Kommt jetzt also Traffic auf 56982 an, dann wird dieser auf meinen Rechner auf Port 49761 weitergeleitet. Kommt nun aber Traffic auf Port 6900 an, ohne dass Dein Router weiß, an welchen Rechner das gehen soll, wird das Paket verworfen.


    Lösung des Problems: Port-Forwarding. Du teilst Deinem Router mit, dass dieser Traffic an Deinen Rechner weitergeleitet werden soll. Das allerdings ist nicht ganz ungefährlich. Es wird fortan jeder Traffic auf diesem Port an diesen Rechner weitergeleitet. Deshalb solltest Du froh sein, dass die Ports als geschlossen angezeigt werden, wenn Du nicht supported wirst. Wäre dem nämlich nicht so, würde ich Dir dringend raten, den Rechner sofort vom Netz zu nehmen. In dem Fall würde ich sofort Schadsoftware vermuten.


    So, ich hoffe das war einigermaßen verständlich und hilft weiter. Ansonsten empfehle ich zum Thema Firewalling immer wieder gerne Lutz Donnerhacke - Firewall-FAQ. Einfach bei Google eingeben und auf einen beliebigen Treffer klicken.

    Für den Inhalt des Beitrages 21197 haftet ausdrücklich der jeweilige Autor: robbie