Tous les collages #523687 Brut Modifier

Dryanta

public text v1 · immuable
#523687 ·publié 2007-05-30 21:23 UTC
corps du collage affiché
# Macros: define common values, so they can be referenced and changed easily.
ext_if="sis0"   # replace with actual external interface name i.e., dc0
int_if="gif0"   # replace with actual internal interface name i.e., dc1
internal_net="10.0.1.0/8"
external_addr="65.39.xxx.xxx"
dev_addr="65.39.xxx.xxx"

# Tables: similar to macros, but more flexible for many addresses.
#table <foo> { 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 none
#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: specify how addresses are to be mapped or redirected.
# nat: packets going out through $ext_if with source address $internal_net will
# get translated as coming from the address of $ext_if, a state is created for
# such packets, and incoming packets will be redirected to the internal address.
#nat on $ext_if from $internal_net to any -> ($ext_if)

# rdr: packets coming in on $ext_if with destination $external_addr:1234 will
# be redirected to 10.1.1.1:5678. A state is created for such packets, and
# outgoing packets will be translated as coming from the external address.
#rdr on $ext_if proto tcp from any to $external_addr/32 port 1234 -> 10.1.1.1 port 5678

# rdr outgoing FTP requests to the ftp-proxy
#rdr on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021

# spamd-setup puts addresses to be redirected into table <spamd>.
#table <spamd> persist
#no rdr on { lo0, lo1 } from any to any
#rdr inet proto tcp from <spamd> to any port smtp -> 127.0.0.1 port 8025

# Filtering: the implicit first two rules are
#pass in all
#pass out all

# block all incoming packets but allow ssh, pass all outgoing tcp and udp
# connections and keep state, logging blocked packets.
#block in log all
#pass  in  on $ext_if proto tcp from any to $ext_if port 22 keep state
#pass  out on $ext_if proto { tcp, udp } all keep state

# pass incoming packets destined to the addresses given in table <foo>.
#pass in on $ext_if proto { tcp, udp } from any to <foo> port 80 keep state

# pass incoming ports for ftp-proxy
#pass in on $ext_if inet proto tcp from any to $ext_if port > 49151 keep state

# Alternate rule to pass incoming ports for ftp-proxy
# NOTE: Please see pf.conf(5) BUGS section before using user/group rules.
#pass in on $ext_if inet proto tcp from any to $ext_if user proxy keep state

# assign packets to a queue.
#pass out on $ext_if from 192.168.0.0/24 to any keep state queue developers
#pass out on $ext_if from 192.168.1.0/24 to any keep state queue marketing

# Queue for most services
altq on $ext_if cbq bandwidth 10Mb queue { std, http, mail, ssh, ftp, icmp, udp }

queue std bandwidth 15% cbq(default)
queue http bandwidth 22% priority 2 cbq(borrow red)
queue mail bandwidth 15% priority 0 cbq(borrow ecn)
queue ssh bandwidth 25% cbq(borrow) { ssh_interactive, ssh_bulk }
        queue ssh_interactive bandwidth 65% priority 7 cbq(borrow)
        queue ssh_bulk bandwidth 35% priority 0 cbq(borrow)
queue ftp bandwidth 10% cbq(borrow red)
queue icmp bandwidth 3% cbq
queue udp bandwidth 10% cbq(borrow red)

# Pass rules for queues
block return out on $ext_if inet all queue std 
pass log quick on $ext_if proto tcp from any to any port 22 flags S/SA \
    keep state queue (ssh_bulk, ssh_interactive)
pass in on $ext_if proto tcp from any to any port 20 flags S/SA  \
    keep state queue ftp
pass in quick on $ext_if proto tcp from any to any port 80 flags S/SA \
    keep state queue http
pass on $ext_if proto tcp from any to any port 25 \
        keep state queue mail
pass in on $ext_if proto tcp from any to any port 143 \
        keep state queue mail
pass out on $ext_if inet proto tcp from any to any port 20 \
        keep state queue ftp
pass out quick on $ext_if inet proto tcp from any to any port 22 \
        keep state queue(ssh_bulk, ssh_interactive)
pass out on $ext_if proto tcp from any to any port 143 \
        keep state queue mail
pass out on $ext_if proto icmp all keep state queue icmp

# UDP pass rules
pass out on $ext_if proto udp all keep state queue udp

# DNS pass rules
pass in quick on $ext_if proto tcp from any to any port 53 \
        keep state queue std
pass in quick on $ext_if proto udp from any to any port 53 \
        keep state queue udp
pass out quick on $ext_if proto tcp from any to any port 53 \
        keep state queue std
pass in quick on $int_if proto tcp from any to any port 953 \
        keep state queue std

# VPN pass rules
pass out on $ext_if proto esp from any to any keep state
pass in on $ext_if proto udp from any to any port = isakmp keep state
pass in on $ext_if proto esp from any to any keep state

# Holes for misc services
pass out quick on $ext_if proto tcp from any to any port 113 keep state queue std
pass in quick on $ext_if proto tcp from any to any port 113 keep state queue std

# Holes for dev
pass out on $ext_if proto tcp from $dev_addr to any port 6667 keep state queue \
std
pass in quick on $ext_if proto tcp from $dev_addr to any port 113 keep state queue \
std
pass out quick on $ext_if proto tcp from $dev_addr to any port 113 keep state queue \
std