天天看點

freebsd pf配置檔案

# Define macros for each network interface 

ext_if = "{ tun0 }" 

int_if = "{ rl0 }" 

vip_if = "{ rl1 }" 

loop = "lo0" 

# Define our networks 

int_net = "{ 192.168.1.0/24 }" 

vip_net = "{ 192.168.2.0/24 }" 

noroute = "{ 127.0.0.1/8, 172.16.0.0/12, 10.0.0.0/8, 255.255.255.255/32 }" 

ports = "{ 20, 21, 22, 25, 53, 80, 110, 465, 443, 995}" 

squid = "{ 127.0.0.1 }" 

icmp_types = "echoreq" 

allproto = "{ tcp, udp, ipv4, icmp, esp, ipencap }" 

bittorent = "{ 2049, 4662, 3076, 5200, 6200, 2223, 6880, 6881, 6882, 6883, 6884, 6885, 6886, 6887, 6888, 6889 ,\ 

6890, 8880, 8881, 8882, 8883, 8884, 8885, 8886, 8887, 8888, 8889, 8890, 6969, 10700, 21881}" 

# Define Tables for SSH 

table <sshguard> persist 

# Options: tune the behavior of pf, default values are given 

set limit states 200000 

set limit frags 200000 

set limit src-nodes 20000 

set block-policy return 

set optimization aggressive 

set loginterface tun0 

set skip on lo0 

set require-order yes 

set fingerprints "/etc/pf.os" 

# Scrub incoming packets 

scrub in all 

# Define Queue  

altq on $ext_if cbq bandwidth 2Mb queue { ftp,mail,http,base } 

queue base bandwidth 40% cbq(default) 

queue mail bandwidth 35% priority 3 cbq(borrow red) 

queue http bandwidth 20% cbq(red) 

queue ftp bandwidth 5% cbq(red) 

############# 

# NAT Rules # 

nat on $ext_if from $int_net to any -> $ext_if 

nat on $ext_if from $vip_net to any -> $ext_if 

#nat on $ext_if from {$vip_net,$int_net} to any -> $ext_if 

##################### 

# Squid Transparent # 

rdr on $int_if proto tcp from $int_net to any port 80 -> $squid port 3128 

############### 

# Port Mapping# 

rdr on $ext_if proto tcp from any to $ext_if port 81 -> 192.168.2.7 port 80

# Activate spoofing protection for the internal interface. 

antispoof quick for $ext_if inet 

# Setup a default deny policy 

block all 

block return 

# Security settings 

block in quick on $ext_if os NMAP 

block drop in quick on $ext_if from $noroute to any 

block drop out quick on $ext_if from any to $noroute 

# Disable All Kinds of Hack Software 

block in quick proto tcp all flags SF/SFRA 

block in quick proto tcp all flags FPU/SFRAUP 

block in quick proto tcp all flags /SFRA 

block in quick proto tcp all flags F/SFRA 

block in quick proto tcp all flags U/SFRAU 

# sshguard 

block in quick on $ext_if proto tcp from <sshguard> to any port 22 label "ssh bruteforce" 

# Block some clients to internet and bittorent download 

block quick on $ext_if inet proto tcp to port $bittorent label "disable bit" 

block quick on $ext_if inet proto tcp from any port $bittorent to any 

# Pass ICMP 

#pass in inet proto icmp all icmp-type $icmp_types keep state label "allow ping" 

# Pass traffic on the loopback interface in either direction 

pass quick on $loop all 

# Pass traffic on the internal interface in either direction 

pass quick on $int_if all 

pass quick on $vip_if all 

# Allow access local database 

#pass in log on $ext_if proto tcp to port 3306 flags S/SA keep state  

# Allow SSH to me by tun0 

pass in log on $ext_if proto tcp to any port ssh flags S/SA keep state \ 

( max-src-conn 10, max-src-conn-rate 3/10, overload <sshguard> flush ) label "allow ssh" 

# Pass traffic on the external interface in either direction 

pass out quick on $ext_if proto { tcp, udp } to any keep state queue base 

pass out quick on $ext_if proto tcp from $int_net to any port { 80, 443 } keep state queue http 

pass out quick on $ext_if proto tcp from $int_net to any port { 20, 21 } keep state queue ftp 

pass out quick on $ext_if proto tcp from $int_net to any port { 25, 110, 465, 995 } keep state queue mail 

pass out on $ext_if proto tcp all modulate state flags S/SA 

pass out on $ext_if all keep state

本文轉自dongfang_09859 51CTO部落格,原文連結:http://blog.51cto.com/hellosa/535869,如需轉載請自行聯系原作者