Se você criar um servidor voltado para o público, deverá estar familiarizado e confortável com o sistema que está usando.
Você menciona a proteção contra vírus como uma razão, o que sugere que você está procurando por "segurança como um produto", que é algo que não existe. A segurança é sempre um processo, e os servidores em redes públicas precisam ser monitorados e mantidos constantemente - isso é verdade tanto para o Windows quanto para o Linux.
As chaves para reduzir a carga de trabalho são
- minimizando a superfície de ataque
- automatismo
Descobri que isso é mais fácil em ambientes Linux / Unix, porque a maior força do Windows, que é a strong integração de componentes, é um obstáculo aqui.
É completamente impossível criar um sistema Windows que não tenha um componente de navegador da Web instalado (que inclui funções para baixar e executar código JavaScript, que por sua vez pode carregar componentes ActiveX), simplesmente porque o Explorer exige esse componente. Um ambiente de servidor ideal contém apenas o código necessário para os serviços fornecidos e nada mais.
Ao mesmo tempo, a integração de componentes fornece canais de comunicação muito eficientes para os casos de uso para os quais foram projetados, mas para monitoramento automatizado de serviços, muitas vezes é necessário combiná-los de maneiras imprevistas, o que exige scripts. A filosofia do Windows de que o ambiente de script só fornece controle de fluxo e dados é passada entre componentes é um som, mas um pouco mais difícil de depurar que um programa que escreve um arquivo de texto que você pode inspecionar manualmente antes de passar para o próximo programa. p>
A preferência que muitos administradores têm pela linha de comando é simplesmente que é a mesma linguagem que eles usam para o script. Depois de investigar um problema, posso simplesmente despejar meu histórico de comandos em um arquivo, remover algumas linhas irrelevantes e tenho um script em funcionamento que posso usar quando um problema similar aparecer. Usando uma GUI, teria que refazer manualmente o que acabei de fazer, descobrir qual é a API adequada para executar a mesma etapa, depois escrever um programa e depurá-lo sem interromper o serviço.
Por último, mas não menos importante: a alternativa para executar o seu próprio servidor é obter um servidor gerenciado, onde outra pessoa é encarregada da manutenção contínua. Eles podem fazer isso com mais eficiência do que você, porque eles já têm uma infraestrutura de monitoramento em funcionamento, portanto, o esforço para adicionar seu servidor ao sistema é insignificante e eles podem detectar e cuidar de problemas urgentes, mesmo no turno da noite. p>