Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 02 Dec 2001 00:37:28 
From:      "Thor Legvold" <tlegvold@hotmail.com>
To:        freebsd-questions@freebsd.org
Subject:   Firewall rules (ipfw)
Message-ID:  <F1450nzlk81ZXfMIxcc0001d1dd@hotmail.com>

next in thread | raw e-mail | index | archive | help
Having a bit of trouble getting my firwall rules refined.

Am I correct in that a packet gets sent on (and thus bypasses the rest of 
the firewall) when it meets a rule it matches (that allows the packet in 
question, of course)? Or does it continue on to the next rule when 
successfully passing a previous one?

Trying to make some sane and simple rules to protect a small home LAN on a 
cable connection. Maybe Windows 2000 would be better? <evil grin>

I was thinking it might be an idea to allow DHCP (ports 67/68), TCP (port 
1723) and GRE only on my cable interface, blocking everything else with a 
deny rule following the allow ones. There's loads of broadcast, RealNetworks 
and other garbage (seen with tcpdump on the cable iface) I assume would be 
nice to filter out before it reaches my firewall and NAT, reducing the 
amount of work they have to do.  Then a nat divert rule to my "inside" 
PPTP/VPN iface (a virtual tun interface "inside" the cable interface), 
followed by a rule or two against spoofing and then allowing the few things 
I plan ok'ing (ssh, no http server, no smtp server, passive ftp only, etc), 
being basically "let the LAN access pretty much anything/where on the net, 
but deny the net any access to inside machine(s) unless a response to an 
inside SYN (setup/established)".

When I put the global "deny" after allowing GRE/TCP and DHCP (for 
configuration of the iface, and bringing up the PPTP connection via port 
1723), my PPTP connection fails. Meaning it appears that the "approved" GRE 
packet get's stopped cold when it meets the following deny rule. I'd like it 
to continue on to the NAT rule, jumping over the rule denying all other 
traffic on the cable interface. Any ideas on how to make ipfw jump through 
hoops, or am I trying to do something considered mistreatment of the basic 
premise?

Maybe I should have a divert line _before_ the global deny on cable0, but 
divert only GRE packets (as they contain the encapsulated PPTP data)? Then 
run the anti spoofing stuff after nat is finished translating the packets, 
explicitly allow what I want and leave the deny rule until the very end?


I currently have the following:

# Allow loopback iface, stop all 127 addresses
${fwcmd} add 100 pass all from any to any via lo0
${fwcmd} add 200 deny all from any to 127.0.0.0/8

# Allow DHCP setup via cable0
${fwcmd} add allow log udp from any 67 to 0.0.0.0 68 out xmit cable0
${fwcmd} add allow log udp from 10.10.0.0/16 67 to 10.10.2.0/24 68 in via 
cable0

# Allow GRE & PPTP control connection
${fwcmd} add allow tcp from any to any 1723 in recv cable0 setup
${fwcmd} add allow gre from any to any via cable0

# Stop all other traffic via cable0 - only GRE/PPTP/DHCP allowed
${fwcmd} add deny log all from any to any via cable0

# NAT
${fwcmd} add divert natd log all from any to any via tun0

...The rest is still under development, I'll be back when I get to it 
later... :-)

Regards,
Thor


_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F1450nzlk81ZXfMIxcc0001d1dd>