Thank you for responding - I think I see the picture now, but I hope you'll help make sure I've got it right. :-)
Within the application firewall the controls are limited - I can determine whether a process is allowed to act as a server on specific ports (or not) when it starts up. I cannot determine which IP addresses the server will listen for at this point.
BUT - I can augment the application firewall by setting rules in the system firewall, and those will allow specification by IP address as well as port. So, using the example of a VNC server that I only want available to specific subnets, I would have something like the following:
- In Application Firewall, VNCServer is allowed to listen on port 5900
- In System Firewall, I allow incoming traffic to port 5900 from specific IP subnets
- In System Firewall, I deny incoming traffic to port 5900 for all addresses
Actually, that last item shouldn't be needed if the System Firewall has been left setup to deny undefined connections, right? I'm assuming that the flow here is that for an inbound connection it has to match on the system firewall rule (and filtering stops at the first match?), then it'll pass to whatever task (if any) is listening on the port as defined by the app firewall.
Does outbound filtering work differently? I have app-specific rules defined allowing outbound port 80 and port 443 for the browsers and apps I've allowed, but no active system firewall rule covering those ports as far as I can determine (I'll go back for a closer look). If an app has been permitted to use an outbound connection in the app firewall, does that bypass the system firewall entirely, or does it just give it a pass unless a specific deny rule is in effect (i.e. a system firewall rule to block port 80 to IP 1.2.3.4 applies to every app that's allowed to use port 80 outbound?)
Thanks much!