18.3. Mit iptables-Befehlen verwendete Optionen

Regeln für das Filtern von Paketen werden durch Ausführen des iptables-Befehls erstellt. Die folgenden Aspekte des Pakets werden oft als Richlinien benutzt:

Für weitere Informationen zu spezifischen Optionen, welche diese Aspekte eines Pakets betreffen, sehen Sie Abschnitt 18.3.4 und Abschnitt 18.3.5.

Die mit der gegebenen iptables-Regel verwendeten Optionen müssen logisch gruppiert sein, d.h. auf Grundlage des Zwecks und der Bedingungen der Gesamtregel, damit die Regel gültig ist. Der Rest dieses Abschnitts erklärt häufig verwendete Optionen des Befehls iptables.

18.3.1. Struktur der iptables-Optionen

Viele iptables-Befehle haben folgende Struktur:

iptables [-t <table-name>] <command> <chain-name> <parameter-1> \
         <option-1> <parameter-n> <option-n>

Die Option <table-name> erlaubt dem Benutzer eine andere Tabelle als die standardmäßige filter-Tabelle auszuwählen, die mit dem Befehl verwendet werden soll. Die Option <command> löst einen bestimmten Vorgang aus, wie z.B. das Anhängen oder Löschen einer Regel in einer Chain, die in der Option <chain-name> spezifiziert ist. Nach der Option <chain-name> befinden sich Parameterpaare und Optionen, die letztendlich darüber entscheiden, wie die Regel angewandt wird und was passiert, wenn ein Paket einer Regel entspricht.

Bei der Betrachtung der Struktur eines iptables-Befehls ist es wichtig, daran zu denken, dass sich anders als bei den meisten anderen Befehlen Länge und Komplexität eines iptables-Befehls je nach seinem Zweck verändern können. Ein einfacher Befehl für das Entfernen einer Regel aus einer Chain kann z.B. sehr kurz sein, während ein Befehl für das Filtern von Paketen aus einem bestimmten Sub-Netz aufgrund verschiedener spezifischer Parameter und Optionen sehr lang sein kann. Bei iptables-Befehlen sollten Sie berücksichtigen, dass manche Parameter und Optionen, die verwendet werden, unter Umständen die Notwendigkeit nach sich ziehen, weitere Parameter und Optionen zu erstellen, damit die Anforderungen der ersten Option weiter spezifiziert werden können. Um eine gültige Regel zu erstellen, muss diese weitergeführt werden, bis jeder Parameter und jede Option, die einen weiteren Optionensatz erfordert, erfüllt ist.

Wenn Sie iptables -h eingeben, erhalten Sie eine vollständige Liste der iptables-Befehlsstrukturen.

18.3.2. Befehlsoptionen

Mit Befehlsoptionen wird iptables angewiesen, einen bestimmten Vorgang auszuführen. Nur ein einziger Befehl pro iptables-Befehlszeichenkette ist zugelassen. Mit Ausnahme des Hilfebefehls sind alle Befehle in Großbuchstaben geschrieben.

Die iptables-Befehle sind:

18.3.3. iptables Parameteroptionen

Sobald gewisse iptables-Befehle spezifiziert worden sind, einschließlich derer zum Hinzufügen, Anhängen, Entfernen, Einfügen oder Ersetzen innerhalb einer bestimmten Chain, müssen Sie Parameter definieren, um mit der Erstellung einer Paketfilterungsregel beginnen zu können.

18.3.4. iptables Match-Optionen

Verschiedene Netzwerkprotokolle ermöglichen spezielle Übereinstimmungsoptionen, die auf spezifische Weise gesetzt werden können, um ein bestimmtes Paket mit Hilfe dieses Protokolls zu kontrollieren. Das Protokoll muss natürlich zuerst im iptables-Befehl spezifiziert werden, z.B. durch die Verwendung von -p tcp <Protokollname> (wobei <Protokollname> das Ziel-Protokoll ist) die Optionen für dieses Protokoll verfügbar zu machen.

18.3.4.1. TCP-Protokoll

Folgende Übereinstimmungsoptionen stehen für das TCP-Protokoll zur Verfügung (-p tcp):

  • --dport — Setzt den Zielport für das Paket. Für die Konfiguration dieser Option können Sie entweder den Namen eines Netzwerkdienstes verwenden (z.B. www oder smtp) und eine oder mehrere Portnummern verwenden. Um die Namen und Alias-Namen der Netzwerkdienste und die Portnummern, die Sie verwenden, nachzulesen, sehen Sie sich bitte die Datei /etc/services an. Sie können auch --destination-port verwenden, um diese Übereinstimmungsoption zu spezifizieren.

    Um eine spezifische Reihe von Portnummern anzugeben, trennen Sie die zwei Ziffern durch einen Doppelpunkt (:), z.B.: -p tcp --dport 3000:3200. Der größtmöglichste Bereich ist 0:65535.

    Sie können auch ein Ausrufezeichen (!) als Flag nach der --dport-Option verwenden, um iptables anzuweisen, alle Pakete, die nicht diesen Netzwerkdienst oder diesen Port verwenden, zu kontrollieren.

  • --sport — Setzt den Ursprungsport des Pakets unter Verwendung der selben Optionen wie --dport. Sie können auch --source-port verwenden, um diese Übereinstimmungsoption zu spezifizieren.

  • --syn — Kontrolliert alle TCP-Pakete, die eine Kommunikation initialisieren sollen, allgemein SYN-Pakete genannt, auf Übereinstimmung mit dieser Regel. Alle Pakete, die einen Daten-Payload enthalten, werden nicht bearbeitet. Wird ein Ausrufezeichen (!) als Flag hinter die --syn-Option gesetzt, werden alle Nicht-SYN-Pakete kontrolliert.

  • --tcp-flags — Ermöglicht die Verwendung von TCP-Paketen mit bestimmten Bits oder Flags, damit sie einer Regel entsprechen. Die Übereinstimmungsoption --tcp-flags akzeptiert nachstehend zwei Parameter, die Flags für bestimmte Bits in einer Liste mit Kommatrennung sind. Der erste Parameter ist eine Maske, die die zu untersuchenden Flags des Pakets bestimmt. Der zweite Parameter bezieht sich auf die Flags, die im Paket gesetzt werden müssen, um eine Übereinstimmung zu erhalten.

    Mögliche Flags sind:

    • ACK

    • FIN

    • PSH

    • RST

    • SYN

    • URG

    • ALL

    • NONE

    Eine iptables-Regel, die -p tcp --tcp-flags ACK,FIN,SYN SYN enthält, überprüft beispielsweise nur TCP-Pakete, in denen das SYN-Flag aktiviert und die ACK- und FIN-Flags deaktiviert sind.

    Wie bei vielen anderen Optionen auch, wird die Auswirkung der Überprüfungsoptionen durch Einfügen eines Ausrufezeichens (!) hinter --tcp-flags umgekehrt, so dass für deren Überprüfung die Flags des zweiten Parameters nicht in Reihenfolge gesetzt werden müssen.

  • --tcp-option — Versucht mit Hilfe von TCP-spezifischen Optionen zu überprüfen, die innerhalb eines bestimmten Pakets aktiviert werden können. Diese Übereinstimmungsoption kann ebenfalls mit dem Ausrufezeichen (!) umgekehrt werden.

18.3.4.2. UDP-Protokoll

Für das UDP-Protokoll stehen folgende Übereinstimmungsoptionen zur Verfügung(-p udp):

  • --dport — Spezifiziert den Zielport des UDP-Pakets unter Verwendung von Dienstnamen, Portnummer oder einer Reihe von Portnummern. Die --destination-port-Übereinstimmungsoption kann an Stelle von --dport benutzt werden.

  • --sport — Setzt den Ursprungsport des Pakets unter Verwendung der selben Optionen wie --dport. Sie können auch --source-port anstatt --sport verwenden, um diese Übereinstimmungsoption zu spezifizieren.

18.3.4.3. ICMP-Protokoll

Diese folgenden Match-Optionen sind für das Internet Control Message Protocol (ICMP) (-p icmp) verfügbar:

  • --icmp-type — Bestimmt den Namen oder die Nummer des ICMP-Typs, der mit der Regel übereinstimmen soll. Durch Eingabe des Befehls iptables -p icmp -h wird eine Liste aller gültigen ICMP-Namen angezeigt.

18.3.4.4. Module mit zusätzlichen Match-Optionen

Zusätzliche Übereinstimmungsoptionen, die sich nicht spezifisch auf ein Protokoll beziehen, sind ebenfalls mithilfe von Modulen verfügbar, die geladen werden, wenn der iptables- Befehl sie aufruft. Um ein Übereinstimmungsmodul anzuwenden, müssen Sie das Modul mit dessen Namen laden, indem beim Erstellen einer Regel der -m <Modulname> (wobei <Modulname> durch den Namen des Moduls ersetzt wird) in den iptables-Befehl eingefügt wird.

Standardmäßig stehen zahlreiche Module zur Verfügung. Sie können auch Ihre eigenen Module erstellen, um die Funktionalität zu erweitern.

Folgend ist eine Teilliste der am häufigsten verwendeten Module:

  • limit-Modul — Erlaubt eine Grenze für die Anzahl der in Übereinstimmung mit einer Regel zu überprüfenden Pakete zu setzen. Dies ist besonders nützlich, wenn zusammen mit einem LOG-Target verwendet. Auf diese Weise verhindern Sie, dass die zahlreichen übereinstimmenden Pakete Ihre Protokolldateien nicht mit wiederholten Nachrichten überfüllen oder zu viele Systemressourcen beanspruchen. Sehen Sie Abschnitt 18.3.5 für weitere Informationen zum LOG-Target.

    Das limit-Modul erlaubt die folgenden Optionen:

    • --limit — Bestimmt die Zahl der Übereinstimmungen innerhalb eines bestimmten Zeitraums, der mit einem Anzahl- und Zeitmodifikator in dem Format <number> /<Zeit> angegeben wird. Mit --limit 5/hour, zum Beispiel, kann die Regel nur 5 Mal in einer Stunde übereinstimmen.

      Wenn keine Anzahl- und Zeitarbeiter angegeben sind, wird der Standardwert 3/hour angenommen.

    • --limit-burst — Setzt eine Grenze für die Anzahl von Paketen, deren Übereinstimmung mit einer Regel gleichzeitig geprüft --limit-Option verwendet werden. Man kann außerdem einen maximalen Grenzwert setzen.

      Wenn keine Zahl festgelegt wird, können anfangs nur fünf Pakete in Übereinstimmung mit der Regel überprüft werden.

  • state-Modul — Dieses Modul, welches die --state-Übereinstimmungsoptionen definiert, kann ein Paket auf die nachfolgenden, bestimmten Verbindungszustände überprüfen:

    Das Modul state erlaubt die folgenden Optionen:

    • --state — Übereinstimmung mit einem Paket, das folgenden Verbindungszustände hat:

      • ESTABLISHED — Das übereinstimmende Paket wird anderen Paketen in einer bestimmten Verbindung zugeordnet.

      • INVALID — Das übereinstimmende Paket kann nicht mit einer bekannten Verbindung verknüpft werden.

      • NEW — Das übereinstimmende Paket stellt entweder eine neue Verbindung her oder ist Teil einer Zwei-Weg-Verbindung, die vorher nicht gesehen wurde.

      • RELATED — Ein übereinstimmendes Paket stellt eine neue Verbindung her, die auf irgendeine Weise mit einer bestehenden Verbindung zusammenhängt.

      Die Verbindungsstatus können untereinander miteinander verbunden werden, indem sie durch Kommata voneinander getrennt werden, wie z.B. in -m state --state INVALID,NEW.

  • mac-Modul — Dieses Modul ermöglicht die Übereinstimmung einer bestimmten Hardware-MAC-Adresse zu überprüfen.

    Das mac-Modul hat folgende Option:

    • --mac-source — Überprüft die MAC-Adresse der NIC, welche das Paket gesendet hat. Um eine MAC-Adresse von einer Regel auszuschließen, fügen Sie nach der --mac-source-Übereinstimmungsoption ein Ausrufezeichen (!) hinzu.

Weitere, über Module verfügbare Übereinstimmungsoptionen finden Sie auf der man-Seite zu iptables.

18.3.5. Zieloptionen

Sobald ein Paket mit einer bestimmten Regel übereinstimmt, kann die Regel das Paket an viele verschiedene Ziele senden, an denen dann eventuell weitere Vorgänge erfolgen. Außerdem hat jede Chain ein standardmäßiges Ziel, das verwendet wird, wenn ein Paket keiner Regel entspricht oder wenn in der Regel, mit dem das Paket übereinstimmt, ein Ziel angegeben ist.

Die Folgenden sind die Standardziele:

Zusätzlich zu diesen Standardzielen können auch noch verschiedene andere Ziele mit Erweiterungen verwendet werden, sogenannte Zielmodule. Weitere Informationen zu Übereinstimmungsoptionsmodulen finden Sie unter Abschnitt 18.3.4.4.

Es gibt viele erweiterte Zielmodule, von denen sich die meisten auf bestimmte Tabellen oder Situationen beziehen. Einige der bekanntesten Zielmodule, die standardmäßig in Red Hat Enterprise Linux enthalten sind:

Andere Zielerweiterungen, die für die Maskierung unter Verwendung der nat-Tabelle oder für Paketänderung mithilfe der mangle-Tabelle nützlich sind, finden Sie auf der iptables-man-Seite.

18.3.6. Auflistungsoptionen

Der standardmäßige Auflistungsbefehl iptables -L bietet eine sehr allgemeine Übersicht über die standardmäßigen aktuellen Regel-Chains der Filtertabelle. Es gibt aber auch noch zusätzliche Optionen mit weiteren Informationen: