Server Separation para evitar ataques?

4

Atualmente tenho 1 servidor com uma pilha LAMP completa, assim como o Mongo DB.

Existe algum benefício em dividir esses serviços em servidores diferentes em relação a redundâncias?

Por exemplo:

Server 1 -> Apache/PHP
Server 2 -> mySQL
Server 3 -> Mongo

A razão pela qual estou pensando que isso pode ser benéfico é que, no caso de ser hackeado ou de uma falha de software, seria mais fácil recarregar o software. Também no futuro permitir-me-ia ter clusters em vez de 1 servidor para cada elemento.

Isso é normal? Ou é melhor ter 3 servidores todos com uma pilha completa?

    
por user1641165 10.11.2014 / 14:06

1 resposta

1

A Separação de Serviço pode ajudar se os próprios servidores ficarem inativos, pois se seus backups forem recentes, você poderá restaurar serviços individuais mais rapidamente, ou então você pode ter um ambiente de failover (aplicável somente se você duplicar todo o ambiente por segundo tempo para que você termine com 6 servidores, já que cada servidor deve ter um failover), mas de forma não significativa ajuda contra ameaças de rede ativas e não aumenta sua segurança.

Esse tipo de pergunta surge:

  1. Como você está protegendo contra ameaças de hackers com essa configuração? Se um hacker entrar em seu servidor da Web e instalar scripts mal-intencionados para obter dados de seu banco de dados ou alguma outra ação, sua separação de serviços não ajudará.
  2. O que você tem para lutar contra intrusões e atos maliciosos, para mitigá-los? Normalmente, você terá um IDS / IPS na fronteira da sua rede, bem como firewalls, para proteger contra algumas ameaças da rede, para que elas não se tornem um problema.
  3. Você não protege contra DoS ou DDoS com separação de serviços. Isso derrubará seus sites se você tiver um servidor ou dez.
  4. Você ainda corre o risco de os serviços em cada sistema serem sequestrados com scripts maliciosos. Uma área de FTP pode obter um malware que, em seguida, ataca os outros servidores, ou pode executar um script mal-intencionado para ajudar a distribuir malware para outras pessoas, ou pode seqüestrar seus sistemas para DDoS e atacar outros sistemas. Um servidor PHP pode obter injeção de código, que pode então ter ataques contra outros sistemas. Seu servidor de banco de dados pode receber código malicioso adicionado a ele. Esses tipos de coisas são itens que a separação do servidor não ajudará.

Por fim, embora isso possa fornecer um benefício para o failover e a restauração mais rápida se os servidores explodirem, supondo que você tenha bons backups, não há muitos benefícios adicionais. Nenhum benefício real de segurança adicional vem da separação de serviços. Claro, você obtém serviços separados uns dos outros, mas isso não adiciona proteções adicionais dos (literalmente) milhares de vetores de ataque.

Alterações:

Depois de cutucar o site do Information Security SE, estou alterando minhas declarações aqui:

  1. Todas as zonas da web estão abertas a riscos de ataque. No mundo ideal, seus aplicativos PHP não poderão executar nada que não devam. No mundo real, esse não é o caso, e existem vários caminhos de ataque contra sites e serviços PHP.
  2. Não conheço sua estrutura de rede. Não sei se são todos VPSs, ou são todos servidores (virtuais ou não) atrás de um firewall de nível corporativo, onde você pode segregar comunicações internas e restringir seu servidor Apache / PHP para que seja acessível pela Internet, mas pode só se comunique com seus bancos de dados por portas específicas e coisas do tipo. Se você tem esse ambiente, e é tudo em casa e não VPSs e você pode fazer a segregação do firewall, eu iria para a rota de separação de serviços e teria um bom gerenciamento de backup para todos os servidores. A partir daí, coloque o Apache / MySQL em uma DMZ acessível dentro e fora das portas da Web e, em seguida, permita a comunicação de maneira restrita entre os servidores de banco de dados e o Apache / MySQL.
  3. Estou fazendo suposições sobre o que exatamente você está tentando proteger. Se os seus servidores não estiverem em um ambiente de classe corporativa, você terá que configurar cada servidor para ser restrito em termos de comunicação entre eles. Se eles estiverem todos em VPSs e nem todos na mesma rede, isso prejudicará a Segurança, pois seus bancos de dados precisarão ter ouvintes voltados para a Web, mesmo se você restringir quais IPs podem alcançá-los. Isso torna mais saudável apenas manter tudo em um servidor e usar ouvintes específicos de localhost para os servidores de banco de dados.
  4. Existem literalmente centenas de milhares de ameaças que podem ser um problema. Se você está falando sobre ameaças em geral, não há diferença real na segurança se você estiver na mesma sub-rede por trás de um firewall de nível empresarial. Se esses são VPSs, a separação de serviços pode, na verdade, prejudicar sua segurança.

Por fim seu recurso de failover depende de ter bons backups e de ter um servidor de backup que você pode implantar rapidamente para substituir o servidor com defeito. Segurança é outra questão e sem detalhes sobre quais ameaças você está tentando combater, não há uma maneira real de fornecer uma resposta completa. A separação de serviços é um começo, mas não fornece muita segurança adicional e você nunca deve confiar na segurança da separação de serviços para protegê-lo.

    
por 10.11.2014 / 15:25

Tags