Is there a A-Z guide for dummies for setting up and securing a production server?
Não. Há muitas combinações possíveis de software, código, plataforma, hardware etc. para que isso seja possível. Se você desmembrar sua pilha, no entanto, você encontrará boas informações para cada nível (por exemplo, fortalecendo seu sistema operacional, as práticas recomendadas de segurança de aplicativos da Web, etc.).
Is the process very different depending on platform (Windows or Linux)?
O processo de endurecimento é o mesmo, mas os detalhes da implementação não são.
Are there some general rules that can be applied across different platforms (and application stacks)?
Sim. Você deve criar um perfil de configuração do seu aplicativo: documentar as dependências do seu aplicativo (quaisquer serviços que precisem estar em execução; quaisquer portas / protocolos de rede que precisem estar abertos (dentro e fora); quaisquer bibliotecas / componentes de terceiros) para estabelecer uma linha de base de requisitos para o seu aplicativo funcionar. Sistematicamente remova / desabilite quaisquer serviços, aplicativos e portas que você não precise; executar serviços e aplicativos com menos privilégios necessários. Teste cada passo do caminho; você irá quebrar alguma coisa.
Invista em um firewall adequado e ative a filtragem de saída (se a sua caixa for de propriedade, não permita que ela estabeleça conexões TCP diretas); use um proxy whitelisted para permitir somente HTTP de saída para as atualizações necessárias (windowsupdate.com et al, repositórios Linux). Configuração de alertas e criação de log adequada: alerta sobre tentativas de login com falha, início / parada de serviços, instalação, escalonamento de privilégios, etc. O gerenciamento de patches é importante; projetar uma janela de manutenção que faça sentido e cumpra-a. Não deixe que as atualizações se acumulem por muito tempo.
Se este for um aplicativo da Web, examine seus pontos de entrada, seus mapeamentos HTTP-URI-URI e coloque seus parâmetros POST ou GET na lista de permissões, elimine seus formulários (não confie em entradas), escape do SQL (ou use uma biblioteca de terceiros que faz isso para você), registre todas as suas consultas SQL, e assim por diante.