Túneis cifrados com SSH

Deseja acessar de forma segura o seu banco de dados e sem precisar abrir porta no firewall? Túnel. Acessar a porta 25 fazendo relay sem mudar as configurações do Postfix? Túnel. Existem inúmeras vantagens do uso de um túnel, inclusive a implantação de uma VPN é feita utilizando-se um túnel. Este artigo destina-se a explicar como usar o recurso de tunelamento existente no próprio SSH.

[ Hits: 141.214 ]

Por: Elgio Schlemer em 31/07/2009 | Blog: https://profelgio.duckdns.org/~elgio


Usando o recurso de túnel do SSH



Para que o ssh aceite ser usado como túnel, o parâmetro PermitTunnel deve estar ativo no arquivo de configurações (/etc/ssh/sshd_config). O padrão do ssh é permitir o uso de túneis, então, a menos que este parâmetro esteja com "no" o teu ssh está trabalhando com túneis.

A vantagem de se usar o ssh é que os dados enviados para o túnel serão cifrados desde a entrada do túnel até a sua saída. E cifrados com o mesmo algoritmo forte que o ssh usa para qualquer conexão.

Para explicar o uso do ssh como túnel, que tal refazer o exemplo do cliente que não consegue acessar o site Viva o Linux?
Linux: Túneis cifrados com SSH
Só que agora nenhum comando será executado na máquina 172.20.1.1. Apenas será aberto um túnel, via ssh, de 172.20.1.132 na porta 7000 para 172.20.1.1 na porta 22. O server ssh de lá será a saída do túnel.

No caso basta executar, na máquina cliente, o comando:

ssh -TL 7000:www.vivaolinux.com.br:80 laboratorio@172.20.1.1

A imagem a seguir mostra o efeito do comando e a saída do navegador:
Linux: Túneis cifrados com SSH
A explicação dos comandos ssh é a seguinte:
  • -T: ao contrário do que possa parecer, isto não quer dizer Túnel. Não é T de túnel, mas sim T de tty. Serve para desabilitar o suporte a tty. Sim isto você terá o login na máquina, o túnel funcionará, mas ao tentar fechar você poderá ficar travado e deverá executar Control+C no ssh cliente;
  • -L: indica abrir uma porta local, que será a entrada do túnel. O -L precisa de três parâmetros: portal local, endereço IP remoto, porta remota. Como no exemplo do 7000:www.vivaolinux.com.br:80 usado no comando. 7000 é a entrada do túnel (a saída será a porta 22 de 172.20.1.1). www.vivaolinux.com.br é para qual IP os pacotes devem ser enviados ao saírem do túnel e 80 é a porta destino;
  • laboratorio@172.20.1.1 são apenas os parâmetros normais de autenticação, que se deseja autenticar no servidor 172.20.1.1 com o usuário laboratório. A senha do usuário, evidentemente, é solicitada.

A figura a seguir mostra como este túnel funcionou, quem conversou com quem.
Linux: Túneis cifrados com SSH
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. O que é e como funciona um túnel?
   3. Construindo um túnel tosco com netcat
   4. Usando o recurso de túnel do SSH
   5. Situações práticas onde um túnel SSH pode ser uma saída
   6. Conclusão e referências
   7. ANEXO: script que uso para realizar um túnel SMTP
Outros artigos deste autor

Criptografia chave simétrica de bloco e de fluxo

Parâmetros interessantes do scanf e do printf em C

Mecanismo de firewall e seus conceitos

Criptografia assimétrica com o RSA

Estrutura do Iptables

Leitura recomendada

Criptografia em roteadores

Construindo um Log Server utilizando Linux, Unix e Windows

Intrusão simples com Metasploit

Snort + ACID + MySQL no Slackware

Implementação de um sistema de arquivos criptografado transparente ao usuário

  
Comentários
[1] Comentário enviado por cesar em 31/07/2009 - 08:38h

Boa elgio!


[]'s

[2] Comentário enviado por marcolinux em 31/07/2009 - 09:58h

Simplesmente dEStruIU! Parabéns excelente artigO!

[3] Comentário enviado por marciomarkes em 31/07/2009 - 11:56h

Meu caro Elgio... Sem comentários... Parabéns..

Abs..

[4] Comentário enviado por cytron em 03/08/2009 - 01:23h

É! Dá pra ver que ssh não tem limites kkkkk

[5] Comentário enviado por danlsgiga em 03/08/2009 - 22:22h

Excelente... dicas práticas e diretas. Parabéns!! Adorei o artigo.

[6] Comentário enviado por andre.vmatos em 04/08/2009 - 18:23h

Muito bom, novamente, Elgio. Artigo explendido, simplesmente didaticamente perfeito. Continue assim, por favor, nos enriquecendo com seu conhecimento. Só uma dúvida. No título da página 5, vc quis dizer SSH ou SSL mesmo? É pq não encontrei menção ao protocolo SSL na página, e sim ao SSH, motivo do artigo. Abçss
Atenciosamente,

[7] Comentário enviado por elgio em 04/08/2009 - 19:21h

Obrigado André.

Realmente, foi um erro meu.
Apesar de SSL ão ser completamente errado, estou falando do SSH.

Já foi corrigido. Obrigado pelo aviso.

[8] Comentário enviado por rsscwb em 17/09/2009 - 14:13h

Elgio,

Parabéns por seus artigos, são Excelentes!!! Não apenas este, mas todos!

Agora estou utilizando este túnel para acessar o webmin no meu servidor. Eu bloqueei o acesso externo na porta 10000 pelo iptables e, cada vez que eu precisava acessar o webmin, tinha que rodar um script pelo ssh liberando a porta pro meu ip local atual (que é dinâmico).

Agora apenas crio o túnel na minha máquina local e pronto! Nem tenho o trabalho de digitar minha senha, pois configurei a autenticação por desafio e resposta, conforme vc explicou em outro artigo. Simples e fácil!

Att,
Robson

[9] Comentário enviado por ikichl em 23/09/2009 - 09:23h

Bom dia
estou com um grande problema aqui tenho um sistema em php que faz conexoes
automaticas atravez e chave de seguranca, instalada na maquina remota, porem cada
nova conexao ele pede a confirmacao antes e conectar a primeira vez:

Are you sure you want to continue connecting (yes/no)?

ja tentei diversos meio para auto aceitar a conexao, mas sempre sem sucesso
echo -e "yes" | ssh root@200.175.121.18


[10] Comentário enviado por ikichl em 23/09/2009 - 09:42h

Acho que descobri como fazer, ele adiciona automaticamente a chave sem confirmar.


ssh root@200.175.121.18 -p 22 -o StrictHostKeyChecking=no


Obrigado

[11] Comentário enviado por removido em 04/10/2009 - 23:39h

Buenas tchê.
Estava afastado da TI e do VOL, ao retornar encontro este artigo muito bem escrito, com um assunto palpável e com exemplos que realmente funcionam. Estas de parabéns.
Sei que existem alguns de meus usuários, os mais espertos, tunelando conexões em uma porta bem conhecida que meu firewall necessita deixar passar mas, estou estudando as técnicas disponíveis e em busca de soluções.

[12] Comentário enviado por _m4n14c_2 em 20/10/2011 - 04:06h

Só lembrando, o própro ssh possui uma switch para passar os dados pelo gzip (-C). Como voce propos usar o tar seria mais vantajoso usar algoritmo bzip no lugar do gzip, bastar usar a switch j no lugar do z. Assim ganha-se um pouco de velocidade na transmissão dos dados, já que o bzip é mais eficiente que o gzip:

tar cj dados/ | ssh root@172.20.1.132 "tar xj && echo SUCESSO na cópia. SCP é para os fracos"

[13] Comentário enviado por emtudo em 31/08/2012 - 22:00h

Cara, preciso dizer:


excelente artigo...

[14] Comentário enviado por jwolff em 18/12/2012 - 16:47h

Eu iria criar um Artigo com Script sobre Tunelamento por SSH para burlar firewall e squid. Mas você mostrou todos os pontos fracos neste Post e seria em vão meu Artigo.
O que me resta é lhe dar os Parabéns,você é muito bom!

[15] Comentário enviado por c4rnivor3 em 18/02/2013 - 21:39h

Otimo artigo. Muito grato pelo conhecimento! Se possível, faz um sobre o Netcat. Ficar no aguardo!

[16] Comentário enviado por qxada07 em 29/12/2014 - 13:36h

Parabéns...

Ótimo exemplo a forma de utilizar para acessar os switch's.

Show de bola


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts