Actually, firewalls are generally altogether pointless in a virtual hosting environment, except for very specific purposes. The ports that have services running on them (HTTP, DNS, SMTP) can't be firewalled...if it could, you'd just turn off the service.
So, the specific reasons you'd want a firewall:
Preventing access to a database that has to be network accessible for some of your other servers. So, you lock it down to only those IPs in your cluster.
Block problem IPs. If you get constant scans from a particular IP, shut it down. There are tools to automated this...fail2ban, etc.
And, maybe, protect services that expose potentially serious issues...like ssh. If you have users that don't use strong passwords, it may be worth implementing a set of stateful rules to help prevent brute force attacks. There was a great thread on this topic a couple of years ago here:
http://www.virtualmin.com/forums/limit/10/limitstart/0/help-home-for-newbies/ssh-login-attempts-
maybee-this-is-%22fix%22-for-the-firewall.htmlI just made it sticky, since it comes up quite a bit.
But that's about it. No other reason to have a firewall on a hosting server...it doesn't do anything. You can generically block all ports that don't have anything running on them, which achieves exactly nothing. If the port has no service on it, why block it? There's nothing there to attack.
But, anyway, back to the problem at hand:
Oh the files for the virtual servers are there and I do have backups anyway, but they just don't show up when I try to access them thru the domain names. I seems to me to just be a mapping problem, but I can't figure out where the problem lies.Well, you mentioned this above:
A peek at the apache error log says NameVirtualHost *:0 has no VirtualHosts.Which tells me that maybe there's a rogue bit of configuration in there somewhere...you don't want a "NameVirtualHost *:0" directive in a virtual hosting system. It'll break everything (unless you really know what you're doing, but it provides no benefits, so get rid of it).
I dunno where that configuration is sneaking in from...but it needs to go away. Use grep in the Apache configuration directory to see if you can find out where it's coming from.