source: hybrid/branches/releng-9.0/nanobsd/files/etc/pf.hybrid.conf@ 10569

Last change on this file since 10569 was 10523, checked in by rick, 13 years ago

NAT of wleiden IP on WL interfaces to WL masterip is causing issues for sure.
Downside, double macro expantion does not work. so we are stuck with an extra
variable.

File size: 3.5 KB
Line 
1#
2# Wirless Leiden PF firewall configuration for Proxy Setup. This firewall has 5
3# main features:
4#
5# 1) It supports outgoing NAT to specified ports. The so called iLeiden setup.
6# 2) It supports incoming NAT from the private MGMT network, for maintenance use.
7# 3) It protects the private MGMT network from WL requests to it's own services.
8# 4) It portects the $ext_if by only allowing an subset of services.
9# 5) The Wireless Leiden facing interfaces are not firewalled.
10# 6) WL Captive Portal Support for interfaces who needs it.
11# 7) Optional: Exposure of WL services to the outside
12#
13wl_net="172.16.0.0/12"
14allow_ext_tcp="{ssh, domain}"
15allow_ext_udp="{domain, snmp}"
16private="{ 10.0.0.0/8, 172.16.0.0/12 192.168.0.0/16 }"
17
18
19# Default configuration for ALIX2 with vr0 as external interface and wlan0 as
20# the public accesspoint in iLeiden setup.
21ext_if="vr0"
22ext_if_net="vr0:network"
23captive_portal_interfaces="wlan0"
24publicnat="http,https"
25masterip="127.0.0.1"
26# For an traditional proxy setup set, uncomment:
27#publicnat=0
28
29# Always be nice, and return the fact we are blocking the packets
30set block-policy return
31
32# Table used to authorized hosts (6)
33table <wlportal> persist counters
34
35# NAT MGMT to Wireless Leiden (2)
36nat on ! $ext_if from $ext_if_net to $wl_net -> $masterip
37
38# Nat the internet but NOT to Private Network (1)
39nat on $ext_if inet proto tcp from $wl_net to any port { $publicnat } -> ($ext_if)
40# Do NOT allow NAT to the Private Network (3)
41no nat on $ext_if from $wl_net to $private
42
43# Redirection needs source natting and allow rules (see below) (7)
44rdr on $ext_if inet proto tcp from any to $ext_if port 8081 -> 172.16.4.46 port 80
45
46# Redirect user to captive portal they have not clicked OK yet (6)
47no rdr on { $captive_portal_interfaces } proto tcp from <wlportal> to !$wl_net port 80
48rdr on { $captive_portal_interfaces } proto tcp from $wl_net to !$wl_net port 80 -> 172.31.255.1 port 8081
49
50# Localhost is considered safe (5)
51pass quick on lo0 all
52
53# By default all interfaces are open (5)
54pass all
55
56# External interface is permissive (4)
57block on $ext_if
58
59# Expose some local services (4)
60pass in on $ext_if inet proto tcp from any to $ext_if port $allow_ext_tcp keep state
61pass in on $ext_if inet proto udp from any to $ext_if port $allow_ext_udp keep state
62pass in on $ext_if inet proto icmp from any to $ext_if icmp-type { echoreq }
63
64# Packets from the management LAN are allowed in (2)
65pass in on $ext_if from $private to $wl_net keep state
66
67# Allow exposing some WL Services to the inet (7)
68pass in on $ext_if inet proto tcp from any to $ext_if port { 8081 } keep state
69
70# Packets going out are the ones to the internet with an certain limit (1)
71pass out on $ext_if inet proto tcp from $wl_net to any port { $publicnat } keep state \
72 (max-src-conn-rate 100/10, max-src-conn 10)
73
74# For proper functioning allow the local machine to initiate requests outside (4)
75pass out on $ext_if inet proto udp from $ext_if to any port{domain, 1194} keep state
76pass out on $ext_if inet proto tcp from $ext_if to any port{http, https, 1194} keep state
77pass out on $ext_if inet proto icmp from $ext_if to any icmp-type { echoreq }
78
79# Do not allow connections to the local MGNT LAN to start (3)
80block out on $ext_if from any to $private
81
82# Limited acess PRIVATE network to allow DHCP/DNS to function (3)
83pass out on $ext_if inet proto {udp, tcp} from $ext_if to $private port {domain} keep state
84
85# Uncomment to allow limited access to MGNT interfaces ON the private network (3)
86#pass out on $ext_if inet proto tcp from $ext_if to $private port {ssh, http, https} keep state
87
Note: See TracBrowser for help on using the repository browser.