Netfilter/iptables

Netfilter/iptables
iptables
Entwickler: Netfilter-Projekt-Team
Aktuelle Version: 1.4.3.2
(6. April 2009)
Betriebssystem: Linux
Kategorie: Firewall
Lizenz: GPL (Freie Software)
Deutschsprachig: nein
iptables.org

Netfilter ist eine Freie Software innerhalb des Linux-Kernels, die es erlaubt, Netzwerkpakete abzufangen und zu manipulieren. Es bildet damit das Herzstück einer Firewall auf Basis von Linux. Xtables stellt die Tabellenstruktur zur Regelmanipulation bereit; mithilfe von weiteren Modulen sind verschiedene Tests und Manipulationen möglich. Weitere Komponenten im Rahmen von Netfilter sind Connection Tracking und Network Address Translation.

iptables ist das dazugehörige Programm zur Konfiguration von Xtables, während für Connection Tracking und NAT conntrack zum Einsatz kommt.

Die beiden Begriffe Netfilter und iptables werden oft austauschbar für die Summe aus den Kernel- und den Userspace-Bestandteilen verwendet.

Das Netfilter/Iptables-Gespann kann die wesentlichen Protokolle des Internets aus der Vermittlungsschicht, der Transportschicht und teilweise auch aus der Anwendungsschicht verarbeiten (siehe Internet-Protokoll-Familie). Für die darunterliegende Netzzugangsschicht gibt es dagegen Programme wie ebtables (Ethernet-Bridge Tables).

Zu den Funktionen gehören:

Der Kernel-Anteil, also Netfilter im engeren Sinne, ist in eine Vielzahl von Kernel-Modulen aufgeteilt, so dass sich einzelne Bausteine und Netfilter insgesamt leicht ein- und ausschalten lassen.

Netfilter und Iptables gehören zum Lieferumfang aller neueren Linux-Distributionen und sind der Standard für Firewalls unter Linux. Es wird vom netfilter-Projekt unterstützt und weiterentwickelt. Die Software unterliegt, wie der Linux-Kernel insgesamt auch, der GNU General Public License, ist also Freie Software.

Inhaltsverzeichnis

Geschichte

Linux besitzt seit Version 1.0 einen Paketfilter. Dieser stammte zunächst von BSD ab und wurde in der Linuxversion 2.0 unter dem Namen ipfwadm erweitert. Rusty Russell überarbeitete den Paketfilter nochmals und stellte ihn als ipchains zur Verfügung. Er wurde in Linuxversion 2.2 integriert. Gegen 1999 wurde der Kernel und damit auch ipchains komplett überarbeitet. Aus ipchains ging iptables hervor, das seit Kernel 2.4 zum "Lieferumfang" gehört. Iptables wird vom Netfilter-Projekt-Team gepflegt und weiterentwickelt. Dieses Team wurde 1999 durch eine kleine Gruppe von Entwicklern ins Leben gerufen, die sich selbst das Coreteam nennen. Seit 2000 ist Iptables unter der GNU General Public License (GPL) verfügbar.

Aufbau

Ein Diagramm zur Abarbeitungsreihenfolge findet sich auf [1].

Tabellen (tables)

Die iptables-Architektur gruppiert die Regeln für die Verarbeitung von Netzwerk-Paketen gemäß ihrer Funktion in drei Tabellen:

Diese Tabellen enthalten Ketten (engl. chains) von Verarbeitungsregeln, bestehend aus Mustern (engl. patterns), die bestimmen, auf welche Pakete die Regel angewendet wird und Ziele (engl. targets), die festlegen, was mit den Paketen passiert. Anders gesagt bestimmen also Chains, wo geprüft wird, Patterns, welche Pakete betroffen sind und Targets, was mit ihnen geschieht. Die Filterregeln werden dabei, von Ausnahmen abgesehen, stets sequentiell bis zum ersten Treffer abgearbeitet.

Ketten (chains)

Iptables hat fünf fest vorgegebene Ketten (built-in chains) im Kernel eingebaut:

  • PREROUTING: Unmittelbar, bevor eine Routing-Entscheidung getroffen wird, müssen die Pakete hier durch (nur nat und mangle).
  • INPUT: Hier landen alle Pakete, die an einen lokalen Prozess gerichtet sind (nur filter und mangle).
  • OUTPUT: Hier laufen alle Pakete durch, die von einem lokalen Prozess stammen.
  • FORWARD: für alle zu routenden Pakete, also Pakete, die für andere Rechner bestimmt sind (nur filter und mangle).
  • POSTROUTING: Alle Pakete, lokale und solche, die geroutet werden, laufen hier durch (nur nat und mangle).

Zusätzlich lassen sich noch eigene Ketten definieren.

Ziele (targets)

Jede Kette kann Regeln enthalten. Jede Regel besteht dabei aus einer Filterspezifikation und einem Ziel (target). Das Ziel gibt letztendlich an, was mit einem Paket passiert. Ein Ziel kann eine benutzerdefinierte Kette, ein Standardziel oder ein erweitertes Ziel sein. Für die fest vorgegebenen Ketten kann man eine Policy definieren, die angewandt wird, wenn keine der Regeln greift. Eine Policy ist immer ein Standardziel. Default ist ACCEPT.

Folgende Standardziele gibt es:

  • ACCEPT: Das Paket wird akzeptiert.
  • DROP: Das Paket wird ohne Rückmeldung an den Sender verworfen.
  • QUEUE: Das Paket wird in eine Queue im Userspace geschickt, so dass es von einem Benutzerprogramm bearbeitet werden kann. Wird die Queue von keinem Programm gelesen, hat dies denselben Effekt wie DROP.
  • RETURN: In benutzerdefinierten Ketten angewendet, wird die Abarbeitung dieser Kette abgebrochen und mit der nächsten Regel der vorhergehenden (aufrufenden) Kette fortgeführt. Bei den fest vorgegebenen Ketten greift die Policy der Kette.

Daneben gibt es zahlreiche erweiterte Ziele. Die wichtigsten sind:

  • LOG: Das Paket wird mit ausgewählten Informationen im Syslog aufgezeichnet und anschließend weiter durch die Kette geleitet.
  • REJECT: Das Paket wird verworfen und der Sender darüber informiert (mittels ICMP-Nachricht oder RST-Paket bei TCP-Verbindungen)

Folgende Ziele sind nur in der nat-Tabelle gültig:

  • DNAT und SNAT (nur PREROUTING und OUTPUT bzw. POSTROUTING) stehen für Destination NAT bzw. Source NAT. Dabei wird die Ziel- bzw. die Quell-Adresse des Paketes durch eine angegebene Adresse ersetzt.
  • MASQUERADE (nur POSTROUTING) ist eine Spezialform von Source NAT. Die Quell-Adresse des Paketes wird dabei durch die IP-Adresse der Schnittstelle ersetzt, über die es den Rechner (in diesem Fall Masquerading-Router genannt) verlassen wird.
  • REDIRECT (nur PREROUTING und OUTPUT) leitet das Paket zum lokalen Rechner um; das wird beispielsweise für transparente Proxyserver benötigt.

Bei DNAT, SNAT und MASQUERADE merkt sich Netfilter die Adressübersetzung - daher connection tracking - und wendet sie auf alle nachfolgenden Pakete derselben Verbindung (in beide Richtungen) ebenfalls an.

Muster (patterns)

Muster machen einen Großteil der Regeln aus, da sie die Bedingungen enthalten, auf die hin Pakete geprüft werden. Diese können sowohl auf OSI-Schicht 3 stattfinden, als auch darunter (z.B. das Filtern von MAC-Adressen per --mac-source) oder darüber (z.B. bestimmte Protokolle herausfiltern mit -p tcp, -p udp oder -p icmp). Neben generischen Mustern enthält iptables viele spezialisierte Matches, die über dynamisch geladene Erweiterungen zur Verfügung stehen und mit dem Schalter -m oder --match geladen werden.

Erweiterungen

Die Netfilter-Gruppe ist zusätzlich für das Projekt Patch-o-matic(-ng) (kurz POM(-ng); ng = "next generation") verantwortlich, das experimentelle Funktionen erprobt und dessen Erkenntnisse evtl. in zukünftige iptables-Versionen mit einfließen lässt. Die Erweiterungen fügen neue Module hinzu, indem mit einem Skript die Quellcodes von iptables und Netfilter verändert werden. Damit die Änderungen übernommen werden, müssen beide Komponenten nach dem Patchen neu kompiliert und der Rechner neu gestartet werden.

Seit Januar 2008 gibt es als Alternative zu patch-o-matic das Paket Xtables-addons, das für die meisten im Internet erhältlichen Module ohne Patchen oder Neustarts auskommt.

Frontends / Alternativen

Zu iptables gibt es zahlreiche Frontends, die von einfachen Shell-Scripts bis hin zu komplexen grafischen Oberflächen die Verwaltung des Firewall-Regelwerkes übernehmen (z.B. IPCop, Shorewall, Webmin; mehr siehe unter Weblinks).

Andere Betriebssysteme sind mit anderen Firewall-Systemen ausgestattet; Für alle BSD-Derivate gibt es pf, für alle Unix-Derivate (inkl. Linux, wobei es nicht auf netfilter aufbaut) IPFilter (ipf). Zusätzlich nutzt FreeBSD bzw. Mac OS X ipfw. Um mit Linux den Netzwerkverkehr auf Anwendungsebene zu filtern, sind andere Programme wie TuxGuardian nötig.

Siehe auch

Literatur

  • Gregor N. Purdy: Linux iptables - kurz & gut. O'Reilly, Dezember 2004, ISBN 3897215063
  • Gregor N. Purdy: Linux iptables Pocket Reference. O'Reilly Media, August 2004, englisch, ISBN 0596005695
  • Ralf Spenneberg: Linux-Firewalls mit iptables & Co., m. CD-ROM. Addison-Wesley, München, Februar 2006, ISBN 3827321360 (Hier kapitelweise als PDF verfügbar [1])

Weblinks

  1. Diagramm zur Reihenfolge von Tabellen/Chains, http://jengelh.medozas.de/images/nf-packet-flow.png (.svg)

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Netfilter/iptables — Netfilter es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe …   Wikipedia Español

  • Netfilter — Development status Active Type firewall tools for Linux. License GNU General Public License Website http://www.netfilter.org/ …   Wikipedia

  • Iptables/netfilter — iptables Entwickler: Netfilter Projekt Team Aktuelle Version: 1.4.3.2 (6. April 2009) Betriebssystem: Linux Kategorie: Firewall …   Deutsch Wikipedia

  • Iptables — Entwickler: Netfilter Projekt Team Aktuelle Version: 1.4.3.2 (6. April 2009) Betriebssystem: Linux Kategorie: Firewall …   Deutsch Wikipedia

  • Netfilter — ist ein Softwareprojekt, das unter anderem Paketfilter, Network Address Translation und weitere für Firewalls relevante Werkzeuge für das Betriebssystem Linux bereitstellt. Weiterhin bezeichnet Netfilter die Softwareschicht innerhalb des Linux… …   Deutsch Wikipedia

  • Netfilter — Тип Межсетевой экран Разработчик Netfilter Core Team Операционная система на ядре Linux Лицензия GNU GPL …   Википедия

  • Netfilter — Développeur L équipe Netfilter Environnement GNU/Linux …   Wikipédia en Français

  • iptables — Développeurs Netfilter Core Team Dernière version …   Wikipédia en Français

  • Iptables — Développeur Netfilter Core Team Dernière version …   Wikipédia en Français

  • Iptables — Infobox Software name = iptables caption = author = Rusty Russell developer = Netfilter Core Team released = 1998 latest release version = 1.4.1.1 latest release date = June 17, 2008 programming language = C operating system = Linux genre =… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”