8.3.2. Paket-Filter

Paket-Filter (packet filters, packet screens) arbeiten auf der Ebene der IP-Pakete, wobei sie in der Regel in der Lage sind, auch die Header des jeweils verwendeten Transportprotokolls (primär TCP und UDP) zu analysieren. Der Firewall-Administrator definiert einen Satz von Regeln (filter rules), die festlegen, unter welchen Bedingungen ein Paket von einem Netz zum anderen weiterzuleiten bzw. durch den Filter zu blockieren (vernichten) ist.

Auf jedes eintreffende IP-Paket wendet der Firewall die aktuellen Regeln in einer festgelegten Reihenfolge so lange schrittweise an, bis feststeht, wie mit dem Paket zu verfahren ist. Sollte keine der Regeln zutreffen, hängt die Reaktion von der gewählten Sicherheitspolitik ab. Sofern die zweite (d.h. restriktive) Strategie zur Anwendung kommt, würde das Paket blockiert, anderenfalls dürfte es den Firewall passieren.

Zur Auswahl der Pakete werden in den Filter-Regeln die folgenden typischen Kriterien verwendet:

Durch die Spezifikation von IP-Adressen kann man ausgewählten Rechnern die Kommunikation mit dem Internet gezielt gestatten oder verwehren. Durch die Selektion von Portnummern lassen sich bestimmte Dienste zu- und abschalten.

Paket-Filter sind häufig Bestandteil von Routern, die man dann meist als Screening Routers bezeichnet, da sie das interne Netz gegen bestimmte Typen von Paketen abschirmen. Screening Routers lassen sich sowohl mit kommerziellen Routern als auch mit gewöhnlichen Computern realisieren, sofern letztere über mindestens zwei Netzwerk-Interfaces verfügen und ein Betriebssystem zum Einsatz kommt, das eine Paket-Filterung unterstützt (z.B. Linux 2.x).

Paket-Filter haben den Vorteil, daß sie für die Benutzer transparent sind, d.h., sofern deren Pakete durchgelassen werden, merken sie überhaupt nicht, daß der Firewall existiert. Sie können ihre bisher gewohnten Applikationen unverändert einsetzen und müssen keine zusätzlichen Schritte unternehmen, z.B. sich ein weiteres Mal authentifizieren, wie dies bei Proxy-Servern häufig der Fall ist.

Verschiedene in der Praxis genutzte Firewalls bestehen lediglich aus einem Screening Router. Diese Lösung ist sehr kostengünstig, da man für das Filtern der Pakete keine zusätzliche Hardware benötigt. Paket-Filter haben aber auch verschiedene ernste Nachteile. Hier einige Beispiele:

Oft besteht der Wunsch, die Nutzung eines bestimmten Dienstes (z.B. Telnet) nur vom internen Netz aus, nicht aber von außen zuzulassen. Dazu ist es notwendig, unterscheiden zu können, ob die am Firewall eintreffenden Pakete zu einer von innen oder von außen initiierten Kommunikationsbeziehung gehören. Dieses Problem läßt sich im Falle von TCP z.B. dadurch lösen, daß man die Verbindungsaufnahme-Pakete (SYN-Flag, kein ACK) des TCP-Protokolls identifiziert und solche Pakete nur von innen nach außen passieren läßt. Bei verbindungslosen Transportprotokollen wie UDP steht diese einfache Unterscheidungsmöglichkeit leider nicht zur Verfügung.

Ein Problem mit der gerade diskutierten Verfahrensweise ergibt sich beim recht oft benötigten FTP. Wir hatten im Kapitel 6A gesehen, daß in der Regel der Server die Datenverbindungen aufbaut. Diese würden von einem Firewall mit der oben beschriebenen Einstellung gesperrt. Das Problem läßt sich u.a. dadurch lösen, daß der Klient den Aufbau der Datenverbindungen übernimmt und sich der Server passiv verhält. Einige FTP-Klienten enthalten eine entsprechende Einstellmöglichkeit. Ein anderer Weg besteht in der Nutzung eines Proxy-Servers.

Im Kern des Betriebssystems Linux 2.x ist ein Firewall in Form eines Paket-Filters enthalten, der über drei getrennte Regelsätze verfügt. Die Input und Output Rules stellen die Regeln dar, nach denen ein Paket gelesen und weiterverarbeitet wird bzw. den Firewall wieder verlassen darf. Mit den Forward Rules kann dagegen das Routing genau beeinflußt werden, was z.B. dann sehr hilfreich ist, wenn der Firewall-Rechner gleichzeitig noch als Router für verschiedene lokale Netze fungiert.

Zusätzlich existieren noch Accounting Rules zum Zählen bestimmter Pakettypen. Diese Funktionalität ist jedoch für Firewall-Zwecke nicht notwendig, so daß darauf nicht näher eingegangen werden soll.

Die Abbildung lokaler (experimenteller) IP-Adressen auf eine offiziell registrierte IP-Adresse (IP Masquerading) ist für die Funktion des Firewalls ebenfalls nicht erforderlich. Dieses Konzept bietet jedoch eine interessante Möglichkeit für den Anschluß lokaler Netze an das Internet, da aus Kostengründen häufig nur der Zugangsrechner zum Internet (also der Firewall) eine gültige IP-Adresse besitzt. Alle anderen Rechner erhalten experimentelle Adressen (nach RFC 1918), die keine direkte Nutzung der Internetdienste gestatten.

Indem die lokalen Adressen geeignet auf die gültige IP-Adresse des Firewalls abgebildet werden, lassen sich aber zumindest die meisten TCP- und UDP-basierten Dienste direkt nutzen. Zu diesem Zweck existieren parallel zu den Forward Rules die sogenannten Masquerading Rules. Die Unterscheidung verschiedener Verbindungen bzw. logischer Kommunikationsbeziehungen erfolgt an Hand unterschiedlicher Portnummern, die der Kern des Firewall-Rechners dynamisch temporär vergibt. Ein Beispiel finden Sie im Firewall-Praktikum. Weitere Details enthält u.a. das Linux IP Masquerade mini HOWTO, das von vielen FTP-Servern bezogen werden kann, z.B. unter dem URL ftp://ftp.tu-chemnitz.de/pub/linux/tsx-11-mirror/docs/HOWTO/mini/IP-Masquerade.

Einige Beispiele für die Anwendung des Linux-Firewalls sind Gegenstand des Praktikums. Dort beschränken wir uns allerdings auf den Paket-Filter von Linux 2.0.x, der über das Werkzeug ipfwadm konfiguriert wird. Ab Linux 2.2 steht eine neue, wesentlich leistungsfähigere Paketfilter-Implementierung zur Verfügung. Das zugehörige Konfigurationswerkzeug heißt ipchains. Informationen hierzu finden Sie


© Heino Gutschmidt, 11.6.1997
Holger Trapp, 30.6.1999