Como encadear proxies SOCKS?

8

Prefácio: O que estou procurando são instruções explícitas, no mesmo formato acima. Isto é, algo como executar: “… execute o comando X na máquina A e, em seguida, comande Y na máquina B…”

Eu tenho um proxy de meias de trabalho do meu laptop (máquina A) para a máquina B:

[A]$ ssh -ND 8888 B

Eu posso configurar o Firefox para usar o proxy SOCKS na porta local de A, 8888 , e navegar em A funciona. Até aí tudo bem.

Mas também tenho um proxy de meias entre as máquinas B e C:

[B]$ ssh -ND 8157 C

Assim, posso navegar em B como se estivesse em C, definindo o proxy de meias Firefox de B como 8157 .

Existe uma maneira de encadear os dois proxies para que eu possa usar o Firefox localmente (em A) enquanto uso a conexão com C?

Ou seja, de alguma forma, encaminhar todas as solicitações de meias do Firefox de A para C. A e C não podem se ver diretamente, mas eu tenho acesso SSH raiz total em todos os lugares. Todas as máquinas são Debian.

Note que eu não quero encaminhar uma única porta como a porta 80, mas eu quero um proxy SOCK totalmente encadeado .

    
por user124114 05.11.2014 / 13:47

2 respostas

11

Confirmei que isso funcionou com algumas VMs:

[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C

De A , você abre um túnel de encaminhamento de porta de 8888 localmente para 8157 em B -L8888:localhost:8157 . Depois de estabelecer uma conexão com B, o comando remoto ssh -t -D 8157 user@C é executado, o que fornece o seu proxy SOCKS através de C . Pelo que li, '-t' parece ser necessário, embora eu ainda tenha que descobrir o porquê.

Note que este é um comando no primeiro host que invoca ssh duas vezes, de A- > B e em B- > C . Você também pode dividir isso em comandos separados, conforme descrito abaixo.

Bônus: para encadear três proxies ...

Ou seja, A->B->C->D->Internet

[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D

Observe que, para cada salto, você precisa de um encaminhador de correspondência adicional -L nos hosts anteriores da cadeia.

Referências:

por 22.11.2014 / 23:17
3

A excelente resposta de Glallen utilizando o SSH fará o trabalho. No entanto, a maneira correta de fazer isso é usar o programa proxychains . ProxyChains é uma ferramenta poderosa que permite aproveitar facilmente vários servidores proxy ao mesmo tempo. Por exemplo, ele é usado por hackers para esconder sua identidade enquanto realizam ataques à internet - encadeando um monte de proxies ao redor do mundo juntos, torna-se praticamente impossível qualquer investigador forense rastrear o tráfego todo o caminho de volta para eles. Não quer dizer que você é um hacker mal-intencionado - ele funcionará para muitos casos de uso diferentes. ;)

O ProxyChains é instalado por padrão em algumas distribuições do Linux (como o Kali Linux). No Ubuntu / Debian, por exemplo, você pode instalá-lo facilmente, fazendo um:

  • sudo apt-get install proxychains

Proxychains procura um arquivo de configuração em /etc/proxychains.conf . Depois de instalado, faça backup do arquivo de configuração Proxychains existente (se existir) e crie um novo:

  • mv /etc/proxychains.conf /etc/proxychains-backup.conf
  • nano /etc/proxychains.conf

Agora, cole nesta configuração de exemplo que escrevi para você:

strict_chain

proxy_dns

tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks4          192.168.1.1     8888
socks4          192.168.1.2     8157
socks4          192.168.1.3     6969

Neste exemplo, 192.168.1.1 é o endereço IP do primeiro servidor proxy SOCKS, 8888 é a porta na qual o primeiro proxy SOCKS está atendendo, 192.168.1.2 é o endereço IP do segundo servidor proxy SOCKS, 8157 é a porta na qual o segundo proxy SOCKS está escutando e assim por diante.

Agora, aproveite os proxychains fazendo proxychains firefox na linha de comando para iniciar o Firefox. (Certifique-se de que o Firefox esteja fechado primeiro.) Agora, sempre que o Firefox fizer uma conexão de saída, o programa proxychains encapsulará o tráfego de forma que ele será intermediado por proxy em todos os servidores especificados nesse arquivo de configuração. Para ser claro, nas suas preferências do Firefox, você não deve especificar QUALQUER servidor proxy - os proxychains cuidarão de tudo nos bastidores.

Observe que, para fins de solução de problemas, você provavelmente deve tentar fazê-lo funcionar usando 1 proxy de cada vez antes de tentar todas as 3.;)

Referências:

  • O site proxychains oficial (a versão mais recente é 3.1, lançada em 2006): link
  • O site de proxychains-ng (uma bifurcação do proxychains original que ainda é mantido até 2015): link
por 04.04.2015 / 08:02

Tags