Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.6. IPTables

Red Hat Enterprise Linux beinhaltet erweiterte Tools für die Paketfilterung — den Prozess zur Kontrolle von Netzwerkpaketen, während diese den Netzwerkstapel des Kernels durchlaufen. Die Kernel-Versionen vor 2.4 nutzten ipchains zur Paketfilterung und wendeten Regellisten auf Pakete in jeder Phase des Filterungsprozesses an. Mit der Kernel-Version 2.4 wurde iptables eingeführt (auch Netfilter genannt), die den ipchains zwar ähnlich sind, jedoch den Wirkungsbereich und die Kontrollmöglichkeiten bei der Filterung von Netzwerkpaketen stark erweitern.
Dieses Kapitel behandelt die Grundlagen der Paketfilterung und erläutert die verschiedenen, verfügbaren Optionen für die iptables-Befehle. Es wird außerdem gezeigt, wie Filterungsregeln über Neustarts des Systems hinweg bewahrt werden können.
Unter Abschnitt 2.6.6, »Zusätzliche Informationsquellen« finden Sie Anweisungen, wie Sie iptables-Regeln angelegen und darauf basierend eine Firewall einrichten können.

Wichtig

In Kernel-Versionen 2.4 und höher ist der standardmäßige Firewall-Mechanismus zwar iptables, allerdings kann iptables nicht benutzt werden, wenn ipchains bereits läuft. Falls zum Zeitpunkt des Systemstarts ipchains bereits vorhanden ist, gibt der Kernel eine Fehlermeldung aus und kann iptables nicht starten.
Die Funktionalität von ipchains wird durch diese Fehlermeldungen jedoch nicht beeinträchtigt.

2.6.1. Paketfilterung

Der Linux-Kernel verwendet die Netfilter-Facility, um Pakete zu filtern, wodurch dem System das Empfangen oder Weiterleiten einiger der Pakete erlaubt wird, während andere Pakete gestoppt werden. Diese Facility ist im Linux-Kernel integriert und enthält die folgenden drei Tabellen oder Regellisten:
  • filter — Die Standardtabelle zur Verarbeitung von Netzwerkpaketen.
  • nat — Diese Tabelle wird zur Änderung von Paketen verwendet, die eine neue Verbindung herstellen, sowie für Network Address Translation (NAT).
  • mangle — Diese Tabelle wird für spezielle Arten der Paketänderung verwendet.
Jede dieser Tabellen verfügt über eine Reihe integrierter Ketten (engl: chains), die den Aktionen entsprechen, die von netfilter auf dem Paket durchgeführt werden.
Die integrierten Ketten für die filter-Tabelle sind:
  • INPUT — Gilt für Netzwerkpakete, die für den Host bestimmt sind.
  • OUTPUT — Gilt für Netzwerkpakete, die lokal generiert wurden.
  • FORWARD — Gilt für Netzwerkpakete, die über den Host geroutet werden.
Die integrierten Ketten für die nat-Tabelle sind:
  • PREROUTING — Ändert Netzwerkpakete beim Empfang.
  • OUTPUT — Ändert lokal generierte Netzwerkpakete, bevor diese gesendet werden.
  • POSTROUTING — Ändert Netzwerkpakete, bevor diese gesendet werden.
Die integrierten Ketten für die mangle-Tabelle sind:
  • INPUT — Ändert Netzwerkpakete, die für den Host bestimmt sind.
  • OUTPUT — Ändert lokal generierte Netzwerkpakete, bevor diese gesendet werden.
  • FORWARD — Ändert Netzwerkpakete, die über den Host geroutet werden.
  • PREROUTING — Ändert eingehende Netzwerkpakete, bevor diese geroutet werden.
  • POSTROUTING — Ändert Netzwerkpakete, bevor diese gesendet werden.
Jedes Netzwerkpaket, das von einem Linux-System empfangen oder ausgesendet wird, fällt mindestens unter eine dieser Tabellen. Ein Paket kann jedoch in jeder Tabelle auf mehrere Regeln hin überprüft werden, bevor es am Ende der Kette wieder austritt. Struktur und Zweck dieser Regeln können unterschiedlich sein, in der Regel versuchen sie jedoch ein Paket zu identifizieren, das von einer bzw. an eine bestimmte IP-Adresse gesendet wurde, wenn dieses ein bestimmtes Protokoll und einen bestimmten Netzwerkdienst benutzt. Die folgende Abbildung veranschaulicht, wie der Durchlauf der Pakete vom IPTables-Subsystem untersucht wird:

Anmerkung

Standardmäßig werden Firewall-Regeln in den Dateien /etc/sysconfig/iptables oder /etc/sysconfig/ip6tables gespeichert.
Der iptables-Dienst startet beim Booten eines Linux-Systems vor jeglichen DNS-Diensten. Aus diesem Grund können Firewall-Regeln nur auf numerische IP-Adressen (zum Beispiel 192.168.0.1) verweisen. Domainnamen (wie beispielsweise host.example.com) in solchen Regeln verursachen dagegen Fehler.
Sobald Pakete mit einer bestimmten Regel in einer der Tabellen übereinstimmen, wird unabhängig von ihrem Bestimmungsort ein Ziel bzw. eine Aktion auf sie angewendet. Falls die Regel ein ACCEPT-Ziel für ein übereinstimmendes Paket spezifiziert, überspringt das Paket die restlichen Regeln und darf somit seinen Weg zum Bestimmungsort fortsetzen. Wenn aber eine Regel ein DROP-Ziel spezifiziert, wird dem Paket der Zugriff auf das System verwehrt, ohne eine Meldung an den Host-Rechner, von dem das Paket stammt, zurückzusenden. Wenn eine Regel ein QUEUE-Ziel spezifiziert, wird das Paket an den Userspace weitergeleitet. Wenn eine Regel ein optionales REJECT-Ziel spezifiziert, wird das Paket verworfen und es wird ein Fehlerpaket an den Ursprungs-Host zurückgesendet.
Jede Kette hat eine Standardrichtlinie, entweder ACCEPT, DROP, REJECT oder QUEUE. Wenn das Paket keiner der Regeln in der Kette entspricht, wird auf dieses Paket die Standardrichtlinie angewendet.
Der iptables-Befehl konfiguriert diese Tabellen und erstellt neue, falls nötig.