Iptables
Iptables ist ein Userspace-Programm zur Konfiguration der Tabellen (tables), die durch die Firewall im Linux-Kernel (bestehend aus einer Reihe von Netfilter-Modulen) bereitgestellt wird, sowie deren Ketten (chains) und Regeln (rules) die in diesen Tabellen enthalten sind. Verschiedene Programme werden gegenwärtig für unterschiedliche Protokolle verwendet; Iptables beschränkt sich auf IPv4, für IPv6 gibt es Ip6tables, für ARP ist es Arptables, für Ethernetpakete gibt es Ebtables.
Iptables benötigt erweiterte Systemprivilegien und muss deshalb als Benutzer "root" ausgeführt werden. Auf den meisten Linux-Systemen ist Iptables unter "/usr/sbin/iptables" installiert.
Der Begriff "Iptables" wird auch oft verwendet, um ausschliesslich die Kernel-Komponenten zu beschreiben. "x_tables" ist der Name des Kernelmoduls, der den geteilten Code aller vier Module trägt, und der sonst noch das API für Iptables-Erweiterungen bereitstellt. Folglich wird Xtables mehr oder minder dazu verwendet, um die gesamte Firewall-Infrastruktur zu benennen.
Iptables ist ein leistungsfähiger Paketfilter, mit dem sehr leicht eine Firewall aufgesetzt werden kann. Das modulare Iptables verwendet Einstiesgpunkte in Kernel-Routinen (Hooks), die Netfilter bereitstellt. Das Kernel-Subsystem Netfilter bietet durch seinen Aufbau die Möglichkeit, eine Firewall sehr flexibel zu konfigurieren.
REIN ---> PREROUTING POSTROUTING -----> RAUS mangle/nat mangle/nat v ^ v FORWARD ^ Routing? --------> filter/mangle -------> ^ v ^ v ^ INPUT OUTPUT filter/mangle ---> Lokaler Prozess ---> filter/mangle/nat
Iptable basiert auf Tabellen mit Regeln zum Bearbeiten von Paketen. Eine Regel legt fest, was mit Paketen geschieht.
- Die Tabelle "filter" etwa enthält Regeln zum Filtern von Daten.
- In der Tabelle "nat" finden sich Regeln, um die IP-Adressen sowie die Ports von IP-Paketen zu manipulieren.
- In der Tabelle "mangle" landen Regeln zum Verändern von Paketen.
- Eigene Tabellen fassen bestimmte Regeln zusätzlich in einer Art Unterprogramm zusammen.
Je nach Tabelle gibt es vorgegebene Regelketten (chains), die bestimmen, welche Regel zum Einsatz kommt:
- "INPUT" behandelt eingehende Pakete für lokale Prozesse.
- "OUTPUT" kümmert sich um Pakete von lokalen Paketen nach aussen.
- "FORWARD" regelt die Weiterleitung von Paketen.
- "PREROUTING" nimmt unter Umständen bereits vor dem Routing Einfluss auf die Pakete.
- "POSTROUTING" nimmt unter Umständen nach dem Routing nochmals Einfluss auf die Pakete, bevor sie wirklich abgeschickt werden.