38.3Firewalls – eine Einführung

Der Begriff »Firewall« ist zwar in aller Munde, es gibt aber keine allgemein akzeptierte Definition dafür. Eine »Firewall« kann sich auf die Hardware beziehen: Dann ist damit meist ein Rechner gemeint, der zwischen dem lokalen Netz und dem Internet steht. Viele ADSL-Router enthalten elementare Firewall-Funktionen.

Oft wird mit »Firewall« aber auch ein Programm bezeichnet, das auf dem Rechner installiert wird und das bei korrekter Konfiguration die Sicherheit verbessern soll. Manche Distributionen enthalten Werkzeuge zur Konfiguration der Firewall.

In diesem Buch bezeichne ich mit dem Begriff »Firewall« die Absicherung des TCP/IP-Verkehrs durch einen Paketfilter. Ein derartiger Filter analysiert alle Netzwerkpakete, die in den Rechner kommen bzw. diesen wieder verlassen. Je nachdem, ob dabei alle Regeln eingehalten werden, dürfen die Pakete passieren oder werden blockiert. Details zur Konfiguration eines solchen Paketfilters folgen im nächsten Abschnitt. Hier geht es vorerst darum, die Terminologie zu klären.

Die Notwendigkeit von Firewalls auf privaten Rechnern ist umstritten. Die Ubuntu-Entwickler sind beispielsweise der Ansicht, dass bei einer Desktop-Installation von Ubuntu ohnedies keine Netzwerkdienste laufen, die zu schützen sind. Bei einer Minimalinstallation ist das an sich korrekt, aber dabei bleibt es selten: Sobald der Benutzer Samba installiert, um eigene Dateien über ein Netzwerkverzeichnis anderen Benutzern zur Verfügung zu stellen, gibt es den ersten von außen angreifbaren Dienst.

Solange der Computer zu Hause betrieben wird und den Internetzugang durch einen ADSL-Router bezieht, sorgt der Router für einen gewissen Schutz von außen – einerseits durch das üblicherweise eingesetzte NAT-Verfahren, andererseits vielleicht auch durch eine Firewall, die auf dem Router läuft. Ganz anders sieht die Sache aus, wenn Sie mit Ihrem Notebook im ungesicherten WLAN eines Hotels E-Mails abrufen. Spätestens dann sollte eine Firewall auch auf Privat-PCs selbstverständlich sein.

Bei einem Firmen-LAN ist der Wunsch nach einer guten Absicherung noch stärker ausgeprägt. Gleichzeitig bestehen auch bessere Voraussetzungen, was die Infrastruktur betrifft. In der Praxis kümmert sich oft ein eigener Rechner um den Internetzugang für die Firma und um dessen Absicherung. Alle weiteren Netzwerkdienste laufen auf anderen Rechnern. Abbildung 38.1 veranschaulicht das Konzept.

Firewall für lokale
  Netzwerke

Abbildung 38.1Firewall für lokale Netzwerke

Bei sehr kleinen Netzen dient manchmal ein Rechner gleichzeitig als Firewall und als Netzwerk-Server. Sicherheitstechnisch ist das nicht optimal, weil auf diesem Rechner zwangsläufig eine ganze Menge Netzwerkdienste laufen, die alle ein gewisses Sicherheitsrisiko darstellen.

Bei sehr großen Netzwerken gibt es oft sogar zwei Firewalls: Die erste Firewall dient nur zur Basisabsicherung, ist aber durchlässig für gewöhnliche Internetprotokolle wie HTTP oder FTP. Der Netzwerkbereich dahinter wird als Demilitarized Zone (DMZ) bezeichnet. Das soll zum Ausdruck bringen, dass in diesem Bereich nur eine eingeschränkte Sicherheit gegeben ist. In dieser Zone befinden sich in der Regel der Webserver sowie andere Netzwerk-Server, die öffentlich (also über das Internet) zugänglich sein müssen.

Die DMZ wird vom eigentlichen lokalen Netzwerk durch eine zweite Firewall getrennt. Erst dahinter befinden sich alle weiteren Server-Dienste, die nur für das lokale Netzwerk zuständig sind und die von außen absolut unzugänglich sein sollen. Die Konfiguration einer mehrstufigen Firewall geht allerdings weit über die Bandbreite dieses Buchs hinaus. Konfigurationsanleitungen finden Sie in speziellen Firewall-Büchern.

Netfilter

Kernelintern kümmert sich das Netfilter-System um die Verarbeitung von Firewall-Regeln. Abbildung 38.2 veranschaulicht stark vereinfacht, welche Wege IP-Pakete innerhalb des Paketfiltersystems gehen können. Eine detailliertere Abbildung finden Sie unter:

http://open-source.arkoon.net/kernel/kernel_net.png

Vereinfachte Darstellung des
  iptables/netfilter-Systems

Abbildung 38.2Vereinfachte Darstellung des iptables/netfilter-Systems

Die folgende Liste beschreibt ganz kurz die Stationen eines IP-Pakets im Kernel:

Einem Paketfilter sind in Abbildung 38.2 nur die Boxen Filter Input, Filter Output, Filter Forward und eventuell auch NAT Postrouting zuzuordnen. Alle anderen Teile der Abbildung beschreiben die Netzwerkfunktionen des Kernels bzw. gewöhnliche Netzwerkdienste, die auf dem lokalen System laufen und mit dem Paketfilter nichts zu tun haben.

Firewall-Abbildungen

Bei vielen Firewall-Abbildungen sehen Sie links das gefährliche Internet, dann die Firewall und rechts das vergleichsweise sichere lokale Netz. Abbildung 38.2 entspricht nicht diesem Schema! Die Pakete, die links in den Rechner kommen, stammen sowohl aus dem lokalen Netz als auch aus dem Internet. Dasselbe gilt auch für die Pakete, die die Firewall rechts verlassen.

Für die Weiterleitung von Paketen – egal, ob diese von einer Netzwerkschnittstelle kommen oder von einem lokalen Programm erzeugt wurden – ist der Kernel zuständig. Dieser hat dabei in den unterschiedlichen Stufen des Filtersystems jeweils drei Alternativen:

Die Grundidee eines Netfilter-Systems sieht so aus: Jedes IP-Paket durchläuft verschiedene Orte im Kernel, an denen anhand von Regeln überprüft wird, ob das Paket zulässig ist. Wenn das der Fall ist, wird es weitergeleitet, sonst wird es gelöscht oder zurückgesandt. Mehrere Tabellen steuern den Netfilter:

Daneben gibt es noch die Raw- und die Security-Tabelle, auf die ich in diesem Buch aber nicht eingehe.

Jede dieser Tabellen sieht wiederum mehrere Regelketten (Chains) vor:

Von diesen insgesamt zwölf Regelketten sind in Abbildung 38.2 nur die wichtigsten dargestellt.

Unterschiedliche Regelketten gleichen Namens

Alle Regelketten sind voneinander unabhängig! Es gibt also zwei verschiedene Prerouting- und sogar drei Output-Regelketten.

Dennoch ist in der iptables-Dokumentation oft einfach von der Output-Regelkette die Rede, ohne genaue Angabe, auf welche Tabelle sich diese Regelkette eigentlich bezieht. Gemeint sind in derartigen Fällen immer die Regelketten der Filter-Tabelle, die bei Weitem am wichtigsten ist.

Diese Sprachregelung gilt auch für das Kommando iptables: Dort kann die gewünschte Tabelle mit der Option -t angegeben werden. Entfällt diese Option, gilt das Kommando automatisch für die Filter-Tabelle.

Wenn ein IP-Paket bei seiner Wanderung durch den Kernel auf eine Regelkette stößt, überprüft der Kernel der Reihe nach sämtliche Regeln. Sobald eine Regel auf das Paket zutrifft, wird die in der Regel vorgesehene Aktion durchgeführt und das Paket weitergeleitet, gelöscht oder zurückgesendet. Nur wenn keine einzige der Regeln auf das Paket zutrifft, kommt das Standardverhalten des Filters zur Anwendung. Dieses lautet je nach Konfiguration abermals: weiterleiten, löschen oder zurücksenden.

Im Grundzustand des Kernels ist nur die Filter-Tabelle mit ihren drei Regelketten Input, Forward und Output aktiv. Keine dieser drei Regelketten enthält eine Regel, und das Standardverhalten lautet für alle drei Regelketten: weiterleiten.

Die Regelsysteme für IPv4 und IPv6 sind vollkommen voneinander getrennt. Es gibt also gewissermaßen eine Firewall für IPv4 und eine zweite für IPv6. Im Regelfall ist es zweckmäßig, das Firewall-System parallel für IPv4 und IPv6 aufzubauen. Wenn Sie also einkommende Pakete für den Port 23456 sperren wollen, sind dazu zwei nahezu gleichlautende Regeln für IPv4 und IPv6 erforderlich.

Nicht jede IPv4-Firewall-Regel ist auch für IPv6 geeignet: Beispielsweise ist NAT unter IPv4 ein wichtiges Thema, während NAT für IPv6 gänzlich unüblich ist und erst seit der Kernelversion 3.7 überhaupt unterstützt wird.

Die Kunst, einen Paketfilter zu erstellen, besteht darin, für jede relevante Filterkette das Standardverhalten sowie eine Reihe von Regeln zu definieren. Auf Kommandoebene verwalten Sie diese Regeln mit iptables für IPv4 und ip6tables für IPv6.

Das manuelle Einrichten einer Firewall erfordert eine Menge Fachwissen. Besser ist es zumeist, eine Konfigurationshilfe in Anspruch zu nehmen. Im folgenden Abschnitt stelle ich Ihnen dazu einige distributionsspezifische Programme vor.

Wenn Sie die Firewall doch lieber manuell konfigurieren möchten, gibt Abschnitt 38.5, »Firewall mit iptables selbst gebaut«, ein Einführungsbeispiel. Weitere Informationen und Details gibt es wie üblich im Internet:

http://www.netfilter.org
http://people.netfilter.org/rusty/unreliable-guides

Das Netfilter-System ist seit 2001 Bestandteil des Kernels. Mittlerweile haben sich einige grundlegende Mängel herausgestellt, weswegen bereits seit mehreren Jahren am Nachfolgesystem nftables gearbeitet wird. Im Herbst 2015 war nftables aber noch nicht praxistauglich. Bei vielen Distributionen sind die nftables-Funktionen im Kernel gar nicht aktiviert. Es ist momentan nicht abzusehen, wann und in welcher Form nftables Netfilter ablösen wird.

http://lwn.net/Articles/324989
http://heise.de/-2767676 (kostenpflichtig)