netzwerk-header
 
Navigation
image Home
image Bücher Shop
image Datenschutz
image Impressum
nav

Netzwerke
image Geschichte
image Grundlagen
image Komponente
image Skripte
image FAQ
image Glossar
nav

W-LAN
image Allgemeines
image Sicherheit
image Reichweite
nav

Netzwerk Praxis
image Windows
image Linux
nav

Sonstiges
image Quiz
image Downloads
image Hardware
image Specials
image Newsarchiv
image Partner
nav

nav
nav
 
 


IPTables, Chains & Rules

Dieser Artikel befasst sich mit dem aus Tabellen, Ketten und Regeln bestehenden Konzept der IPTables und wie sie aus einem Linux-Rechner eine Firewall machen.
Er behandelt nicht die notwendige hieroglyphische Konfiguration, die zur Errichtung einer Firewall nötig ist, sondern stellt ein Schema vor, das IPTables auf einem nicht-technischen Ansatz erläutert.
Im Management-Sprachgebrauch würde man diese Abhandlung als 'dummied down' bezeichnen.

Um den Leser in die faszinierende und bisweilen komplexe Welt von Netfilter und IPTables zu entführen benötigen wir einen Ausgangspunkt.
Als Netzwerk-Mensch fühle ich mich in einem physikalischen Rechner-Netz wohler als in der virtuellen Programmier-Welt.
Als Basis für diesen Artikel nehmen wir eine multi-homed Pentium II 233MHz MMX, 130 MB RAM, GA-586TX2 Gigabyte Motherboard und zwei D-Link 538TX Fast Ethernet-Karten an.

Oh, 'tschuldigung...
Ich erinnere mich, etwas über das Vereinfachen der Informationen gesagt zu haben.
Versuchen wir es noch einmal:
Grundlage dieses Artikels ist ein Computer mit zwei Netzwerkkarten (Network Interface Card, NIC).
Eine NIC (im Bild rechts) ist an einen Hub (nicht abgebildet) angeschlossen und stellt die Verbindung ins lokale Netzwerk her.
Die andere Karte (im Bild links) stellt über einen (A)DSL-Modem die Verbindung ins Internet her.
Bild 1 veranschaulicht diese Konfiguration.

Auf der Webseite von netfilter.org wird IPTables wie folgt beschrieben:
"Netfilter und IPTables sind der Rahmen im Kernel 2.4.x, der Paketfilterung, Aderssübersetzung (NAT) und Mangling zur Verfügung stellt."

Hm, lassen Sie mich das wichtigste etwas ausführlicher Erläutern:

  • Pakete sind die "Protokolldateneinheiten" (Protocol Data Units, PDU) wie sie in der Netzwerk-Schicht des OSI-Modells zu finden sind.
    Diese Bezeichnung führt zu Verwirrungen, wenn sie benutzt wird um PDUs, die sich auf dem Medium (Kabel) oder physikalischem Layer bewegen, zu bezeichnen.
    PDUs, die sich auf dem Kabel fortbewegen, heissen Rahmen (Frames). Pakete werden in diesen Frames übertragen.
    Eine einfache Erklärung ist auf www.linuxjournal.com/article.php?sid=6446 verfügbar.
    Wenn man den Aufbau eines Paketes kennt, ist es möglich den Inhalt zu untersuchen und Regeln für eine Auswahl auf Grund des Inhaltes aufzustellen.

  • Adressübersetzung (Network Address Translation, NAT) ist ein Standard der es erlaubt, einen Satz IP-Adressen für den internen Verkehr und einen separaten Satz IP-Adressen für den externen Verkehr zu benutzen.
    Die Firewall in Bild 1 fungiert als Adressübersetzer zwischen den internen und den externen Adressen.
    NAT ermöglicht dem Benutzer zu verhindern, das lokale Computer aus dem Internet heraus adressiert werden können.

  • Mangling (dt. etwa "zerhacken") ermöglicht dem Kernel den Inhalt bestimmter Felder im Paketkopf zu modifizieren.

  • Netfilter legt eine Reihe von Haken (Hooks) im Netzwerk-Stack des Kernels aus um mitzubekommen, wann immer ein Paket einen solchen Haken passiert.
    IPTables ist eine Sammlung von Regeln, die diese Abfangpunkte benutzen, um Pakete zu prüfen bevor sie in ein bestimmtes Netzwerk gelangen.

Um IPTables nutzen zu können muss die IPTables-Unterstützung im Kernel aktiviert und konfiguriert worden sein.
Wenn der Service gestartet ist übernehmen die Firewall-Konfigurationskomandos die Arbeit und erstellen Ketten und Regeln auf, die zwischen den Netzwerken verkehrenden Pakete angewand werden.

Um IPTables zu verstehen braucht man schon ein IPTables-Lexikon.
IPTables besteht aus drei Blöcken (Abb. 2): Tabellen (tables), Ketten (chains) und Regeln (rules).
Eine Regel ist eine auf ein Paket angewandte Operation.
Eine Kette ist eine Sammlung von Regeln und eine Tabelle ist eine Sammlung von Ketten.
Regeln, Ketten und Tabellen sind verschachtelt wie die russische Puppe: Eine steckt in der nächsten.

IPTables besitzt drei Tabellen: filter, nat und mangle.
In diesen drei Tabellen existieren acht Systemketten.
Die filter-Tabelle hat drei Ketten: input, forward und output.
Die nat-Tabelle zwei Ketten (prerouting und postrouting) und die mangle-Tabelle beinhaltet prerouting, input und output.
Ausserhalb dieser Tabellen existiert noch die Benutzerkette (user chain).

Abbildung 3 zeigt schematisch den Weg eines Paketes durch IPTables in unserem eingangs erklärten System.
Der Administrator hat die Möglichkeit keine, einige oder alle IPTables-Strukturen für jedes Interface des Computers zu aktivieren.
Die IPTables-Funktionalität ist es, die aus einem Computer eine Firewall macht.

Wenn ein Paket über eth0 die Firewall erreicht ist die erste Kette die mangle-Tabelle, prerouting-Kette (mangle/prerouting).
Wir erinnern uns: mangling ermöglicht es dem Kernel, Daten im Paket-Header zu verändern. Regeln dieser Kette tun dies.

Von mangle/prerouting gelangt das Paket zu nat/prerouting.
Behalten? NAT wird benutzt um interne und externe IP-Adressen zu übersetzen. Regeln dieser Kette ändern Ziel-IP und/oder Ziel-Port.

Route ist weder Tabelle, Kette noch Regel wie wir sie bisher besprochen haben. Der Route-Pfad prüft die Zieladresse des Paketes und reicht es weiter an filter/input, wenn die Firewall das Ziel ist, bzw. an filter/forward für alle anderen Ziele.

Filter/input prüft alle für die Firewall ankommenden Pakete und entscheidet ob sie akzeptiert oder geblockt werden. Diese Kette ist, einfach ausgedrückt, ein Paketfilter.

Einige Prozesse auf der Firewall nutzen das Interface vielleicht zur Kommunikation mit Geräten oder Severn in anderen Netzwerken. Beispielsweise ein auf der Firewall laufender Zeitserver.
Dieser Service benötigt keine Benutzereingabe um zu arbeiten, sondern einen Kommunikationsweg zu einer öffentlichen Zeitquelle.

Mangle/output hat die selbe Funktion wie mangle/prerouting. Hier werden nur von der Firewall selbst generierte Pakete behandelt.

Filter/output bearbeitet die Pakete, welche die Firewall verlassen. Diese Kette regelt, wie filter/input, welche Pakete akzeptiert (accept) und welche zurückgewiesen (blocked) werden. Ein Paketfilter also.

Parallel zu diesem Weg läuft filter/forward für Pakete aus dem externen Netz die ihr Ziel im internen Netz haben.
Hauptfunktionalität ist auch hier das blocken unerwünschter Pakete.

NAT/postrouting ist die letzte Station der Pakete vor der Auslieferung in das interne Netz. Hier werden die Quelladresse und -port des Paketes geändert.

Als Hilfe wollen wir die verschiedenen Tabellen noch einmal vereinfachen:

Liste der Tabellen

Mangle/prerouting:		selten benutzt

Nat/prerouting called:		Prerouting

Filter/forward called:		Forward

Nat/postrouting called:		Postrouting

Filter/input called:		Input

Mangle/input:			selten benutzt

Mangle/output:			selten benutzt

Filter/output:			Output



Eine in der Zeichnung nicht aufgeführte Kette ist die Benutzerkette (user chain).
Pakete werden an die Benutzerkette übergeben, wenn eine Systemkette eine "j" (jump) Operation an einem Paket durchführt.

Auf dem Weg hinter die Geheimnisse von IPTables war Praxis meine "yellow brick road".
Wie Dorothy in "Der Zauberer von Oz" hatte ich drei Wegbereiter auf meiner Reise:

  • Bill McCarty: "Red Hat Linux Firewalls"
  • Robert L. Ziegler: "Linux Firewalls"
  • und einen Haufen Artikel aus dem Internet.
Mein nächster Besuch im Buchladen wird mir die Gelegenheit geben, einen Blick in die zweite Auflage von Zieglers Buch zu werfen.
Sein erstes Buch basiert auf IPChains, einem der Vorgänger von IPTables. Aus den Kritiken geht hervor das die zweite Ausgabe IPTables behandeln wird.



Autorenprofil:
Der Autor dieses Artikels ist ehemaliger College-Dozent, der nun als Netzwerkspezialtist für eine regionale Telekommunikationsfirma in Canada arbeitet.
Neben der Systemadministration ist er auch für die Aufsicht betriebsunterstützender Systeme im TK-Bereich verantwortlich.
Er hockt auch in Vorlesungen zur Netzwerktheorie.
Seine elektrotechnische Ausbildung, gepaart mit didaktischem Hintergrund, bringt wertvolle Werkzeuge für das Erreichen von Zielen und dem einfachen lernen über Computer und Netzwerke mit sich.

Sean D. Conway CET


Artikel vom 31.03.05
Autor: Sean Conway
Übersetzer: Sebastian Kueppers
Quelle: http://www.linuxnetmag.com