Einleitung und Begriffsabgrenzung
Ein Thema darf bei keiner zünftigen Diskussion über PC-Sicherheit fehlen: Das der Personal Firewalls. Hier scheiden sich die Geister, hier geht es zur Sache. Die einen würden nie ohne surfen, die anderen lassen solche Software nicht mal in die Nähe des eigenen Rechners.
Solche Diskussionen haben im Schnitt einen hohen Unterhaltungswert, da bei dem dort meist herrschenden Umgangston kein Auge trocken bleibt.
Wer bei einer solchen Diskussion ordentlich mitmischen möchte, ohne am Ende den kürzeren zu ziehen, der braucht ein dort recht selten anzutreffendes Gut: Fachwissen. In erster Linie brauchen wir die Grundlagen TCP/IP der letzten Lektion. Die bilden die Basis, um die weiteren Ausführungen zu verstehen. Der Lohn der Mühen: Man kann den einen oder anderen Streithammel mit Hilfe von sachlichen Argumenten gegen die Wand rennen lassen. Ein lässiger Hinweis auf die technischen Gegebenheiten, ein Wink mit den Protokollen und ihrer Wirkungsweise hat da durchschlagende Wirkung.
In dieser Lektion geht es ausschließlich um sogenannte Personal Firewalls oder Desktop Firewalls (beide Begriffe meinen dasselbe).
Definition:
Zitat:
Zitat: | |
|
(Quelle: http://www.de.wikipedia.org/wiki/Personal_Firewall )
Die Definition der Wikipedia ist nicht ganz vollständig. Eine Personal Firewall filtert nicht nur ein- und ausgehenden Traffic.
Die Aufgaben einer durchschnittlichen Personal Firewall sind in etwa folgende:
- Filterung des eingehenden Traffics (inkl. "Stealth")
- Kontrolle des ausgehenden Traffics (Phone Home und Co) - das geht über eine reine Filterung weit hinaus! Der Unterschied wird unten erläutert
- Content Filtering und sonstige Sicherheitsfunktionen
Im folgenden beleuchte ich diese Punkte der Reihe nach. Dabei wird zunächst die Funktion vorgestellt und anschließend anhand der technischen Grundlagen gezeigt, ob die Versprechen der Hersteller überhaupt einzuhalten werden können.
Filterung des eingehenden Traffics
Diese Aufgabe erledigt der Paketfilter einer Personal Firewall. Dieser Paketfilter hängt sich vor den TCP/IP-Stack des Betriebssystems, so daß eingehende Datenpakete aus dem Internet (oder dem LAN) zunächst durch seine Eingangskontrolle müssen. Ein Paketfilter kann dabei üblicherweise nur nach Quell-IP-Adresse und entsprechendem Quellport sowie nach Ziel-IP-Adresse und entsprechendem Zielport filtern. (Dazu bitte in der Lektion TCP/IP über IP und TCP nachlesen!)
Im Klartext: Kommt ein Datenpaket von der IP 65.231.235.12 von Port 80 herein und möchte zur eigenen IP auf Port 2128, dann prüft der Paketfilter, ob dafür eine Regel vorliegt. Ist dieser Zugriff nicht erlaubt, dann gibt es zwei Möglichkeiten:
1.) Der Paketfilter wirft das Paket einfach weg. Der Sender bekommt davon nichts mit. Die meisten Programme warten darauf eine Weile und senden das Paket dann einfach noch einmal. Das geht drei Mal so, dann wird der Verbindungsversuch abgebrochen. Der Vorgang nennt sich DROP.
2.) Der Paketfilter sendet ein Paket zurück, in dem er dem Sender mitteilt, daß von ihm keine Datenpakete entgegengenommen werden. Diesen Vorgang nennt man REJECT. Ein standard-konformer Sender stellt daraufhin die Kommunikation sofort ein. Diverse Würmer wie z.B. der Blaster ignorieren diese Meldung allerdings.
Bewertung:
Das Verfahren funktioniert vergleichsweise zuverlässig. Allerdings besteht die Möglichkeit, daß die Quelladresse gefälscht ist und damit der Schutz unterlaufen wird.
Außerdem stellt sich prinzipiell die Sinnfrage dieses Vorgehens. Warum?
1. Der Paketfilter erhöht die Menge an Code, die ein Paket durchlaufen muß, ganz beträchtlich. Damit steigt logischerweise auch die Möglichkeit, daß bei der Verarbeitung eines Datenpakets ein Fehler auftritt, der dann eventuell ausgenutzt werden kann. Im Vergleich dazu ist der TCP/IP-Stack der gängigen Betriebssysteme mittlerweile "gut abgehangen", d.h. schon älter und auf Herz und Nieren geprüft.
2. Clients müssen nicht weiter geschützt werden. Der TCP/IP-Stack lehnt alle Pakete ab, die nicht vom Client selbst angefordert wurden. Selbst wenn der Stack versagen würde, würde der Client selbst ein nicht angefordertes Paket abweisen.
3. Server bzw. Dienste, die vom Internet (oder LAN) aus erreichbar sein müssen, profitieren nicht von der Personal Firewall, denn sie müssen ja freigeschaltet werden. Sollen sie nicht vom Internet aus erreichbar sein, so schaltet man sie sinnvollerweise ab. Dann verwirft der TCP/IP-Stack alle Anfragen an diesen Port, weil dahinter kein
Programm/Dienst mehr lauscht.
Fazit:
Personal Firewalls erledigen diese Aufgabe recht zuverlässig, ich erlaube mir allerdings, den Sinn in Frage zu stellen. Ein Paketfilter macht dann Sinn, wenn ich einen Dienst / Server laufen habe, der nicht von außen erreichbar sein soll, aber nicht abgestellt werden kann / darf (warum auch immer).
Sonderfall Stealth
Manche Hersteller werben damit, daß ihre Produkte den Rechenknecht "unsichtbar" machen würden.
Das ganze funktioniert technisch folgendermaßen: ein anderer PC sendet ein Datenpaket, z.B. den Versuch, eine TCP/IP-Verbindung aufzubauen. Normalerweise würde der Zielrechner nun entweder den Verbindungsversuch bestätigen und damit den zweiten Teil des 3-Wege-Handschlags einleiten (siehe Lektion TCP/IP) oder aber dem Sender mitteilen, daß eine Kontaktaufnahme nicht erwünscht ist. Stattdessen läßt die Personal Firewall das Datenpaket einfach fallen und sendet keinerlei Antwort zurück. Der Sender bekommt also keinerlei Auskunft, was aus seiner Anfrage geworden ist.
Bewertung:
Stealth ist eine Marketing-Erfindung. Es ist außerdem eine grobe Verletzung der Internet-Standards, die da vorschreiben, daß eine Anfrage nicht einfach kommentarlos fallengelassen wird.
Welchen Sinn macht es, einen Rechner "voll krass stealth" zu machen?
Früher: Absolut keinen. Denn der Internet-Provider würde eine Fehlermeldung zustellen, falls der angesprochene Rechner nicht am Netz hängen würde ("Host unreachable"). Daher wüßte ein Angreifer sofort, daß da jemand lauscht, aber nicht kommunizieren möchte.
Heute: Leider sind einige Provider dazu übergegangen, solche Fehlermeldungen nicht mehr herauszugeben. Damit würde "Stealth" technisch gesehen funktionieren... wenn nicht. Ja, wenn nicht...
1.) die allermeisten aktuellen Würmer einfach drauflosballern und sich um fehlende Antworten einen feuchten Kehricht scheren würden
2.) das die Cracker von heute auch wüßten und deswegen trotzdem automatisiert ihre Exploits ausprobieren
3.) man sich damit wunderbar ins eigene Knie schießen kann. Ist mir einmal selbst passiert: ich wollte testen, ob meine Internetverbindung steht und sandte daher ein ping an www.yahoo.de. Die Pakete gingen verloren, ich suchte wüst fluchend eine Viertelstunde lang den Fehler (unter Gentoo Linux). Bis ich auf die Idee kam, mal eine andere Adresse anzupingen. Lösung: yahoo.de ließ pings einfach unter den Tisch fallen. (Anmerkung: Dieses hirntote Verhalten wurde mittlerweile behoben.) Genau dasselbe kann auch im Heimnetzwerk bei der Fehlersuche passieren.
Fazit:
Stealth bringt technisch gesehen keinen Vorteil, behindert die Fehlersuche im Heimnetzwerk und verstößt gegen technische Standards. Im schlimmsten Falle signalisiert man damit einem technisch versierten Angreifer, daß hier jemand auf Marketing-Lügen reingefallen ist und damit wahrscheinlich nicht viel von PC-Sicherheit versteht.