[Wstecz: Pule adresów i kierowanie ruchem] [Spis treści] [Dalej: Logowanie]
pass in on $int_if all tag INTERNAL_NET keep state
Znacznik INTERNAL_NET zostanie dodany do każdego pakietu, który pasuje do powyższej reguły.
Znacznik może być także przypisany przy użyciu makr. Na przykład:
name = "INTERNAL_NET"
pass in on $int_if all tag $name keep state
Istnieje także zestaw predefiniowanych makr gotowych do użycia.
Powyższe makra rozwijane są w trakcie ładowania zestawu reguł, a NIE w trakcie ich działania.
Packet tagging odbywa się wg następujących zasad:
Rozważmy poniższy zestaw regułek:
(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
Obok regułek filtrujących znaczniki mogą być także dodawane do pakietów przez regułki NAT, czyli nat, rdr i binat, poprzez użycie słowa kluczowego tag.
pass out on $ext_if tagged INT_NET keep state
Pakiety chcące opuścić interfejs $ext_if niezależnie od konieczności spełnienia warunków regułki muszą posiadać znacznik INT_NET. Warunek nie posiadania danego znacznika oznacza się operatorem !:
pass out on $ext_if ! tagged WIFI_NET keep state
Reguły transponujące (nat/rdr/binat) także mogą korzystać z klucza tagged do dopasowywania pakietów.
Proszę zauważyć, że przedstawiona powyżej polityka obejmuje cały ruch sieciowy przechodzący przez firewall. W nawiasach podane zostały znaczniki przypisywane dla określonego ruchu.
Mając określoną politykę filtrowania niezbędne będzie teraz napisanie odpowiednich regułek filtrujących oraz NAT, które uwzględniać będą powyższe założenia i odpowiednio przypisywać znaczniki.
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
Po zdefiniowaniu regułek przychodzi pora na określenie jaki ruch może zostać przepuszony, a jak ma być zablokowany.
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
Posiadając gotowy zestaw reguł, wprowadzanie wielu zmian odbywa się tylko przez dodanie lub odjęcie regułek klasyfikujących ruch. Na przykład jeśli zostanie dodany serwer POP3/SMTP do DMZ, wystarczy dodać regułkę podobną do tej:
mail_server = "192.168.0.10"
...
pass in on $ext_if proto tcp to $mail_server port { smtp, pop3 } \
tag INET_DMZ keep state
Ruch poczty elektronicznej zostanie przepuszczony jako, że należy do polityki INET_DMZ.
Kompletny zestaw reguł:
# makra
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"
# klasyfikacja -- podział pakietów na podstawie polityki filtrowania
# określonej dla firewalla.
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
# wprowadzenie w życie -- przepuszczanie/blokowanie oparte na polityce
# filtrowania określonej dla firewalla.
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
Aby wykorzystać znacznik USER1 można w pliku pf.conf umieścić poniższą regułkę:
pass in on fxp0 tagged USER1
[Wstecz: Pule adresów i kierowanie ruchem] [Spis treści] [Dalej: Logowanie]