You have the right idea in setting up a bridged NIC for each of your VM guests so that your guests get assigned IP address within you subnet directly behind your firewall (there's other ways, but this is probably the easiest/most-efficient).
The real problem you face is the firewall. It really depends on your firewall's capabilities whether you can set up a DMZ or not. If you can setup a DMZ, the best option you have is to setup port forwarding setup for what ever application your guests are going to serv. With that said, it would be easier to set you servs with a satic IP.
For example:
Assuming that
#Public IP is 123.123.123.123
VMHost 192.168.1.2
VM1 192.168.1.3
VM2 192.168.1.4
You might set up your firewall port forwarding as follows:
123.123.123.123:22 -> 192.168.1.2:22 #(VMHost SSH)
123.123.123.123:80 -> 192.168.1.4:80 #(VM2 Apache/HTTP)
123.123.123.123:23 -> 192.168.1.4:22 #(VM2 SSH)