Proxies MEIAS
SOCKS é o proxy independente de protocolo. Onde os proxies HTTP entendem apenas o tráfego da web, um proxy SOCKS irá encapsular qualquer conexão TCP (e em SOCKS5, UDP), sem fazer perguntas. Essa generalidade é a razão pela qual o SSH fornece suporte SOCKS pronto para uso, por que o Tor expõe um ouvinte SOCKS5 e por que quase todas as ferramentas de privacidade que desejam encaminhar o tráfego arbitrário de aplicativos acabam usando-o.
O corpo completo do artigo é fornecido em inglês abaixo.
SOCKS ("Socket Secure") foi projetado na MIPS Computer Systems no início da década de 1990 para fornecer aos hosts com firewall uma maneira limpa de alcançar o mundo exterior. Em vez de analisar cada protocolo de aplicativo da mesma forma que um proxy HTTP faz, um servidor SOCKS apenas abre conexões TCP em nome do cliente e embaralha os bytes para frente e para trás. Qualquer que seja o protocolo colocado na parte superior - HTTP, SMTP, IRC, binário personalizado - funciona inalterado.
SOCKS4 vs SOCKS5
SOCKS4, padronizado em 1992, suporta apenas IPv4 e TCP e não tem autenticação. É essencialmente obsoleto hoje, mas ainda amplamente visto em software legado.
SOCKS5, definido na RFC 1928 (1996), é a versão em uso ativo. Ele adiciona:
- IPv6 endereços de destino
- Nome de domínioDestinos (o proxy os resolve, não o cliente - importante para a privacidade)Métodos
- Autenticação (nome de usuário/senha sendo o comum)
- UDP associado — um canal de controle que permite ao cliente encapsular datagramas UDP, útil para protocolos DNS, VoIP e jogos
O fluxo de conexão
A A conversa SOCKS5 se parece com isto:
- Client se conecta ao servidor SOCKS em sua porta de escuta (normalmente 1080).
- Client envia um greeting listando métodos de autenticação suportados.
- Server escolhe um e responde.
- If auth foi negociado, cliente e servidor executam.
- O cliente envia uma solicitação CONNECT nomeando o host e a porta de destino.
- Servidor abre aquela conexão TCP, responde com sucesso e o endereço vinculado, e a partir daí tudo que o cliente escreve é encaminhado para o destino e vice versa.
Cinco viagens de ida e volta antes do primeiro byte do aplicativo se mover. SOCKS não é compatível com latência, mas é simples.
SOCKS e DNS: de onde vêm os vazamentos
Um recurso sutil do SOCKS5 é como o destino é nomeado. A solicitação CONNECT pode nomeá-lo por IPv4, IPv6 ou nome de domínio. Se o cliente enviar um IP, o cliente fez a pesquisa de DNS localmente – e se você estava tentando se esconder atrás do proxy, seu resolvedor local apenas viu o nome. Se o cliente enviar o domain, o proxy o resolverá, que é o que os usuários do Tor desejam.
Esta é a causa raiz de incontáveis vazamentos de DNS: aplicativos configurados para SOCKS5 que ainda resolvem nomes de host localmente. Curl precisa de --socks5-hostname em vez de --socks5. O Firefox precisa de network.proxy.socks_remote_dns = true. Nosso teste de vazamento DNS detecta o modo de falha.
SSH encaminhamento dinâmico
Um dos usos mais práticos do SOCKS é ssh -D 1080 user@server. SSH gera um ouvinte SOCKS5 local; qualquer aplicativo apontado para ele tem seu tráfego TCP encapsulado pela sessão SSH para server, que então faz a conexão de saída. Gratuito, criptografado de ponta a ponta entre você e o servidor SSH, e roteia quase qualquer restrição de rede local que permite a porta 22.
SOCKS vs HTTP CONNECT
HTTP CONNECT, o verbo de tunelamento usado por proxies HTTP para HTTPS, é funcionalmente semelhante ao SOCKS - ambos estabelecem um túnel TCP bruto. As diferenças:
- HTTP CONNECT é executado em HTTP, portanto, herda a autenticação HTTP e é compatível com firewall na porta 80 ou 443.
- SOCKS é um protocolo dedicado em uma porta dedicada, com suporte UDP mais limpo e autenticação mais rica.
- HTTP CONNECT pode ser interceptado e inspecionado por Filtros compatíveis com HTTPS; SOCKS é mais opaco para eles.
SOCKS sobre TLS
SOCKS em si não é criptografado - o link cliente/proxy é texto simples, incluindo a troca de autenticação. Para proteger o link, as implantações modernas envolvem SOCKS em TLS ou executam-no dentro de um túnel SSH. Shadowsocks adotou uma abordagem diferente: manteve a ideia do SOCKS5, mas adicionou criptografia e ofuscação por conexão para derrotar a inspeção profunda de pacotes .
Onde o SOCKS fica próximo às VPNs
A VPN roteia o tráfego all do seu dispositivo através de um túnel. Um proxy SOCKS roteia apenas os aplicativos que você aponta para ele. Isso torna o SOCKS ótimo para tunelamento seletivo (encaminhe apenas seu navegador através do Tor, deixe os jogos no link local) e menos ótimo para proteção de todo o dispositivo. Alguns provedores comerciais de VPN (Mullvad, IVPN) também expõem endpoints SOCKS5 dentro de suas redes para que você possa rotear um único aplicativo sem ativar a VPN completa.
Perguntas frequentes
- O SOCKS5 está criptografado?
- Não — SOCKS5 é um protocolo de transporte, não um protocolo de criptografia. A autenticação e os dados viajam em texto simples entre você e o proxy, a menos que você envolva tudo em TLS ou execute-o através de um túnel SSH. Não use SOCKS em redes hostis sem uma camada externa de criptografia.
- Qual porta o SOCKS usa?
- Por convenção, 1080. Não é um requisito rígido e muitas implantações usam outras portas – o ouvinte SOCKS5 incluído no Tor está em 9050 – mas 1080 é o padrão atribuído pela IANA.
- Por que o Tor usa SOCKS5 em vez de HTTP?
- SOCKS5 pode encapsular qualquer protocolo TCP, não apenas HTTP. Os usuários do Tor desejam rotear IRC, e-mail, aplicativos personalizados e muito mais - não apenas o tráfego da web. SOCKS5 também passa nomes de domínio para o proxy, o que permite ao Tor resolvê-los dentro da rede, em vez de vazar a pesquisa localmente.
- O SOCKS pode lidar com UDP?
- SOCKS5 adicionou um comando associado a UDP que permite ao cliente encapsular datagramas UDP através do proxy. O suporte é desigual – muitas implementações de servidores SOCKS só fazem TCP – mas a especificação está lá, e é como Tor e Shadowsocks lidam com DNS baseado em UDP.
- Devo preferir SOCKS5 ou VPN?
- Para privacidade de todo o dispositivo, uma VPN — ela encapsula tudo e criptografa o link. Para tunelar uma aplicação específica ou encadear com Tor, o SOCKS5 é a ferramenta certa. Os dois são complementares, não concorrentes.