Iptables Allgemein
Die Verwendung von Firewalls mit iptables
Der Linux-Kernel enthält fortgeschrittene Tools für Packet-Filtering, der Prozess für die Kontrolle von Netzwerkpaketen bei ihrem Versuch einzudringen, durch und aus dem System hinaus zu dringen. Kernels vor der 2.4 Version konnten Pakete mit ipchains manipulieren, die Listen von Regeln verwendeten, die für Pakete in jeder Phase des Filterungsprozesses angewandt werden. Die Einführung des 2.4-Kernels hat iptables mit sich gebracht, die den ipchains gleichen, aber deren Wirkungsbereich und Kontrollmöglichkeiten bei der Filterung von Paketen erweitern.
Iptables beinhaltet das englische Wort tables, was für Tabellen steht, und genauso kann man es sich auch vorstellen, denn in seinen 3 Tabellen sammeln sich die Ketten in denen Regeln zum Kontrollieren, Manipulieren oder Extrahieren von Paketen angegeben werden.
Tabellen
Wie Pakete verarbeitet werden wird schon in den Tabellen vorgegeben. iptables besitzt standardmäßig drei Tabellen: mangle, nat und filter.
Die Tabelle mangle (übersetzt: zerhauen) ermöglicht es dem Kernel, Daten im Paket-Header zu verändern.
NAT wird benutzt um interne und externe IP-Adressen zu übersetzen (= Network Adress Translation). Regeln in dieser Tabelle ändern die IP und/oder den Port des Ziels oder Quelle.
Die Tabelle filter prüft alle für die Firewall ankommenden Pakete und entscheidet ob sie durchgelassen oder geblockt werden.
Jede dieser Tabellen besitzt nun mehrere Ketten:
- mangle (Paketmanipulationen): enthält alle Ketten
- nat (Network Adress Translation): enthält die Ketten PREROUTING, OUTPUT und POSTROUTING
- filter (Paketfilter): enthält die Ketten FORWARD, INPUT und OUTPUT
Ketten
Die Ketten sind eine Sammlung von Regeln. D.h. das jede Kette mehrere Regeln besitzen kann um ein Paket durchzulassen oder zu blockieren. Es sind fünf Typen von Standardketten vorhanden. Manche dieser Ketten werden von allen Paketen und einige nur, je nachdem welches Ziel sie haben, durchlaufen. Man könnte auch sagen die Ketten unterscheiden wo welche Regeln angewendet werden. Die Regeln einer Kette werden nacheinander abgearbeitet und wenn eine zutrifft, ist die Bearbeitung in dieser Kette beendet (es gibt Ausnahmen):
- PREROUTING: alle Pakete kommen hier durch bevor eine Routing-Entscheidung getroffen wird
- FORWARD: für alle Pakete, die von der einen zu einer anderen Netzwerkschnittstelle weitergeleitet werden - also keine Pakete die an einen lokalen Dienst gerichtet sind
- INPUT: für Pakete die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen
- OUTPUT: für die über eine Schnittstelle herausgehenden Pakete, die von einem lokalen Dienst kommen
- POSTROUTING: alle Pakete kommen am Ende der Verarbeitung hier durch
Regeln
Mit einer Regel wird entschieden was mit einem Paket passieren soll. Jede besitzt bestimmte Parameter nach denen sie überprüft ob die Informationen eines Paketes auf sie zutreffen. Wenn die Parameter zutreffend sind, wird das Paket meist an ein neues Ziel verwiesen oder es wird eine Methode angewandt. Für die Bearbeitung der Pakete gibt es mehrere Ziele und Methoden. Häufig benutzte sind:
- ACCEPT: das Paket kann passieren
- REJECT: das Paket wird zurückgewiesen und ein Fehlerpaket wird gesendet
- LOG: schreibt einen Eintrag in die syslog
- DROP: das Paket wird ignoriert und keine Antwort gesendet
- REDIRECT: die Ziel-Adresse des Paketes wird hiermit so verändert, dass es zum lokalen Rechner gesendet wird
- MASQUERADE: die Quell-Adresse des Paketes wird durch die IP-Adresse der Schnittstelle ersetzt, auf dem es den Rechner verlässt
- SNAT
- DNAT
=Funktion
- Somit funktioniert iptables wie eine Art Sammlung von Schablonen die nacheinander auf ein Paket abgebildet werden und bei einem Treffer eine bestimmte Aktion auf das Paket ausführen.
- Falls keine der Schablonen passen sollte wird eine Standard Aktion ausgeführt die für alle Pakete gilt die nicht auf eine Schablone passen.
Konzept-Bild