PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables Ketten



xmarvel
10.09.02, 15:15
hi

Hab da mal ne Frage bei den iptables Ketten.
Ich kann ja mittels
iptables -N test eine neue Kette erstellen.
und dann mittels
iptables -A test -i eth0 -j ACCEPT eine neue Regel dazuhängen.
Nur jetzt weiss iptables ja garnicht ob das jetzt fürs INPUT OUTPUT FORWARD etc. ist wo gibt man denn dieses an ?
Wenn ich alle meine benutzerspezifischen Ketten am Anfang erstelle wie arbeitet er sie ab ? Auch in der Reihenfolge wie ich die Ketten erstellt habe ?
Denn ich will eine iptables Regel an eine bestimmte Stelle reinschreiben da sie sonst garnicht zutrifft.
Ich hoffe ihr könnt mir helfen.

MFG
xmarvel

aycaramba
10.09.02, 15:25
Du gibst doch schon an an welche Kette Du Deine neue Regel anhängst. Nämlich an die Kette namens "test".

Ansonsten :

-A INPUT ...
-A OUTPUT ...
-A FORWARD ...

um Regeln an die drei "Hauptketten" ANzufügen.

man iptables wäre wohl eine sinnvolle Abendlektüre ;-)


Gruss
Marc

xmarvel
10.09.02, 15:35
wow das ist eine schnelle Antwort :eek:
Ja aber ist habe das so verstanden das INPUT Lokal die Packete sind die direkt auf dem "Router" bzw. "Server" kommen. OUTPUT die lokal vom "Server" wegehen. Und FORWARD die Regel die die Packete weiterleitet. Oder ist das egal wie INPUT OUTPUT etc. heissen ?

Jinto
10.09.02, 15:40
Nein die "built-in" Ketten kannst du nicht umbenennen. Aber du kannst innerhalb der Ketten in eigene Ketten verzweigen.

Du könntest dir das iptables Tutorial zu Gemüte führen (wenn du willst sogar in Deutsch): http://netfilter.samba.org

HTH

aycaramba
10.09.02, 15:42
Das stimmt soweit, die drei Ketten haben die von Dir genannte Funktion.

Marc

derRichard
10.09.02, 15:43
hallo!

bei http://www.linuxguruz.org/iptables/ findest du viele fertige firewall-scripte und howto's...

mfg
richard

Thomas
10.09.02, 20:32
Wenn du eine neue Kette erstellt (in deinem Beispiel test), dann werden die darin festgelegten Regeln nie abgearbeitet, wenn du keine Packete an diese Kette weiterreichst.


Willst du also zB. alle Packete, die auf eth0 reinkommen besonders behandeln, dann könnte das so aussehen:



iptables -N test
iptables -A test -s 192.168.7.3 -j REJECT
iptables -A test -j ACCEPT

iptables -A INPUT -i eth0 -j test



Bein Durchlaufen der INPUT-Regeln werden Packete, welche an eth0 gerichtet sind erkannt und in die test-Kette weitergeleitet, wo dann die dort definierten Regeln abgearbeitet werden.


Eine neu definierte Kette wird standartmäßig also nie benutzt, du musst aus einer der drei Hauptketten INPUT, OUTPUT und FORWARD auf diese Kette verweisen.



Gruß, Thomas.

xmarvel
12.09.02, 15:28
Erstmal danke für die zahlreichen Antworten.
Jetzt ergibt sich folgendes Problem ich dachte zuerst ich kann das Problem mittels der Ketten lösen scheint aber nich so.
Habe mir ein iptables Script zusammengebastelt (funktioniert auch super). Nur ich will ich in nachhinein (von mein selbstprogrammierten Programm aus) eine Firewall Regel an eine bestimmte Stelle hinzufügen. Logischerweise fügt er sie zum Schluss der Regeln an. Nur da einige Regeln schon vorher auf das Packet zutrifft erreicht das Packet nie die letzte Regel also muss ich sie vor der vorhandene Regel stellen. Nur wie ?

aycaramba
12.09.02, 15:57
Die Ketten sind nummeriert, man kann also weitere Regeln nachträglich an beliebigen Stellen einfügen, das geht dann so:

Anstellle von -A (append) nutzt man -I (insert), die Syntax ist:

iptables -I $kette $regelnummer $die_regel

wobei:
$kette jede bekannte Kette sein kann, sowohl die vordefinierten als auch die selbstdefinierten.
$regelnummer eine Ganzzahl ist (siehe Tipp)
$die_regel sind halt die normalen Angaben xxx -j yyy oder was auch immer.

Noch ein Tipp: So listet man sich die Regeln nummeriert auf:

iptables -nvL --line-numbers ("n" und "v" sind natürlich optional)

Gruss
Marc