Temos um aplicativo PHP que se conecta a um servidor MySQL e desejamos garantir conexões entre os servidores de aplicativos e web e o banco de dados.
Nos horários de pico, os servidores da Web fazem muitas centenas de conexões simultâneas com o banco de dados e executam várias 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 com o banco de dados paralelamente a isso.
Atualmente, não temos conexões persistentes com o banco de dados ativadas e, embora pretendamos no futuro, eu gostaria de implementar isso independentemente disso.
Em termos de hardware - o servidor MySQL é bastante robusto (16 núcleos), assim como os servidores web. Eles são servidores dedicados.
Minha pergunta envolve a maneira mais eficiente de proteger e criptografar as conexões com o servidor de banco de dados.
Até agora, minha pesquisa sugeriu que a principal sobrecarga de desempenho está na configuração da conexão SSL - depois que o SSL é conectado, há pouca penalidade no desempenho. E aqui está o que eu tenho sobre cada método de segurança da conexão:
- Certificados SSL do MySQL - funciona como SSL normal. Pode usar certificados de cliente para impedir conexões não autorizadas. Não há conexões persistentes com nossa configuração existente. Ainda é preciso ter o MySQL escutando em uma porta aberta no firewall.
- stunnel. Configure uma porta para o túnel ssl da porta. Não precisa reconfigurar o MySQL. Pode fechar a porta de escuta normal do MySQL para impedir tentativas maliciosas de conexão do MySQL. Não suporta conexões persistentes. Sucesso de desempenho desconhecido.
- Túnel SSH. Crie um túnel SSH entre o cliente e o servidor. Não precisa reconfigurar o MySQL. Pode fechar a porta de escuta normal do MySQL para impedir tentativas maliciosas de conexão do MySQL. Suporta conexões persistentes, mas elas às vezes desaparecem. Sucesso de desempenho desconhecido.
Isto é até onde eu pude entender. 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 esperava que alguém tivesse algum conselho baseado em suas próprias experiências de segurança do MySQL?
obrigado
fonte
openssl speed
e escolha cifras que atendam às suas necessidades de proteção versus comprometimento do desempenho.Respostas:
Eu iria com o túnel ssh e faria isso em
autossh
vez dessh
. 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.
fonte
Observando os benchmarks deste artigo (MySQL Performance Blog), você realmente deve evitar a capacidade SSL nativa do MySQL.
fonte