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.
Parte 2: O que é e como funciona um túnel?
Um túnel nada mais é do que dois programas ligados um no outro. Um deles será a entrada do túnel e o outro será a saída. Os dados podem ser cifrados ao entrar no túnel e decifrados ao sair dele, mas um túnel não precisa realmente usar criptografia. Na maioria dos casos é uma insanidade não usar criptografia, mas não existe obrigatoriedade em seu uso.
Uma VPN (Virtual Private Network) não é o mesmo que túnel. Contudo, a VPN, para criar a ilusão de máquinas distantes estarem na mesma rede, faz uso de túneis, preferencialmente cifrados. No caso se abre uma entrada da VPN, digamos, na porta 4000 UDP do roteador. Tudo que entrar na porta 4000 será cifrado e levado até a porta 4000 de outro roteador distante. Lá este roteador irá decifrar o pacote e injetá-lo na rede local destino (existem diversas formas de se criar uma VPN. Este não é o único exemplo).
Existe muitos programas para a criação e manutenção de túneis, alguns até bem sofisticados, como é o caso do todo poderoso stunnel. Ele permite até mesmo negociar certificados SSL, ou seja, podes ter o teu servidor HTTP normal, que não sabe nada de SSL, mas por stunnel dar aos usuários da Internet acesso seguro via SSL. Neste caso o cliente negocia SSL com o stunnel e este repassa os dados decifrados ao servidor HTTP. Muito útil quando o servidor é antigo e não suporta SSL, ou quando ele é lento, havendo problemas de desempenho ao se implantar SSL. Pode ser útil também quando o servidor HTTP é gerenciado por outra pessoa e você não deseja dar a esta pessoa seu certificado e a chave privada dele. Mas não é realmente necessário usar programas específicos para criar um túnel. Certamente é conveniente usá-los, pois eles já tem recursos próprios para isto, mas para casos mais simples e rápidos, muitas outras formas, até criativas, podem ser usadas para este fim. Bastaria um programa que escutasse em uma porta e que permitisse enviar dados para outra, e pronto, tem-se os ingredientes para criar um túnel.
Para provar esta teoria, mais com a intenção de ser didático do que ser prático, que tal criar um túnel no braço usando o netcat?
Uma VPN (Virtual Private Network) não é o mesmo que túnel. Contudo, a VPN, para criar a ilusão de máquinas distantes estarem na mesma rede, faz uso de túneis, preferencialmente cifrados. No caso se abre uma entrada da VPN, digamos, na porta 4000 UDP do roteador. Tudo que entrar na porta 4000 será cifrado e levado até a porta 4000 de outro roteador distante. Lá este roteador irá decifrar o pacote e injetá-lo na rede local destino (existem diversas formas de se criar uma VPN. Este não é o único exemplo).
Existe muitos programas para a criação e manutenção de túneis, alguns até bem sofisticados, como é o caso do todo poderoso stunnel. Ele permite até mesmo negociar certificados SSL, ou seja, podes ter o teu servidor HTTP normal, que não sabe nada de SSL, mas por stunnel dar aos usuários da Internet acesso seguro via SSL. Neste caso o cliente negocia SSL com o stunnel e este repassa os dados decifrados ao servidor HTTP. Muito útil quando o servidor é antigo e não suporta SSL, ou quando ele é lento, havendo problemas de desempenho ao se implantar SSL. Pode ser útil também quando o servidor HTTP é gerenciado por outra pessoa e você não deseja dar a esta pessoa seu certificado e a chave privada dele. Mas não é realmente necessário usar programas específicos para criar um túnel. Certamente é conveniente usá-los, pois eles já tem recursos próprios para isto, mas para casos mais simples e rápidos, muitas outras formas, até criativas, podem ser usadas para este fim. Bastaria um programa que escutasse em uma porta e que permitisse enviar dados para outra, e pronto, tem-se os ingredientes para criar um túnel.
Para provar esta teoria, mais com a intenção de ser didático do que ser prático, que tal criar um túnel no braço usando o netcat?
[]'s