Parece que a vida seria simples de executar o servidor de banco de dados na mesma máquina que o servidor web, mas estamos assumindo um grande risco de segurança ao fazer isso?
O ambiente será o servidor Windows 2008, Postgresql (versão mais recente, possivelmente 9.0 quando for lançado) e Apache 2.
Respostas:
Não necessariamente.
Supondo que o servidor da Web seja comprometido, o invasor ainda ganhará a credencial para acessar os mesmos bancos de dados, independentemente do servidor em que ele for executado. Afinal, o servidor de banco de dados ainda precisará ser configurado para permitir solicitações legítimas do servidor da web.
(Supondo que medidas de segurança sensatas, como no mysqld, não aceitem login raiz sem senha do localhost.)
Dito isto, você ainda pode querer executar um servidor de banco de dados separado. O motivo disso estar relacionado ao desempenho, escalabilidade etc.
fonte
Não concordo com os pôsteres afirmando que isso não é uma preocupação de segurança, e eis o motivo:
fonte
Realmente dependeria do modelo de segurança de seus servidores Web e DB (ou seja, o software), bem como do grau de firewall / controle de acesso / IDP que você aplicaria nos dois se estivessem em servidores separados.
Sendo tudo o mais igual, provavelmente é melhor separar os dois. Praticamente, no entanto, pelo menos em um ambiente LAMP, desde que você esteja usando o privsep Apache (se não tiver certeza, não se preocupe, esteja) e não esteja usando o login raiz no MySQL no seu aplicativo da Web, e você não tem o tcp / 3306 exposto ao mundo exterior, não está ganhando muita segurança movendo um ou outro para uma peça diferente de silício. Você ganha benefícios de desempenho e capacidade de depuração, no entanto.
Sua pergunta está no estilo que parece exigir uma resposta absoluta, mas sem mais informações (no mínimo, de que tipo de sistema operacional e servidor web / DB estamos falando), é difícil até dar uma pergunta informativa.
fonte
Não vejo muito risco adicional de segurança ao colocar o banco de dados e os servidores da web no mesmo hardware. Se o servidor da Web for violado, os dados estarão acessíveis de qualquer maneira. A segurança não é o motivo típico para segregar camadas.
Nos dois casos, você deseja garantir que o servidor de banco de dados esteja escutando em portas não padrão, responderá apenas a solicitações do servidor da web e que o firewall permita apenas solicitações http / s para o servidor da web e nenhuma outra porta ou endereço .
No entanto, separá-los é uma boa prática. Cada servidor é mais fácil de gerenciar e configurar, e você pode lidar com falhas, problemas, reconstruções, problemas de desempenho, etc., mais facilmente avançando. Portanto, você pode considerar dois servidores virtuais no mesmo hardware, que podem ser separados quando o desempenho ou a capacidade exigir.
fonte
Eu não - mas esse sou eu.
Depende do que está à sua frente (por exemplo, firewalls, balanceadores de carga, etc.) e quão "restritos" são, quais são os dados reais (ou seja, agora impactam dados disponíveis publicamente em uma extremidade, segredos nacionais na outra) , se há algum impacto no desempenho ao combiná-los, a força da rede entre eles (por exemplo, firewalls entre camadas) e a qualidade do fortalecimento do OS / aplicativo que será aplicado.
Se você não espera que este sistema tenha que lidar com muita carga, uma coisa que você poderia considerar seria virtualizar o sistema em duas VMs separadas; uma por função - possivelmente com uma terceira VM de firewall somente de software entre elas. Isso significa que, mesmo que alguém quebre o servidor da Web, ele precisará quebrar o servidor do banco de dados e, se incluído, uma VM de firewall intermediária. É claro que isso reduziria o desempenho geral do sistema, mas seria pelo menos até certo ponto mais seguro e também poderia ajudar se sua carga aumentasse para exigir um design de dois servidores, pois você poderia simplesmente mover uma VM para a segunda máquina. O produto ESXi gratuito do VMWare pode fazer isso com bastante facilidade e já existem VMs de firewall gratuitas pré-empacotadas prontas para implementação, se você quiser.
fonte