Se você tiver o cuidado de abrir suas portas apenas para o subconjunto mínimo de endereços IP que precisam acessar esses serviços (ou seja, abra aplicativos personalizados / portas NFS / SSH para apenas o menor conjunto de endereços IP que precisam acessar esses serviços ) experiência me diz que não há nenhum problema em ter sua filtragem de pacotes / firewall rodando na mesma máquina que seus serviços, protegendo-os através de um firewall externo (se estamos falando apenas de um servidor e não estamos interessados em NAT ou algum outros recursos avançados de firewall, como a inspeção de protocolo).
Então, para aqueles serviços que precisam estar abertos a toda a Internet (isto é, HTTP / S) eu sugeriria, e dependendo da sua escolha do sistema operacional, ferramentas / técnicas adicionais para minimizar o risco de ter esses serviços explorados (por causa de vulnerabilidades no software que você está usando ou erros de programação no software que você está escrevendo). Caso você esteja usando o linux / apache, modsecurity é uma ótima opção para proteger seus serviços web. No caso do IIS, a Microsoft possui seu próprio conjunto de ferramentas e ajustes para fornecer um nível equivalente de proteção.
Mas é claro que esta é apenas a minha opinião e talvez a sua melhor estratégia seja esperar para ouvir mais opiniões / experiências e depois decidir por si mesmo.