Voltar ao blog

Roteamento de tráfego web sem uma VPN usando túnel SOCKS

Roteamento de tráfego web sem uma VPN usando túnel SOCKS

Quando se trata de proteger a sua pegada na web, você já deve ter ouvido falar sobre VPNs, certo? A VPN age como um intermediário entre o seu computador e a internet. Todo o tráfego passa por o servidor VPN, mascarando efetivamente o seu endereço IP e localização.

No entanto, a VPN não é a única forma de um servidor proxy. O SOCKS (Socket Secure) é um protocolo de rede semelhante que permite a comunicação com servidores através de um firewall, roteando o tráfego de rede em nome de um cliente. Comparado à VPN, o SOCKS oferece mais flexibilidade e controle sobre a configuração da rede. É útil quando você não pode instalar o cliente VPN ou não confia em um provedor de VPN.

Este guia irá demonstrar como estabelecer um túnel proxy SSH SOCKS 5 e rotear o seu tráfego web através do túnel.

Pré-requisitos

Para demonstração, usamos uma máquina local executando o Ubuntu desktop e uma máquina remota executando o Ubuntu server. Você precisa ter o SSH configurado antes de fazê-lo funcionar perfeitamente. Como estamos usando o proxy SOCKS, para testar a conexão, precisamos de um aplicativo que possa usá-lo. Firefox é um exemplo perfeito. É um navegador web moderno que suporta o túnel proxy SOCKS 5.

Se você estiver no Windows, pode usar o WSL (Windows Subsystem for Linux) para configurar um ambiente Linux local ou usar o PuTTY, um aplicativo de código aberto que pode implementar vários protocolos de rede como Telnet, rlogin, etc.

Configurando o túnel SOCKS

  • Configurando o túnel SOCKS (macOS/Linux)

No computador local, precisamos configurar uma chave SSH para garantir uma conexão segura. A chave SSH também deve ser registrada no sistema remoto. Este guia sobre configuração de autenticação baseada em chave SSH demonstra o processo em detalhes.

O seguinte comando SSH estabelecerá um túnel SOCKS para o servidor remoto:

Vamos detalhar o comando:

  • -i: Diz ao SSH qual chave SSH usar para a conexão.

  • -D: Diz ao SSH que queremos estabelecer um túnel SOCKS. Quanto à porta, estamos usando a porta 1024. Não é um valor fixo. Você pode escolher qualquer porta entre 1024 e 65536.

  • -f: O processo SSH será executado em segundo plano (forked).

  • -C: O SSH compactará os dados antes de enviá-los para o servidor remoto. Isso pode economizar o consumo de dados e aumentar a largura de banda efetiva.

  • -q: Executa a ferramenta em modo silencioso.

  • -N: Diz ao SSH que, após estabelecer o túnel, nenhum comando será enviado.

Uma vez executado, podemos verificar se o processo iniciou corretamente. O seguinte comando imprimirá informações sobre todos os processos SSH em execução:

Routing grep ssh

Agora, você pode fechar a janela do terminal com segurança. O processo SSH funcionará como pretendido em segundo plano.

  • Configurando o túnel SOCKS (Windows)

Para usuários do Windows, usar o PuTTY é uma solução mais fácil. Primeiro, você precisa baixar o PuTTY:

Routing download putty

Depois de instalado, inicie o PuTTY:

Routing putty screen1

Na aba Session no painel esquerdo, insira o Host Name (or IP address) do seu servidor. Quanto ao Connection type, selecione SSH. Em seguida, vá para Connection >> SSH >> Tunnels. Aqui, no campo Destination, selecione as opções mostradas na captura de tela:

Routing putty screen2

Em seguida, clique em Open. Uma janela de terminal aparecerá para conectar ao servidor remoto via SSH. Faça login no servidor remoto:

Routing putty screen 3

Implementando o túnel SOCKS

O túnel está configurado. Qualquer aplicativo que suporte SOCKS pode usar o túnel. Para demonstração, o Firefox é um ótimo exemplo.

Primeiro, abra o Firefox. No canto superior direito, clique no ícone de menu. Vá para Settings:

ubuntu screen1

Em seguida, pesquise por proxy. Clique em Settings em Configure how Firefox connects to the internet:

firefox preferences

Depois disso, selecione Manual proxy configuration. Quanto ao SOCKS Host, use localhost ou 127.0.0.1. Depois, para a porta, insira a porta que dedicamos para o túnel SOCKS. Não se esqueça de selecionar SOCKS_v5:

firefox proxy conf

Por fim, marque a opção Proxy DNS when using SOCKS_v5. Clique em OK para continuar.

Em seguida, abra uma nova aba e tente acessar qualquer página web. Por exemplo, você pode verificar seu endereço IP no CheckMyIP.

Revertendo o Proxy

Quando você não precisar mais da conexão proxy para o túnel SSH, poderá desativá-la com segurança nas configurações de proxy do Firefox:

Routing firefox reverting proxy conf

Na janela, selecione Usar as configurações de proxy do sistema e clique em OK.

Fechando o túnel SOCKS

  • Fechando o túnel no macOS/Linux

Para fechar o túnel, precisamos encerrar manualmente o processo SSH. Precisamos do PID (ID do processo) do processo SSH. O seguinte comando revelará os PIDs de todos os processos SSH em execução:

Anote o processo SSH que está em execução com o comando para criar o túnel. Encerre o processo:

If no option is defined, the kill command will send a generic SIGTERM signal to the target process. You can learn more about Linux process management from this tutorial.

  • Fechando o túnel no Windows

Fechar a janela do PuTTY deve fechar a conexão do túnel.

Solução de problemas

Aqui estão alguns problemas comuns que você pode enfrentar ao tentar usar o SOCKS para rotear o tráfego.

  • Firewall

Se você não conseguir estabelecer uma conexão devido a uma restrição de firewall, é provável que o firewall esteja configurado para bloquear a conexão com a porta 22. Esta é a porta padrão que o SSH usa para se conectar a sistemas remotos. Algumas portas permanecem abertas por padrão, por exemplo, a porta 80 (tráfego web geral) e a porta 443 (TLS, tráfego web seguro).

Se o servidor SSH não estiver servindo conteúdo web, podemos usar uma das portas padrão ( 80 ou 443 ) em vez da porta 22. Recomenda-se usar a porta 443 pois ela espera tráfego criptografado por padrão. Ela também criptografará o tráfego de saída. Para fazer a alteração, precisamos modificar o arquivo de configuração do SSH. Abra o arquivo em um editor de texto:

O SSH pode usar várias portas para sua finalidade. Role o arquivo de configuração para baixo e encontre a seção de portas:

Routing sshd config

Assim que as alterações forem feitas, salve o arquivo e feche o editor. Reinicie o serviço SSH para aplicar a alteração:

Para verificar se a nova porta está funcionando, tente se conectar ao servidor remoto usando a nova porta:

Se a conexão for bem-sucedida, podemos usar com segurança a porta 443 para o tunelamento SSH. Aqui está o comando revisado para estabelecer o túnel SOCKS:

Here, the flag -p tells SSH to use port 443.

Considerações finais

Hoje em dia, a privacidade e a segurança são algumas das maiores preocupações. Existem muitas maneiras de navegar com segurança quando você está em uma rede hostil. Na maioria dos casos, o uso de uma VPN oferecerá segurança suficiente para o tráfego da sua rede. Por outro lado, um túnel SOCKS oferecerá a segurança necessária se você não puder ou não confiar em uma VPN. Ter um túnel SOCKS também lhe dá controle total sobre a configuração.

Boa computação!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.