Erinevus lehekülje "Enam kui kahe võrgukaardiga aadressteisendav tulemüür" redaktsioonide vahel

Allikas: Kuutõrvaja
(Paketifiltri seadistusfaili põhimõtteskeem)
(Paketifiltri seadistamine)
215. rida: 215. rida:
 
* FILTER sektsioonis on esmalt esitatud teenuse pakkumisega seotud liiklus, sisenev ja väljuv, et vastavaid pakette saaks paketifilter kiiremini käsitleda
 
* FILTER sektsioonis on esmalt esitatud teenuse pakkumisega seotud liiklus, sisenev ja väljuv, et vastavaid pakette saaks paketifilter kiiremini käsitleda
  
===Paketifiltri seadistamine===
+
===Include failid===
  
 +
Eelmises punktis esitatud pf.conf failis kasutatakse paketifiltri seadistuste hoidmist mitmes erinevas failis selleks, et pf.conf oleks ülevaatlikum. Osad ühendatakse kokku include ning anchor directiivide abil ja vastavaid faile hoitakse kataloogis /etc/tbl, et nad ei risustaks /etc kataloogi.
  
 +
====/etc/tbl/pf.macros-and-lists====
  
Esitatud ülesande täitmiseks sobib kasutada sellist paketifiltri seadistusfaili /etc/pf.conf
+
Failis /etc/tbl/pf.macros-and-lists on kirjeldatud paketifiltris kasutatud muutujad ja nimekirjad (ingl. k. list)
  
   ######### MACROS and LISTS #########
+
   # OPTIONS
   #
+
  tcpopts="flags S/SA modulate state"
   if_avalik = "em0"         #
+
  synopts="flags S/SAFR synproxy state"
   carp_avalik = "carp0"     # 192.168.102.35
+
  udpopts="keep state"
   if_arendus = "em1"         #
+
  icmp_types="echoreq"
   carp_arendus = "carp1"     # 10.10.13.1
+
 
   if_test = "em2"           #
+
   # VORGUSEADMED
   carp_test = "carp2"       # 10.10.7.1
+
   if_avalik="em0"
   if_toodang = "em3"         #
+
   if_arendus="em1"
   carp_toodang = "carp3"     # 10.10.6.1
+
   if_test="em2"
   if_haldus = "em4"         #
+
   if_toodang="em3"
   carp_haldus = "carp4"     # 10.10.5.1
+
   if_haldus="em4"
 +
 
 +
   carp_avalik="carp0"
 +
   carp_arendus="carp1"
 +
   carp_test="carp2"
 +
   carp_toodang="carp3"
 +
   carp_haldus="carp4"
 +
 
 +
====/etc/tbl/pf.tables====
 +
 
 +
Failis /etc/tbl/pf.tables on kirjeldatud paketifiltris kasutatavad tabelid
 +
 
 +
  # spoofed
 +
  table <spoofed> persist const { 10.0.0.0/8 172.16.0.0/12 169.254.0.0/16 192.168.0.0/16 224.0.0.0/4 }
 
    
 
    
  dns        = "192.168.96.222"        # dns server
+
   # Reserveeritud http://www.iana.org/assignments/ipv4-address-space
  ntp        = "192.168.38.1"        # ntp server
+
   table <reserved> persist const file "/etc/tbl/pf.table.reserved"
  ftp        = "192.168.32.82"        # ftp server
+
 
  ocsp        = "192.168.42.42"        # ocsp server
+
====/etc/tbl/pf.options====
  serv_real_SMTP            = "192.168.100.25"    # smtp server, teenus
+
 
  serv_real_HTTP            = "192.168.100.80"    # http server, teenus
+
Failis /etc/tbl/pf.options on kirjeldatud paketifiltri nn optionid
  serv_teenus_SMTP            = "172.16.1.25"    # smtp server, teenus
+
 
  serv_teenus_HTTP            = "172.16.1.80"    # http server, teenus
+
   set state-defaults pflow
 
+
   set limit states 20000
  icmp_types      = "echoreq"
+
   set limit src-nodes 15000
  tcpopts        = "flags S/SA modulate state"
+
   set block-policy return
  synopts        = "flags S/SAFR synproxy state"
+
   set loginterface $if_avalik
  udpopts        = "keep state"
 
 
 
  ######### TABLES ##########
 
  # 
 
  # 10.0.1.18        - loomaaia tulemüüri ühe halduri töökohaarvuti ip aadress
 
  # 10.50.1.19      - loomaaia tulemüüri teise halduri töökohaarvuti ip aadress
 
  table <kontor> const { 192.168.10.10 }
 
 
 
   # Reserveeritud. http://www.iana.org/assignments/ipv4-address-space
 
   table <reserved> const file "/etc/pf.tbl/reserved"
 
 
 
  # Valetatud aadressid.
 
  table <spoofed> const { 10.0.0.0/8 169.254.0.0/16 172.16.0.0/12 \
 
                        192.0.2.0/24 192.168.0.0/16 224.0.0.0/4 }
 
  # Blacklist
 
  table <blacklist> persist file "/etc/pf.tbl/blacklist"
 
 
 
  ######### OPTIONS #########
 
  #
 
   set loginterface $if_ext
 
   set optimization aggressive
 
  set timeout tcp.established 300
 
   set limit states 500000
 
   set limit frags 100
 
   set timeout tcp.first 15
 
 
   set skip on lo
 
   set skip on lo
  # set skip on $if_int
 
  set timeout tcp.closed 50
 
 
 
  ######### TRANSLATION ##########
 
  #
 
  # teisendus ligipääsuks postimasinasse
 
  rdr on $if_ext inet proto tcp to 172.16.1.25 port 25 tag TO_SMTP -> 192.168.100.25
 
  # teisendus ligipääsuks veebiserverisse
 
  rdr on $if_ext inet proto tcp to 172.16.1.80 port { 80, 443 } tag TO_HTTPS -> 192.168.100.80
 
 
 
  # teisendus postimasina väljapääsemiseks avalikku võrku
 
  nat pass on $if_ext tagged FROM_SMTP -> 172.16.1.25
 
  # teisendus veebiserveri väljapääsemiskeks avalikku võrku
 
  nat pass on $if_ext tagged FROM_HTTP -> 172.16.1.80
 
 
 
  ######### FILTER ##########
 
  #
 
  # HALDUSLIGIPÄÄS AVALIKUST VÕRGUST TULEMÜÜRI
 
  #
 
  # ssh kaugligipaas haldusest
 
  pass in quick on $if_ext inet proto tcp from <kontor> to $if_ext port 22 $tcpopts (tcp.established 1064000) label "JSext_kontor"
 
 
 
  #
 
  # VAIKIMISI ON LIIKLUS KEELATUD
 
  #
 
  # Igasugune liiklus läbi tulemüüri võrguseadmete on vaikimisi keelatud
 
  # keelatud on sissepääs, väljapääs ja igas suunas läbipääs
 
  block in      on $if_ext label "ESext_vaikimisi"
 
  block out log on $if_ext label "EVext_vaikimisi"
 
  block in  log on $if_int label "ESint_vaikimisi"
 
  block out log on $if_int label "EVint_vaikimisi"
 
 
 
  #
 
  # BLACKLISTITUD, SPOOFITUD ja RESERVED LIIKLUSE KEELAMINE
 
  #
 
  # Avalikust võrgust tulemüüri taha läbivale liiklusele keelu
 
  block in quick on $if_ext from <blacklist> label "ESe_blacklist"
 
  block in quick on $if_ext from <spoofed> label "ESe_spoofed"
 
  block in quick on $if_ext from <reserved> label "ESe_reserved"
 
  #
 
  # NORMAALSE LIIKLUSE LÄBIPÄÄSU LUBAMINE AVALIKUST VÕRGUST TULEMÜÜRI TAHA
 
  #
 
  # Avalikust võrgust tulemüüri taha läbiv liikluse sisenemise lubamine
 
  pass in quick on $if_ext inet tagged TO_HTTP $synopts label "JSext_http"
 
  pass in quick on $if_ext inet tagged TO_SMTP $synopts label "JSext_smtp"
 
 
 
  # Läbipääseva TO_HTTP ja TO_SMTP liikluse väljumise lubamine
 
  pass out quick on $if_int tagged TO_HTTP  label "JVint_http"
 
  pass out quick on $if_int tagged TO_SMTP  label "JVint_smtp"
 
 
 
  #
 
  # LÄBIPÄÄSU LUBAMINE TULEMUURI TAGANT AVALIKKU VÕRKU
 
  # et teenusserverite kellaaeg oleks õige
 
  pass in quick on $if_int inet proto udp from { $serv_HTTP, $serv_SMTP } to $ntp port 123 tag TO_NTP $udpopts label "JSint_ntp"
 
  # et teenusserveid saaks nimesid lahendada
 
  pass in quick on $if_int inet proto { tcp, udp } from { $serv_HTTP, $serv_SMTP } to $dns port 53 tag TO_DNS $udpopts label "JSint_dns"
 
  # et veebiserver saaks kontrollida kliendisertifikaatide kehtivust
 
  pass in quick on $if_int inet proto tcp from $serv_HTTP to $ocsp port 80 tag TO_OCSP $tcpopts label "JSint_ocsp"
 
  # et veebiserver saaks saata süsteemseid teateid 
 
  pass in quick on $if_int inet proto tcp from $serv_HTTP to $smtp port 25 tag FROM_SMTP $tcpopts label "JSint_smtp"
 
  # et postimasin saaks kirju valja saata
 
  pass in quick on $if_int inet proto tcp from $serv_SMTP to any port 25 tag FROM_SMTP $tcpopts label "JSint_smtp"
 
 
 
  # et tagitud liiklus saaks tulemüürist välja
 
  pass out quick on $if_ext tagged FROM_SMTP label "JVext_from_stmp"
 
  pass out quick on $if_ext tagged FROM_HTTP label "JVext_from_http"
 
  pass out quick on $if_ext tagged TO_OCSP label "JVext_ocsp"
 
  pass out quick on $if_ext tagged TO_NTP label "JVext_ntp"
 
  pass out quick on $if_ext tagged TO_DNS label "JVext_dns"
 
 
 
  #
 
  # TULEMÜÜRIST ENDAST VÄLJAPÄÄS
 
  #
 
  # et tulemüüri kellaaeg oleks õige
 
  pass out on $if_ext inet proto udp to $ntp port 123 label "JVext_ntp"
 
  # et tulemüüri sees nimelahendus töötaks
 
  pass out on $if_ext inet proto { tcp, udp } to $dns port 53 label "JVext_to_dns"
 
  # et haldusteated saaksid välja
 
  pass out on $if_ext inet proto tcp to $smtp port 25 $tcpopts label "JVext_to_smtp"
 
  # et tulemüüri saaks tarkvara lisada
 
  pass out on $if_ext inet proto tcp to $ftp port 80 $tcpopts label "JVext_to_ftp"
 

Redaktsioon: 14. juuni 2009, kell 12:46

Eesmärk

Olgu eesmärgiks ühendada tulemüüri abil internetiga mitu privaatseid aadresse kasutavate serverite võrgusegmenti

                                internet (AVALIK)
 
  www    
  .13.90
   |                                  |
   |   smtp                           |   em0, 192.168.102.35/28
   |  .13.200                       __|__  
   |   |                           |     | 
   |   |                      em1  |     | em4
  -|---|- ARENDUS 10.10.13.1/24 ---|     |---------------- HALDUS 10.10.5.1/24---|----------|---
                                   |     |                                       |          |
  -|---|- TEST 10.10.7./24 --------|_____|                                     __|__      __|__
   |   |                      em2     |    em3                                |     |    |     |
   |   |                              |                                       |_____|    |_____|
   |  .7.200                          |                                       varundus   monitooring
   |   smtp                           |                                         .5.19      .5.10
   |                                  |
  www                                 '------- TOODANG - 10.10.6.1/24 --|---------|-----
  .7.90                                                                 |         |
                                                                      __|__     __|__
                                                                     |     |   |     |
                                                                     |_____|   |_____|
                                                                      wwww      smtp
                                                                     .6.90      .6.200
  • AVALIK - avalik võrk st internet, kust pöörduvad kliendid, sh arendajad
  • ARENDUS - arendusvõrk, toimub teenuste arendus
  • TEST - testvõrk, toimub teenuste testimine
  • TOODANG - toodanguvõrk, toimub avalike teenuste pakkumine
  • HALDUS - haldusvõrk, toimub haldus, nt monitooring ja varundamine

Peavad olema täidetud sellised nõuded

Tulemüür on liikluse lähte või sihtpunkt

Sissepääs tulemüüri

  • haldusligipääs ssh, 22/tcp, piiratud ip aadressidelt

Väljapääs tulemüürist

  • kellaaeg ntp, 123/udp
  • nimeteenus, 53/udp,tcp
  • süsteemsed teated smtp, 25/tcp
  • tarkvara paigaldamine ftp serverist, 80/tcp

Tulemüürist läbipääs kõigist võrkudest kõigisse võrkudesse

  • icmp - et saaks ping abil mugavalt kontrollida arvutite olemasolu

Tulemüürist läbipääs kõigist võrkudest määratletud sihtvõrku

Läbipaas kõigist võrkudest AVALIK võrku

  • kellaaeg ntp, 192.168.38.1:123/udp
  • nimeteenus, 192.168.96.222:53/udp,tcp
  • süsteemsed teated smtp, 192.168.32.85:25/tcp
  • ocsp, 192.168.42.42:80/tcp

Läbipääs kõigist võrkudest TOODANG võrku

  • www, 192.168.102.35:80,443/tcp -> 10.10.6.90:80,443/tcp
  • smtp, 192.168.102.35:25/tcp -> 10.10.6.200:25/tcp

Läbipääs kõigist võrkudest ARENDUS võrku

  • www, 192.168.102.36:80,443/tcp -> 10.10.13.90:80,443/tcp
  • smtp, 192.168.102.36:25/tcp -> 10.10.13.200:25/tcp

Läbipääs kõigist võrkudest TEST võrku

  • www, 192.168.102.37:80,443/tcp -> 10.10.7.90:80,443/tcp
  • smtp, 192.168.102.37:25/tcp -> 10.10.7.200:25/tcp

Tulemüürist läbipääs määratletud lähtevõrgust kõigisse võrkudesse

Läbipääs HALDUS võrgust kõigidesse võrkudesse

  • üle ssh rsync 10.10.5.19 -> *:22/tcp
  • nagios 10.10.5.10 -> *:5666/tcp

Paketifiltri seadistusfaili põhimõtteskeem

Paketifiltri kirjutamisel tuleb teha tavaliselt kopromiss täpsuse ja üldisuse vahel. Nii võiks tekkida piisavalt turvaline tulemüür ja mille keerukus võimaldab teda veel hallata.

Enam kui kahe võrgukaardiga aadressteisendav tulemüür on suhteliselt üldine ja keerukas juhtum, mille lahendamisel tuleks silmas pidada, et kui mitte päris kõikvõimalikke juhtumeid arvesse võttes ja jäädes nö praktiliseks, võiks liiklust võiks jaotada nelja gruppi

  • lubatud siseneda kõigist seadmetest ja väljuda kõigist seadmetest - icmp ping, ping võiks võrkude vahel lahti jääda, et saaks kõikjalt kõike kontrollida; kuivõrd tulemüüri taga olevad võrgud kasutavad privaatseid aadresse ja ping'ile rdr-teisendusi mitte rakendades avalikust võrgust servereid pingida ei saa
  • lubatud siseneda kõigist seadmetest ja väljuda konkreetsest seadmest - tundub mõistlik, et kui nt avalikust võrgust on lubatud kasutada toodangu võrgu teenuseid, siis võiks lubada neid kasutada ka kõigist muudest võrkudest (arendus, test ja halduse); seda tehes saab kirjutada üldisema st vähemat hulka reegleid sisaldava paketifiltri seadistusfaili
  • lubatud siseneda konkreetsest seadmest ja väljuda kõigist seadmetest - sellise iseloomuga on nt monitooringu ja varundamisega seotud liiklust, ühest võrgust saab ligi kõigis võrkudes olevate arvutite poole; sellesse kategooriasse võiks minna kõik mitte avalike teenustega seotud reeglid, piirates konkreetsest seadmest sisenemist annab täiesti rahuldava turvalisuse
  • lubatud siseneda ühest konkreetsest seadmest ja väljuda teisest konkreetsest seadmest - sellistel reeglitel on kõige suurem täpsus, kuid nende kasutamine muudab paketifiltri seadistusfaili kiiresti suureks, selliseid reegleid tuleks võimalusel vältida

Ülesande lahendamiseks sobib kasutada sellise ülesehitusega paketifiltri seadistusfaili

 # MACROS and LISTS
 include "/etc/pf.macros-and-lists"
 
 # TABLES
 include "/etc/pf.tables"
 
 # OPTIONS
 include "/etc/pf.options"
 
 ######### TRANSLATION ##########
 #
 # et kõigist privaatsetest võrkudest avalikku vorku minevatel pakettidel oleks sobivad avalikud src aadressid
 # reeglid kasutavad pakettidel olevaid silte
 nat-anchor nat_to_avalik on $if_avalik
 load anchor nat_to_avalik from "/etc/pf.anchor-nat_to_avalik"
 
 # et toodangu vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega
 nat on $if_toodang from $carp_toodang:network:0 tagged TO_TOODANG -> $carp_toodang:0
 # et arenduse vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega
 nat on $if_arendus from $carp_arendus:network:0 tagged TO_ARENDUS -> $carp_arendus:0
 # et testi vorgust saaks arvutid iseenda poole pöörduda avalike teenuste ip aadressidega
 nat on $if_test from $carp_test:network:0 tagged TO_TEST -> $carp_test:0
 
 # koigil seadmetel RDR-teisendused pakettide toodangukeskkonna serveritele jõudmiseks
 # reeglid rakendavad pakettidele sildi TO_TOODANG
 rdr-anchor rdr_to_toodang on seadmed
 load anchor rdr_to_toodang from "/etc/pf.anchor-rdr_to_toodang"
 
 # koigil seadmetel RDR-teisendused pakettide arenduskeskkonna serveritele jõudmiseks
 # reeglid rakendavad pakettidele sildi TO_ARENDUS
 rdr-anchor rdr_to_arendus on seadmed
 load anchor rdr_to_arendus from "/etc/pf.anchor-rdr_to_arendus"
 
 # koigil seadmetel RDR-teisendused pakettide testkeskkonna serveritele jõudmiseks
 # reeglid rakendavad pakettidele sildi TO_TEST
 rdr-anchor rdr_to_test on seadmed
 load anchor rdr_to_test from "/etc/pf.anchor-rdr_to_test"
 
 # koigil seadmetel RDR-teisendused pakettide halduskeskkonna serveritele jõudmiseks
 # reeglid rakendavad pakettidele sildi TO_HALDUS
 rdr-anchor rdr_to_haldus on seadmed
 load anchor rdr_to_haldus from "/etc/pf.anchor-rdr_to_haldus"
 
 ######### FILTER ##########
 # TULEMÜÜRI ENDASSE SISSEPÄÄS
 #
 # ssh kaugligipaas tulemüüri endasse, tulemüüri haldamiseks
 pass in quick on $if_avalik inet proto tcp from <kontor> to $if_avalik port 22 label "JSavalik_from_kontor"
 
 # vaikimisi blokeeritakse igasugust liiglust läbi tulemüüri seadmete
 block all
 
 # pingida on lubatud piiramatult
 pass quick on seadmed inet proto icmp icmp-type echoreq label "JSVsmd_proto_icmp"
 
 # TULEMÜÜRIST LÄBIPÄÄS
 # 
 # lubatakse sisse RDR-teisendusest saadud siltidega pakette
 pass in quick on seadmed tagged TO_TOODANG label "JSsmd_to_toodang"
 pass in quick on seadmed tagged TO_ARENDUS label "JSsmd_to_arendus"
 pass in quick on seadmed tagged TO_TEST label "JSsmd_to_test"
 pass in quick on seadmed tagged TO_HALDUS label "JSsmd_to_haldus"
 
 # lubatakse välja RDR teisendusest ja PASS_IN_FROM_SEADMED_TO_VORK ankrutest saadud TO_* tagidega 
 # liiklust kontreetsetest seadmetest
 pass out quick on $if_toodang tagged TO_TOODANG label "JVtoodang"
 pass out quick on $if_arendus tagged TO_ARENDUS label "JVarendus"
 pass out quick on $if_test tagged TO_TEST label "JVtest"
 pass out quick on $if_haldus tagged TO_HALDUS label "JVhaldus"
 pass out quick on $if_avalik tagged TO_AVALIK label "JVavalik"
 
 # lubatakse sisse ja sildistatakse kõigist võrkudest konkreetsesse võrku suunduvat liiklust
 # selline iseloom on koigist vorkudest avalikku vorku mineval liiklusel, nt ntp ja ocsp teenus
 # rakendadakse silt TO_AVALIK
 anchor pass_in_from_seadmed_to_avalik on seadmed
 load anchor pass_in_from_seadmed_to_avalik from "/etc/pf.anchor-pass_in_from_seadmed_to_avalik"
 
 # lubatakse sisse ja sildistatakse konkreetsetest vorgudest kõigisse võrkudesse suunduvat liiklust
 # selline iseloom on nt monitooringul ja varundamisel; selle abil saab rangemalt piirata ka vorkude
 # kaupa avalikku internetti pääsemist erineval määral
 # sildistatakse lähtevork, nt FROM_HALDUS
 anchor pass_in_from_haldus_to_seadmed on $if_haldus label "JShaldus_from_haldus_to_seadmed"
 load anchor pass_in_from_haldus_to_seadmed from "/etc/pf.anchor-pass_in_from_haldus_to_seadmed"
 
 # kõigist seadmetest lubatakse välja FROM_* siltidega liiklust
 pass out quick on seadmed tagged FROM_HALDUS label "JVsmd_from_haldus_to_seadmed"
 
 #
 # TULEMÜÜRIST ENDAST VÄLJAPÄÄS
 #
 # et tulemüüri kellaaeg oleks õige
 pass out on $if_avalik inet proto udp to $ntp port 123 label "JVavalik_ntp"
 # et tulemüüri sees nimelahendus töötaks
 pass out on $if_avalik inet proto { tcp, udp } to $dns port 53 label "JVavalik_to_dns"
 # et haldusteated saaksid välja
 pass out on $if_avalik inet proto tcp to $smtp port 25 $tcpopts label "JVavalik_to_smtp"
 # et tulemüüri saaks tarkvara lisada
 pass out on $if_avalik inet proto tcp to $ftp port 80 $tcpopts label "JVavalik_to_ftp"
 
 # tulemüürist endast on ei ole küll põhimõtteliselt vaja saada kõigisse arvutitesse pöörduda,
 # aga praktiliselt on see võimalus hea
 
 pass out quick on $if_arendus inet from $if_arendus to $if_arendus:network:0 label "JVarendus_from_tulemuur_ise_to_arendus"
 pass out quick on $if_test inet from $if_test to $if_test:network:0 label "JVtest_from_tulemuur_ise_to_test"
 pass out quick on $if_haldus inet from $if_haldus to $if_haldus:network:0 label "JVhaldus_from_tulemuur_ise_to_haldus"

Märkused

  • Parema ülevaatlikkuse huvides on tulemüüri seadistusfaili sisu jagatud mitmete failide vahel, on kasutataud include ja ankru konstruktsiooni
  • Praktiliselt kõige ees vaikimisi blokeeritakse kõike liiklust, mida edasised reeglida ei luba
  • Kasutatakse kõiki tulemüüri em seadmeid sisaldavat seadmete gruppi 'seadmed', et reegleid saaks esitada ülevaatlikumalt.
  • Ankru kasutamisel tuleb ankur enne seada (anchor ...) ja pärast laadida (load anchor ..)
  • Toodangu, arenduse ja testkeskkondadest saavad tänu NAT-teisendusele arvutid pöörduda oma võrgu sh iseenda poole oma avaliku teenuse aadressiga (src aadressiks kujuneb sel juhul tulemüüri vastava priv võrgu poolse seadme .1 aadress)
  • Tulemüüris töötavad ennekõike pakette sisse lubavad reeglid kuigi tulemüüri läbivat paketti kontrollitakse ka enne väljumist; sel põhjusel võiks kirjutada nt kahe sisemise võrgu vahel liiklust FROM_* siltidega st 'pass_in_from_haldus_to_seadmed' moodi reeglitega; pass_in_from_seadmed_to_avalik moodi reegleid tuleks kasutada ainult põhjendatud vajadusel, sest see reegel on ohtlik kuna ta rakendub kõigil seadmetel.
  • Vajadusel võib lisada pass_in_from_yksvork_to_teine_vork ankruid, seejuures peab arvestama tasakaaluga tulemüüri töötamise efektiivsuse ja tulemüüri hallatavuse seisukohta - suurema arvu ja lühemate ankrutega töötab tulemüür tõenäoliselt kiiremini kuid reeglibaasi haldamine on tõenäoliselt tülikam.
  • Selgelt on eristatud tülemüüri endasse sisenev, tulemüüri läbiv ja tulemüürist väljuv liiklus
  • FILTER sektsioonis on esmalt esitatud teenuse pakkumisega seotud liiklus, sisenev ja väljuv, et vastavaid pakette saaks paketifilter kiiremini käsitleda

Include failid

Eelmises punktis esitatud pf.conf failis kasutatakse paketifiltri seadistuste hoidmist mitmes erinevas failis selleks, et pf.conf oleks ülevaatlikum. Osad ühendatakse kokku include ning anchor directiivide abil ja vastavaid faile hoitakse kataloogis /etc/tbl, et nad ei risustaks /etc kataloogi.

/etc/tbl/pf.macros-and-lists

Failis /etc/tbl/pf.macros-and-lists on kirjeldatud paketifiltris kasutatud muutujad ja nimekirjad (ingl. k. list)

 # OPTIONS
 tcpopts="flags S/SA modulate state"
 synopts="flags S/SAFR synproxy state"
 udpopts="keep state"
 icmp_types="echoreq"
 # VORGUSEADMED
 if_avalik="em0"
 if_arendus="em1"
 if_test="em2"
 if_toodang="em3"
 if_haldus="em4"
 carp_avalik="carp0"
 carp_arendus="carp1"
 carp_test="carp2"
 carp_toodang="carp3"
 carp_haldus="carp4"

/etc/tbl/pf.tables

Failis /etc/tbl/pf.tables on kirjeldatud paketifiltris kasutatavad tabelid

 # spoofed
 table <spoofed> persist const { 10.0.0.0/8 172.16.0.0/12 169.254.0.0/16 192.168.0.0/16 224.0.0.0/4 }
 
 # Reserveeritud http://www.iana.org/assignments/ipv4-address-space
 table <reserved> persist const file "/etc/tbl/pf.table.reserved"

/etc/tbl/pf.options

Failis /etc/tbl/pf.options on kirjeldatud paketifiltri nn optionid

 set state-defaults pflow
 set limit states 20000
 set limit src-nodes 15000
 set block-policy return
 set loginterface $if_avalik
 set skip on lo