|
12.11 Operationen auf eine ganze chainEine 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 ( Anlegen einer neuen chainDie chain sollte den Namen test bekommen:
Ok, nun können Regeln in diese chain eingefügt werden. Löschen einer chainDas Löschen einer chain ist ebenfalls einfach:
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: Löschen einer chainDer einfachste Weg, alle Regeln in einer chain zu löschen, ist die Verwendung der Option -F:
Wenn nicht explizit eine chain angegeben wird, wird angenommen, daß alle chains gelöscht werden sollen, also Vorsicht ! Anzeigen einer chainDie eingetragenen Regeln in einer chain können mit der Option -L angezeigt werden:
Der refcnt, der in 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.
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. Reset von Zählern.Zähler können mit der Option -Z auf Null gesetzt werden:
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.
Setzen der PolicyIn 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 ( Die Policy kann eine der vier ersten speziellen Anweisungen sein: Es ist wichtig, zu erwähnen, daß die Anweisung Optionen für MasqueradingEs gibt für Masquerading einige anwendbare Parameter. Sie werden zusammen
mit 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 !.
Prüfen einer RegelIn 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 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.
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....)
Das Testen von vielen Regeln zugleichManchmal 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). 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,
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:
|