Befehl zur Systemverwaltung. Konfiguriert die Netfilter-Filterregeln.
Im 2.4-Kernel ist die
ipchains-Firewall-Funktinalität durch das Kernel-Modul netfilter
ersetzt worden. Netfilter
Kann so konfiguriert werden, dass genau wie ipchains fuktioniert, wird
aber aber mit dem
Moudul iptables geliefert, das ähnlich wie ipchains funktioniert,
aber erweiterbar ist. Iptables-
Regeln bestehen aus Suchkriterien und einem Ziel, einem Resultat, welches
angewendet
wird, wenn das Paket auf die Kriterien passt. Die Regeln sind in Ketten
organisiert. Sie
können diese Regeln dazu verwenden, eine Firewall aufzubauen, Ihr
lokales Netzwerk zu
maskieren oder einfach nur bestimmte Arten von Netzwerkverbindungen zurückzuweisen.
Es gibt drei eingebaute Tabellen für iptables, eine für das
Filtern von Paketen (filter),
eine für Network Address Translation (nat) und die letzte für
spezielle Paket-
Manipulatinen (mangle), Firewall-Regeln sind in Ketten organisiert, geordneten
Listen
von Regeln, die der Kernel auf der Suche nach Treffern durchläuft.
Die Tabelle filter
hat drei eingebaute Ketten: INPUT, OUTPUT und FORWARD: Die Ketten INPUT
und
OUTPUT bearbeiten Pakete, die das System nur durchlaufen. Die Tabelle
nat hat
ebenfalls drei eingebaute Ketten: PREROUTING, PO STROUTING; und OUTPUT.
Mangle hat nur zwei Ketten: PREROUTING und OUTPUT.
iptables
netfilter überprüft Pakete, die im System eintreffen. Nachdem
alle eventuellen
PREROUTING-Regeln angewendet worden sind, werden die Pakete an die INPUT-
Kette beziehungsweise die FORWARD-Kette, wenn die Pakete das System nur
passieren, weitergereicht. Beim Verlassen des Systems werden die Pakete
durch die
OUTPUT-Kette und dann durch alle eventuellen POSTROUTING-Regeln
durchgereicht. Jede dieser Ketten hat ein Default-Ziel, das verwendet
wird, wenn
keine Regel passt. Es können auch benutzerdefinierte Ketten erzeugt
und als Ziele
für Pakete verwendet werden, diese haben aber keine Default-Ziele.
Wenn in einer benutzerdefinierten Kette kein Treffer gefunden wird, dann
wird das
Paket an die Kette zurückgegeben, von derdie aktuelle Kette aufgerufen
wurde, und
mit der nächsten Regel in dieser Kette verglichen.
iptables ändert nur die Regeln im laufenden Kernel. Wenn das System
abeschalter
oder neu gestarte wierd, gehen alle Änderungen verloren. Sie können
den Befehl
iptables-save verwenden, um ein Skript zu erzeugen, mit dem die Firewall-
Einstellungen später mittels iptables-restore wiederhergestellt werden.
Solche
Skripten häufig biem Systemstart verwendet. Viele Distributionen
haben ein
Initialisierungsskript für iptables, das die Ausgabe vn iptables-save
verwendet.
Befehle
Iptables wird immer mit einem der folgenden Befehle aufgerufen:
-A Kette Regeln, --append Kette Regeln
Dir Regeln an die Kette anhängen.
-I Kette Zahl Regeln, --insert Kette Zahl Regeln
Die Regeln an der durch Zahl angegebenen Positionen in die Kette einfügen.
-D Kette Regeln, --delete Kette Regeln
Regeln aus der Kette löschen. Die Regeln können durch ihre Positonsnummer
in der
Kette und durch eine allgemeine Regelbeschreibung angegeben werden.
-R Kette Zahl Regel, --replace Kette Zahl Regel,
Eine Regel in der Kette ersetzen. Die zu ersetzende Regel wird durch ihre
Positon mit
Mit Zahl angegeben.
-C Kette Regel, --check Kette Regeln
Ein Netzwek-Paket erzeugen, das auf die angegebene Regel passt, dun überprüfen,
was die Kette damit macht. Die Regel muß die Quelle, das Ziel, Das
Protokoll und die
Schnittstelle des zu konstruierenden Pakets angeben.
-L [Kette], --list Kette
Alle Regeln in Kette ausgeben. Einn keine Kette angegeben wird, alle Regeln
in
Ketten ausgeben.
-F [Kette], --flush Kette
Alle Regeln aus Kette oder aus allen Ketten, wenn Kette nicht angegeben
wird,
löschen.
-Z[Kette], --zero Kette
Die Zähler für Pakete und Bytes in Kette zurücksetzen.
Wenn keine Kette angegeben
Wird, werden die Zähler in allen ketten zurückgesetzt, Wenn
keine Kette angegeben
Wird, dafür aber auch der Befehl L, dann werden die aktuellen
Zählerwerte vor dem
Zurücksetzen ausgegeben.
-N Kette, --new-chain Kette
Eine neue Kette erzeugen. Der Name der Kette muß eindeutig sein.
Auf diese Weise
Werden benutzerdefinierte Ketten erzeugt.
-X [Kette], --delete-chain Kette
Die angegeben benutzerdefinierte Kette oder alle benutzerdefinierten Ketten,
wenn
Keine Kette angegeben wird, löschen.
-P Kette Ziel, --policy Kette Ziel
Das Default Ziel für eine eingebaute Kette angegeben; das Ziel darf
nicht selbst
Wieder eine Kette sein.
-E AlteKette NeuKette, --rename-chain AlteKette N eueKette
AlteKette in NeueKette umbenennen.
-h[icmp]
Einen kurzen Hilf etext ausgeben. Wenn die Option icmp angegeben wird,
wird eine
Liste der zulässigen ICMP-Typen ausgegeben.
Ziele
Ein Ziel kann der Name einer Kette oder einer der folgenden Werte sein:
ACCEPT
Das Paket durchlassen
DROP
Das Paket verwerfen.
QUEUE
Das Paket zur Verarbeitung an den User Space schicken.
RETURN
In die Kette zurückkehren, aus der diese Kette auferufen wurde, und
die nächste Regel
Überürüfe n. Wenn RTURN das Ziel einer eingebauten Kette
ist, wird das Default-Ziel
Der eing ebauten Kette verwendet.
Parameter für Reglespezifikationen
Diese Optionen werden dazu benutzt, Regeln zur Verw endung mit den vorstehenden
Befehlen zu erzeugen. Regeln bestehen aus enem Suchkriterium und üblicherweise
einem
Ziel, zu dem gesprungen werden soll (-j), wenn das Suchkriterium erfüllt
wurde. Viele der
Parameter für diese Suchkriterien können durch Voranstellen
eines Asusrufungszeichens (!)
auch in ihrer logischen Bedeutung umgedreht werden. Diese Regenl passen
dann auf alles
außer den angegebenen Parameter.
-p [!] Name, --protocol[!]Name
Die Regel paßt auf Pakete des Protokols Name. Der Wert von Name
kann als Name
oder als in der Datei /etc/protocols vorhandene Zahl angegeben werden.
Die gängisten
Werte sind tcp, udp, icmp und der spezielle Wert all. Die Zahl 0 entspricht
dem Wert
all; dies ist auch der Defaultwert, wenn diese Option nicht verwendet
wird. Wenn es
für das angegebene Protikoll erweiterte Regeln gibt, werden diese
automatisch
geladen. Sie müssen sie nicht explizit mir der Option m laden.
-s [!] Adresse[/Maske] [!] [Port], --source [!] Adresse[/Maske] [Port]
Gibt die Quell-Adresse an, auf die diese Regel paßt. Die Adresse
kann in Form eines
Hostnamens, eines Netzwerknamens oder einer IP-Adresse angegeben werden.
Die
optionale Maske ist die zu verwendende Netzmaske, die entweder in traditioneller
Form (also z.B. /255.255.255.0) oder in der modernenForm (also z.B. 24)
angegeben
werden.
-d [!] Adresse[/Maske] [!] [Port], --destination [!] Adresse[/Maske]
[Port]
Die Regel paßt auf Pakete mit der Ziel-Adresse. Die Syntax dieses
Befehlsparameters
ist die gleiche wie bei der Option s.
-j Ziel, --jump Ziel
zu einem bestimmten Ziel oder einer benutzerdefinierten Kette springen.
Wenn diese
Option für eine Regel nicht angegeben wird, dann führen Treffer
beidieser Regelnur
zum Erhöen der Zähler der Regel, und das pket wird mit der nächsten
Regel
verglichen.
-i [!] Name[+], --in-interface Name[+]
Die Regel paßt auf Pakete von der Schnittstelle Name[+]. Name ist
die vn Ihrem
System verwendete Netzwerk-Schnittstelle (also z.B. eth0 oder ppp0). Ein
+ kann als
Jokerzeichenverwendet werden, ppp+ würde also beispielsweise auf
jede Schnittstelle
passen, deren Name mit ppp beginnt.
-o [!] Name[+], --out-interface Name[+]
Die Regel paßt auf Pakete, die von der Netzerk-Schnittstelle Name
geschickt werden.
Die Syntax von Name wird bei der Beschreibung von i erklärt.
[!] f, [!]fragment
Die Regel passt auf alles außer dem ersten Fragment eines fragmentierten
Pakets.
Optionen
-v, --verbose
Verbose-Modus
-n, --numeric
Die IP-Adresse und Port Nummern in numerischer Form ausgeben. Defaultmäßig
Werden, wo möglich, Namen angezeigt.
-x, --exact
Alle Zahlen in einer Liste (-L) expandieren. Den exakten werdt der Paket-und
Byte-Zähler anstelle von gerundeten Werten anzeigen.
-m Modul, --match
Die zu Modul gehörenden Regelerweiterungen explizit laden, Siehe
dazu den
Folgenden Abschnitt "Suche in Erweiterungen"
-h[icmp], --help [icmp]
Einen Hilfetext ausgeben. Wenn icmp angegeben wird, wird eine Liste gültiger
ICMP-Typennamen ausgegeben. h kann auch zusammen mit der Option
m
Verwendet werden, um Hilfe zu einem Erweiterungsmodul zu bekommen.
--line-numbers
Wird zusammen mit dem Befehl L verwendet. Fügt jeder Regel
im Listing die
Zeilennummer hinzu, die die Position in der Kette angibt.
Erweiterungen suchen
Netfilter wird mit mehreren Kernel-Modulen geliefert, die die Suchmöglichkeit
der Regeln
erweitern. Diejenigen Erweiterungen, die zu bestimmten Protokollen gehören,
werden
automatisch geladen, wenn die Option p verwendet wird, um das Protokoll
anzugeben. Alle
anderen müssen explizit mit der Option m geladen werden.
tcp Wird geladen, wenn p tcp das einzige angegebene Protokoll ist.
--source-port [!] [Port][:Port], --sport [!] [Port][ :Port]
Die Regel paßt auf die angegebenen Quellports. Mit dem Doppelpunkt
kann ein
Bereich von Ports angegeben werden. Wenn der erste Port weggelassen wird,
wird
0 angenommen, wenn der zweite Port weggelassen wird, ist der Default 65535.
Anstelle des Doppelpunktes kann auch ein Bindestrivh verwendet werden.
--destination-port [!] [Port][ :Port], -dport [!] [Port][ :Port]
Die Regel paßt auf die angegebenen Zilports. Die Syntax ist die
gleiche wie bei sport
--tcp-flags [!] Make comp
Die Regel paßt auf Pakete, in denen die in Maske und comp gennanten
Flags gesetzt
sind. Maske ist eine durch Kommata getrennte Liste von Flags, die geprüft
werden
sollen. Comp ist einer Kommata-getrennte Liste von Flags, die gesetzt
werde müssen,
damit die Regel passt. Mögliche Flags sind SYN, ACK, FIN. RST, URG,
PSH, ALL
und NONE.
[!] syn
Die Regel passt auf Pakete, bei denen das SYN-Bit gesetzt und die ACK-
und FIN-
Bits gelöscht sind. Dies sind Pakete mit denen TCP-Verbindungen angefordert
werden, das Blokieren dieser Pakete verhindert eingehende Verbindungen.
Diese
Option ist eine Abkürzung für tcp-flags SYN, RST, ACK,
SYN
udp Wird geladen, wenn p udp das einzige angegebene Protokoll ist.
--source-port [!] [Port][:Port], --sport [!] [Port][ :Port]
Die Regel paßt auf die angegebenen Quellports. Sie Syntax ist die
gleiche wie bei der
Option --source-port der TCP-Erweiterung.
--destination-port [!][Port][:Port], --sport [!] [Port][ :Port]
Die Regel paßt auf die angegebenen Zielports. Sie Syntax ist die
gleiche wie bei der
Option --source-port der TCP-Erweiterung.
icmp
Wird geladen, wenn p icmp das einzige Protokoll ist.
--icmp-type [!] Typ
Die Regel passt auf den angegebenen ICMP-Typ. Typ kann ein numerischer
ICMP-
Typ oder einer der von iptables p icmp h angezeigten ICMP-Typnamen
sein.
mac Wird explizit mit der Option m geladen
--mac-source [!] Adresse
Die Regel paßt auf die Quell-Adresse, die das Paket übertragen
hat. Adresse muß in
durch Doppelpunkte getrennter Hexbyte-Notation angegeben werden. (Beispiel
macsourece 00:60:08:91:CC:B7)
limit
Wird explizit mir der Option m geladen. Die limit-Erweiterung wird
dazu verwendet, die
Anzahl der passenden Pakete zu begrenzen. Das ist besonders in Kombination
mit dem Ziel
LOG nützlich. Regeln, die diese Erweiterung verwenden, passen solange,
bis die angegebene
Grenze erreicht ist.
--linit Rate
Die Regel passt auf Adressen mir der angegebenen Rate, Rate wird als Zahl
mit
optinal angehängten /second, /minute, /hour oder /day angegeben.
Wenn diese nicht
verwendet wird, ist der Default 3/hour.
--limit-burst [Zahl]
Legt die maximale Anzahl von Paketen fest, die in einem Burst passen.
Wenn diese
erreicht ist, passen keine weiteren Pakete mehr auf diese Regel, bis die
Zahl wieder
aufgeladen worden ist. Da geschieht mir der durch die Option limit
angegebenen
Rate. Wenn diese Option nicht angegeben wird, ist der Default 5.
multiport
Wird explizit mit der Option m geladen. Die multiport-Erweiterungen
passen auf Mengen
von Quell- oder Zeil-Ports.
Diese Regeln können nur zusammen mit p tcp und p udp
verwendet werden. Bis zu 15
Ports können in einer durvh Kommata getrennten Liste angegeben werden.
--source-port [Ports]
Die Regel paßt auf die angegebenen Quellports.
--destinaton-port [Ports]
Die Regel pasßt auf die angegebenen Zielports.
--ports [Ports]
Die Regel passt, wenn das Paket den gleichen Quell- und Ziel hat und der
Port in
Zieports enthalten ist.
mark
Wird explizit mir der Option m geladen. Diesel Modul arbeitet mir
dem Erweiterungs-Ziel
MARK zusammen.
--mark wird[/Maske]
Paßt auf den angegebenen, vorzeichenlosen Markierungwert-Wert. Wenn
eine
Maskeangegeben wird, wird diese vor dem Vergleich logisch-UND mir der
Markierung verknüpft.
Owner
Wird explizit mir der Option m geladen. Die Owner-Erweiterungen
prüfen die Benutzer-,
Gruppen-, Prozeß- und Sitzungs-Ids eines lokalen Paket Erzeugers.
Das ist nur ine eirner
OUTPUT-Kette sinnvoll´.
--uid-owner BenutzerID
Die Regel passt auf Pakete, die von einem Prozeß erzeugt wurden,
der BenutzerID
gehört.
--gid-owner GruppenID
Die Regel passt auf Pakete, die von einem Prozeß erzeugt wurden,
der GruppenID
gehört.
--pid-owner PozeßID
Die Regel passt auf Pakete, die vomProzeß mit der ID Prozeß
ID
Erzeugt wurden.
--sid-owner SitzungsID
Die Regel passt auf Pakete, die von einem Paket in der Sitzung SitzungID
erzeugt
wurden.
Erzeugt wurden.
State
state
Wird explizit mir der Option m geladen. Dieses Modul prüft
den Verbindungszustand eines
Paketes.
--state Zustände
Die Regel passt, wenn das Paket einen der in der durch Kommata getrennten
Liste
angegebenen Zustände hat. Zulässige Zustände sind INVALID,
ESTABLHED, NEW
und RELATED.
tos Wird explizit mir der Option m geladen. Dieses Modul prüft
das Type of Serfvice-Field
im Header eines Paketes.
--tos Wert
Die wenn das Paket den TOS Wert hat. Wert kann ein numerischer Wert oder
ein
Type of Servide-Name sein. Iptables m tos h gibt eine Liste
zulässiger TOS-Werte
aus.
Ziel-Erweiterungen
Erweiterungs-Ziele sinf optionale zusätzliche Ziele, die von separtaten
Kernel-Modulen
unterstützt werden. Sie haben eigene Optionen.
LOG
Informationen über das Paket im Systemprotokoll speichern.
--log-level Ebene
Stellt die Ebene als Name oder Nummer (wie in syslog.conf definiert) ein.
--log-prefix Präfix
Jedem Protokolleintrag den String Präfix voranstellen. Der Präfix
String kann bis zu
30 zeichen lang sein.
--log-tcp-sequence
Die TCP-Sequenz-Nummern protokolieren. Dies ist ein Sicherheitsrisiko,
wenn
Anwender das Systemprotokoll lesen können.
--log-tcp-options
Optionen aus dem TCP-Paket-Header protokolieren
--log-ip-options
Optionen aus dem IP-Paket-Header protokolieren
MARK
Wird dazu verwendet, Pakete mit einem vorzeichenlosen Integer-Wert zu
markieren, den Sie
später in der Sucherweiterung mark verwenden können. Kann nur
in der mangle-Tabelle
verwendet werden.
--set-mark Wert
Markiert das Paket mit Wert
REJECT
Verwirft das Paket und sendet gegebenenfalls eine ICMP-Nachricht an den
Absender, in der
das Verwerfen des Paketes gemeldet wird. Wenn das Paket eine ICMP-Fehlermeldung,
ein
unbekannter ICMP-Typ oder ein Nicht-Head-Fragment war oder wenn bereits
zu viele ICMP-
Nachrichten an diese Adresse geschickt worden sind, wird keine Nachricht
geschickt. --
reject-with Typ
Schickt den angegebenen ICMP-Nachrichtentyp. ZulässigeWerte sind
icmp-net-
unreachable, icmp-port-ureachable und icmp-proto-unreachable. Wenn das
Paket ein
ICMP-Paket war, kann Typ auch echo-reply sein.
TOS
Setzt das Type of Service-Field im IP-Header. TOS ist nur bei Regeln in
der Tabelle
mangle en zulässiges Ziel.
--set-tos Wert
Setzt das TOS Feld auf Wert. Der Wert kann als 8-Bit breiter wert oder
als TOS-Name
angegeben werden. Eine Liste der zulässigen Namen bekommen Sie mit
iptables j
TOS -h.
SNAT
Ändert die Quelladresse dieses und aller zukünftigen Pakete
in der aktuellen Verbindung.
SNAT kann nur als Teil der Kette POST-ROUTING in der Tabelle nat verwendet
werden.
--to-source Adresse[-Adresse][Port-Port]
Gibt die neue Quelladresse oder einen Bereich von Adressen an. Wenn eines
der
Protokolle tcp oder udp mir der Option p angegeben worden sind,
können auch
Quellports angegeben werden. Wenn keiner angegeben wird, wird die neue
Quelle
nach Möglichkeit auf den gleichen Port abgebildet. Wenn das nicht
möglich ist,
werden Portszwischen 512 und 1024 auf andere Ports unter 1024 und Ports
über 1024
auf andere Ports über 1024 abgebildet.
DNAT
Ändert die Zieladresse des aktuellen und aller weiteren Pakete in
der aktuellen Verbindung.
DNAT kann nur als Bestandteil der POSTROUTING-Tabelle in der Tabelle nat
verwendet
werden.
--to-destination Adresse[-Adresse][Port-Port]
Gibt die neue Zieladresse oder einen Bereich von Adressen an. Die Argumente
für
diese Option sind die gleichen wie bei der Option to-source des
Erweiterungs-Ziele
SNAT.
MAQUERADE
Maskiert das Paket so, dass es aussiet, als stamme es vom aktuellen System.
Entegengesetzte
Pakete aus maskierten Verbindungen werden automatisch demaskiert. Dieses
Ziel kann nur in
Ketten in der Tabelle nat verwendet werden, die eingehende Pakete bearbeiten,
und sollre nur
bei nynamischen IP-Adresse (wie bei Dial-Up-Verbindungen) benutzt werden.
Für statische
Adressen sollte DNAT verwendet werden.
--to-ports Port[-Port]
Gibt den Port oder einen Bereich vo Ports an, der zum Maskieren verwendet
werden
soll. Diese Option ist nur zulässig, wenn eines der Protokolle tcp
und udp mir der
Option p angegeben worden sind. Wenn diese Option icht benutzt wird,
wird der Port
des maskierten Pakets nicht verändert.
REDIRECT [--to-port Port]
Leitet das Paket auf den lokalen Port um. Dies ist nützlich für
transpararente Proxies.
--to-port Port[-Port]
Gibt den Port oder den Bereich von Ports im lokalen System an, auf den
das Paket
umgeleitet werden soll. Diese Option ist nur zulässig, wenn eines
der Protokolle tcp
oder udp mit der Option p angegeben worden ist. Wenn diese Option
nicht
angegeben wird, wird der Port des umgeleiteten Pakets nicht geändert.
itable-restore [Datei]
Befehl zur Systemverwaltung. Stellt Firewall-Regln wieder her. iptable-restore
erwartet
Befehle, die von iptables-save generiert wurden, und benutzt sie dazu,
die Firewall-Regeln für
jede Kette wiederherzustellen. Wird oft in Initialisierungsskripten verwendet,
um die
Firewall-Regeln beim Booten wiederherzustellen. Datei ist der Name einer
Datei, deren Inhalt
von iptables-save erzeugt wurde. Wenn keine Datei angegeben wird, wird
die Eingabe von
der Standardeingabe gelesen. Dieser Befehl befand sich noch in der Entwicklung,
als diesen
Buch in den Druck ging, es gibt möglicherweise noch weitere Optonen
als die hier
aufgeführten.
iptables-save [Kette]
Befehl zur Sysemverwaltung. Gibt die IP-Firewall-Regeln, die derzeit
im kernel gespeichert
sind, auf der Standardausgabe aus. Wenn keine Kette angegeben wird, werden
alle Ketten
ausgegeben. Die Ausgabe kann in eine Datei umgeleitet werden, die dann
später von iptables-
restore verwendet werden kann, um die Firewall wiederherzustellen. Dieser
Befehl befand
sich noch in der Enteicklung, als dieses Buch in den Druck gng, es gibt
möglicherweise noch
weitere Optionen als die hier aufgeführten.