![]() ![]() ![]() |
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |
Eine sehr n�tzliche Eigenschaft von ipchains ist die F�higkeit,
Regeln in chains zu definieren, die sich auf ganze Gruppen von Hosts
beziehen. Die chains k�nnen mit beliebigen Namen bezeichnet werden, solange
sie nicht mit den internen chains kollidieren (input
, output
und forward
oder den Anweisungen (MASQ
,REDIRECT
, ACCEPT
,
DENY
, REJECT
oder RETURN
). Man sollte keine
Gro�buchstaben als chain Namen verwenden, da diese sp�teren Erweiterungen
vorbehalten sind. Der Name einer chain darf maximal nur 8 Buchstaben lang
sein.
Die chain sollte den Namen test bekommen:
ipchains -N test
Ok, nun k�nnen Regeln in diese chain eingef�gt werden.
Das L�schen einer chain ist ebenfalls einfach:
ipchains -X test
Warum -X ? Nun es waren keine guten Buchstaben mehr �brig.....
Beim L�schen von chains sind einige Restriktionen zu beachten: Sie d�rfen keine Regeln mehr enthalten, L�schen einer chain und sie d�rfen in einer Anweisung einer Regel in einer anderen chain enthalten sein. Hier ein paar Beispiele f�r chains, die nicht gel�scht werden k�nnen:
Der einfachste Weg, alle Regeln in einer chain zu l�schen, ist die Verwendung der Option -F:
# ipchains -F forward
Wenn nicht explizit eine chain angegeben wird, wird angenommen, da� alle chains gel�scht werden sollen, also Vorsicht !
Die eingetragenen Regeln in einer chain k�nnen mit der Option -L angezeigt werden:
# ipchains -L input
Chain input (refcnt = 1): (policy ACCEPT)
target prot opt source destination ports
ACCEPT icmp ----- anywhere anywhere any
# ipchains -L test
Chain test (refcnt = 0):
target prot opt source destination ports
DENY icmp ----- localnet/24 anywhere any
#
Der refcnt, der in test
angezeigt wird, ist die Zahl der
Regeln, die test
als Anweisung angegeben haben. Diese Zahl mu� NULL
sein, bevor eine chain gel�scht werden kann.
Wenn keine Name der chain angegeben wird, werden alle chains, darunter auch die leeren chains, angezeigt.
Es gibt drei Optionen, die zusammen mit -L aufgerufen werden k�nnen. Die Option -n (numeric) ist sinnvoll um ipchains daran zu hindern die IP - Nummer aufzul�sen, welche bei jedem Zugriff lange Wartezeiten verursachen kann, falls der DNS-Server nicht im caching mode arbeitet. Im schlimmsten Falle kostet es Telefongeb�hren. Der Nachteil ist, da� die Ausgabe in Logfiles mit IP - Nummern erfolgt.
Die Option -v zeigt alle Details der Regel, darunter auch die Paket- und Byte-Z�hlerst�nde, die TOS Bits, das Interface und die Paketmarkierungen.
# ipchains -v -L input
Chain input (refcnt = 1): (policy ACCEPT)
pkts bytes target prot opt tosa tosx ifname mark source destination ports
10 840 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any
Die Paket- und Bytez�hler benutzen die Anh�nge K, M, G als Abk�rzungen f�r 1000, 1 Million und 1 Gigabyte. Die Option -x gibt die echten Zahlen aus, unabh�ngig davon, wie gro� diese sind.
Z�hler k�nnen mit der Option -Z auf Null gesetzt werden:
# ipchains -v -L input
Chain input (refcnt = 1): (policy ACCEPT)
pkts bytes target prot opt tosa tosx ifname mark source destination ports
10 840 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any
# ipchains -Z input
# ipchains -v -L input
Chain input (refcnt = 1): (policy ACCEPT)
pkts bytes target prot opt tosa tosx ifname mark source destination ports
0 0 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any
#
Das Problem bei dieser Vorgehensweise ist, da� man manchmal die Z�hlerst�nde ablesen mu�, bevor diese resettet werden. In obigem Beispiel k�nnen die Optionen -L und -Z zusammen angewendet werden, um die Z�hlerst�nde beim Ablesen zu resetten. Ungl�cklicherweise ist das nicht m�glich, wenn sich die Befehle auf eine einzige chain beziehen. Hierbei m�ssen dann alle chains zugleich resettet werden.
# ipchains -L -v -Z
Chain input (policy ACCEPT):
pkts bytes target prot opt tosa tosx ifname mark source destination ports
10 840 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any
Chain forward (refcnt = 1): (policy ACCEPT)
Chain output (refcnt = 1): (policy ACCEPT)
Chain test (refcnt = 0):
0 0 DENY icmp ----- 0xFF 0x00 ppp0 localnet/24 anywhere any
# ipchains -L -v
Chain input (policy ACCEPT):
pkts bytes target prot opt tosa tosx ifname mark source destination ports
10 840 ACCEPT icmp ----- 0xFF 0x00 lo anywhere anywhere any
Chain forward (refcnt = 1): (policy ACCEPT)
Chain output (refcnt = 1): (policy ACCEPT)
Chain test (refcnt = 0):
0 0 DENY icmp ----- 0xFF 0x00 ppp0 localnet/24 anywhere any
#
In den vorangehenden Abschnitten wurde die Problematik der Regeln
beschrieben, deren Anweisungen auf chains zeigen, und wie diese chains ohne
Sinn durchlaufen werden. Siehe auch Kapitel
Definition einer Anweisung. In diesem Fall bestimmt die policy einer chain das
Schicksahl eines Paketes. Nur die eingebauten chains (input
, output
und forward
) besitzen policies. Wenn ein Paket am Ende einer
Userdefinierten chain "herausf�llt", dann werde die Regeln der
vorangegengenen chain weiter durchlaufen.
Die Policy kann eine der vier ersten speziellen Anweisungen sein: ACCEPT
,
DENY
, REJECT
oder MASQ
. MASQ
ist nur f�r
die forward chain definiert.
Es ist wichtig, zu erw�hnen, da� die Anweisung RETURN
in einer
Regel in einer der eingebauten chains durchaus sinnvoll ist, wenn das Paket
eine Regel erf�llt. In diesem Falle werden die Anweisungen der policy
ausgef�hrt.
Es gibt f�r Masquerading einige anwendbare Parameter. Sie werden zusammen
mit ipchains
ausgef�hrt, weil es nicht notwendig ist, hierf�r ein
neues Toolkit zu benutzen.
Der Befehl zur Aktivierung von Masquerading ist -M, der mit der Option -L kombiniert werden kann, um eventuell gerade maskierte Verbindungen anzuzeigen, oder mit -S, um die Parameter neu zu setzen.
Die Option -L kann mit -n kombiniert werden, um nur IP - Nummern anzuzeigen, oder mit der Option -v, um die Abst�nde der Sequenznummern (SSN) der TCP Pakete (Seriennummer der TCP Pakete, damit diese nach eintreffen richtig einsortiert werden k�nnen)
Der Option -S sollten drei Timeout Werte folgen, jede in Sekunden angegeben: F�r einfache TCP Verbindungen, f�r TCP Verbindungen nach eintreffen eines FIN-Paketes, und f�r UDP Pakete. Um die Default Einstellungen zu verwenden, kann stets eine Null angegeben werden.
Die Defaultwerte sind in der Datei /usr/include/net/ip_masq.h, die auf 15 Minuten, 2 Minuten und 5 Minuten eingestellt sind.
Der allgemein am Meisten ge�nderte Wert ist der erste, insbesondere f�r FTP Verbindungen. Siehe auch FTP Probleme.
Die Problematik mit Timeout - Werten wird auch in dem Anschnitt Kann keine Timeouts f�r Masquerading setzen !.
In einigen F�llen ist es von Interesse, die Firewall chains zu debuggen. Hierf�r wurde die Option -C f�r das ipchains Werkzeug eingef�hrt. Hierbei werden dieselben Routinen aufgerufen, die der Kernel selber verwendet, um Pakete zu analysieren.
Hierbei mu� nur der Name der chain angegeben werden, gefolgt von der Option
-C. W�hrend der Kernel selber stets bei den chains input
, output
oder forward
chains beginnt, kann der User jede chain angeben
Die Einzelheiten der Pakete werden in der selben Syntax angegeben, die schon f�r die Definition der Firewallregeln benutzt wurde. Das schlie�t auch die Angabe der Optionen -p, -s, -d, -i mit ein. Falls ein Paket von dem Typ TCP oder UDP ist, dann m�ssen eine einzige Quell und Ziel-IP - Nummer angegeben werden. F�r ICMP mu� die Code Nummer mit angegeben werden (ohne die Option -f, die nicht erlaubt ist, in diesem Zusammenhang)
Wenn das Protokoll TCP ist, das Flag -f mu� das -y Flag mit angegeben werden, um anzuzeigen, da� das Testpaket das SYN Bit gesetzt werden soll. Dies ist zum Testen unerl��lich.
Hier nun endlich ein praktisches Beispiel, um zu testen, ob ein TCP Paket mit SYN Flag (Initiierung einer Verbindung) von unserem Host aus dem Intranet, Port 60000 zu dem Host 192.168.1.2 auf Port 80 (www) auf dem Interface eth0 eingehend, in die input chain hineingelassen wird. Dieses entspricht einem einfachen Verbindungsaufbau f�r WWW.
# ipchains -C input -p tcp -y -i eth0 -s 192.168.1.1 60000 -d 192.168.1.2 www
packet accepted
#
Es sollte stets auch nicht vergessen werden, alle Quellports
durchzuprobieren, um sicherzugehen, da� sich kein trojanisches Pferd
eingeschlichen hat, wie zuletzt im TCP Wrapper (kleine Anmerkung....)
Manchmal kann ein einziger Test auf mehrere Regeln zutreffen. Dies kann auf
zwei verschiedene Weisen erfolgen. Zuerst mu� ein Hostname angegeben werden,
der in mehrere IP-Adressen sich aufl�st (Siehe Netscape Server: 1 Name = 20
IP - Nummern). ipchains
wird daraufhin so reagieren, als w�ren
verschiedenste IP - Nummern einzeln getestet worden.
Wenn also der Host Name "www.netscape.com" in 20 IP - Nummern sich aufl�st, und der Name "www.intra.net" in 2 IP - Nummern, dann wird der Befehl ipchains -A input -j reject -s www.intra.net -d www.netscape.com direkt 40 Regeln auf der input chain ausgeben, testen und anzeigen.
Der andere Weg, ipchains
dazu zu bewegen, mehrere Regeln zugleich
zu testen, ist die Angabe des Flags -b, f�r bidirektional. Diese
Regel l��t ipchains
sich so verhalten, als wenn der Befehl zweimal
eingegeben worden w�re, einmal in der einen Richtung, und einmal in der
anderen Richtung, also f�r eingehende und ausgehende Pakete nacheinander:
# ipchains -b -A forward -j reject -s 192.168.1.1
#
Die Option -b kann zusammen mit den Optionen -I und -D, sowie -A und -C (Insert, Delete, Append und Check) angewendet werden.
Ein weiteres sinnvolles Flag ist -v, welches angibt, was ipchains mit dem Befehl macht. Zum Beispiel werden hier das Verhalten von Fragmenten zwischen Host 192.168.1.1 und 192.168.1.2 untersucht:
# ipchains -v -b -C input -p tcp -f -s 192.168.1.1 -d 192.168.1.2 -i lo
tcp opt ---f- tos 0xFF 0x00 via lo 192.168.1.1 -> 192.168.1.2 * -> *
packet accepted
tcp opt ---f- tos 0xFF 0x00 via lo 192.168.1.2 -> 192.168.1.1 * -> *
packet accepted
#
![]() ![]() ![]() |
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |