Come concatenare i proxy SOCKS?


10

Prefazione: quello che sto cercando sono istruzioni esplicite, nello stesso formato di cui sopra. Cioè, qualcosa come run: "... esegui il comando X sulla macchina A, quindi il comando Y sulla macchina B ..."

Ho un proxy di calzini da lavoro dal mio laptop (macchina A) alla macchina B:

[A]$ ssh -ND 8888 B

Posso configurare Firefox per utilizzare il proxy SOCKS sulla porta locale di A 8888e navigare su A funziona. Fin qui tutto bene.

Ma ho anche un proxy calze tra le macchine B e C:

[B]$ ssh -ND 8157 C

Così posso navigare su B come se fossi su C, l'impostazione di B Firefox proxy SOCKS a 8157.

C'è un modo per concatenare i due proxy in modo che io possa usare Firefox localmente (su A) mentre uso la connessione a C?

Cioè, in qualche modo inoltrare tutte le richieste di calze di Firefox da A a C. A e C non possono vedersi direttamente, ma ho accesso SSH root completo ovunque. Tutte le macchine sono Debian.

Nota che non voglio inoltrare una singola porta come la porta 80 ma voglio un proxy SOCK completamente incatenato .


non dovresti fare solo -L 8888:B:8157su [A]?
bdecaf,

@bdecaf Oltre ai comandi dati? Anziché? Nessuna modifica alle impostazioni di FireFox?
user124114

Solo per [A]. Il resto come descrivi.
bdecaf,

ssh -L 8888:B:8157non riesce, richiede un parametro hostname. Puoi dare una risposta più completa, end-to-end? Se funziona, accetterò.
user124114

B è davvero il nome della tua macchina?
bdecaf,

Risposte:


12

Ho appena confermato che ha funzionato con alcune macchine virtuali:

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

Da A , si apre una porta tunnel in avanti dal 8888 a livello locale per 8157 su B -L8888:localhost:8157 . Una volta stabilita una connessione a B, il comando a distanza ssh -t -D 8157 user@Cviene eseguito, che fornisce il proxy SOCKS tramite C . Da quello che ho letto, '-t' sembra essere richiesto, anche se devo ancora capire perché.

Nota, questo è un comando sul primo host che invoca ssh due volte, da A-> B e da B-> C . Puoi anche suddividerlo in comandi separati, come descritto di seguito.

Bonus: per concatenare tre proxy ...

ie 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

Si noti che per ciascun hop è necessario un ulteriore forwarder di corrispondenza -Lsugli host precedenti nella catena.

Riferimenti:


Traduzione, riga per riga: - 1. Portare una porta dinamica in avanti dall'host B su 57, esporre la porta 56 da B, esporre la porta 55 da B. - 2. Creare una porta dinamica in avanti sulla porta 56 dall'host C, esporre porta 55 da C - 3. Effettua un port forward dinamico sulla porta 55 dall'host D - Il risultato finale è un proxy Socks da ogni host, tramite SSH ad ogni passaggio. Le porte da 57 a 55 conterranno proxy con punti finali a B, C e D.
Ray Foss,

Hai qualche proxy ssh gratuito? Non ne ho trovato nessuno.
aemonge,

4

L'eccellente risposta di Glallen utilizzando SSH farà il suo lavoro. Tuttavia, il modo corretto per ottenere ciò è utilizzare il proxychainsprogramma. ProxyChains è un potente strumento che ti consente di sfruttare facilmente più server proxy contemporaneamente. Ad esempio, viene utilizzato dagli hacker per nascondere la propria identità durante gli attacchi di Internet: concatenando un gruppo di proxy in tutto il mondo, diventa praticamente impossibile per tutti gli investigatori forensi rintracciare il traffico fino a loro. Per non dire che sei un hacker dannoso: funzionerà per molti casi d'uso diversi. ;)

ProxyChains è installato di default su alcune distribuzioni Linux (come Kali Linux). Su Ubuntu / Debian, ad esempio, puoi installarlo facilmente facendo un:

  • sudo apt-get install proxychains

Proxychains cerca un file di configurazione in /etc/proxychains.conf. Una volta installato, esegui il backup del file di configurazione Proxychains esistente (se esiste) e creane uno nuovo:

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

Ora, incolla questa configurazione di esempio che ho scritto per te:

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

In questo esempio, 192.168.1.1è l'indirizzo IP del primo server proxy SOCKS, 8888è la porta su cui è in ascolto il primo proxy SOCKS, 192.168.1.2è l'indirizzo IP del secondo server proxy SOCKS, 8157è la porta su cui è in ascolto il secondo proxy SOCKS, e così via.

Ora, sfrutta le proxychain facendo proxychains firefoxdalla riga di comando per avviare Firefox. (Assicurati che Firefox sia chiuso per primo.) Ora, ogni volta che Firefox stabilisce una connessione in uscita, il programma proxychains incapsulerà il traffico in modo tale da essere inviato in proxy attraverso tutti i server specificati in questo file di configurazione. Per essere chiari, nelle tue preferenze di Firefox, non dovresti specificare QUALSIASI server proxy: le proxychain si prenderanno cura di tutto ciò che sta dietro le quinte.

Tieni presente che, ai fini della risoluzione dei problemi, dovresti probabilmente provare a farlo funzionare utilizzando 1 proxy alla volta prima di provare tutti 3.;)

Riferimenti:


Le catene di proxy impostano anche i proxy per te? o semplicemente ti aiuti a connetterti ai proxy esistenti?
glallen,

Le proxychain si collegheranno solo ai server proxy esistenti.
James,

In tal caso, non sono d'accordo con la frase "il modo corretto di ..." poiché la domanda sta specificamente parlando della configurazione dei proxy per il concatenamento su più macchine, non solo di indirizzare Firefox ai proxy esistenti. Forse - "un metodo alternativo, una volta che i proxy sono presenti" sarebbe informativo, senza implicare che l'uso di straight ssh sia in qualche modo improprio . Buone informazioni di base aggiuntive comunque. Grazie. Modifica e avrai il mio voto.
glallen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.