Improvisando um proxy socks v5 no seu servidor usando SSH

Outro dia um amigo me perguntou se era complicado montar um proxy sock v5 , pelo que ele explicou ele estava precisando acessar algum site fora do Brasil que fazia restrição de IPs, e ele estava buscando uma forma de contornar a restrição.

Perguntei se ele tinha acesso shell a algum servidor rodando Linux ou FreeBSD fora do pais rodando openssh, e quando ele respondeu que sim, eu disse que ele não precisava fazer nenhuma configuração adicional, pois ele podia usar o ssh pra fazer o que ele queria.

Como acredito que outras pessoas podem ter a mesma necessidade, e nem sempre lembram que podem usar um server ssh como “proxy socks v5″, seguem a receita de bolo :)

Passo 1: Configuração do sshd

Normalmente qualquer servidor de ssh em sua configuração default suporta as funcionalidades que precisamos, por via das duvidas de uma olhada no seu arquivo /etc/ssh/sshd_config e verifique se o mesmo tem as seguintes opções habilitadas:

AllowTcpForwarding  yes
PermitTunnel  yes

Se ele não possuir, inclua estas linhas e restarte o sshd (um “kill -HUP” no processo resolve).

Passo2: Configuração do Tunel SSH

Se você ainda não tem um cliente SSH para windows recomendo que faça o download do Putty SSH , pois ele é um aplicativo gratuito extremamente robusto. A configuração abaixo foi feita utilizando o Putty na versão 0.6.

Quando você executar o putty ssh você irá ver a tela abaixo:

putty-0

No campo “Host Name (or IP Address)“  você deve colocar os dados do servidor no formato seu_login@endereço_do_servidor.

No campo “Saved Sessions” você deve escolher um nome para essa conexão, para que você não tenha que reconfigurar o cliente quando quizer se conectar a este servidor novamente.

Depois de preencher os campos, escolha a opção “Connection” no menu da esquerda e será exibida a seguinte tela:

putty-1

Nesta tela você devera definir qual o intervalo em segundos no qual o cliente ssh irá enviar pacotes de “keep alive” para o servidor, eu sugiro usar 30 segundos, lembre-se de habilitar a opção “Enable TCP Keepalives“.

Feito estes ajustes, escolha a opção “SSH” no menu da esquerda,  escolhendo na sequência a opção “Tunnels“, é nesta tela que iremos criar o tunel propriamente dito:

putty-2

O processo de criação do tunel é bem simples, basta setar o campo “Source Port” para 8080, o campo “Destination” para localhost, e marcar as opções “Dynamic” e “Auto“,  depois de preencher os campos, pressione o botão “Add“, feito isso será criada uma entrada “D8080” no campo “Fowarded ports“, como mostrada na figura abaixo.

putty-3

Agora que já realizamos a configuração podemos salvar a sessão, para isso role o menu da esquerda para cima e clique na opção “Session“, na tela que vai abrir basta clicar no botão “Save” para gravar os dados da sessão que acabamos de configurar sob o nome que você havia escolhido no começo do processo. Depois de salvar, a sua sessão customizada vai aparecer logo abaixo  da entrada “Default Settings” como mostrado abaixo.

putty-4

Sempre que você abrir o Putty e desejar se conectar ao seu servidor basta clicar 2 vezes com o botão direito do mouse no nome da sua sessão.

Passo 3:  Configurar seu aplicativo para se conectar através do tunel SSH

Agora que já configuramos nossa conexão SSH para criar um tunel cryptografado entre nosso computador e o servidor remoto, precisamos configurar nossos aplicativos para usá-lo.

Para ilustrar o processo (que vai ser praticamente o mesmo em todos que suportam o uso de um proxy socket 5) abaixo seguem o procedimento para configuração do Firefox.

Para realizar a configuração, clique no menu “Ferramentas” e depois clique em  “Opções“.

firefox-0

Ao fazer isso a tela de configuração do Firefox irá se abrir, e você deverá clicar no item “Avançado“, na parte superior direita da janela.

firefox-1

Nesta nova janela você deverá clicar na tab “Rede

firefox-2

Na tela seguinte você vai visualizar uma area demarcada com nome “Conexão” e nela existe um botão com nome  “Configurar“, clique nele para ir para a tela de configuração do proxy

firefox-3

Quando você entrar nesta tela a unica opção selecionada será a “Sem proxy“, o que significa que seu computador acessa a internet diretamente sem passar por nenhum servidor intermediario de proxy (ou seja, o IP que aparece para o servidor que vc esta visitando pelo Browser é o IP real da sua conexão).

Para configurarmos nosso firefox para usar o nosso tunel SSH devemos selecionar a opção “Configuração manual de proxy“, e devemos preencher o campo “SOCKS” como “localhost”, e o campo “Porta” como “8080″.

Agora basta selecionar a opção “SOCKS v5″, e pressionar “OK” para voltar para a tela anterior. De mais um “OK” nesta tela e você estará de volta na janela principal do Firefox.

firefox-4

Se você tentar acessar qualquer site agora vocêr vai ver a mensagem abaixo

firefox-5

Isto ocorre porque para que o seu aplicativo, no caso do nosso exemplo o Firefox, consiga se conectar através do tunel, você precisa estar com a conexão ssh estabelecida. Faça o login no seu servidor através da sessão que configuramos, e tente novamente :). Agora você deve ser capaz de visualizar o site normalmente ao clicar no botão “Tentar de novo”.

Para usar seu tunel com outros aplicativos basta configurá-los para usar como proxy sock v5 o servidor “localhost” na porta “8080″.

Para testar se você está realmente navegando através do seu servidor remoto, basta acessar um site que mostra seu IP, você pode usar qualquer um dos listados abaixo:

Agora que você esta navegando com o IP do seu servidor remoto, caso ele esteja localizado em outro país,  você poderá acessar sites que não permitem acesso de IPs internacionais.

Bom divertimento

[]´s Edson

PS. Se você está procurando uma forma de navegar de forma anonima pela internet o simples uso de um proxy socks v5 não vai garantir 100% de anonimato, pois apenas o trafego do seu browser irá sair pelo proxy, o trafego de DNS por exemplo continuará saindo pelo seu IP real.

Se você precisa de uma solução 100% eficiente, recomendo que visite o site to projeto TOR (http://www.torproject.org/).

3 Responses to “Improvisando um proxy socks v5 no seu servidor usando SSH”

  1. Caso de erro na hora de reiniciar o serviço:

    Starting sshd:/etc/ssh/sshd_config: line 88: Bad configuration option: PermitTunnel
    /etc/ssh/sshd_config: terminating, 1 bad configuration options

    E porque a versão do SSH e antiga você tem que atualizar ela

  2. Ótima dica

  3. cara não sou de deixar comentários mais depois que este seu tutorial me ajudou tive que deixar um comentário agradecendo! valeu!!