Jak połączyć łańcuchy proxy SOCKS?

10

Przedmowa: Potrzebuję wyraźnych instrukcji w tym samym formacie, co powyżej. To znaczy coś w stylu „uruchom”: „… uruchom polecenie X na komputerze A, a następnie polecenie Y na komputerze B…”

Mam działające proxy skarpet z mojego laptopa (maszyna A) na maszynę B:

[A]$ ssh -ND 8888 B

Mogę skonfigurować Firefoksa do używania proxy SOCKS na lokalnym porcie A 8888, a przeglądanie na A działa. Na razie w porządku.

Ale mam także proxy skarpet między komputerami B i C:

[B]$ ssh -ND 8157 C

Więc mogę przeglądać B tak, jakbym był na C, ustawiając proxy B skarpet Firefox na 8157.

Czy istnieje sposób na połączenie dwóch serwerów proxy, aby móc używać Firefoksa lokalnie (na A) podczas korzystania z połączenia z C?

Oznacza to, że w jakiś sposób przekazuje wszystkie żądania skarpet Firefoksa od A do C. A i C nie widzą się bezpośrednio, ale wszędzie mam pełny dostęp do katalogu głównego SSH. Wszystkie maszyny są Debianem.

Zauważ, że nie chcę przekazywać pojedynczego portu, takiego jak port 80, ale chcę w pełni połączony serwer proxy SOCK .

użytkownik124114
źródło
nie powinieneś po prostu zrobić -L 8888:B:8157na [A]?
bdecaf,
@bdecaf Oprócz podanych poleceń? Zamiast? Brak zmian w ustawieniach FireFox?
user124114,
Tylko dla [A]. Resztę opisujesz.
bdecaf,
ssh -L 8888:B:8157kończy się niepowodzeniem, wymaga parametru nazwy hosta. Czy możesz udzielić bardziej kompletnej, kompleksowej odpowiedzi? Jeśli to zadziała, zaakceptuję.
user124114,
czy B to naprawdę nazwa twojej maszyny?
bdecaf,

Odpowiedzi:

12

Właśnie potwierdziłem, że działało to z niektórymi maszynami wirtualnymi:

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

Od A , to otworzyć portu naprzód tunel od 8888 do 8157 na lokalnie pensjonatów -L8888:localhost:8157 . Po ustanowieniu połączenia B, polecenie zdalne ssh -t -D 8157 user@Cjest prowadzony, co zapewnia serwer proxy SOCKS przez C . Z tego, co przeczytałem, „-t” wydaje się być wymagane, chociaż wciąż muszę dowiedzieć się, dlaczego.

Uwaga: jest to jedno polecenie pierwszego hosta, który wywołuje ssh przy dwukrotnie z A-> B i od B-> C . Możesz również podzielić to na osobne polecenia, jak opisano poniżej.

Bonus: za połączenie trzech serwerów proxy ...

To znaczy 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

Pamiętaj, że dla każdego przeskoku potrzebujesz dodatkowego pasującego forwardera -Lna poprzednich hostach w łańcuchu.

Bibliografia:

glallen
źródło
Tłumaczenie, wiersz po wierszu: - 1. Wykonaj port dynamiczny przekierowujący z hosta B na 57, ujawnij port 56 z B, ujawnij port 55 z B. - 2. Wykonaj port dynamiczny przekieruj na porcie 56 z hosta C, ujawnij port 55 z C - 3. Zrób dynamiczny port przekierowujący na port 55 z hosta D - Końcowym rezultatem jest proxy Socks z każdego hosta, przez SSH na każdym etapie. Porty od 57 do 55 będą zawierać proxy z punktami końcowymi w punktach B, C i D.
Ray Foss
Czy masz jakieś bezpłatne proxy SSH? Nie znalazłem żadnego.
aemonge 13.03.18
4

Doskonała odpowiedź glallen wykorzystująca SSH wykona zadanie. Jednak właściwym sposobem na osiągnięcie tego jest użycie proxychainsprogramu. ProxyChains to potężne narzędzie, które pozwala łatwo korzystać z wielu serwerów proxy jednocześnie. Na przykład jest wykorzystywany przez hakerów do ukrywania swojej tożsamości podczas przeprowadzania ataków internetowych - łącząc grupę serwerów proxy na całym świecie, praktycznie niemożliwe jest, aby śledczy śledzili ruch aż do nich. Nie wspominając o tym, że jesteś złośliwym hakerem - zadziała w wielu różnych przypadkach. ;)

ProxyChains jest instalowany domyślnie w niektórych dystrybucjach Linuksa (takich jak Kali Linux). Na przykład w systemie Ubuntu / Debian można go łatwo zainstalować, wykonując:

  • sudo apt-get install proxychains

Proxychains szuka pliku konfiguracyjnego pod adresem /etc/proxychains.conf. Po zainstalowaniu wykonaj kopię zapasową istniejącego pliku konfiguracyjnego Proxychains (jeśli istnieje) i utwórz nowy:

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

Teraz wklej w tej przykładowej konfiguracji, którą dla ciebie napisałem:

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

W tym przykładzie 192.168.1.1jest adresem IP pierwszego serwera proxy SOCKS, 8888portem, na którym nasłuchuje pierwszy serwer proxy SOCKS, 192.168.1.2adresem IP drugiego serwera proxy SOCKS, 8157portem, na którym nasłuchuje drugi serwer proxy SOCKS, i tak dalej.

Teraz skorzystaj z serwerów proxy, wykonując proxychains firefoxz wiersza polecenia, aby uruchomić Firefoksa. (Upewnij się, że Firefox jest najpierw zamknięty). Teraz, gdy Firefox nawiąże połączenie wychodzące, program proxy będzie obudowywać ruch tak, aby był on proxy przez wszystkie serwery określone w tym pliku konfiguracyjnym. Żeby było jasne, w ustawieniach przeglądarki Firefox nie powinieneś określać ŻADNYCH serwerów proxy - serwery proxy zajmą się wszystkim za kulisami.

Pamiętaj, że do celów rozwiązywania problemów powinieneś prawdopodobnie spróbować uruchomić go za pomocą 1 serwera proxy naraz, zanim wypróbujesz wszystkie 3.;)

Bibliografia:

James
źródło
Czy łańcuchy proxy również dla Ciebie konfigurują proxy ? lub po prostu pomóc Ci połączyć się z istniejącymi serwerami proxy?
glallen
Proxychains będą łączyć się tylko z istniejącymi serwerami proxy.
James
W takim przypadku nie zgadzam się ze zwrotem „właściwy sposób na ...”, ponieważ pytanie dotyczy konkretnie ustanowienia serwerów proxy do tworzenia łańcuchów na wielu komputerach, a nie tylko kierowania firefoxa do istniejących serwerów proxy. Może - „alternatywna metoda, gdy serwery proxy są już na miejscu” byłaby pouczająca, nie sugerując, że użycie prostego ssh jest w jakiś sposób niewłaściwe . Dobre dodatkowe informacje w tle. Dzięki. Edytuj, a otrzymasz moją opinię.
glallen