Como encadear proxies do SOCKS?

10

Prefácio: O que estou procurando são instruções explícitas, no mesmo formato acima. Ou seja, algo como executar: “… execute o comando X na máquina A e depois o comando 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

Posso configurar o Firefox para usar o proxy SOCKS na porta local de A 8888e navegar no A funciona. Por enquanto, tudo bem.

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

[B]$ ssh -ND 8157 C

Para que eu possa navegar na B como se eu estivesse em C, estabelecendo Firefox meias do B proxy para 8157.

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

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

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

user124114
fonte
você não deveria apenas fazer -L 8888:B:8157no [A]?
precisa saber é o seguinte
@bdecaf Além dos comandos fornecidos? Em vez de? Nenhuma alteração nas configurações do FireFox?
user124114
Apenas para [A]. O resto, como você descreve.
precisa saber é o seguinte
ssh -L 8888:B:8157falha, requer um parâmetro de nome de host. Você pode dar uma resposta mais completa, de ponta a ponta? Se funcionar, eu aceito.
precisa saber é o seguinte
B é realmente o nome da sua máquina?
precisa saber é

Respostas:

12

Acabei de confirmar 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 para a frente da 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 proporciona o seu proxy SOCKS através C . Pelo que li, '-t' parece ser necessário, embora ainda precise descobrir o porquê.

Note-se, este é um comando no primeiro hospedeiro que invoca ssh duas vezes, a partir de A-> B e a partir de 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 correspondente adicional -Lnos hosts anteriores da cadeia.

Referências:

sombrio
fonte
Conversão, linha por linha: - 1. Faça uma porta dinâmica encaminhar do host B em 57, exponha a porta 56 de B, exponha a porta 55 de B. - 2. Faça uma porta dinâmica encaminhar na porta 56 do host C, Expose porta 55 do C - 3. Avance uma porta dinâmica na porta 55 do host D - O resultado final é um proxy Socks de Todo host, através do SSH a cada etapa. Portos 57 a 55 conterá mandatários com pontos finais em B, C e D.
Raio Foss
Você tem algum proxy ssh grátis? Eu não encontrei nenhum.
aemonge
4

A excelente resposta da Glallen utilizando SSH fará o trabalho. No entanto, a maneira correta de fazer isso é usar o proxychainsprograma. ProxyChains é uma ferramenta poderosa que permite que você aproveite facilmente vários servidores proxy ao mesmo tempo. Por exemplo, ele é usado pelos hackers para ocultar sua identificação ao realizar ataques na Internet - ao reunir vários proxies em todo o mundo, torna-se praticamente impossível para qualquer investigador forense rastrear o tráfego até eles. Para não dizer que você é um hacker malicioso - 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 instalá-lo, 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 neste exemplo de configuração 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 em que o primeiro proxy SOCKS está escutando, 192.168.1.2é o endereço IP do segundo servidor proxy SOCKS, 8157é a porta em que o segundo proxy SOCKS está escutando, e assim por diante.

Agora, aproveite proxychains fazendo a proxychains firefoxpartir da linha de comando para iniciar o Firefox. (Certifique-se de que o Firefox seja 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á procurado por todos os servidores que você especificou neste arquivo de configuração. Para ficar claro, nas suas preferências do Firefox, você não deve especificar QUALQUER servidor proxy - o proxychains cuidará de tudo nos bastidores.

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

Referências:

James
fonte
As cadeias de proxy também configuram os proxies para você? ou apenas ajudá-lo a se conectar aos proxies existentes?
glallen
As Proxychains se conectarão apenas aos servidores proxy existentes.
James
Se for esse o caso, não concordo com a frase "a maneira correta de ...", pois a pergunta é especificamente sobre configurar os proxies para encadear em várias máquinas, e não apenas direcionar o firefox para proxies existentes. Talvez - "um método alternativo, uma vez que os proxies estejam no lugar" seja informativo, sem implicar que o uso do ssh direto seja de alguma forma inadequado . Boas informações adicionais de plano de fundo, no entanto. Obrigado. Editar e você terá o meu voto positivo.
perfil completo de Glallen