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.