Veralteter Artikel:Iptables
Aus Ubuntu-Forum Wiki
Inhaltsverzeichnis |
Dieser Artikel wird gerade neu erstellt und ist noch nicht vollständig. |
Der Inhalt dieses Artikels unterlag noch keiner Revision. Er kann geeignet sein, ein System zu beschädigen oder zu zerstören. Die Anleitungen sollten noch nicht genutzt werden. |
1 Allgemeines
Das Kernstück einer Firewall unter Linux ist Netfilter. Es ist Bestandteil des Linux-Kernels, und erlaubt es Netzwerkpakete abzufangen und zu manipulieren.
Es besteht aus folgenden Teilen:
- Xtables stellt die Tabellenstruktur zur Regelmanipulation bereit. Mithilfe von weiteren Modulen sind verschiedene Tests und Manipulationen möglich. Dazu gehören:
- Connection Tracking
- Network Address Translation
- Iptables ist das dazugehörige Dienstprogramm zur Konfiguration von Xtables, während für Connection Tracking und NAT „conntrack“ benutzt wird.
Netfilter/Iptables kann die wesentlichen Protokolle des Internets aus
- der Vermittlungsschicht
- der Transportschicht
- und teilweise auch aus der Anwendungsschicht
verarbeiten.
Für darunterliegende Netzzugangsschicht gibt es dagegen Programme wie „ebtables“ (Ethernet-Bridge Tables).
Zu den Funktionen gehören:
- Paketfilterung einschließlich Stateful Inspection bzw. connection tracking.
- Network Address Translation (NAT) einschließlich Masquerading und Portweiterleitung.
Netfilter und Iptables sind in allen neueren Linux-Distributionen dabei und sind der Standard für Firewalls unter Linux.
2 Regeln
Jedes eintreffende Paket wird auf bestimmte Parameter geprüft, und durchläuft alle vorhandenen Regeln. Treffen bei einer Regel die angegebenen Parameter zu, wird diese Regel angewandt, sonst wird das Paket an die nächste Regel weitergegeben.
Policy | Beschreibung |
---|---|
ACCEPT | das Paket darf angenommen werden |
DROP | das Paket wird ohne Antwort verworfen |
REJECT | das Paket wird nicht angenommen und eine Fehlermeldung wird gesendet |
REDIRECT | das Paket wird an die angegebene Adresse weitergeleitet |
MASQUERADE | die interne Netzwerkadresse des Paketes wird durch eine öffentliche Adresse ersetzt |
LOG | Trifft die Regel zu wird der vorgang gelogt |
Eine gängige Methode ist es für alle Ketten (siehe Punkt 3) die Standardregel (Default Policy) auf „DROP“ zu setzen, dadurch wird gewährleistet, sollte keine Regel bei einem Paket zutreffen, wird dieses automatisch verworfen. D. h. es werden nur Regeln für erwünschte/erlaubte Verbindungen erstellt, und der Rest wird automatisch verworfen.
3 Ketten
In einer Kette werden die Regeln gesammelt. Dadurch sind in jeder Kette mehrere Regeln die ein Paket prüfen und verarbeiten.
Es gibt fünf Standardketten und diese Ketten werden von Paketen, je nachdem welches Ziel sie haben, durchlaufen.
Kette | Beschreibung |
---|---|
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 |
PREROUTING | alle Pakete kommen hier durch bevor eine Routing-Entscheidung getroffen wird |
POSTROUTING | alle Pakete kommen am Ende der Verarbeitung hier durch |
FORWARD | für alle Pakete weitergeleitet werden sollen |
Die Ketten INPUT, OUTPUT und FORWARD besitzen eine Standardregel (Default Policy) und kommt dann zur Anwendung, wenn keine Regel vorhanden ist, oder keine vorhandenen Regel zutrifft. Für die Ketten PREROUTING und POSTROUTING werden keine Standardregeln benötigt, danur Pakete manipuliert (mangle und/oder nat) werden können.
4 Tabellen
Die eintreffenden Paketen werden in drei verschiedene Tabellen behandelt: mangle, nat und filter.
- MANGLE ermöglicht es Daten im Paket-Header zu verändern.
- NAT (= Network Adress Translation) wird zur Übersetzung benutzt von internen und externen Adressen benutzt.
- FILTER prüft alle ankommenden Pakete und entscheidet ob sie durchgelassen oder geblockt werden.
Jede dieser Tabellen besitzt mehrere Ketten:
Tabelle | Enthaltene Ketten |
---|---|
mangle | INPUT, OUTPUT, FORWARD, PREROUTING und POSTROUTING |
nat | OUTPUT, PREROUTING und POSTROUTING |
filter | INPUT, OUTPUT und FORWARD |