[Vorige: Adrespools en Load Balancing] [Inhoud] [Volgende: Loggen]
pass in on $int_if all tag INTERNAL_NET keep state
De markering INTERNAL_NET zal toegevoegd worden aan gelijk welk pakket dat overeenstemt met de bovenstaande regel.
Een markering kan ook toegekend worden door gebruik van een macro. Bijvoorbeeld:
name = "INTERNAL_NET"
pass in on $int_if all tag $name keep state
Er zijn een stel van voorgedefinieerde macro's die ook kunnen gebruikt worden.
Deze macro's worden ontvouwen bij het laden van de regelset en NIET in runtime.
Markering volgt deze regels:
Neem de volgende regelset als voorbeeld.
(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
Bovenop het aanbrengen van markeringen met filterregels, kunnen de nat, rdr en binat vertalingsregels ook markeringen aanbrengen op pakketten door gebruik van het tag sleutelwoord.
pass out on $ext_if tagged INT_NET keep state
Buitengaande pakketten op $ext_if moeten gemarkeerd zijn met de INT_NET markering om overeen te stemmen met de bovenstaande regel. Inverse overeenstemming kan ook gedaan worden door de ! operator te gebruiken:
pass out on $ext_if ! tagged WIFI_NET keep state
Vertalingsregels (nat/rdr/binat) kunnen ook het tagged sleutelwoord gebruiken om overeen te stemmen met pakketten.
Merk op hoe het beleid alle verkeer omvat dat doorheen de firewall zal passeren. Het item tussen haakjes duidt de markering aan die gebruikt zal worden voor dat beleidsitem.
Filter- en vertalingsregels moeten nu geschreven worden om pakketten in het beleid in te delen.
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_NAT tagged LAN_INET -> ($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
Nu worden de regels die het beleid definiлren, ingesteld.
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
Nu de gehele regelset opgesteld is, zijn veranderingen een kwestie van de indelingsregels te wijzigen. Als er bijvoorbeeld een POP3/SMTP server wordt toegevoegd aan de DMZ, zal het nodig zijn om indelingsregels voor POP3 en SMTP verkeer toe te voegen, zoals:
mail_server = "192.168.0.10"
...
pass in on $ext_if proto tcp to $mail_server port { smtp, pop3 } \
tag INET_DMZ keep state
Email verkeer zal nu doorgelaten worden als onderdeel van het INET_DMZ beleidsitem.
De volledige regelset:
# macro's
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"
# indeling -- deel pakketten in op basis van het gedefinieerde firewall
# beleid.
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_NAT tagged LAN_INET -> ($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
# beleid afdwingen -- pass/block gebaseerd op het gedefinieerde firewall
# beleid.
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
En vervolgens in pf.conf:
pass in on fxp0 tagged USER1
[Vorige: Adrespools en Load Balancing] [Inhoud] [Volgende: Loggen]