PF Basics
Basic Ruleset
- Full Connectifity v4/v6
- allow SSH in from RFC1918
- allow all outgoing
# Backup
cp /etc/pf.conf /etc/pf.conf.bak-$(date "+%s")
# Paste new Ruleset
cat << 'EOF' > /etc/pf.conf
#######################################################################################################################
#
# OpenBSD PF Template
#
#######################################################################################################################
########################
### DEFAULT SETTINGS ###
########################
set block-policy drop
set limit states 100000
set limit table-entries 1000000
set optimization normal
set ruleset-optimization none
set skip on { lo0 enc0  }
set syncookies adaptive (start 25%, end 12%)
########################
### MACROS           ###
########################
# log block
lb  = "log"
# log pass
lp  = "log"
########################
### NORMALIZATION    ###
########################
match inet  scrub (no-df max-mss 1380)
match inet6 scrub (max-mss 1360)
########################
### Block all / uRPF ###
########################
block     log
block in  log quick from urpf-failed label uRPF
############################
### DHCP & IPv6 Stuff    ###
############################
# Allow DHCP
pass      $lp quick inet  proto udp       from  any     port 68   to 255.255.255.255  port 67
pass      $lp quick inet  proto udp       from  any     port 68   to (self)           port 67
pass      $lp quick inet  proto udp       from  (self)  port 67   to any              port 68
# In
pass in   $lp quick inet6 proto ipv6-icmp all                           icmp6-type { unreach toobig neighbrsol neighbradv } keep state
# Out
pass out  $lp quick inet6 proto ipv6-icmp from (self)     to fe80::/10  icmp6-type { echoreq echorep neighbradv neighbrsol routeradv routersol } keep state
pass out  $lp quick inet6 proto ipv6-icmp from (self)     to ff02::/16  icmp6-type { echoreq echorep neighbradv neighbrsol routeradv routersol } keep state
# In
pass in   $lp quick inet6 proto ipv6-icmp from fe80::/10  to fe80::/10  icmp6-type { echoreq neighbradv neighbrsol routeradv routersol } keep state
pass in   $lp quick inet6 proto ipv6-icmp from fe80::/10  to ff02::/16  icmp6-type { echoreq neighbradv neighbrsol routeradv routersol } keep state
pass in   $lp quick inet6 proto ipv6-icmp from ff02::/16  to fe80::/10  icmp6-type { echoreq neighbradv neighbrsol routeradv routersol } keep state
pass in   $lp quick inet6 proto ipv6-icmp from ::         to ff02::/16  icmp6-type { echoreq neighbradv neighbrsol routeradv routersol } keep state
############################
### MyTrust for Hosts    ###
############################
# Allow RFC1918
pass in   $lp quick inet  proto tcp   from { 10/8 172.16/12 192.168/16 }             to (self) port 22
# Allow all Out
pass out  $lp quick
#######################################################################################################################
# End
#######################################################################################################################
EOF
# check & reload
pfctl -nf /etc/pf.confad && pfctl -f /etc/pf.conf
Any Comments ?
sha256: e41b3f0d6bbb5edf23921f2f8bdc7fc83b9ed8676d7e3e62b746af25aae2f30c