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:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> |

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:
|
1 |
ps aux | 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:

Po zainstalowaniu uruchom PuTTY:

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:

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

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:

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

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:

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:

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:
|
1 |
ps aux | grep ssh |
Zwróć uwagę na proces SSH uruchomiony z poleceniem utworzenia tunelu. Zabij ten proces:
|
1 |
kill <tunnel_ssh_pid> |
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:
|
1 |
sudo nano /etc/ssh/sshd_config |
SSH może używać wielu portów do swoich celów. Przewiń plik konfiguracyjny w dół i znajdź sekcję portów:

Po wprowadzeniu zmian zapisz plik i zamknij edytor. Uruchom ponownie usługę SSH, aby zastosować zmiany:
|
1 |
sudo service ssh restart |
Aby sprawdzić, czy nowy port działa, spróbuj połączyć się ze zdalnym serwerem przy użyciu nowego portu:
|
1 |
ssh <remote_username>@<remote_server> -p 443 |
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:
|
1 |
ssh -i ~/.ssh/id_rsa -D 2000 -f -C -q -N <remote_username>@<remote_server> -p 443 |
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!
Komentarze
Brak komentarzy. Bądź pierwszy.