Sorry if this is too wordy.  And let me know if it doesn't make any sense.

I think I didn't communicate my thoughts clearly.

If my Internal Workstation (192.168.100.100) has a stateful connection to 
the internet (tcp 5000 to 20.20.20.20) that is already open and in your 
state table(s), then I want pF to allow UDP ports 4900-4901 back to my 
internal workstation (192.168.100.100).  If my internal workstation 
doesn't have that tcp 5000 port open to an internet address, then I don't 
want pF to leave 4900&4901 open.

Sort of like this (this isn't proper syntax, just my attempt to show the 
logic behind what I am asking about):

enet = ne3
inet = xl0
X=192.168.100.100
If port 5000 from $X to any on $inet then
     pass all in $enet udp 4900-4901
     rdr udp 4900-4901 to $X
else block in all in $enet udp 4900-4901

X should be variable (depending on what machine is trying to do the 
outbound traffic)
enet is my external network card (attached to a router on the internet)
inet is my internal LAN (192.168.100.1)

This would not require any authentication, since my internal workstation 
is a trusted entity already (its my own computer).

This would be VERY useful functionality to have in pF.  By having pF look 
for a trigger port (in this case, a connection outbound on tcp/5000) 
BEFORE it opens ports for the inbound traffic, you can setup complex 
rules that only activate when a certain application is requesting 
communications thru the firewall.

I don't think this would be feature bloat - I think it would be an 
EXCELLENT way for a corporate administrator to fine-tune their firewall 
to their particular environment.

Chris


-----Original Message-----
From: Daniel Hartmeier <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Date: Sat, 10 Aug 2002 23:00:14 +0200
Subject: Re: Newbie Question (one of many to come)

> On Sat, Aug 10, 2002 at 09:37:15AM -0700, Chris Willis wrote:
> 
> > I would like to create a filter that allows 4900&4901 inbound to the 
> > machine that already has tcp 5000 open.  If tcp 5000 isn't open, then
> I 
> > do not want the UDP ports to be open inbound.
> 
> Short answer: you can't.
> 
> I know this is possible with Linux' netfilter, but I don't think it's a
> feature that can be used securely. If you think about it, how does the
> existing TCP connection authenticate the peer in any way that makes you
> trust him more than the rest of the world? Anyone could establish that
> TCP connection first and get access to the other ports. If you're not
> allowing the whole world to establish the TCP connection (by blocking
> on
> peer address), you could use the same restrictions for the other ports.
> 
> Ok, someone spoofing the source address couldn't complete a TCP
> handshake, so the established TCP connection excludes that. But a
> source
> spoofer could just as well pick an address that is likely to have a TCP
> connection already established with you and use that to send UDP
> packets.
> 
> There is a way to open ports after peers have truely authenticated
> themselves: authpf(8). Logging in via ssh might seem overly
> complicated,
> but what you get in exchange is a real authentication, as compared to
> security by obscurity that the 'related' (or whatever it's called in
> netfilter) feature offers.
> 
> Daniel


Reply via email to