Michiel Kranenburg on 12/13/2005 12:07 PM wrote:

I may have found a bug in PF (in combination with if_bridge) for
FreeBSD6.0-RELEASE.


Let me explain my situation first:

The xl1 and xl2 interfaces are connected together as a bridge (bridge0).

The sysctl settings that are used:
net.link.bridge.pfil_bridge=1
net.link.bridge.pfil_member=1

After applying these settings and configuring ifconfig, a new interface pops
up.

---------------------------------------------
bridge0: flags=8041<UP,RUNNING,MULTICAST> mtu 1500
       ether ac:de:48:8c:58:62
       priority 32768 hellotime 2 fwddelay 15 maxage 20
       member: xl2 flags=3<LEARNING,DISCOVER>
       member: xl1 flags=3<LEARNING,DISCOVER>
---------------------------------------------

The bridge is working fine, and passes al traffic as its supposed too.


The weird thing occurs when using PF to filter the bridge.
Let me post my pf.conf first: (I did not post the declaration of variables
on top of the conf)
---------------------------------------------
scrub in all

block in log on bridge0 from any to $mynet
block return-rst in log on bridge0 proto tcp from any to $mynet

pass in on bridge0 proto {tcp,udp,icmp} from $mynet to $mynet keep state
pass out on bridge0 proto {tcp,udp} from $mynet to any keep state

pass on lo0 all


## ICMP Section ##
pass in on bridge0 proto icmp from any to $mynet icmp-type { 0 3 8 11 } keep
state
pass out on bridge0 proto icmp from $mynet to any icmp-type { 0 3 8 11 }
keep state


## DNS Replys ##
pass in on bridge0 proto {tcp,udp} from {217.149.196.6,217.149.192.6} to
$mynet port 53 keep state


## Router ##
pass in on bridge0 proto {tcp,udp} from any to $router port 22 flags S/SA
keep state


## Mail ##
pass in on bridge0 proto {tcp,udp} from any to $mail port 25 flags S/SA keep
state
pass in on bridge0 proto {tcp,udp} from {$mynet} to $mail port 143 flags
S/SA keep state


## Web ##
pass in on bridge0 proto {tcp,udp} from any to $web port 80 flags S/SA keep
state
pass in on bridge0 proto {tcp,udp} from any to $web port 443 flags S/SA keep
state
---------------------------------------------


As you can see, I want to block every incoming packet (if not 'passed' later
on the ruleset) to the bridge (to the network on the other side).


Now comes the strange part:

Behind $web and $mail are running SSH-servers. As defined by the rules, I
don't want to allow any connection from the outside to the SSH-servers.
BUT, some hosts/ip-addresses can _still_ connect to the SSH-servers(!), and
some _dont_ (as it supposed to be).

The connections that are accepted (in violation with the PF-rules) to the
SSH-servers are logged in /var/log/pflog as denied. (So PF marks the packets
as denied, but doesn't block them!).

These faults don't apply to SSH-servers only! It happens to every service on
the network.

At least, the hosts that I have tested with are not in a specific ip-range.
I just picked some random hosts with different ip-addresses and tried to
telnet to the service-ports, with some
hosts I got a nice 'return-rst' packet, telling me that the connection is
refused. With others I got the service response.


I hope some of you guys can help me out.

Please CC me as i'm not subscribed to this list.

I am new to PF and if_bridge ... so I am guessing here, but I do have first hand experience in just setting one up ... I am still playing with rulesets to get it just right ...

ANYWAY ...

Seems to me that if you want to just use "bridge0" that you should change your sysctl.conf

net.link.bridge.pfil_member=1

to

net.link.bridge.pfil_member=0

The way I have mine configured is to use the xl0 and xl1 in the rules (with pfil_member=1) ... I have seen that ftpsesame adds bridge0 rules dynamically though ...

But, I don't think it's a bug ...
_______________________________________________
freebsd-pf@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-pf
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to