Prática recomendada para APENAS permitir o acesso do MySQL a um servidor?

2

Este é o caso de uso:

Eu tenho um sistema SaaS que foi criado (dev environment) em uma única caixa. Eu mudei tudo para um ambiente de nuvem rodando o Ubuntu 10.10. Um servidor executa o aplicativo, o outro executa o banco de dados. A ideia básica é que o servidor que executa o banco de dados deve ser acessível apenas pelo aplicativo e pela máquina do administrador, que possuem chaves RSA corretas.

Minha pergunta:

Seria melhor prática usar um firewall para bloquear o acesso a TODAS as portas, exceto o MySQL, ou pular firewall / iptables e apenas desabilitar todos os outros serviços / portas completamente? Além disso, devo executar o MySQL em uma porta não padrão? Este banco de dados conterá informações bastante confidenciais e eu quero ter certeza de que estou fazendo todo o possível para protegê-las adequadamente.

Agradecemos antecipadamente. Eu tenho lido aqui por um tempo, mas esta é a primeira pergunta que fiz. Vou tentar responder algumas também =)

    
por Calvin Froedge 29.12.2010 / 01:39

4 respostas

3

Idealmente, para segurança máxima, você deseja várias camadas.

Isso inclui coisas como um firewall para bloquear todo o acesso a portas em rede (o shorewall é bastante fácil de configurar), bem como o uso de tcpwrappers (hosts.allow / hosts.deny) para restringir o acesso a vários daemons.

Se o servidor de banco de dados estiver recebendo apenas conexões de um determinado servidor (com um IP estático), esse IP também poderá ser usado em conjunto com as configurações de firewall padrão, tcwrapper & Métodos de autenticação mysql para restringir adicionalmente o acesso a apenas esse servidor.

    
por 29.12.2010 / 04:10
1

Algum tipo de túnel seguro entre os servidores seria ideal, bloqueando todo o acesso ao servidor DB de outra forma.

Exceto isso, eu acho que é uma ótima idéia usar o firewall para filtrar tudo indesejado e indesejado, mesmo que pareça redundante (por exemplo, se há um daemon atual escutando na porta X ou não). Uma coisa "boa" sobre filtrar tudo (via DROP no netfilter) é que ela não faz uma simples varredura da porta TCP rápida e fácil.

Eu também não acho uma má idéia mudar a porta padrão para o banco de dados, se ele precisa estar aberto para a Internet. Apenas nunca tenha ilusões sobre isso, sozinho, como uma 'medida de segurança'.

    
por 29.12.2010 / 01:49
0

Como prática recomendada, você deve desabilitar os serviços que não estão sendo usados e firewall suas caixas. Quando você faz isso, você está aplicando o princípio da defesa em profundidade. Você pode alterar a porta padrão do mysql, pois isso pode ajudar a reduzir o ruído em seus logs, mas isso não deve ser a única coisa que você faz.

Se o seu banco de dados contiver informações confidenciais, você deve considerar o uso de criptografia para esses dados, embora eu não esteja familiarizado o suficiente com o MySql para saber o que ele suporta.

Você também deve verificar a pergunta " Fortalecimento do MySql Server " em security.se .

    
por 29.12.2010 / 02:40
0

Ei, tente com /etc/hosts.allowed e /etc/hosts.deny

Adicione ALL: ALL aos hosts negar, mas seu IP e mysqld para hosts.allowed. Leia mais em:

link

Esta é a maneira mais simples.

Sua configuração será parecida com:

/etc/hosts.allow   TODOS: (Seu-Conectando-IP) e /etc/hosts.deny TODOS: TODOS

adicionar o localhost ao permitido pode ser uma boa ideia.

    
por 29.12.2010 / 03:03