Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Firewall mit iptables Rules
Grundsätzliches
Mithilfe des Userspace-Programms iptables (bzw. ip6tables) lassen sich Ketten und Regeln in Form einer Tabelle erstellen, welche dann von der im Linux-Kernel enthaltenen Firewall abgearbeitet werden.
Das Konfigurieren mittels iptables kann als eine Sicherheitsmaßnahme für sein System verwendet werden, z.B. durch Kontrolle und Einschränkung des Netzverkehrs, Zugriffssperren von Diensten, o.ä., aber auch um Netzwerkverkehr zu manipulieren (z.B. durch Weiter-/und Umleitungen, usw.).
Iptables arbeitet auf der ISO/OSI Transport- / und Vermittlungsschicht. Das bedeutet, es können nicht alle PDU's manipuliert werden: Lediglich UDP-Datagramme, TCP-Segmente und IP-Pakete. Es gibt allerdings auch Möglichkeiten, auf Data-Link Ebene MAC-Adressen Manipulation durchzuführen. Diese Fähigkeit ist für ein Routing ohnehin unabdingbar. Iptables kann eine Penetration des Systems auf Applikationsebene daher nicht verhindern: hierfür müssen andere Maßnahmen getroffen werden (Proxy/Application-Level-Gateway, …).
Funktionsweise - Chains/Ketten
Egal, ob ein Paket vom eigenen Rechner ins Netzwerk geschickt werden soll, oder von außerhalb zum Rechner gelangt, oder aber der Rechner das Paket an der einen Stelle annehmen und einfach zur nächsten weiterleiten soll, so durchläuft dieses Paket bei iptables immer mindestens eine Chain (dt. Kette„). Davon gibt es fünf vordefinierte, wobei nicht jede Tabelle wirklich alle Chains verwendet:
- INPUT - Der Name der Kette zeigt auch schon die Funtkionsweise auf: Ein Paket wird lokal zugestellt.
- OUTPUT - Ein Paket, welches vom eigenen Rechner erzeugt wurde und weggeschickt werden soll, wird mindestens diese Chain durchlaufen.
- FORWARD - Diese Kette dient allen Paketen, welche geroutet aber nicht lokal zugestellt werden.
- PREROUTING - Pakete durchlaufen diese Chain, noch vor dem Routing.
- POSTROUTING - Pakete durchlaufen diese Kette, nachdem sie geroutet wurden, aber noch bevor sie weitergeleitet werden.
iptables Regeln dauerhaft speichern
Dieser Abschnitt zeigt verschiedene Möglichkeiten, wie iptables Rules unter Linux dauerhaft gespeichert werden können.
# iptables-save
Die eigentlichen iptables Rules werden auf der Kommandozeile mit dem Kommando iptables für IPv4 und ip6tables für IPv6 erstellt und angepasst. Dies geschieht über das Firewall Script /etc/init.d/firewall In eine Datei können diese mit dem Kommando iptables-save für IPv4 gespeichert werden.
Debian/Ubuntu:
# iptables-save > /etc/iptables/rules.v4
Diese Datei kann danach wieder mit dem Kommando iptables-restore für IPv4 geladen werden.
Debian/Ubuntu:
# iptables-restore < /etc/iptables/rules.v4
Wenn auch IPv6 Regeln verwenden möchten, können diese ebenso in eine eigene Datei gespeichert werden.
Debian/Ubuntu:
# iptables-save > /etc/iptables/rules.v6
Das automatische Laden der konfigurierten iptables Rules kann mit folgenden Methoden bewerkstelligt werden:
iptables-persistent für Debian/Ubuntu
Seit Ubuntu 10.04 LTS (Lucid) und Debian 6.0 (Squeeze) gibt es ein Paket namens „iptables-persistent“ welches das automatische Laden der gespeicherten iptables Rules übernimmt. Dafür müsssen die Rules in der Datei /etc/iptables/rules.v4 für IPv4 und in /etc/iptables/rules.v6 für IPv6 gespeichert werden.
Für die Verwendung muss lediglich das Paket installiert werden.
# apt-get install iptables-persistent
Ältere iptables-persistent Versionen (z.b. jene bei Debian Squeeze) unterstützen noch keine IPv6 Rules. Dort gibt es nur eine Datei namens /etc/iptables/rules für IPv4. Wichtig!!! Prüfe nach erfolgter Konfiguration unbedingt ob die Rules wie gewünscht nach einem Reboot geladen werden.