rc.firewall quick change

Ian Smith smithi at nimnet.asn.au
Fri Nov 14 21:51:58 PST 2008

On Fri, 14 Nov 2008, Julian Elischer wrote:
 > Julian Elischer wrote:
 > > Ian Smith wrote:
 > > > On Thu, 13 Nov 2008, Julian Elischer wrote:
 > > >  > At home I use the following change.
 > > >  >  >  > basically, instead of doing 8 rules before and after the nat,
 > > >  > use a table and to 1 rule on each side.
 > > >  >  >  > any objections?
 > > > 
 > > > Only that if people are already using tables for anything, chances are
 > > > they've already used table 1 (well, it's the first one I used :)  How
 > > > about using table 127 for this as a rather less likely prior choice?
 > > 
 > > yes I thought of that..
 > > in fact it should be ${BLOCKTABLE} and let the user define what he wants.
 > > (defaulting to 99 or something).

I prefer binary, but whatever :)

 > > Remember though that a user wouldn't be using 'simple' if he's using his
 > > own tables etc.

This is an important point.  Please allow me a little pent-up critique:

Originally, eg for me over 10 years ago, till recently, the only way to 
use the 'client' or 'simple' rulesets was to hack rc.firewall, which I 
did relentlessly, like many people I'm sure .. that is, we treated it 
more as a starter example, not something that could be used as is.

More recent updates have introduced rc vars that concievably make these 
rulesets usable out of the box, in as much as you could tell a newbie 
to FreeBSD firewalls and ipfw in particular, "setup these vars for your 
network, select the 'client' or 'simple' ruleset as appropriate, and you 
have a fair chance of having a fairly functional and reasonably secure 
firewall to get yourself online and going until you learn a bit more".

Combined with the deprecatory and in many instances just plain erroneous 
info in the only section of the Handbook that I've felt to try rewriting 
more or less from scratch - ie the ipfw part of the firewall chapter 31, 
which suggests some quite (to me) bizarre example rulesets after having 
dissed using the rc.firewall rulesets out of hand - we're not doing much 
good at advocating new users trying ipfw, which I think does it some 
injustice.  Not intending here to deprecate pf or ipf in any way.

Anyhow, this leaves us with two good reasons that 'client' and 'simple' 
sections ought to work effectively: secondly as an example illustrating 
good techniques - and I think your use of a table that the user can add 
entries to out of band for such as blackholing hosts/nets without having 
to reconfigure or restart the firewall IS good technique - but firstly 
as a basically functional and secure minimal firewall in and of itself. 

It's for both those reasons (and fixing an apparent oversight) that I've 
offered my unreviewed patch (which I'll do properly by PR if anyone says 
it's worth pursuing), after years of not being able to fathom supposedly 
usable firewall configuration for a client or small net, with or without 
NAT, that has never passed =ANY= ICMP traffic, not even to or from the 
hosts in one's own net!  Am I missing something, thinking that matters, 
and that functioning path MTU discovery matters? 

 > so here's a slightly improved diff:

This may be a bit nitpicky, but how about keeping the firewall_simple_* 
varset naming consistent, maybe firewall_simple_blocktable or something?  
The 'workstation' vars have kinda busted that idea anyway, but still ..

Also maybe rephrase mentioning the draft-manning-blah after the divert?

HTH, Ian

More information about the freebsd-net mailing list