I've got a fairly simple test ruleset:

####################################################
WAN_IF="em0"
LAN_IF="em1"

set block-policy return
set state-policy if-bound
set require-order yes
set debug urgent
set loginterface $WAN_IF
set skip on lo0

scrub all no-df random-id fragment reassemble

block log all

# allow routed packets to flow
pass out on $LAN_IF inet proto icmp from any to any keep state tagged IN
pass out on $LAN_IF inet proto tcp from any to any flags S/SA modulate \
state tagged IN

# allow the fw to talk on WAN
pass out on $WAN_IF inet proto tcp from ($WAN_IF) to any flags S/SA \
modulate state
pass out on $WAN_IF inet proto udp from ($WAN_IF) to any keep state
pass out on $WAN_IF inet proto icmp from ($WAN_IF) to any keep state
# allow the fw to talk on LAN
pass out on $LAN_IF inet proto tcp from ($LAN_IF) to any flags S/SA \
modulate state
pass out on $LAN_IF inet proto udp from ($LAN_IF) to any keep state
pass out on $LAN_IF inet proto icmp from ($LAN_IF) to any keep state

# allow to-be routed traffic in
pass in on $WAN_IF inet proto tcp from $WAN_IF:network to any flags \
S/SA modulate state tag IN
pass in on $WAN_IF inet proto icmp from $WAN_IF:network to any keep \
state tag IN
#####################################################

I've read the code, re-read the FAQs and read the archives, and
everything indicates that with bad or ambiguous TCP flags, scrub
attempts to make life better.  With SF, it will strip the FIN and pass
the packet.  With SR, it drops the packet.  

I've proven this to be true, however the one odd thing I'm seeing is
that when pf scrubs a packet with SR, it does get droped but not logged.
pf_normalize_tcp() does do things a bit differently than others in
pf_norm.c, but I don't see any particular problems there.  

This particular build is a little old (OpenBSD 3.8-current (GENERIC)
#200: Tue Oct 18 05:06:23 MDT 2005), but I don't see any changes that
should've affected this particular section of code.  I'm also seeing
this on another box with a considerably larger rule set.

Any ideas why this is not logged, or is this operator error?

Thanks,

-jon



Reply via email to