FreeBSD bridge + filtering, BIG problem

Pyun YongHyeon yongari at kt-is.co.kr
Wed Dec 1 03:09:20 PST 2004


On Wed, Dec 01, 2004 at 05:51:35AM +0100, Cl?ment MOULIN wrote:
 > Hi,
 > 
 > I'm afraid about having find a freebsd 5X security issue.
 > 
 > We have recently upgraded one gateway from 4.10 to 5.3... Following network
 > used:
 >  
 > [ISP]--xl1--[FW01]-----xl0--em0--[SR01]
 >                     |
 >                     |--fxp0--em0--[SR02]
 > 
 > On fw01, we have one jail.
 >  
 > So fw01 is configured as a bridge on xl1,xl0,fxp0. Services works (before
 > and after upgrade).
 > On 4.10, we used IPFilter as firewall and for network traffic accounting.
 > Since upgrade, INCOMING traffic accounting does not work anymore (OUTGOING
 > working fine)...
 > 
 > Thinking this can be a ipfilter issue, and because we are planning to change
 > for great OpenBSD pf, we have try to do accounting with pf... but same
 > behaviour occurs (tests have be done with big files).
 > 
 > From/to	inet	fw01	jail	sr01	sr02
 > Internet	-	ok	ok	KO	KO
 > Fw01		ok	-	ok	ok	ok
 > Jail		ok	ok	-	ok	ok
 > Sr01		KO*	ok	ok	-	KO
 > Sr02		KO*	ok	ok	KO	-
 > 
 > * with pf enabled, scp connexion going "stalled" very quickly (stop between
 > 100 and 300 Kb of traffic)
 > 
 > 
 > Worst thing, the "default rule" accounting (any to any) does not report
 > "unreported" traffic... feels like rules are not processed. So I deciding to
 > make another test with pf.
 > 
 > Adding "block in quick proto tcp from any to [jail_port] port smtp";
 > Testing: works fine.
 > But we the same rule with the sr01 as destination host, IT DOESN'T WORK:
 > from internet, fw01 or sr02, we can connect to the tcp port
 > !!!!!!!!!!!!!!!!! It's not pf related, because, same behaviour occurs with
 > IPF!!!!!!!!
 > 
 > 
 > 
 > Details
 > fw01: running FreeBSD 5.3, GENERIC kernel, with modules = acpi, ipl, bridge,
 > nullfs and pf.
 > Sr01: FreeBSD 5.2.1, custom kernel
 > Sr02: FreeBSD 5.3, GENERIC kernel
 > 
 > ------------------------------------pf.conf
 > set loginterface fxp1
 > 
 > jail=**IP**
 > sr01=**IP**
 > sr02=**IP**
 > 
 > #block in quick proto tcp from any to $sr01 port smtp
 > 
 > pass quick from any to $jail keep state label 0
 > pass quick from $jail to any keep state label 1
 > pass quick from any to $sr02 keep state label 6
 > pass quick from $sr02 to any keep state label 7
 > pass quick from any to $sr01 keep state label 10
 > pass quick from $sr01 to any keep state label 11
 > 
 > pass all
 > ------------------------------------
 > 
 > 
 > Seems to be bridge freebsd 5.3 support related... 
 > Can someone take a look at this? Thanks!
 > 

Both pf and ipf can't create *states* in bridge mode. That restriction
comes from bridge(4). Since pf/ipf couldn't create states it will
drop the packet when it thinks the packet is in out of TCP window.

If you want to use pf/ipf in bridge mode, don't use stateful inspection.
One more note: filtering works only for inbound traffics in bridge mode.

-- 
Regards,
Pyun YongHyeon
http://www.kr.freebsd.org/~yongari	|	yongari at freebsd.org


More information about the freebsd-pf mailing list