Wenn ihr so nett wärt, mir noch ein paar Verständnisfragen zu beantworten:
natürlich!
hinter jeder Rule liegt ein "deny all"? Wenn ich AUS dem eigenen Netz1 die Verbindung in Netz2 erlaube, ist Netz3 automatisch geblockt?
Nicht ganz. Es ist generell ein "block any any" auf jedem Interface stehend aktiv. Daher: alles was nicht explizit in Form von Regeln erlaubt wird, wird am Ende durch die "block any" Regel weggeworfen. Sieht man auch schön in den Firewall Logs, dass der meiste Kram wegen "default block rule" weggefiltert wird.
Dadurch wäre es einfacher alle Regeln auf die ausgehenden Traffic anzuwenden
Der Logik kann ich nicht folgen. Ausgehender Traffic ist überhaupt nicht auf den Interfaces filterbar. Zumindest nicht das, was man als ausgehend bezeichnet. Ausgehend wäre den Verkehr nicht eingehend beim Ankommen auf dem Interface bspw. LAN zu erlauben/blocken, sondern erst abgehend auf dem WAN bspw. bevor er ins Internet geht. Das ist so ohne weiteres nicht möglich. Technisch ist es das mit Floating Regeln, aber das willst du nicht. Das Filterprinzip der pfSense und generell von pf ist, den Traffic dort zu filtern, wo er DAS ERSTE MAL die Firewall betritt. Dort wird gefiltert, erlaubt oder verworfen, und dann weitergemacht. Hat man sich an den letzten Satz gewöhnt, ist das Regel erstellen auch recht einfach zu durchdenken.
Wenn ich am Ende eine * * Rule setze, erlaube ich damit automatisch ins WAN Netz und das dahinter liegende Internet, sofern ich das WAN nicht zuvor geblockt habe
Vielleicht wäre es einfacher, wenn du genauer schreiben würdest, was eine * * Rule ist. Ich gehe mal von "source any, destination any" aus? Wenn ja erlaubt das schlichtweg alles. Alles - egal ob legitim oder nicht darf dann vom Interface, auf dem die Regel liegt überall hin. Egal wo. Intern, extern egal. Sowas will man eigentlich nicht. Source sollte meistens das "XY_net" sein, also bspw. LAN_net wenn wir von innen nach außen oder innen nach innen reden. Nur auf dem WAN sind Regeln meistens von "any", ansonsten sollte das immer beschränkt sein, schon allein um Miskonfigurationen auszuschließen.
Wenn ich vom Netz1 aus, nur eine IP im Netz2 freigeben möchte, muss ich zuerst die "Allow IP" sezten (denn dadurch werden keine weiteren Regeln mehr geprüft) und danach das ganze Netz2 ja noch "blocken", richtig?
Das ist richtig. Erst die einzelne IP erlauben, dann das komplette Netz rejecten (blocken wäre intern hart, ich würde rejecten damit die Clients auch ne Antwort bekommen). Die zweite Regel ist aber wie Bob sagt nur nötig, wenn danach noch eine größere Allow Regel kommt. Wenn danach nichts mehr kommt, würde eh die block any Regel greifen.
selbes wie oben für IP/Port .. danach muss ich erst das ganze Netz blocken
Mutmaßlich ja, am konkreten Beispiel kann man das sicher besser erläutern.
wenn ich vom Netz1 den Zugriff auf Netz2 komplett blocke, aber es kommt eine Kommunikation vom Netz2 ins Netz1 ... was passiert mit den Antwort Paketen. Diese sind ja wieder vom Netz1 nach Netz2. Die Kommunikation wurde aber aus dem Netz2 initiert und das klappt dann wohl mit den States
Die Firewall ist "stateful", das solltest du ggf. nachlesen. Das heißt, dass bei Zugriff von N2->N1 - sofern die Verbindung per Regel erlaubt ist - ein State erzeugt wird, der diesen Traffic (hin & zurück) erlaubt. Es wird immer nur der Verbindungsaufbau gefiltert. Nicht der danach folgende Verkehr (und Rückverkehr), daher ist der Rücktraffic für eine stateful Firewall immer irrelevant da durch den State implizit gestattet. Bei Stateless Filtering, was viele sog. L3 Switche anbieten, ist genau das ein Problem, dort muss gezielt bei jeder Freigabe der Hin- und Rückverkehr konkret angegeben werden, ansonsten wird geblockt. Da das recht schnell komplex ausartet, will man das eigentlich nicht ;)
Ansonsten kann ich nur auf den Freitag hinweisen: https://forum.netgate.com/post/932803
Vielleicht ist das ja mal was für dich zum Frage in den Raum werfen :)
Grüße