IPTables Befehle
Allgemeines
Folgende Tabellen werden durch die iptables bereitgestellt:
- Filter - Standard Tabelle für das filtern von Paketen.
- Nat - Wird für Network Adress Translation genutzt.
- Mangle - Um IP Header upzudaten. Es kann z.B. das TTL angepasst werden.
- Raw - Stellt einen Mechanismus bereit um Verfolgung von Verbindungen abzulehnen.
- Security - Ein Set um interne SELinux Kontext Markierungen auf Pakete zu setzen.
Benutzt man den Befehl iptables ohne eine Angabe der Tabelle wird standardmäßig die Filter Tabelle ausgewählt.
In der unteren Tabelle eine Übersicht welche Kette in welcher Tabelle enthalten ist. Von oben nach unten gelesen beschreibt sie auch wie Pakete die Firewall passieren.
Die Nat Tabelle ist hier in zwei Teile unterteilt. DNAT -> welches die Zieladresse anpasst und SNAT -> welches die Quelladresse anpasst.
Tabelle↓/Kette→ | Prerouting | Input | Forward | Output | Postrouting |
---|---|---|---|---|---|
Raw | x | x | |||
Mangle | x | x | x | x | x |
Nat(DNAT) | x | x | |||
Filter | x | x | x | ||
Security | x | x | x | ||
Nat(SNAT) | x | x |
Folgende Reihenfolge ergibt sich daraus für die Pakete:
- Eingehende Pakete für das lokale System: Prerouting -> Input
- Eingehende Pakete für andere Systeme: Prerouting -> Forward -> Postrouting
- Lokal generierte Pakete: Output -> Postrouting
Für ein eingehendes Paket ergibt sich folgende Reihenfolge: Prerouting in den Tabellen Raw, Mangle, Nat gefolgt von Input in den Tabellen Mangle, Filter, Security, Nat
Iptables Regeln anzeigen
$ iptables -S [CHAIN]
Zeigt alle Regeln am Stück an. Bei der optionalen Angabe der Kette (CHAIN) wird nur diese ausgegeben.
$ iptables -L [CHAIN]
Zeigt alle Regeln tabellarisch an. Bei der optionalen Angabe der Kette wird nur diese ausgegeben.
$ iptables -L --line-numbers [CHAIN]
Zeigt alle Regeln tabellarisch an und gibt zusätzlich noch die Regelnummer mit aus. (Für späteres löschen einzelner Regeln von Vorteil)
$ iptables -L -v -n [CHAIN]
Zeigt alle Regeln tabellarisch an und gibt detailierte Counterinformationen (-v = verbose) mit Paketen und Bytes aus. Zusätzlich wird mit der -n Option kein reserve DNS Lookup für Adressen ausgeführt was die Geschwindigkeit erhöht.
$ iptables -L -t [[Filter][Nat][Mangle][Raw][Security]]
Zeigt die Tabellen Filter Nat Mangle Raw und Security der iptables an. Ohne Angabe wird, wie oben beschrieben, als default die Filter Tabelle angezeigt.
Zurücksetzen des Counters
$ iptables -Z [CHAIN] [Rulenumber]
Löscht den Counter (-Z = zero) der iptables. Optional, nur für eine bestimmte Kette und Regelnummer. Ansonsten werden alle Counter resettet.
Beispiel:
$ iptables -Z # löscht alle Counter
$ iptables -Z INPUT # löscht alle Counter der Kette (CHAIN) INPUT
$ iptables -Z INPUT 3 # löscht den Counter der Regel 3 der Kette INPUT
Iptables Regeln hinzufügen
$ iptables -I CHAIN [Rulenumber] Regel-Spezifikation
Fügt eine Regel (-I = insert) in der Kette mit genannter Spezifikation hinzu.
Beispiel Blocken einer IP Adresse:
$ iptables -I INPUT -s 192.168.5.55 -j DROP
Fügt der Kette INPUT mit der Quelle (-s = syntaxhighlight) 192.168.5.55 als Ziel (-j = target) DROP hinzu als Regel hinzu.
$ iptables -N [CHAIN]
Erstelle eine Kette mit dem im [CHAIN] angegeben Namen.
$ iptables -N SSH
Beispiel: Erstellen der Kette SSH
Iptables Regeln löschen
$ iptables -D CHAIN Rulenumber
Löscht eine bestimmte Regel in einer bestimmten Kette. Die Regelnummern können vorher mit der Option --line-numbers angezeigt werden. (siehe Anzeigen von Regeln) Beispiel:
$ iptables -D INPUT 3
Löscht Regel Nummer 3 in der Kette INPUT.
$ iptables -S
...
-A INPUT -m state --state INVALID -j DROP
...
$ iptables -D INPUT -m state --state INVALID -j DROP
Löscht eine Regel mit vorheriger Anzeige. Zu beachten ist das das -A nicht beim Löschbefehl mit angegeben wird.
$ iptables -F [CHAIN]
ACHTUNG! Löscht ALLE Regeln. Mit Verwendung der Kette, löscht dieser Befehl nur die Regeln in dieser.
$ iptables -X [CAHIN]
Löscht eine Kette mit angegeben Namen.
$ iptables -X SSH
Beispiel: Löschen der SSH Kette
Iptables exportieren
$ iptables-save > dateiname
Regeln werden nach "dateiname" exportiert.
Iptables importieren
$ iptables-restore < dateiname
Regeln werden von "dateiname" importiert.