I am in the process of setting up a private network that uses a gateway system for access to certain services on systems behind the network, e.g. ssh, ftp. I have some experience using virtualized infrastructure but want to verify that I am using best-practices for setting up the environment.

There will be a variety of services running inside of the private network like DHCP, DNS, LDAP, etc that should be more or less invisible to systems on the other side of the gateway; however, there will be some services like a web server, file upload that may need access to both networks.

I have spent some time working on the firewall design and layout with internal zone, external zone and DMZ; worked out what services need to be available in the different zones and have started putting together ACLs for the systems. My plan was to virtualize many of the services and run them inside of LXC or Docker containers(currently using LXC but could switch to Docker if there is a strong argument to be made for it).

While working on setting systems up I have been using a single hypervisor to setup and configure the containers, at which point they can be moved to the appropriate storage. As I am nearing production status(other people will be given the opportunity to use my network) I have had a few security questions/concerns.

  1. It seems like the most secure way to isolate things would be to run a minimum of 3 hypervisors/hypervisor configurations(so additional hypervisors can be spun up if necessary in the event of a failure, etc) one for each zone. It seems like this would reduce the risk to the network in the event that major hypervisor vulnerabilities are discovered. Is there some better solution for isolating virtual services in the manner described?
  2. How necessary is dedicated storage for systems/services running in different firewall zones? It seems like with appropriate firewall/ACL settings common backend storage with separate external backups would be sufficient, but advice/input about the best practices for storing groups of virtualized containers with different access settings would be appreciated.
  3. Is it actually worth it to virtualize infrastructure in this manner? I have experience running similar services on a few dedicated servers with backup and fail-over servers for use when something fails. Those systems were all setup so they could be rebuilt using highly customized kickstart or similar build configuration files for the desired OS.

Input from anyone who has gone through the process of virtualizing physical infrastructure in this manner would be greatly appreciated. Specifically does the increased complexity of managing hypervisors in addition to network services generate enough benefit in terms of reliability and scalability to be worth the additional effort?