Limetten-HeaderText-Header

Paketfilter mit IPTables

Das Prinzip von IPTables

Die Idee von IPTables/Netfilter wird in folgendem Wikipedia-Artikel gut erklärt: IPTables Pfeil. Der Aufbau hat im Prinzip vier Elemente:

  • Tabellen (tables)
  • Ketten (chains)
  • Ziele (targets)
  • Muster (pattern)

Die Tabellen (filter für Paketfilter, nat für Network Adress Translation, mangle für Paketmanipulation) enthalten Ketten (z.B. INPUT, OUTPUT, FORWARD) von Regeln. Diese Regeln werden für jede Kette nach ihrer Reihenfolge abgearbeitet. Die Regeln wiederum bestehen aus einer Filterspezifikation (hier werden Muster eingesetzt) und einem Ziel. Folgende Standardziele gibt es z.B.: ACCEPT, DROP, REJECT.

Chains and rules

Für einfache Zwecke genügt die Verwendung der Ketten INPUT, OUTPUT und FORWARD und einiger weniger Regeln. Einige Befehle zur Verwaltung von Ketten:

  • -N, -X Definiert eine neue (leere) Kette bzw. löscht eine leere Kette.
  • -P Ändert die Policy (= Regel, die am Ende der Kette ausgeführt wird, wenn keine Regel bis dahin eine Entscheidung getroffen hat.)
  • -L Listet die Regln der Kette auf.
  • -F Löscht die Regeln einer Kette.
  • -Z Stellt die Zähler aller Regeln in einer Kette auf Null. (keine Ahnung wofür das gut ist)
  • -A Fügt eine neue Regel am Ende der Kette ein.
  • -I <n> Fügt eine neue Regel nach Regel n in die Kette ein.
  • -R <n>, -D <n> Ersetzt bzw. löscht die Regel an der angegebenen Stelle.

Hier einige Muster, die häufig verwendet werden:

  • -j Gibt das Ziel an. (--jump)
  • -i, -o Gibt das Input- bzw. Output-Interface an, für das die Regel gilt. (--in-interface, --out-interface)
  • -p Gibt das verwendete Protokoll an. (--proto)
  • -s, -d Gibt die Quelle bzw. das Ziel an (IP-Adresse, hier ist es auch möglich, Subnetze z.B. durch xxx.xxx.xxx.xxx/24 anzugeben). (--source, --destination)
  • ! Negiert das Muster. (sprich: NOT)
  • --sport, --dport Der Quell- bzw. Zielport des Pakets. Port-Bereiche werden in der Form 1025:65535 angegeben.
  • --mac-source Gibt die Mac-Adresse des Interface, von dem das Paket stammt.
  • --tcp-flags Flags des Pakets (mögliche Werte: SYN,ACK,FIN,RST,URG,PSH)

Beispiele

  • iptables -A INPUT -i br0 -p tcp -s 192.168.1.147 --source-port 1025:65535 -j DROP Damit wird eine Regel zu INPUT hinzugefügt, die alle Pakete, die über das Interface br0 mit dem Protokoll tcp von der IP 192.168.1.147 kommen, und einen Quellport im Intervall 1025:65535 haben, verworfen (in die Schlange DROP gestellt).