# PF configuration for Central de Vendas Informatica LTDA.
# admin@centralinf.com.br
# macros.
ext_if = "xl0"
int_if = "re0"
int_odin= "192.168.1.134"
ext_odin= "201.12.35.52"
priv_nets = "{ 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 }"
priv_users = "{ 192.168.1.120, 192.168.1.121, 192.168.1.122, 192.168.1.123 }"
# options.
set block-policy return
set loginterface $ext_if
set skip on lo
# scrub.
scrub in all fragment reassemble
# nat.
nat on $ext_if from $int_if:network to any -> $ext_if:0
nat-anchor "ftp-proxy/*"
# ftp-proxy.
rdr-anchor "ftp-proxy/*"
rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
# transparent proxy.
rdr on $int_if proto tcp from any to any port 80 -> 127.0.0.1 port 3128
# tomcat and ftp redirect to odin.
rdr on $ext_if proto tcp from any to $ext_odin -> $int_odin
# filter rules.
# block everything.
block all
# allow all traffic on $int_if.
pass quick on $int_if
# antispoof and ftp-proxy anchor.
antispoof quick for { lo, $int_if }
anchor "ftp-proxy/*"
# block privileged nets.
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
# block msn.
block drop quick inet proto tcp from any to any port 1863
# allow msn to priv_users ;).
pass out on $ext_if inet proto tcp from $priv_users to any \
port 1863 modulate state flags S/SA
# allow ping.
pass in quick inet proto icmp all icmp-type echoreq keep state
# allow vpn (1723) and tun interfaces.
pass in quick on $ext_if inet proto tcp from any to ($ext_if) \
port 1723 modulate state flags S/SA
pass in quick on $ext_if inet proto gre from any to ($ext_if) \
keep state
pass in quick on tun all
pass out quick on tun all
# allow ssh from internal network.
pass in quick on $int_if inet proto tcp from any to \
any port ssh flags S/SA keep state
# pass out all tcp, udp and icmp.
pass out quick on $ext_if inet proto tcp all modulate state flags S/SA
pass out quick on $ext_if inet proto { udp, icmp } all keep state