Eu acho que o clássico:
Firewall <-> Load Balancer <-> Web Servers <-> ...
é em grande parte remanescente da era dos firewalls caros baseados em hardware. Eu implementei esses esquemas para que funcionem, mas torna toda a configuração mais complicada. Para eliminar pontos únicos de falha (e, por exemplo, permitir atualizações do firewall), é necessário que você faça malha de tráfego entre dois firewalls e dois balanceadores de carga (usando malhas de camada 2 ou o roteamento adequado de camada 3).
Em nuvens públicas, tende-se a implementar algo como:
Load Balancer <-> [ (firewall + web) ] <-layer 2 domain or ipsec/ssl-> [ (firewall + app/db) ]
que é francamente bom o suficiente.
- Se você estiver usando o balanceador de carga para encerrar a conexão SSL, um firewall colocado na frente do balanceador de carga só faz a filtragem básica da camada 3, pois está vendo o tráfego criptografado.
- Seu F5 já vem com um firewall, que é tão bom quanto as regras de filtragem que você coloca em prática.
- O argumento de defesa em profundidade é IMHO fraco quando se trata da camada 3. Os vetores de ataque para aplicativos da Web são injeções de SQL, não acionando o firewall para obter acesso root.
- Os núcleos de servidores Web insignificantes geralmente são bons o suficiente para lidar com filtragem de tcp e para cima.
Feliz por ver algumas discussões sobre o assunto.