Se eu estiver usando o SSH para um proxy SOCKS, as conexões DNS passam por ele?

14

Estou usando ssh -D 8080 my serverpara criar um proxy SOCKS. Estou configurando o OS X para usar localhost:8080como proxy SOCKS. Estou usando isso para acessar a internet sem ser monitorado.

Estou usando os servidores DNS do Google (8.8.8.8), mas como garantir que as consultas DNS estejam passando pelo túnel SSH?

Jason Marzst
fonte
1
"sem ser monitorado" é uma ilusão
machineaddict

Respostas:

22

Eu sei que a resposta está um pouco atrasada, mas para a referência e para aqueles que ainda estão procurando a resposta,

Defina a network.proxy.socks_remote_dnspropriedade na configuração do firefox (digite about: config na barra de endereço) como TRUE (apenas clique duas vezes na propriedade para alternar o valor) para ativar as pesquisas de DNS em seu proxy socks5 local / remoto.

PS: Não tenho certeza sobre outros navegadores :(

Jimson Kannanthara James
fonte
1
Para aqueles que preferem a interface do usuário, isso está em Preferências → Avançado → guia Rede → botão Configurações (para "Conexões") → "DNS Proxy ao usar o SOCKS v5".
jwd
Percebi que o DNS NÃO passa por proxy para HTTP, mas funciona para HTTPS. Como isso pode ser o caso? Isso é como projetado? (Estou usando o Firefox)
Eugene D. Gubenkov
8

Se for um proxy do SOCKS 5 e o programa cliente o suportar, o DNS passará pelo proxy. A maioria dos navegadores oferece suporte ao DNS por meio de um proxy Socks 5, mas pode exigir configuração especial para isso.

Se seu objetivo é privacidade na web, você realmente deve usar algo como o privoxy . O Privoxy limpará os cabeçalhos de suas solicitações da Web e garantirá que todo o tráfego, incluindo o DNS, passe pelo proxy do Socks 5. Execute privoxylocalmente e você pode usar sshpara encapsular o tráfego do Socks 5.

David Schwartz
fonte
2

Você não pode fazer isso imediatamente, pois o túnel SSH é apenas para conexões TCP / IP - o tráfego UDP não poderá atravessar esse túnel sem uma configuração especial. Basicamente, você precisa criar um fifo para fazer alguns truques com o netcat, conforme descrito aqui . Você pode usar o DNS do Google na caixa do extremo oposto.

pfo
fonte
1

Como mencionado por lá , seus sistema pesquisas amplas não são túneis .

Se você deseja uma solução baseada em SSH, pode obter inspiração a partir daqui ou usar o SSHuttle (por exemplo, mencionado aqui ). Existe um patch para encaminhar consultas DNS facilmente.

YMMV, mas tive sucesso com o seguinte:

#!/bin/bash
# Taken from http://stackoverflow.com/questions/4594319/shell-replace-cr-lf-by-comma
DNSSERVERS=$(nmcli d show | grep DNS | awk '{print $2}' | sed -e 'H;${x;s/\n/,/g;s/^,//;p;};d' )
sshuttle  \
    -vvv                \
     --dns-hosts ${DNSSERVERS}   \
    -r server   \
    254.254.254.254/32
Frederick Nord
fonte
0

Como o pfo diz, os túneis SSH são apenas para tráfego TCP, e o aplicativo deve estar ciente dos proxies do SOCKS.

Se você deseja que tudo seja encapsulado, você precisa de uma VPN adequada. Dê uma olhada em algo como OpenVPN .

James O'Gorman
fonte
0

Depende da sua aplicação. O Firefox, por exemplo, envia o nome do host ao proxy SOCKS sem resolvê-lo. Nesse caso, você não precisa fazer nada por privacidade. Você pode confirmar isso pelo wireshark.

PS. suponha que você esteja usando um proxy SOCKS5. SOCKS4 não suporta nome de host.

okwap
fonte