##################
#####HELP#########
##################
####################################################
#To view the logfiles: #
# tcpdump -n -e -ttt -r /var/log/pflog #
####################################################
#To tail -f the logfile: #
# tcpdump -n -e -ttt -i pflog0 #
####################################################
#Use pfctl -s nat to show the effective nat-rules#
####################################################
#Use pfctl -s rules to show your effective pf-rules#
####################################################
#Use pfctl -t
persist
table const { 192.168.0.0/16, 127.0.0.0/8, 172.16.0.0/12, 10.0.0.0/8, 0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 204.152.64.0/23, 224.0.0.0/3, 255.255.255.255/32 }
################################################
#####OPTIONS####################################
set block-policy drop
set loginterface $EXT_IF
set optimization aggressive
set ruleset-optimization basic
set skip on lo0
################################################
#####SCRUB#####################################################
scrub on $EXT_IF all fragment reassemble random-id max-mss 1488
###############################################################
##########################################################################################################################
##########################################################################################################################
##########################################################################################################################
##########################################################################################################################
#####QUEUEING#############################################################################################################
##########################################################################################################################
#####ALTQ##PRIQ############################################################################
altq on $EXT_IF priq bandwidth 800Kb queue { std_out, www_out, httpd_out, ssh_im_out, dns_out, tcp_ack_out }
queue std_out priq(default)
queue www_out priority 3 priq(red)
queue httpd_out priority 4 priq(red)
queue ssh_im_out priority 5 priq(red)
queue dns_out priority 6
queue tcp_ack_out priority 7
###########################################################################################
#####ALTQ##CBQ#############################################################################
#altq on $INT_IF cbq bandwidth 16Mb queue { std_in, ssh_im_in, dns_in, clients_in }
#queue std_in bandwidth 600Kb cbq(default)
#queue ssh_im_in bandwidth 200Kb priority 4
#queue dns_in bandwidth 200Kb priority 5
#queue clients_in bandwidth 15Mb { silverstar_in, galaxia_in, solaris_in, celestialnexus_in, wii_in, xbox_in, ps3_in }
# queue silverstar_in bandwidth 1Mb cbq(borrow)
# queue galaxia_in bandwidth 1Mb cbq(borrow)
# queue solaris_in bandwidth 5Mb cbq(borrow)
# queue celestialnexus_in bandwidth 5Mb cbq(borrow)
# queue wii_in bandwidth 1Mb cbq(borrow)
# queue xbox_in bandwidth 1Mb cbq(borrow)
# queue ps3_in bandwidth 1Mb cbq(borrow)
#########################################################################################################################
#########################################################################################################################
#########################################################################################################################
############################################################################################################################
#####NAT&REDIRECTS##########################################################################################################
############################################################################################################################
#####NAT###############################################
nat on $EXT_IF from $INT_IF:network to any -> ($EXT_IF)
#######################################################
#####FTP#PROXY################################################################
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr pass on $INT_IF proto tcp from any to any port ftp -> 127.0.0.1 port 8021
##############################################################################
#####FORWARDING##SERVER##############################################################
rdr on $EXT_IF proto tcp from any to ($EXT_IF) port $SILVERSTARFWD -> $SILVERSTAR
#####################################################################################
#####FORWARDING#CLIENTS###############################################################
rdr on $EXT_IF proto tcp from any to ($EXT_IF) port $BITTORRENT -> $SOLARIS
rdr on $EXT_IF proto { tcp, udp } from any to ($EXT_IF) port $AIM -> $CELESTIALNEXUS
######################################################################################
############################################################################################################################
############################################################################################################################
############################################################################################################################
##################
#####DEBUG########
##################
###################
#pass in quick all
#pass out quick all
###################
############################################################################################################################
#####DEFAULTS###############################################################################################################
############################################################################################################################
######DEFAULT########################
block log
block log quick from
#####################################
#####INTERNAL#NETWORK##########
pass quick on $INT_IF no state
###############################
#####PORTSCAN#######################
block log quick proto tcp flags /S
block log quick proto tcp flags A/A
####################################
####ANTI#SPOOF#############################################
antispoof for { $EXT_IF, $INT_IF } inet
block out log quick on $EXT_IF inet from !($EXT_IF) to any
block drop in quick on $EXT_IF from to any
block drop out quick on $EXT_IF from any to
###########################################################
##Allow#incoming#traffic#to#ftp#proxy###################
anchor "ftp-proxy/*"
########################################################
#######################################################################################################################
#######################################################################################################################
#######################################################################################################################
#######################################################################################################################
############OUTGOING##CONNECTIONS###INTERNET##PROTOCOLS##############################################################
#######################################################################################################################
#####UDP#ICMP############################################################################################
pass out quick on $EXT_IF inet proto { tcp udp } from ($EXT_IF) to any port domain queue dns_out
pass out quick on $EXT_IF inet proto { udp icmp } from ($EXT_IF) to any queue std_out
#########################################################################################################
#####TCP#OUT#############################################################################################
pass out quick on $EXT_IF inet proto tcp from ($EXT_IF) to any port $WWW queue(www_out, tcp_ack_out)
pass out quick on $EXT_IF inet proto tcp from ($EXT_IF) to any port $IM queue(ssh_im_out, tcp_ack_out)
pass out quick on $EXT_IF inet proto tcp from ($EXT_IF) to any port $SSH queue(std_out, ssh_im_out)
pass out quick on $EXT_IF inet proto tcp from ($EXT_IF) to any modulate state queue(std_out, tcp_ack_out)
#########################################################################################################
#######################################################################################################################
#######################################################################################################################
#######################################################################################################################
################################################################################################################
#####INCOMING#SILVERSTAR########################################################################################
################################################################################################################
######INCOMING###ICMP#############################################################
pass in quick inet proto icmp all icmp-type $ICMP_TYPES
##################################################################################
######INCOMING###SSH###BRUTEFORCE#################################################
pass in log quick proto { tcp, udp } from any to ($EXT_IF) port ssh \
synproxy state \
(max-src-conn 15, max-src-conn-rate 5/3, \
overload flush global) \
queue (std_out, ssh_im_out)
##################################################################################
######INCOMING###FTP###BRUTEFORCE#################################################
pass in log quick inet proto tcp from any to $SILVERSTAR port ftp \
synproxy state \
(max-src-conn 15, max-src-conn-rate 5/3, \
overload flush global) \
queue (httpd_out, tcp_ack_out)
##################################################################################
###INCOMING###www###########BRUTEFORCE############################################
#pass in log quick inet proto tcp from any to $SILVERSTAR port www \
# synproxy state \
# (max-src-conn 300, max-src-conn-rate 100/1, \
# overload flush global) \
# queue (httpd_out, tcp_ack_out)
pass in log quick inet proto tcp from any to $SILVERSTAR port www \
synproxy state \
queue (httpd_out, tcp_ack_out)
##################################################################################
################################################################################################################
################################################################################################################
################################################################################################################
################################################################################################################
#####INCOMING#CLIENTS###########################################################################################
################################################################################################################
#####INCOMING#CLIENTS###############################################################################################
pass in quick on $EXT_IF inet proto tcp from any to $SOLARIS port $BITTORRENT queue (std_out, tcp_ack_out)
pass in quick on $EXT_IF inet proto { tcp, udp } from any to $CELESTIALNEXUS port $AIM queue (std_out, tcp_ack_out)
####################################################################################################################
################################################################################################################
###EOF##########################################################################################################
################################################################################################################