SSH tunnel (encaminhamento de porta) abrandar muito minhas consultas mysql

5

No momento, estou testando algumas configurações com vagrant (caixa virtual) para conectar dois servidores (VM atualmente) juntos por meio de um túnel SSH. O objetivo é conectar com segurança meu aplicativo da web ao banco de dados.

A questão é que, quando eu consultar o banco de dados por meio de um túnel SSH, minhas consultas são de 5 a 80 vezes mais lentas do que se eu não usasse um túnel. Aqui está o comando que estou usando:

ssh -N -L 3306:127.0.0.1:3306 [email protected]

Pelo que eu li, a sobrecarga não deveria ser muito, então eu tentei algumas coisas para acelerar as transferências. Eu descubro que, se eu remover a opção -N , as consultas serão tão rápidas quanto se eu não usasse um túnel, mas eu estivesse logado no terminal como 'sshuser' (e adicionando um & no fim do comando faz coisas estranhas ...).

Então, sabendo disso, tenho algumas perguntas:

  • Meus dados ainda estão criptografados quando eu removo a opção -N ?

  • Se sim, o que posso fazer para manter o desempenho sem estar logado como 'sshuser' no console?

  • Há alguma opção que eu possa usar para tornar a criptografia mais rápida?

Agradecemos antecipadamente pela sua luz.

    
por Nicolas BADIA 17.10.2014 / 17:57

2 respostas

8

O túnel SSH não é realmente uma ótima ideia como uma solução permanente. O SSH é baseado em TCP. A maioria das coisas que você pode encapsular no SSH é baseada em TCP (incluindo o mysql). Tunelamento TCP sobre TCP pode ter implicações no desempenho. Porque o seu sistema tentará lidar com o backoff e tal em ambas as conexões ao mesmo tempo.

Se você quiser uma conexão permanente segura entre dois hosts na mesma rede, seria quase certamente melhor investigar o que seria necessário para configurar o IPSEC. Ou se o IPSEC não funcionar para você, use uma configuração de VPN que não seja transportada por TCP.

Quanto ao desempenho do seu túnel SSH, eu daria uma olhada nas cifras que você está usando. Alguns são mais rápidos que outros. Talvez você possa aceitar uma cifra mais rápida / mais fraca. Você quase pode querer verificar se a compactação está desativada. Se você estiver em um link rápido, não há realmente nenhum valor para compactar, mas pode estar adicionando latência para realizar a compactação / descompactação. Se você ainda não obtiver melhorias após a mudança, provavelmente você irá querer disparar o tcpdump / wireshark e ver se você pode ver de onde os atrasos estão vindo.

    
por 17.10.2014 / 19:23
1

A opção -N apenas impede que o SSH execute um comando remoto, não a criptografia. Seu túnel ainda será criptografado de qualquer maneira.

Se você usar -N , ssh apenas criará o túnel, não o shell e todas as variáveis de ambiente do outro lado. É muito mais rápido.

Eu não acho que adicionar um túnel SSH à sua configuração aumente sua segurança, pode até diminuir drasticamente.

Se você conectar seu aplicativo da Web diretamente ao banco de dados, qualquer invasor em potencial terá apenas as credenciais que seu aplicativo usa. Se você criar um túnel, o invasor poderá potencialmente explorar o túnel para obter acesso ao host do banco de dados e comprometer todos os dados nesse servidor.

Em sua configuração, você precisa iniciar manualmente o túnel e provavelmente irá automatizá-lo, e armazenar as credenciais de alguma forma. Um invasor pode localizar as credenciais e usá-las para obter acesso ao servidor de banco de dados.

Se o servidor de banco de dados e o servidor de aplicativos estiverem na mesma sub-rede, o ganho de segurança no uso de túneis SSH criptografados para acessar os dados é insignificante. Isso apenas protegeria você de um invasor que já esteja dentro da rede. Neste caso, é apenas uma questão de tempo antes que ele tenha acesso a tudo.

    
por 17.10.2014 / 18:06