Kapitel 16. iptables

Red Hat Linux wird mit erweiterten Tools für die Paket-Filterung geliefert — den Prozess zur Kontrolle von Netzwerkpaketen, mit Zugang zu, durch und aus dem Netzwerkstack des Kernels. Die Kernelversionen vor 2.4 konnten Pakete mit ipchains manipulieren und verwendeten Regellisten für jedes Paket in jeder Phase des Filterungsprozesses. Die Einführung des 2.4-Kernels hat iptables mit sich gebracht (auch netfilter genannt), die den ipchains ähnlich sind, deren Wirkungsbereich und Kontrollmöglichkeiten bei der Filterung aber erweitern.

In diesem Kapitel werden die Grundlagen der Paketfilterung beschrieben, wobei die Unterschiede zwischen ipchains und iptables definiert und die verschiedenen, mit den iptables-Befehlen zur Verfügung stehenden Optionen erklärt werden. Es wird außerdem gezeigt, wie Filterungsregeln zwischen den Bootvorgängen des Systems erhalten bleiben.

Wenn Sie Anweisungen für das Erstellen von iptables-Regeln oder das Einrichten einer Firewall auf der Grundlage dieser Regeln benötigen, finden Sie weitere Informationen unter Abschnitt 16.5.

WarnungWarnung
 

Der standardmäßige Firewall-Mechanismus im 2.4-Kernel ist zwar iptables, iptables kann aber nicht benutzt werden, wenn die ipchains schon laufen. Wenn also beim Booten ipchains vorhanden sind, gibt der Kernel eine Fehlermeldung und kann iptables nicht starten.

Diese Bootfehler-Meldungen haben keinerlei Auswirkung auf das Funktionieren der ipchains.

16.1. Paket-Filterung

Die Daten werden über ein Netzwerk als Pakete übertragen. Ein Netzwerkpaket ist eine Sammlung von Daten einer bestimmten Größe und Format. Der sendende Computer teilt eine Datei in Pakete auf, die unter Verwendung bestimmter Netzwerkprotokolle über das Netzwerk gesendet werden. Jedes Paket enthält einen kleinen Teil der Dateidaten. Der andere Computer empfängt die Pakete und fügt sie wieder zu einer Datei zusammen.

Jedes Paket enthält Informationen, mit deren Hilfe es sich durch das Netzwerk zu seinem Bestimmungsort bewegt. Das Paket kann den Computern, die es passiert, als auch dem Computer, der sein Ziel ist, unter anderem mitteilen, woher es kam und wohin es geht und welche Paketart es ist. Die meisten Pakete sind dazu bestimmt, Daten zu transportieren, eine Protokolle verwenden Pakete jedoch auf ganz besondere Weise. Das Transmission Control Protocol (TCP) verwendet z.B. ein SYN-Paket, das keine Daten enthält, um eine Kommunikation zwischen zwei Systemen zu starten.

Der Linux-Kernel enthält die integrierte Fähigkeit, Pakete zu filtern und ermöglicht einigen von ihnen den Zugang zum System, während anderen dieser verwehrt wird. Der Netzfilter des 2.4-Kernels enthält integrierte Tabellen oder Regellisten. Dabei handelt es sich um folgende:

Alle diese Tabellen verfügen über eine Gruppe integrierter Chains (Ketten), die den Aktionen entsprechen, die vom Netzfilter für das Paket durchgeführt werden.

Die für die filter-Tabelle integrierten Chains sind folgende:

Die für die nat-Tabelle integrierten Chains sind folgende:

Die für die mangle-Tabelle integrierten Chains sind folgende:

Jedes von einem Linux-System empfangene oder gesendete Paket gehört zu mindestens einer Tabelle.

Ein Paket kann in allen Tabellen auf mehrere Regeln hin überprüft werden, bevor es am Ende der Chain austritt. Struktur und Zweck dieser Regeln können unterschiedlich sein, sie versuchen jedoch normalerweise ein Paket, das von einer oder an eine IP-Adresse bzw. mehrere IP-Adressen gesendet wurde, zu identifizieren, wenn dieses ein bestimmtes Protokoll und einen bestimmten Netzwerkdienst benutzt.

Unabhängig von ihrem Ziel sind Pakete, sobald sie einer bestimmten Regel einer Tabelle entsprechen, für ein bestimmtes Ziel bzw. für eine auf sie anzuwendende Aktion bestimmt. Wenn in der Regel für das Ziel eines entsprechenden Pakets ein ACCEPT (AKZEPTIEREN) angegeben ist, überspringt das Paket die restlichen Regelkontrollen und darf somit seinen Weg in Zielrichtung fortsetzen. Wenn aber in einer Regel für das Ziel DROP (AUSLASSEN) angegeben ist, wird das Paket "ausgelassen", d.h. das Paket erhält keinen Zugriff auf das System, und es wird nichts an den Host-Rechner zurückgesendet, von dem das Paket stammt. Wenn eine Regel QUEUE (WARTESCHLANGE) als Ziel angibt, wird das Paket zum Benutzerplatz geleitet. Wenn in einer Regel für das Ziel REJECT (ABLEHNEN) angegeben ist, wird das Paket ausgelassen und als Fehlerpaket wieder zu seinem Ursprungsort zurückgeschickt.

Jede Chain hat eine Default-Policy zu ACCEPT, DROP, REJECT, oder QUEUE. Wenn das Paket keiner der Regeln in der Chain entspricht, wird auf dieses Paket die standardmäßige Policy angewandt.

Der Befehl iptables ermöglicht Ihnen diese Tabellen zu konfigurieren, und, falls nötig, neue Tabellen zu erzeugen.