1. # Define macros for each network interface 
  2. ext_if = "{ tun0 }" 
  3. int_if = "{ rl0 }" 
  4. vip_if = "{ rl1 }" 
  5. loop = "lo0" 
  6.  
  7. # Define our networks 
  8. int_net = "{ 192.168.1.0/24 }" 
  9. vip_net = "{ 192.168.2.0/24 }" 
  10. noroute = "{ 127.0.0.1/8, 172.16.0.0/12, 10.0.0.0/8, 255.255.255.255/32 }" 
  11. ports = "{ 20, 21, 22, 25, 53, 80, 110, 465, 443, 995}" 
  12. squid = "{ 127.0.0.1 }" 
  13.  
  14. icmp_types = "echoreq" 
  15. allproto = "{ tcp, udp, ipv4, icmp, esp, ipencap }" 
  16. bittorent = "{ 2049466230765200620022236880688168826883688468856886688768886889 ,\ 
  17. 68908880888188828883888488858886888788888889889069691070021881}" 
  18.  
  19. # Define Tables for SSH 
  20. table <sshguard> persist 
  21.  
  22. # Options: tune the behavior of pf, default values are given 
  23. set limit states 200000 
  24. set limit frags 200000 
  25. set limit src-nodes 20000 
  26. set block-policy return 
  27. set optimization aggressive 
  28. set loginterface tun0 
  29. set skip on lo0 
  30. set require-order yes 
  31. set fingerprints "/etc/pf.os" 
  32.  
  33. # Scrub incoming packets 
  34. scrub in all 
  35.  
  36. # Define Queue  
  37. altq on $ext_if cbq bandwidth 2Mb queue { ftp,mail,http,base } 
  38. queue base bandwidth 40% cbq(default
  39. queue mail bandwidth 35% priority 3 cbq(borrow red) 
  40. queue http bandwidth 20% cbq(red) 
  41. queue ftp bandwidth 5% cbq(red) 
  42.  
  43. ############# 
  44. # NAT Rules # 
  45. ############# 
  46. nat on $ext_if from $int_net to any -> $ext_if 
  47. nat on $ext_if from $vip_net to any -> $ext_if 
  48. #nat on $ext_if from {$vip_net,$int_net} to any -> $ext_if 
  49.  
  50. ##################### 
  51. # Squid Transparent # 
  52. ##################### 
  53. rdr on $int_if proto tcp from $int_net to any port 80 -> $squid port 3128 
  54.  
  55. ############### 
  56. # Port Mapping# 
  57. ############### 
  58. rdr on $ext_if proto tcp from any to $ext_if port 81 -> 192.168.2.7 port 80

  59. # Activate spoofing protection for the internal interface
  60. antispoof quick for $ext_if inet 
  61.  
  62. # Setup a default deny policy 
  63. block all 
  64. block return 
  65.  
  66. # Security settings 
  67. block in quick on $ext_if os NMAP 
  68. block drop in quick on $ext_if from $noroute to any 
  69. block drop out quick on $ext_if from any to $noroute 
  70.  
  71. # Disable All Kinds of Hack Software 
  72. block in quick proto tcp all flags SF/SFRA 
  73. block in quick proto tcp all flags FPU/SFRAUP 
  74. block in quick proto tcp all flags /SFRA 
  75. block in quick proto tcp all flags F/SFRA 
  76. block in quick proto tcp all flags U/SFRAU 
  77.  
  78. # sshguard 
  79. block in quick on $ext_if proto tcp from <sshguard> to any port 22 label "ssh bruteforce" 
  80.  
  81. # Block some clients to internet and bittorent download 
  82. block quick on $ext_if inet proto tcp to port $bittorent label "disable bit" 
  83. block quick on $ext_if inet proto tcp from any port $bittorent to any 
  84.  
  85. # Pass ICMP 
  86. #pass in inet proto icmp all icmp-type $icmp_types keep state label "allow ping" 
  87.  
  88. # Pass traffic on the loopback interface in either direction 
  89. pass quick on $loop all 
  90.  
  91. # Pass traffic on the internal interface in either direction 
  92. pass quick on $int_if all 
  93. pass quick on $vip_if all 
  94.  
  95. # Allow access local database 
  96. #pass in log on $ext_if proto tcp to port 3306 flags S/SA keep state  
  97.  
  98. # Allow SSH to me by tun0 
  99. pass in log on $ext_if proto tcp to any port ssh flags S/SA keep state \ 
  100. ( max-src-conn 10, max-src-conn-rate 3/10, overload <sshguard> flush ) label "allow ssh" 
  101.  
  102. # Pass traffic on the external interface in either direction 
  103. pass out quick on $ext_if proto { tcp, udp } to any keep state queue base 
  104. pass out quick on $ext_if proto tcp from $int_net to any port { 80443 } keep state queue http 
  105. pass out quick on $ext_if proto tcp from $int_net to any port { 2021 } keep state queue ftp 
  106. pass out quick on $ext_if proto tcp from $int_net to any port { 25110465995 } keep state queue mail 
  107. pass out on $ext_if proto tcp all modulate state flags S/SA 
  108. pass out on $ext_if all keep state