Inhaltsverzeichnis
Wann immer Linux in einer Netzwerkumgebung eingesetzt wird, können Sie die Kernel-Funktionen verwenden, mit denen Netzwerkpakete so bearbeitet werden können, dass zwischen internen und externen Netzwerkbereichen unterschieden wird. Das Linux-Netfilter-Framework ermöglicht die Einrichtung einer wirksamen Firewall, die die verschiedenen Netzwerke voneinander trennt. Mithilfe von iptables, einer generischen Tabellenstruktur für die Definition von Regelsätzen, können Sie präzise steuern, welche Pakete eine Netzwerkschnittstelle passieren dürfen. Ein derartiger Paketfilter kann schnell und einfach mithilfe von SuSEfirewall2 und dem entsprechenden YaST-Modul eingerichtet werden.
Die Komponenten netfilter und iptables sind verantwortlich für das Filtern und Bearbeiten von Netzwerkpaketen sowie für NAT (Network Address Translation, Übersetzung der Netzwerkadressen). Die Filterkriterien und alle dazugehörigen Aktionen werden in Ketten gespeichert, die nacheinander mit den einzelnen eingehenden Netzwerkpaketen verglichen werden müssen. Die für den Vergleich zu verwendenden Ketten werden in Tabellen gespeichert. Mit dem Befehl iptables können Sie diese Tabellen und Regelsätze bearbeiten.
Der Linux-Kernel verwaltet drei Tabellen, wobei jede einzelne für eine bestimmte Kategorie von Funktionen des Paketfilters dient:
Diese Tabelle enthält die meisten Filterregeln, da sie die eigentliche Paketfilterung implementiert. Hier wird u. a. entschieden, welche Pakete durchgelassen (ACCEPT
) oder abgelehnt (DROP
) werden.
In dieser Tabelle werden alle Änderungen an den Quell- und Zieladressen von Paketen definiert. Mithilfe dieser Funktionen können Sie das Masquerading implementieren, bei dem es sich um einen Spezialfall von NAT handelt und der eingesetzt wird, um private Netzwerke mit dem Internet zu verbinden.
Die Regeln in dieser Tabelle ermöglichen das Bearbeiten von Werten, die in IP-Headern gespeichert sind (z. B. den Typ des Diensts).
Diese Tabellen enthalten mehrere vordefinierte Ketten, mit denen die Pakete verglichen werden:
Diese Kette wird auf eingehende Pakete angewendet.
Diese Kette wird auf Pakete angewendet, die an interne Prozesse des Systems adressiert sind.
Diese Kette wird auf Pakete angewendet, die durch das System nur weitergeleitet werden.
Diese Kette wird auf Pakete angewendet, die aus dem System selbst stammen.
Diese Kette wird auf alle ausgehenden Pakete angewendet.
Abbildung 33.1, „iptables: Die möglichen Wege eines Pakets“ zeigt die Wege, die ein Netzwerkpaket auf einem System durchlaufen kann. Der Einfachheit halber werden in dieser Abbildung die Tabellen als Teile von Ketten dargestellt. In Wirklichkeit sind diese Ketten jedoch in den Tabellen selbst enthalten.
Im einfachsten aller möglichen Fälle geht ein eingehendes Paket, das an das System selbst adressiert ist, an der Schnittstelle eth0
ein. Das Paket wird zunächst an die Kette PREROUTING
der Tabelle mangle
und anschließend an die Kette PREROUTING
der Tabelle nat
weitergegeben. Im folgenden Schritt des Paket-Routings wird ermittelt, dass das tatsächliche Ziel des Pakets ein Prozess des Systems selbst ist. Nach den INPUT
-Ketten der Tabellen mangle
und filter
erreicht das Paket schließlich sein Ziel, vorausgesetzt, dass es tatsächlich den Regeln der Tabelle filter
entspricht.