Firewalls und Proxie Teil 2
Sowohl in Theorie als auch Anwendung werden verschiedene Firewall-Klassen unterschieden. Als Klassifizierungen haben sich Paketfilter, Proxy-Firewall und Applikationsfilter durchgesetzt. Die Klasse der Paketfilter wird in diesem Blogartikel besprochen, Proxy-Firewalls und Applikationsfilter schauen wir uns im dritten Teil an.
Verschiedene Firewall-Klassen werden in der Praxis häufig kombiniert und bilden dann eine Firewall-Architektur (mehr dazu wirst Du im vierten Teil der Firewall-Blogserie erfahren).
Das OSI-Referenzmodell
Die Klassifizierung in Firewall-Klassen findet anhand des OSI-Modells statt. Jede Klasse setzt auf einer anderen OSI-Schicht an.
Aber was ist überhaupt das OSI Referenzmodell? Das Open Systems Interconnection Modell ist ein Modell, das Kommunikationsübertragungen, hier genauer Netzwerkübertragungen in Schichten zerlegt.
Eine Netzwerkverbindung lässt sich anhand des OSI-Modells in verschiedenen Schichten betrachten, die wir uns einmal genauer ansehen.
Anwendungsschicht (7):
Hier können Daten ausgelesen und eingegeben werden. Abstrakte Anwendungen laufen auf dieser Schicht.
Darstellungsschicht (6):
Umwandlung der Daten in spezielle Formate, die dargestellt und an die Anwendungsschicht übergeben werden können.
Sitzungsschicht (5):
Stellt die Verbindung zwischen zwei spezifischen Endgeräten sicher.
Transportschicht (4):
Hier findet die Zuweisung von Datenpaketen zu speziellen Anwendungen statt.
Vermittlungsschicht (3):
Hier findet das Routing und die Lenkung des Kommunikationsflusses statt.
Sicherungsschicht (2):
Hier findet die Überprüfung der Verbindung statt. Es stehen Mechanismen zur Fehlerkorrektur und Aufrechterhaltung einer Verbindung bereit.
Bitübertragungsschicht (1):
Beinhaltet Verfahren/Protokolle, die die Übertragung durch physikalische/elektrische Signale kodieren.
Je höher also die Schicht ist, auf der ein Protokoll angesiedelt ist, desto höher ist auch der Abstraktionsgrad.
Aber zurück zur Klassifizierung von Firewalls: Die Klassifizierung erfolgt also, indem man sich anschaut, auf welcher Schicht einer Kommunikationsverbindung das betrachtete Firewallsystem filtert bzw. arbeitet.
Klasse der Paketfilter
Definition
Paketfilter setzen auf den OSI-Schichten 3 und 4 an, also der Netzwerk- und der Transportschicht. Sie filtern Pakete aus dem Datenstrom, die mittels Schicht 3 oder Schicht 4 Protokollen übertragen werden anhand von Informationen aus dem IP-Header sowie bedingt auch dem Payload der jeweiligen Datenpakete.
Anhand dieser Informationen sind auch erste Prüfungen möglich, ob beispielsweise die im IP-Header angegebene Paketgröße mit der tatsächlichen Paketgröße übereinstimmt.
Filterregeln
Ein Paketfilter nutzt verschiedene Filterregeln (sog. Rules), die in Listen (sog. Chains) angeordnet sind. Sämtliche Datenpakete werden mit den Filtern abgeglichen.
Eine Regel besteht dabei aus einer Bedingung und einer Folgerung. Wenn die Bedingung auf ein Datenpaket zutrifft, werden die Befehle (z.B. blockieren oder durchlassen) in der Folgerung ausgeführt.
Am ehesten lässt sich das Prinzip an einer Beispielregel aus dem Paketfilter iptables/netfilter verdeutlichen:
iptables -A INPUT-p tcp –dport ssh -j DROP
iptables steht hier für das Programm iptables (Name des Befehls). Durch die Option -A ist gekennzeichnet, dass die Nachfolgende Regel an eine Liste (Chain) angehängt werden soll (A steht für append). INPUT ist hier der Name der Liste, an die die Regel angehängt wird. Durch die Optionen -p tcp und –dport ssh wird erreicht, dass nur Pakete des TCP-Protokolls, die als Ziel (destination-port) den Port des ssh-Dienstes haben, durch diese Regel betroffen sind.
Für alle Pakete, auf die diese Bedingung zutrifft, wird die Folgerung -j DROP ausgeführt, die in diesem Fall alle betroffenen Pakete verwirft.
Achtung: Die Rules in einer Chain werden immer sequentiell abgearbeitet. Wenn eine Regel auf ein Paket zutrifft, wird die jeweilige Folgerung angewandt und danach die Abarbeitung der Chain für das jeweilige Datenpaket abgebrochen.
Eine Besonderheit bei Paketfiltern ist, dass diese in der Lage sind, Pakete gezielt zu manipulieren. So können Adressänderungen (mittels NAT) oder Portänderungen (mittels PAT) durchgeführt werden. Hierbei sei angemerkt, dass Informationen aus dem IP-Header ohnehin nicht als vertrauenswürdig eingestuft werden können, da diese leicht manipuliert werden können und keine Möglichkeiten der Authentizitätsprüfung vorhanden sind.
Bekannte Beispiele für Paketfilter sind iptables/netfilter (unter Linux), der Routing und Remote Access Dienst (unter Windows) sowie ipfilter (Unix-Derivate, zB FreeBSD).
Stateless und Stateful Paketfilter
Es kann zwischen stateless (zustandslosen) und stateful (zustandsbehafteten) Paketfiltern unterschieden werden. Erstere sind simpel zu verstehen, hier beziehen sich die Filterregeln jeweils nur auf ein Datenpaket. Die Filterentscheidung wird ausschließlich anhand der darin enthaltenen Informationen getroffen.
Zustandsbehaftete Paketfilter (auch Dynamische Filter oder Stateful Inspection oder Content based access control genannt) sind umfangreicher. Sie speichern Informationen über Pakete ab und können so Filterentscheidungen anhand von Informationen vorheriger Pakete entscheiden. So können zustandsbehaftete Paketfilter beispielsweise erkennen, es sich bei einem Paket um die Antwort auf ein zuvor gesendetes Paket handelt und das Paket entsprechend akzeptieren. Durch zustandsbehaftete Paketfilter lässt sich so z.B. das von FTP-Verbindungen bekannte Callback-Problem umgehen.
Vor- und Nachteile von Paketfiltern
Da Paketfilter keine zusätzliche Spezialhardware benötigen, sondern auf herkömmlichen Rechnern nur durch eine Software in Betrieb genommen werden können, sind sie preiswert zu realisieren. Da jeglicher Datenverkehr über die Firewall geroutet werden muss, und da er direkt in den Paketvermittlungsweg eingebunden ist, eignet sich ein Paketfilter zum effizienten absichern eines kompletten Subnetzes.
Zudem lassen sich viele IP-Spoofing und Routing-Attacken durch Paketfilter alleine durch die Auswertung des IP-Headers bereits abwehren.
Mit der Abhängigkeit von Daten aus dem IP-Header geht aber auch ein nicht zu vernachlässigender Nachteil von Paketfiltern einher: IP-Header sind grundsätzlich manipulierbar, und Filterentscheidungen damit beeinflussbar. So kann es insbesondere bei zustandsbehafteten Paketfiltern zu merklichen Performanceeinbußen bis hin zu DoS-Attacken anhand gefälschter IP-Header kommen. Zustandslose Paketfilter hingegen sind zwar ressourcenschonender, führen aber beispielsweise bei FTP-Verbindungen zum Callback-Problem.
Zudem sind die verbreiteten Paketfilter auf einem niedrigen Abstraktionsniveau, wodurch das Einrichten passender und umfassender Filterregeln – die trotzdem nur vergleichsweise grobgranulare Kontrolle bieten – Fachkenntnisse voraussetzt.
Leitlinien für Filterregeln
Grundsätzlich gilt das Prinzip, Datenverkehr möglichst frühzeitig zu filtern. Am besten direkt, wenn dieser die Netzwerkschnittstelle passiert. Filterregeln werden sequentiell und nach dem Erlaubnisprinzip abgearbeitet. Das heißt alles, was nicht ausdrücklich erlaubt ist, ist verboten. Die Umsetzung dieses Prinzips wird erreicht, indem in jeder Chain (also jeder kette von Regeln) als letztes eine Verbotsregel steht, die jeglichen Datenverkehr blockiert (block) oder zurückweist (reject). Diese Regel kommt für alle Datenpakete zum Tragen, auf die keine der vorherigen (Erlaubnis-)Regeln zutrifft. Pakete, die von außerhalb des jeweiligen Netzsegments kommen, aber eine interne Adresse im IP-Header stehen haben (und umgekehrt), sollten grundsätzlich abgewiesen werden, da diese Adressen keinen logischen Sinn ergeben und der Verdacht einer gefälschten Adresse naheliegend ist.
Standardketten und benutzerdefinierte Ketten (iptables)
Iptables verfügt über drei Standardketten: INPUT (enthält Regeln für eingehende Datenpakete), OUTPUT (Enthält Regeln für ausgehende Datenpakete) und FORWARD (Enthält Regeln für Datenpakete, die geroutet werden). Benutzerdefinierte Ketten können erstellt werden aber nicht direkt, sie können nur über eine Regel in einer der drei Standardketten betreten werden.
Erklärung des OSI-Modells im Video:
Autor: Jan-Dirk Kranz