Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Furando firewalls )

Criando um túnel através de uma proxy web

Augusto C. Campos (brain@matrix.com.br)

Você já passou pela situação de ter que fazer alguma atividade importante na internet, e descobrir que a empresa ou laboratório onde você está impede o acesso "full" à Internet, liberando apenas alguns serviços ou sites?

Esta situação é mais comum do que se imagina, e muitos usuários padecem deste mal, e ficam privados (às vezes desnecessariamente) do acesso a serviços como o SSH, e-mail POP, e muitos outros, em nome de uma visão restritiva de segurança.

Antes de prosseguir, lembre-se: toda ação em uma rede local pode gerar impactos na sua segurança, e contrariar as políticas de segurança de sua empresa, escola ou outra organização pode trazer sérias consequências, tanto a ela quanto a você. Vou abordar aqui apenas os aspectos técnicos da questão - os aspectos políticos, éticos e morais ficam por sua conta.

O httptunnel é uma interessante solução para este problema, pois ele é capaz de encapsular tráfego IP dentro de um fluxo HTTP - permitindo assim que você faça suas conexões Telnet, SSH, POP, etc. trafeguem através do proxy web que de modo geral as rejeita.

Disponível em http://www.nocrew.org/software/httptunnel.html, o uso do httptunnel é bastante simples, desde que você entenda o básico sobre TCP/IP, e tenha acesso shell a uma máquina com conexão permanente à Internet, fora da rede onde você está bloqueado.

Após fazer o download, compile-o e instale-o com os comandos tradicionais (./configure; make; make install). Faça este passo tanto em uma máquina da sua rede local (bloqueada) quanto na máquina da rede externa (livre).

Agora você precisará rodar o tunnel em ambas as máquinas. No exemplo, vamos imaginar que você está "prisioneiro" na rede da empresa evil.org, que só disponibiliza acesso web através de uma proxy (proxy.evil.org, porta 3128). Sua máquina externa é a externa.free.org, e a máquina interna é blocked.evil.org. Você quer permitir conexões SSH (porta 22, confira no /etc/services) à máquina externa.

Em primeiro lugar, rode o servidor na máquina externa. Fazer isto é muito simples: hts -F host:porta_local porta_exportada

No nosso exemplo, o comando seria:

  hts -F localhost:22 8000

Com isto, o hts na máquina remota aceitará conexões do htc (que ainda não rodamos) em sua porta 8000, e as redirecionará à porta 22 (que é a do protocolo ssh - o ssh deve ter sido previamente configurado nesta máquina).

Agora você precisa rodar o cliente na sua máquina interna - ele que irá se encarregar de "enganar" a sua proxy. Como no caso anterior, basta um comando: htc -F porta_local -P endereço_proxy:porta_da_proxy endereço_externo:porta_externa

No nosso exemplo, o comando seria:

  htc -F 2222 -P proxy.evil.org:3128 externa.free.org:8000

Com isto, o htc redirecionará conexões TCP à porta 2222 de sua máquina local, através da proxy, para a porta 8000 da máquina externa (a qual, por sua vez, nós configuramos para redirecionar da porta 8000 para a porta 22).

Parece inacreditável? Mas é só isso mesmo. Se tudo funcionou, basta você digitar o seguinte comando:

  ssh -p 2222 blocked.evil.org

e você deverá ver o prompt ssh da máquina externa.free.org. Se algo der errado, confira todos os logs aplicáveis, e leia com atenção a documentação do httptunnel. Boa sorte!


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.