Inhalt

6. Erweiterte Befehle & Parameter

Bisher haben Sie die grundlegenden Befehle und Parameter von iptables kennengelernt. Man kann jedoch noch mehr tun. Z.B. ist es Möglich verschiedene Aktivitäten in einem Logbuch zu speichern oder eigene Ketten zu erstellen.

6.1 Erweiterungen - Match Extensions

Außer den 'normalen' Parametern gibt es bei iptables noch Erweiterungen (Match Extensions). Diese werden durch --match (-m) benutzt. Eine Auflistung und weitere Details findet man in der Manualpage von iptables. Bei bestimmten Parametern kann auf --match verzichtet werden. Hier eine kurze Auflistung:

Erweiterung
Beschreibung
Syntax/ Beispiel



TCP

--source-port, --sport Quellport des Paketes. Es können die Namen oder Portadressen verwendet werden,
-p tcp --sport 22
-p tcp --sport ftp
-p tcp -m tcp --sport 80
--destination-port, --dport Zielport des Paketes -p tcp --dport ssh
-p tcp --sport 80
-p tcp -m tcp --dport 22
--tcp-flags
Erlaubt es nach bestimmten TCP-Flags zu suchen

--syn
Abkürzung für --tcp-flags SYN,RST,ACK SYN. Bewirkt, daß die Regel nur solche Pakete behandelt, deren SYN-Bit gesetzt und deren ACK- und FIN-Bit nicht gesetzt ist. Dabei handelt es sich um Pakete, die TCP-Verbindungen aufzubauen versuchen.
--sync
--tcp-option





UDP

--source-port, --sport s.o.
-p udp --sport 22
-p udp -m udp --sport 80
--destination-port, --dport s.o.
-p udp --dport 22
-p udp -m udp --dport 80



ICMP

--icmp-type
OFFEN




Weitere
(Aufruf mit iptables --match ERWEITERUNG PARAMETER)

-m limit --limit
Hiermit kann festgelegt werden wie oft eine Regel 'reagieren' soll. Dies ist besonders bei Log-Einträgen nützlich. Als EIntrag gilt eine Zahl mit folgendem Typ: '/second',  '/minute',  '/hour', oder '/day'
-m limit --limt 5/minute
-m mac --mac-source
Erlaubt es eine Regel auf MAC-Adressen zu spezifizieren
-m mac --mac-source 00:00:39:AC:09
-m state --state
Dieser Parameter ermöglicht auf den Zustand des Paketes zu reagieren. Es gibt folgende Paketzustände:
NEW: ein Paket, das eine neue Verbindung aufbaut
ESTABLISHED: ein Paket, das zu einer bereits existierenden Verbindung gehoert
RELATED: ein Paket, das verwandt mit, aber nicht Teil von einer bestehenden Verbindung ist. Oder ein ICMP Fehler oder ein Paket, das eine FTP Datenverbindung aufbaut
INVALID: ein Paket, das nicht identifiziert werden konnte
-m state --state NEW
-m time --timestart
-m time --timestop
...
Mit diesem Modul können Regeln festgelegt werden, die nur zu bestimmten Tageszeiten greifen. Details siehe man iptables


Gerade diese Erweiterungen machen iptables so flexibel. Sie können durch Module ergänzt werden. Details finden Sie auf der Netfilter-Homepage. Lesen Sie möglichst die Manualpage von iptables. Dort finden Sie noch mehr dieser Erweiterungen und jeweils eine ausführliche Beschreibung dazu.

6.2 Ziele - Target Extensions

Mit dem Befehl --jump (-j) gibt man an, was mit einem Paket geschehen soll, wenn die Regel zutrifft. Wie bei den Erweiterungen sind auch diese Ziele/ Methoden durch Module erweiterbar. Eine Beschreibung dieser Ziele findet man auch in der Manualpage. Die Beschreibung der Standardmethoden finden Sie in 3.1.

6.3 Benutzerdefinierte Kette

Im Kapitel 3.2 habe ich Ketten beschrieben und die fünf  Standardketten erwähnt. iptables ermöglicht es, sich eigene Ketten zu erstellen und dafür zu sorgen, dass Pakete diese durchlaufen. Diese selbstdefinierten Ketten sind vergleichbar mit Funktionen in Programmen. Mit ihnen können für mehrere Fälle notwendige Abläufe, in einer Kette zusammengefasst werden.

6.3.1 Neue Kette erstellen

Eine neue Kette erstellt man mit dem Befehl --new-chain (-N). Es hat sich eingebürgert für die Namen der Ketten nur Kleinbuchstaben zu verwenden. Es darf keine Regel mit dem benutzten Namen vorhanden sein:
# Erstelle eine Kette mit dem Namen 'log-drop'
iptables -N log-drop
Diese Kette kann nun, genauso wie die fünf Standardketten, mit Regeln befüllt werden:
# zuerst wird ins Logbuch geschrieben (max. 6 Einträge/Minute)
iptables -A log-drop -j LOG -m limit --limit 6/minute

# dann wird das Paket verworfen

iptables -A log-drop -j DROP

Um die Kette zu benutzen muss in einer der Standardketten das Paket an sie übergeben werden:
# SSH-Anfragen 
iptables -A INPUT -p tcp --dport ssh -i ppp0 -j log-drop

# FTP-Anfragen

iptables -A INPUT -p tcp --dport ftp -i ppp0 -j log-drop
Nun wird jede SSH- und FTPAnfrage ins Logbuch geschrieben und verworfen. Sie sehen also, dass die benutzerdefinierte Kette hilft die Regellisten zu vereinfachen und übersichtlicher zu gestalten. Wenn wir das Log-Verhalten ändern wollen, muss nur unsere log-drop-Kette angepasst werden. Dies wirkt sich auf alle Regeln aus, die Pakete an diese Weitergeben.

6.3.2 Kette löschen

Eine benutzerdefinierte Kette muss vor dem Löschen geleert werden und darf nicht das Ziel einer anderen Regel sein.
# Regeln löschen (oder mit -R ändern), die die Kette als Ziel haben
iptables -D INPUT -p tcp --dport ssh -i ppp0 -j log-drop
iptables -D INPUT -p tcp --dport ftp -i ppp0 -j log-drop

# Kette leeren
iptables -F log-drop

# Kette löschen
iptables -X log-drop
Oder, wenn Sie sowieso alles zurücksetzen wollen:
# alle Regeln löschen
iptables -F

# alle Ketten löschen
iptables -X


WeiterInhalt