Conectando-se ao MySQL com segurança - SSL do MySQL vs Stunnel vs SSH Tunneling

13

Nós temos um aplicativo PHP que se conecta a um servidor MySQL, e desejamos proteger conexões entre a web & servidores de aplicativos e o banco de dados.

Nos horários de pico, os servidores da Web realizam muitas centenas de conexões simultâneas com o banco de dados e executam muitas pequenas leituras e gravações. Estou ciente de que isso não é o ideal e estou trabalhando para reduzir o número de conexões de banco de dados em paralelo a isso.

Não temos conexões persistentes com o banco de dados ativado atualmente e, embora pretendamos no futuro, gostaria de implementá-lo independentemente disso.

Hardware sábio - o servidor MySQL é bastante robusto (16 core), assim como os servidores web. Eles são servidores dedicados.

Minha pergunta envolve a maneira mais eficaz de proteger & criptografando as conexões com o servidor de banco de dados.

Minha pesquisa até agora sugeriu que a principal sobrecarga de desempenho é com a configuração da conexão SSL - quando o SSL é conectado, há pouca penalidade de desempenho. E aqui está o que eu tenho sobre cada método de proteger a conexão:

  1. Certificados SSL MySQL - funciona como o SSL normal. Pode usar certificados de cliente para impedir conexões não autorizadas. Nenhuma conexão persistente com nossa configuração existente. Ainda tem que ter o MySQL escutando em uma porta aberta no firewall.
  2. stunnel. Configure uma porta para o túnel ssl da porta. Não é necessário reconfigurar o MySQL. Pode fechar a porta de escuta normal do MySQL para impedir tentativas de conexão maliciosas do MySQL. Não suporta conexões persistentes. Hit de desempenho desconhecido.
  3. Tunelamento SSH. Crie um túnel SSH entre o cliente e o servidor. Não é necessário reconfigurar o MySQL. Pode fechar a porta de escuta normal do MySQL para impedir tentativas de conexão maliciosas do MySQL. Suporta conexões persistentes, mas às vezes elas são descartadas. Hit de desempenho desconhecido.

Isso é o mais que consegui. Estou ciente das limitações dos benchmarks - na minha experiência de executá-los, é muito difícil simular o tráfego no mundo real. Eu estava esperando que alguém tivesse algum conselho baseado em suas próprias experiências de garantia do MySQL?

Obrigado

    
por dastra 22.04.2011 / 11:39

2 respostas

5

Eu iria com o ssh-tunnel e faria isso com autossh em vez de ssh . Sobre o desempenho, eu diria que o protocolo SSH é altamente personalizável e você pode ajustar sua conexão, se necessário.

Mas eu não esperaria uma sobrecarga perceptível após a conexão ser configurada.

    
por 29.04.2011 / 18:08
2

Ao olhar para os benchmarks deste artigo (MySQL Performance Blog), você deve realmente evitar o recurso nativo SSL do MySQL.

    
por 15.10.2014 / 18:02