Firewall: pf Regeln

earth

Member
Hallo,

ich bin noch ein Newbie mit pf und ich wollte Fragen wie ich es hin bekomme das ich eine Regel für einen Client erstelle der Nach aussenhin genattet wird.

Konztellation

-------------------------------------------------------------------------------------------------------
Netz 192.168.0.0/24 -> Firewall (SNAT auf DynAdresse mit ->(ext_if) )-> Internet
------------------------------------------------------------------------------------------------------

Mein Problem jetzt die Filter wirken erst nach dem das Packet schon dem Nat unterzogen wurden ist. Doch wie soll ich erst erlauben das Clíent 192.168.0.1 nicht zu 193.80.1.1 darf aber client 192.168.0.2 schon, weil beide bekommen vom Nat die IP Adresse öffentlich, wenn ich das richtig verstanden habe.?????

Vielen Dank für eure Anworten. Und noch ein schönen Sonntag.
 
Diese Zeile im block- und passteil Deiner pf.conf sollte alles erledigen, was Du willst.

block on $int_if from 192.168.0.1 to 193.80.1.1

Vielleicht definierst Du Dein Problem aber auch einfach mal etwas genauer, wirklich schlau bin ich aus Deiner Fragestellung nicht geworden. Einige Sätze erscheinen mir (vollkommen) unverständlich...!??!

Herakles
 
Danke für deine Anwort aber funktioniert das überhaupt ?? weil ich habe gelesen das die NAT Regel das Paket erst auf meine IP Adresse (Ext Interface) ändern und dann erst die Regeln greifen und das wurde heisen das es nie ein Paket gibt welches die QIP 192.168.0.1 hatte durch die Filter geht aus es wird nicht ducrh NAT Übersetzt ??? oder verstehe ich da was falsch und die Filter bekommen erst das Paket und dann wird ein QNAT (SNA) ducrhgeführt? (Wie bei LINUX)

1. Paket Trifft ein 192.168.0.1 -> 193.80.1.1
2. NAT (Paket QIP Ext Adresse(vom Provider) -> 193.80.1.1
3. Regel bekommt das Paket .. Eine Regel die jetzt ein block on $int_if from 192.168.0.1 .... wäre wurde nicht zutreffen.

Oder habe ich es Falsch verstanden und bekommt erst die Regel das Paket und dann das Nat wie bei Linux die Prerouting Chain.
 
Moment mal. Was genau willst du denn nun? Im ersten Posting schreibst Du, Du willst nicht, dass 192.168.0.1 NICHT zu 193.80.1.1 durchkommen darf.

Doch wie soll ich erst erlauben das Clíent 192.168.0.1 nicht zu 193.80.1.1 darf aber client 192.168.0.2 schon,

Im zweiten schreibst Du nun

und das wurde heisen das es nie ein Paket gibt welches die QIP 192.168.0.1 hatte durch die Filter geht

Mal abgesehen von dem Kauderwelsch der Formulierungen (ich habe Dein zweites Posting 5 mal gelesen und es immer noch nicht wirklich verstanden) ist das doch ein Widerspruch.

Soll 192.168.0.1 nun auf 193.80.1.1 zugreifen dürfen, oder nicht?

Mit meiner gegebenen Regel wird genau das verhindert. Wenn Du aber sonst andere Regeln in der pf.conf hast, die restlichen Traffic erlauben, so wird 192.168.0.1 auf alle möglichen Rechner kommen, nur eben nicht auf 193.80.1.1

Das wäre dann etwa sowas:

Code:
pass on $int_if all
block on $int_if from 192.168.0.1 to 193.80.1.1

Zur Reihenfolge der Regeln guckst Du am besten mal in die pf-FAQ auf der OpenBSD-Homepage. Da steht eigentlich alles drin.

Alles klaro?
 
Entschuldigung war ein Beispiel nicht in Real habe mich vertahn sehe es als Beispiel eine Host aus dem netz muss und einer nicht!!!!

Zitat von http://www.openbsd.org/faq/pf/de/nat.html

NAT und das Filtern von Paketen
HINWEIS: Übersetzte Pakete müssen weiterhin die Filter-Engine durchlaufen und werden geblockt oder durchgelassen, jenachdem, welche Filterregeln definiert worden sind. Die einzige Ausnahme zu dieser Regel ist, wenn das pass-Schlüsselwort innerhalb der nat-Regel verwendet wird. Dies hat zur Folge, dass NAT-Pakete direkt durch die Filter-Engine gelassen werden.

Sei dir ebenfalls bewusst, dass, da die Übersetzung vor dem Filtern stattfindet, die Filter-Engine die übersetzten Pakete mit den übersetzten IP-Adressen und Ports sehen, wie es in Wie NAT funktioniert beschrieben wurde.


Verstehst du was ich meine? das Paket wird erst genattet und dann wird die Regel nur das schon genattete Packet sehen und deswegen kann ich nicht auf bestimmt hosts Regeln setzetn weil sie alle die gleiche Ext Adresse als Quelle bekommen. Und meine Regel laut der Aussage oben nur diese zusehen bekommt.
Also ist eine Regel wie die Folgene nicht möglich.

block on $int_if from 192.168.0.1 to 193.80.1.1

weil mein Filter die Adresse z.b 192.168.0.1 nicht sieht.

Jetzt noch mal meine Frage ist es möglich einen solchen Fitter irgentwie zusetzten ?? wie bei Linux in der PreRouting Chain ... die Erst nach denn Filter durchlaufen wird.
 
zum verständnis

1.packet kommt rein (z.b 192.168.0.1->194.80.1.1)
2. packet wird in die Filter Regel geschickt.
3. bei normalen Filter wird immer der letztde gefunde gültig.
4. bei Nat regel wird ein Nating nurchgeführt und die Regel wandert weiter durch die Regel kette.
5. Mein Packet geht durch die Folgene Regel kette

erst NAt
jetzt regel

Mein Packet wurde nicht mit der Orginal IP ankommen sondern mit der genatteten.
6. Bei der Regel-Kette

erst Regel
jetzt Nat

Wurde das gleiche Passieren die Letztde Regel wird aktive NAT und meine Regel vorher wurden auch nicht beachtet werden.
 
oder anders bei Linux gibts es die Pre Routing und die Posrouting chain dadurch ist es möglich die Regel immer genau richtig zu setzen was ich hier nicht sehe bei pf ... aber es muss doch eine möglichkeit geben.
 
Laut diesem Satz
------------------------------------------
Sei dir ebenfalls bewusst, dass, da die Übersetzung vor dem Filtern stattfindet, die Filter-Engine die übersetzten Pakete mit den übersetzten IP-Adressen und Ports sehen, wie es in Wie NAT funktioniert beschrieben wurde.
-----------------------------------------
von der PF Handbuch seite heis es das NAT schon Vorher passiert für Regel die einkommenden Verkehr beschreiben ist das sehr gut weil man dann direct sagen kann " any -->webserver IP " und nicht "any -->ext IP" aber anders ausgehende es das scheisse das muss man doch wie bei Linux machen können...
 
Ok Leute, vielleicht versteht jemand anders, was earth erreichen will. Wenn ich die von mir genannte Regel in eine pf.conf einbaue und diese lese und einbinde, kann ich einen bestimmten Host mit dem entsprechenden Rechner nicht mehr erreichen, mit den anderen schon.

Ich ralls nicht, wo das Problem ist. Sorry,

Herakles
 
Danke für deine Bemühungen also ´du hast es woll getstet aber wie soll das denn gehen wenn das Paket schon geändern worden ist vom NAT dann kann die Regel doch nicht mehr greifen oder sieht die noch das alte Paket???

Trotzdem vielen danke für deine anstrenungen..!!!!!

Warum steht dann hier sowas???

http://www.openbsd.org/faq/pf/de/nat.html

Sei dir ebenfalls bewusst, dass, da die Übersetzung vor dem Filtern stattfindet, die Filter-Engine die übersetzten Pakete mit den übersetzten IP-Adressen und Ports sehen, wie es in Wie NAT funktioniert beschrieben wurde.

Wenn ich doch ein Filter auf die noch nicht überstetzte ip setzten kann???

Dann muss es doch so sein das die Filter Engine nicht die übersetzten Packte sieht und die Filter vor dem NAT wicken oder am Interface selbst und nach dem Routing das NAT wirk.

Also durchläuft das Paket die Regeln (nicht alle) 2 mal . Einmal für das Interface auf der LAN seite und einmal auf dem Interface auf der WAN Seite ist das so richtig ????

Noch mal vielen Dank das du es versuchst mir zu zeigen wenn du mal auf Linux Filter ne Frage hast schreib mich einfach PN an. .-)
 
Zuletzt bearbeitet:
earth schrieb:
ja ist ok wer Rechtschreibfehler findet kann sie behalten

Will ich nicht behalten ! Ich tue nuhr fernümpftigen däutsch behalten tun. Ein bißchen mehr Mühe beim Formulieren geben und nicht gleich mukschen wenn jemand die vielen Fehler sieht wäre ratsam !
 
Moin earth,

Also durchläuft das Paket die Regeln (nicht alle) 2 mal . Einmal für das Interface auf der LAN seite und einmal auf dem Interface auf der WAN Seite ist das so richtig ????
Ach so meinst du das...
So muß es doch auch sein, oder? Andernfalls würdest Du mit NAT ein Scheunentor aufreißen bzw. müßtest auf jedem Client, der über ein "genattetes" IP-Paket erreicht wird, ein eigenes Paketfilter haben.
Um den ganzen Filtervorgang zu beschleunigen, gibt es das Attribut "quick". Damit wird erreicht, dass der Filtermechanismus SOFORT beendet wird, sobald die Bedingung zutrifft.

Spekulation:
Bei Linux dürfte das doch ähnlich ablaufen. Ein prerouting sollte erst das NAT ausführen und dann weitere Regeln und ein postrouting genau umgekehrt. Aber in beiden Fällen werden die IP-Pakete nochmals durch das Filter geschickt.

Viele Grüße

Jürgen
 
Zurück
Oben