Que segurança é obtida ao separar o banco de dados do servidor da Web (arquitetura da web de 2 camadas)?

2

Eu tenho dados confidenciais armazenados em um banco de dados mysql que é servido por um servidor da web em execução na mesma caixa física. Se eu separar os dois servidores (e até mesmo colocar um firewall entre eles), como é que eu tornei mais difícil acessar o banco de dados mysql se o servidor web estiver comprometido? O aplicativo da Web armazena as cadeias de conexão em um arquivo de configuração de texto simples. Tudo o que o hacker precisa fazer é conectar-se ao servidor de banco de dados usando essas credenciais e não há como o servidor de banco de dados saber que esse não é o cliente autorizado.

    
por Michelle 26.06.2010 / 16:18

3 respostas

1

Existe outro método de ataque que a separação defende. Se o invasor tiver sorte o suficiente para obter acesso ao shell do servidor da web, ele poderá capturar os arquivos de banco de dados para análise off-line ou qualquer outro método de captura de dados. Ao ter o banco de dados em um servidor separado, eles estão restritos a qualquer coisa que possam consultar por meio de quaisquer tokens de autenticação que possam encontrar, o que pode não ser suficiente para obter as coisas boas.

    
por 26.06.2010 / 18:47
1

Estes são alguns aspectos da segurança, um conceito importante é a prevenção e a detecção.

O firewall é obviamente preventivo, mas você também deve ter sistemas de detecção em funcionamento. Com a detecção em vigor, qualquer sistema que desacelere seu hacker torna-se uma pressão de tempo sobre ele. Imagine dois conjuntos de portas trancadas em uma casa e como isso poderia afastar um ladrão que simplesmente pensaria "eu vou a algum lugar mais fácil"

Praticamente você também pode garantir que seus arquivos de conexão só possam ser lidos por uma conta relevante, o que o invasor não teria necessariamente se tivesse algum tipo de acesso na caixa.

Lembre-se também de que pode ser o seu firewall de perímetro que está comprometido, com apenas um nível em que o invasor poderá consultar diretamente o seu banco de dados. Com 2 camadas, eles precisam vencer outro firewall.

    
por 26.06.2010 / 17:22
0

Há um pouco mais do que apenas separar as camadas em máquinas diferentes. Você também precisa limitar o que o aplicativo da Web pode fazer com seu banco de dados conectando-se a ele com o menor privilégio. Se você se conectar, digamos, como o proprietário do banco de dados, um invasor que encontrar uma maneira de executar código arbitrário no processo do servidor da Web poderá fazer qualquer coisa que você possa fazer com esse banco de dados.

Portanto, é importante conectar-se com o menor privilégio a esse banco de dados remoto. Se você fizer isso, então você está recebendo algum benefício. Claro, se você não seguir o conselho de Mark e implementar alguma forma de detecção, você não obterá tanto benefício. Se um invasor ganhar uma posição segura no seu servidor web, ele começará a atacar seu servidor de banco de dados de lá, e se você não sabe que isso está acontecendo, ele pode eventualmente encontrar uma maneira de entrar. Separação desacelera o ataque para que você tenha tempo para observar e reagir (por exemplo, corrigir o problema no servidor / aplicativo da Web que permitiu a exploração em primeiro lugar).

    
por 06.08.2010 / 03:18