I use Zone Alarm Pro, and it satisfies almost all of your requirements. The only one that I am not sure about is specifying the direction of the transfer in requirement three. You can definately open up ports and protocols though.

- Tim