Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Apr 2009 15:43:19 +0700
From:      Victor Sudakov <vas@mpeks.tomsk.su>
To:        freebsd-questions@freebsd.org
Subject:   Re: keep-state and divert
Message-ID:  <20090402084319.GB40576@admin.sibptus.tomsk.ru>
In-Reply-To: <gr1qmf$kr1$1@ger.gmane.org>
References:  <20090402055113.GA35989@admin.sibptus.tomsk.ru> <gr1qmf$kr1$1@ger.gmane.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Michael Powell wrote:
> > 
> > I have read some recommendations on combining a stateful firewall with
> > divert, e.g.
> > http://www.derkeiler.com/Mailing-Lists/FreeBSD-Security/2003-06/0078.html
> > and http://nuclight.livejournal.com/124348.html (the latter is in
> > Russian).
> > 
> > Do I understand correctly that it is (mathematically?) impossible to
> > use the two together without also using "skipto"?

[dd]

> 
> I haven't used ipfw for a very long time, and haven't kept current with any 
> changes. Below is an example (using kernel pppd) that I used to use a long 
> time ago. For example purposes only, extract what you need for your specific 
> configuration needs.

I have looked at your ruleset. First you have:

[dd]
> $fwcmd add divert natd ip from any to me in via ppp0
> $fwcmd add divert natd ip from 10.10.0.0/8 to any out via ppp0
> $fwcmd add check-state
> 

[dd]

and only later you have your keep-state rules:

> 
> $fwcmd add allow udp from any to any via ppp0 keep-state
> $fwcmd add allow log icmp from any to any icmptypes 3,4
> 
> $fwcmd add allow tcp from any to me 80 via ppp0 keep-state
> 
> $fwcmd add deny log tcp from any to any in recv ppp0 setup
> $fwcmd add allow tcp from any to any out xmit ppp0 setup keep-state
> $fwcmd add allow tcp from any to any via ppp0 established keep-state

This means your dynamic rules will contain an already NAT-ted address,
which is useless.

With my example ruleset below, where would you put the keep-state
option?


00100 divert 8668 ip from any to table(1) out via rl0
00200 deny log logamount 100 ip from 10.0.0.0/8 to any out via rl0
00300 deny log logamount 100 ip from 172.16.0.0/12 to any out via rl0
00400 deny log logamount 100 ip from 192.168.0.0/16 to any out via rl0

00500 divert 8668 ip from table(1) to any in via rl0
00600 check-state
00700 deny log logamount 100 ip from any to 10.0.0.0/8 in via rl0
00800 deny log logamount 100 ip from any to 172.16.0.0/12 in via rl0
00900 deny log logamount 100 ip from any to 192.168.0.0/16 in via rl0

65535 allow ip from any to any


-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
sip:sudakov@sibptus.tomsk.ru



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