[Zurück: Adress-Pools und Load Balancing] [Contents] [Weiter: Aufzeichnen]
pass in on $int_if all tag INTERNAL_NET keep state
Die Markierung INTERNAL_NET wird zu jedem Paket hinzugefügt, das der oben genannten Regel entspricht.
Eine Markierung kann ebenfalls unter der Verwendung eines Makros zugewiesen werden. Zum Beispiel:
name = "INTERNAL_NET"
pass in on $int_if all tag $name keep state
Dort gibt es einen Satz an vordefinierten Makros, welche verwendet werden können.
Die Makros werden während dem Laden des Regelsatzes erweitert und NICHT zur Laufzeit.
Das Markieren folgt diesen Regeln:
Nimm den folgenden Regelsatz als ein Beispiel.
(1) pass in on $int_if tag INT_NET keep state
(2) pass in quick on $int_if proto tcp to port 80 tag \
INT_NET_HTTP keep state
(3) pass in quick on $int_if from 192.168.1.5 keep state
Zusätzlich zum Anbringen der Markierungen durch Filterregeln können nat-, rdr- und binat-Übersetzungsregeln ebenfalls durch das tag-Schlüsselwort Markierungen an Paketen anbringen.
pass out on $ext_if tagged INT_NET keep state
Ausgehende Pakete von $ext_if müssen mit der INT_NET-Markierung markiert sein, damit sie die oben angegebene Regel passieren können. Invertiertes Zutreffen kann ebenfalls mit Hilfe des !-Operators durchgeführt werden:
pass out on $ext_if ! tagged WIFI_NET keep state
Übersetzungsregeln (nat/rdr/binat) können ebenfalls das tagged-Schlüsselwort nutzen, um auf Pakete zutreffen zu können.
Beachte, wie die Richtlinie den gesamten Verkehr abdeckt, der durch die Firewall gelangen wird. Das Objekt in Klammern weist auf die Markierung hin, die für dieses Richtlinien-Objekt verwendet wird.
Filter- und Übersetzungs-Regeln werden nun geschrieben, um die Pakete in die Richtlinie zu klassifizieren.
rdr on $ext_if proto tcp from <spamd> to port smtp \
tag SPAMD -> 127.0.0.1 port 8025
nat on $ext_if tag LAN_INET tagged LAN_INET_NAT -> ($ext_if)
block all
pass in on $int_if from $int_net tag LAN_INET keep state
pass in on $int_if from $int_net to $dmz_net tag LAN_DMZ keep state
pass in on $ext_if proto tcp to $www_server port 80 tag INET_DMZ keep state
Nun sind die Regeln, die die Richtlinie definieren, gesetzt.
pass in quick on $ext_if tagged SPAMD keep state
pass out quick on $ext_if tagged LAN_INET_NAT keep state
pass out quick on $dmz_if tagged LAN_DMZ keep state
pass out quick on $dmz_if tagged INET_DMZ keep state
Nun, da der gesamte Regelsatz aufgesetzt ist, sind Änderungen nur noch eine Sache von Klassifkationsregel-Änderungen. Wenn zum Beispiel ein POP3/SMTP-Server zur DMZ hinzugefügt wird, ist es notwendig, eine Klassifkationsregel für POP3- und SMTP-Verkehr wie folgt hinzuzufügen:
mail_server = "192.168.0.10"
...
pass in on $ext_if proto tcp to $mail_server port { smtp, pop3 } \
tag INET_DMZ keep state
E-Mail-Verkehr wird nun als Teil des INET_DMZ-Richtlinien-Eintrages durchgelassen.
Der komplette Regelsatz:
# macros
int_if = "dc0"
dmz_if = "dc1"
ext_if = "ep0"
int_net = "10.0.0.0/24"
dmz_net = "192.168.0.0/24"
www_server = "192.168.0.5"
mail_server = "192.168.0.10"
table <spamd> persist file "/etc/spammers"
# klassifizierung - klassifiziert pakete basierend auf der definierten
# firewall-richtlinie
rdr on $ext_if proto tcp from <spamd> to port smtp \
tag SPAMD -> 127.0.0.1 port 8025
nat on $ext_if tag LAN_INET tagged LAN_INET_NAT -> ($ext_if)
block all
pass in on $int_if from $int_net tag LAN_INET keep state
pass in on $int_if from $int_net to $dmz_net tag LAN_DMZ keep state
pass in on $ext_if proto tcp to $www_server port 80 tag INET_DMZ keep state
pass in on $ext_if proto tcp to $mail_server port { smtp, pop3 } \
tag INET_DMZ keep state
# richtlinien-erzwingung - lässt durch/blockt basierend auf der
# definierten firewall-richtlinie
pass in quick on $ext_if tagged SPAMD keep state
pass out quick on $ext_if tagged LAN_INET_NAT keep state
pass out quick on $dmz_if tagged LAN_DMZ keep state
pass out quick on $dmz_if tagged INET_DMZ keep state
|
# brconfig bridge0 rule pass in on fxp0 src 0:de:ad:be:ef:0 \
tag USER1
Und dann in pf.conf:
pass in on fxp0 tagged USER1
[Zurück: Adress-Pools und Load Balancing] [Inhalt] [Weiter: Aufzeichnen]