Powrót do bloga

Kierowanie ruchem sieciowym bez VPN przy użyciu tunelu SOCKS

Kierowanie ruchem sieciowym bez VPN przy użyciu tunelu SOCKS

Jeśli chodzi o zabezpieczenie swojej obecności w sieci, być może słyszałeś o VPN-ach, prawda? VPN działa jako pośrednik między Twoim komputerem a internetem. Cały ruch przechodzi przez serwer VPN, skutecznie maskując Twój adres IP i lokalizację.

Jednak VPN to nie jedyna forma serwera proxy. SOCKS (Socket Secure) to podobny protokół sieciowy, który umożliwia komunikację z serwerami przez zaporę sieciową (firewall) poprzez przekierowywanie ruchu sieciowego w imieniu klienta. W porównaniu do VPN, SOCKS oferuje większą elastyczność i kontrolę nad konfiguracją sieci. Jest przydatny, gdy nie możesz zainstalować klienta VPN lub nie ufasz dostawcy VPN.

Ten poradnik pokaże, jak ustanowić tunel proxy SSH SOCKS 5 i przekierować przez niego ruch sieciowy.

Wymagania wstępne

Do celów demonstracyjnych użyliśmy lokalnej maszyny z systemem Ubuntu desktop oraz zdalnej maszyny z systemem Ubuntu server. Musisz mieć skonfigurowane SSH, aby wszystko działało płynnie. Ponieważ używamy proxy SOCKS, do przetestowania połączenia potrzebujemy aplikacji, która potrafi z niego korzystać. Firefox jest doskonałym przykładem. To nowoczesna przeglądarka internetowa, która obsługuje tunel proxy SOCKS 5.

Jeśli korzystasz z systemu Windows, możesz użyć WSL (Windows Subsystem for Linux), aby skonfigurować lokalne środowisko Linux, lub użyć PuTTY, aplikacji o otwartym kodzie źródłowym, która może implementować różne protokoły sieciowe, takie jak Telnet, rlogin itp.

Konfiguracja tunelu SOCKS

  • Konfiguracja tunelu SOCKS (macOS/Linux)

Na lokalnym komputerze musimy skonfigurować klucz SSH, aby zapewnić bezpieczne połączenie. Klucz SSH musi być również zarejestrowany w systemie zdalnym. Ten poradnik dotyczący konfiguracji uwierzytelniania opartego na kluczach SSH szczegółowo opisuje ten proces.

Poniższe polecenie SSH ustanowi tunel SOCKS do zdalnego serwera:

Przeanalizujmy to polecenie:

  • -i: Informuje SSH, którego klucza SSH użyć do połączenia.

  • -D: Informuje SSH, że chcemy ustanowić tunel SOCKS. Jeśli chodzi o port, używamy portu 1024. Nie jest to stała wartość. Możesz wybrać dowolny port z przedziału 1024 i 65536.

  • -f: Proces SSH zostanie uruchomiony w tle.

  • -C: SSH skompresuje dane przed wysłaniem ich do zdalnego serwera. Może to zmniejszyć zużycie danych i zwiększyć efektywną przepustowość.

  • -q: Uruchamia narzędzie w trybie cichym.

  • -N: Informuje SSH, że po ustanowieniu tunelu nie zostanie wysłane żadne polecenie.

Po uruchomieniu możemy zweryfikować, czy proces wystartował poprawnie. Poniższe polecenie wyświetli informacje o wszystkich uruchomionych procesach SSH:

Routing grep ssh

Teraz możesz bezpiecznie zamknąć okno terminala. Proces SSH będzie działał w tle zgodnie z przeznaczeniem.

  • Konfiguracja tunelu SOCKS (Windows)

Dla użytkowników systemu Windows łatwiejszym rozwiązaniem jest użycie programu PuTTY. Najpierw musisz pobrać PuTTY:

Routing download putty

Po zainstalowaniu uruchom PuTTY:

Routing putty screen1

W zakładce Session w lewym panelu wprowadź Host Name (or IP address) swojego serwera. W polu Connection type, wybierz SSH. Następnie przejdź do Connection >> SSH >> Tunnels. Tutaj, w sekcji Destination wybierz opcje pokazane na zrzucie ekranu:

Routing putty screen2

Następnie kliknij Open. Pojawi się okno terminala umożliwiające połączenie ze zdalnym serwerem przez SSH. Zaloguj się na zdalny serwer:

Routing putty screen 3

Użycie tunelu SOCKS

Tunel został skonfigurowany. Każda aplikacja obsługująca SOCKS może z niego korzystać. Do celów demonstracyjnych świetnym przykładem jest Firefox.

Najpierw otwórz przeglądarkę Firefox. W prawym górnym rogu kliknij ikonę menu. Przejdź do Settings:

ubuntu screen1

Następnie wyszukaj proxy. Kliknij Settings w sekcji Configure how Firefox connects to the internet:

firefox preferences

Następnie wybierz Manual proxy configuration. W polu SOCKS Host, wpisz localhost lub 127.0.0.1. Następnie w polu portu wpisz port dedykowany dla tunelu SOCKS. Nie zapomnij wybrać opcji SOCKS_v5:

firefox proxy conf

Na koniec zaznacz opcję Proxy DNS when using SOCKS_v5. Kliknij OK, aby kontynuować.

Następnie otwórz nową kartę i spróbuj wejść na dowolną stronę internetową. Możesz na przykład sprawdzić swój adres IP na stronie CheckMyIP.

Przywracanie ustawień proxy

Gdy nie potrzebujesz już połączenia proxy z tunelem SSH, możesz je bezpiecznie wyłączyć w ustawieniach proxy przeglądarki Firefox:

Routing firefox reverting proxy conf

W oknie wybierz Używaj systemowych ustawień serwerów proxy i kliknij OK.

Zamykanie tunelu SOCKS

  • Zamykanie tunelu w systemie macOS/Linux

Aby zamknąć tunel, musimy ręcznie zabić proces SSH. Potrzebujemy PID (identyfikatora procesu) procesu SSH. Poniższe polecenie wyświetli identyfikatory PID wszystkich uruchomionych procesów SSH:

Zwróć uwagę na proces SSH uruchomiony z poleceniem utworzenia tunelu. Zabij ten proces:

Jeśli nie zdefiniowano żadnej opcji, polecenie kill wyśle ogólny sygnał SIGTERM do procesu docelowego. Możesz dowiedzieć się więcej o zarządzaniu procesami w systemie Linux z tego samouczka.

  • Zamykanie tunelu w systemie Windows

Zamknięcie okna PuTTY powinno zamknąć połączenie tunelowe.

Rozwiązywanie problemów

Oto kilka typowych problemów, które możesz napotkać podczas próby użycia SOCKS do kierowania ruchem.

  • Zapora sieciowa

Jeśli nie możesz nawiązać połączenia z powodu ograniczeń zapory sieciowej, prawdopodobnie zapora jest skonfigurowana tak, aby blokować połączenie z portem 22. Jest to domyślny port, którego SSH używa do łączenia się z systemami zdalnymi. Niektóre porty pozostają domyślnie otwarte, na przykład port 80 (ogólny ruch sieciowy) i port 443 (TLS, bezpieczny ruch sieciowy).

Jeśli serwer SSH nie serwuje treści internetowych, możemy użyć jednego z domyślnych portów ( 80 lub 443 ) zamiast portu 22. Zaleca się użycie portu 443 ponieważ domyślnie oczekuje on szyfrowanego ruchu. Będzie on również szyfrować ruch wychodzący. Aby dokonać zmiany, musimy zmodyfikować plik konfiguracyjny SSH. Otwórz plik w edytorze tekstu:

SSH może używać wielu portów do swoich celów. Przewiń plik konfiguracyjny w dół i znajdź sekcję portów:

Routing sshd config

Po wprowadzeniu zmian zapisz plik i zamknij edytor. Uruchom ponownie usługę SSH, aby zastosować zmiany:

Aby sprawdzić, czy nowy port działa, spróbuj połączyć się ze zdalnym serwerem przy użyciu nowego portu:

Jeśli połączenie powiodło się, możemy bezpiecznie użyć portu 443 do tunelowania SSH. Oto zmodyfikowane polecenie służące do ustanowienia tunelu SOCKS:

W tym przypadku flaga -p nakazuje SSH użycie portu 443.

Podsumowanie

W dzisiejszych czasach prywatność i bezpieczeństwo to jedne z największych wyzwań. Istnieje wiele sposobów na bezpieczne przeglądanie sieci, gdy korzystasz z nieprzyjaznej sieci. W większości przypadków korzystanie z VPN zapewni wystarczające bezpieczeństwo ruchu sieciowego. Z drugiej strony, tunel SOCKS zaoferuje Ci niezbędne bezpieczeństwo, jeśli nie możesz lub nie ufasz VPN. Posiadanie tunelu SOCKS daje Ci również pełną kontrolę nad konfiguracją.

Miłego korzystania z komputera!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.