Wie verkette ich SOCKS-Proxys?

10

Vorwort: Was ich suche, sind explizite Anweisungen im gleichen Format wie oben. Das heißt, so etwas wie "Ausführen": "... Befehl X auf Maschine A ausführen, dann Befehl Y auf Maschine B ..."

Ich habe einen funktionierenden Socken-Proxy von meinem Laptop (Maschine A) zu Maschine B:

[A]$ ssh -ND 8888 B

Ich kann Firefox so einrichten, dass der SOCKS-Proxy am lokalen Port von A verwendet wird 8888, und das Surfen auf A funktioniert. So weit, ist es gut.

Ich habe aber auch einen Socken-Proxy zwischen den Maschinen B und C:

[B]$ ssh -ND 8157 C

So kann ich auf B surfen, als wäre ich auf C, und den Firefox-Socken-Proxy von B auf setzen 8157.

Gibt es eine Möglichkeit, die beiden Proxys so zu verketten, dass ich Firefox lokal (auf A) verwenden kann, während ich die Verbindung zu C verwende?

Das heißt, irgendwie leiten alle Firefox-Sockenanforderungen von A nach C weiter. A und C können sich nicht direkt sehen, aber ich habe überall vollen Root-SSH-Zugriff. Alle Maschinen sind Debian.

Beachten Sie, dass ich keinen einzelnen Port wie Port 80 weiterleiten möchte, sondern einen vollständig verketteten SOCK-Proxy .

user124114
quelle
solltest du nicht einfach -L 8888:B:8157auf [A] machen?
Bdecaf
@bdecaf Zusätzlich zu den angegebenen Befehlen? Stattdessen? Keine Änderungen an den FireFox-Einstellungen?
user124114
Nur für [A]. Den Rest wie du beschreibst.
Bdecaf
ssh -L 8888:B:8157schlägt fehl, erfordert einen Hostnamen-Parameter. Können Sie eine vollständigere End-to-End-Antwort geben? Wenn es funktioniert, werde ich akzeptieren.
user124114
ist B wirklich der Name Ihrer Maschine?
Bdecaf

Antworten:

12

Ich habe gerade bestätigt, dass dies mit einigen VMs funktioniert hat:

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

Von A , öffnen Sie 8157 auf einen Port nach vorn Tunnel von 8888 lokal bis B -L8888:localhost:8157 . Sobald Sie eine Verbindung zu B hergestellt haben, wird der Remote-Befehl ssh -t -D 8157 user@Causgeführt, der Ihren SOCKS-Proxy über C bereitstellt . Nach dem, was ich gelesen habe, scheint '-t' erforderlich zu sein, obwohl ich immer noch herausfinden muss, warum.

Beachten Sie, dass dies ein Befehl auf dem ersten Host ist, der ssh zweimal von A-> B und von B-> C aufruft . Sie können dies auch in separate Befehle aufteilen, wie unten beschrieben.

Bonus: für die Verkettung von drei Proxys ...

Dh 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

Beachten Sie, dass Sie für jeden Hop einen zusätzlichen passenden Forwarder -Lauf den vorherigen Hosts in der Kette benötigen .

Verweise:

glallen
quelle
Übersetzung, Zeile für Zeile: - 1. Machen Sie einen dynamischen Port von Host B auf 57 weiter, legen Sie Port 56 von B frei, legen Sie Port 55 von B frei. - 2. Machen Sie einen dynamischen Port auf Port 56 von Host C weiter, Expose Port 55 Von C - 3. Führen Sie einen dynamischen Port auf Port 55 von Host D aus weiter. - Das Endergebnis ist ein Socks-Proxy von jedem Host über SSH bei jedem Schritt. Die Ports 57 bis 55 enthalten Proxys mit Endpunkten bei B, C und D.
Ray Foss
Haben Sie kostenlose SSH-Proxys? Ich habe keine gefunden.
Aemonge
4

Die hervorragende Antwort von glallen mit SSH wird die Arbeit erledigen. Der richtige Weg, dies zu erreichen, ist jedoch die Verwendung des proxychainsProgramms. ProxyChains ist ein leistungsstarkes Tool, mit dem Sie problemlos mehrere Proxyserver gleichzeitig nutzen können. Zum Beispiel wird es von Hackern verwendet, um ihre Identität bei Internetangriffen zu verbergen. Durch die Verkettung einer Reihe von Proxys auf der ganzen Welt wird es für forensische Ermittler praktisch unmöglich, den Datenverkehr bis zu ihnen zurückzuverfolgen. Um nicht zu sagen, dass Sie ein böswilliger Hacker sind - es funktioniert für viele verschiedene Anwendungsfälle. ;)

ProxyChains wird standardmäßig auf einigen Linux-Distributionen (wie Kali Linux) installiert. Unter Ubuntu / Debian können Sie es beispielsweise einfach installieren, indem Sie Folgendes ausführen:

  • sudo apt-get install proxychains

Proxychains sucht nach einer Konfigurationsdatei unter /etc/proxychains.conf. Sobald Sie es installiert haben, sichern Sie die vorhandene Proxychains-Konfigurationsdatei (falls vorhanden) und erstellen Sie eine neue:

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

Fügen Sie nun in diese Beispielkonfiguration ein, die ich für Sie geschrieben habe:

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 diesem Beispiel 192.168.1.1ist die IP-Adresse des ersten SOCKS-Proxyservers 8888der Port, den der erste SOCKS-Proxy abhört, 192.168.1.2die IP-Adresse des zweiten SOCKS-Proxyservers, 8157der Port, den der zweite SOCKS-Proxy abhört. und so weiter.

Nutzen Sie jetzt Proxy-Ketten, indem Sie proxychains firefoxüber die Befehlszeile Firefox starten. (Stellen Sie sicher, dass Firefox zuerst geschlossen wird.) Wenn Firefox eine ausgehende Verbindung herstellt, kapselt das Proxychains-Programm den Datenverkehr so, dass er über alle in dieser Konfigurationsdatei angegebenen Server übertragen wird. Um klar zu sein, sollten Sie in Ihren Firefox-Einstellungen KEINE Proxy-Server angeben - Proxy-Ketten kümmern sich um alles hinter den Kulissen.

Beachten Sie, dass Sie zur Fehlerbehebung wahrscheinlich zuerst versuchen sollten, es mit jeweils 1 Proxy zum Laufen zu bringen, bevor Sie alle 3 versuchen ;;)

Verweise:

James
quelle
Richten Proxy-Ketten die Proxys auch für Sie ein? oder helfen Sie einfach, eine Verbindung zu den vorhandenen Proxys herzustellen?
glallen
Proxychains stellen nur eine Verbindung zu vorhandenen Proxyservern her.
James
Wenn dies der Fall ist, stimme ich dem Ausdruck "Der richtige Weg zu ..." nicht zu, da es in der Frage speziell darum geht, die Proxys für die Verkettung auf mehreren Computern einzurichten und nicht nur Firefox an vorhandene Proxys weiterzuleiten. Vielleicht - "eine alternative Methode, sobald die Proxies vorhanden sind" wäre informativ, ohne zu implizieren, dass die Verwendung von Straight SSH irgendwie unangemessen ist . Gute zusätzliche Hintergrundinformationen. Vielen Dank. Bearbeiten und Sie haben meine positive Bewertung.
glallen