# $FreeBSD: src/etc/pf.conf,v 1.2.2.1 2006/04/04 20:31:20 mlaier Exp $ # $OpenBSD: pf.conf,v 1.21 2003/09/02 20:38:44 david Exp $ # # See pf.conf(5) and /usr/share/examples/pf for syntax and examples. # Required order: options, normalization, queueing, translation, filtering. # Macros and tables may be defined and used anywhere. # Note that translation rules are first match while filter rules are last match. ## Macros: define common values, so they can be referenced and changed easily. ext_if="vr0" external_addr="XXXXXXXXX" icmp_types = "echoreq" ## Tables: similar to macros, but more flexible for many addresses. #table { 10.0.0.0/8, !10.1.0.0/16, 192.168.0.0/24, 192.168.1.18 } ## Options: tune the behavior of pf, default values are given. #set timeout { interval 10, frag 30 } #set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 } #set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 } #set timeout { udp.first 60, udp.single 30, udp.multiple 60 } #set timeout { icmp.first 20, icmp.error 10 } #set timeout { other.first 60, other.single 30, other.multiple 60 } #set timeout { adaptive.start 0, adaptive.end 0 } #set limit { states 10000, frags 5000 } set loginterface $ext_if set optimization normal #set block-policy drop #set require-order yes #set fingerprints "/etc/pf.os" ## Normalization: reassemble fragments and resolve or reduce traffic ambiguities. scrub in all ## Queueing: rule-based bandwidth control. #altq on $ext_if bandwidth 2Mb cbq queue { dflt, developers, marketing } #queue dflt bandwidth 5% cbq(default) #queue developers bandwidth 80% #queue marketing bandwidth 15% ## Translation #nat on $ext_if from $internal_net to any -> ($ext_if) ## redirections #rdr on $ext_if proto tcp from any to $external_addr/32 port 1234 -> 10.1.1.1 port 5678 ## spamd-setup puts addresses to be redirected into table . #table persist #no rdr on { lo0, lo1 } from any to any #rdr inet proto tcp from to any port smtp -> 127.0.0.1 port 8025 block log all ### Localhost pass out quick on lo0 all pass in quick on lo0 all #### ALL IN rules ## SHH pass in log on $ext_if proto tcp from any to $ext_if port 553 keep state ## Ident pass in log on $ext_if proto tcp from any to $ext_if port 113 keep state ## DNS pass in log on $ext_if proto { tcp, udp } from any to $ext_if port 53 flags S/SA keep state ## PING pass in inet proto icmp all icmp-type echoreq keep state ### ALL OUT rules pass out all