Tunelowanie SSH i techniki przekierowywania portów
Proszę opanować lokalne, zdalne i dynamiczne przekierowywanie portów oraz poznać ich uzasadnione i wrażliwe pod względem bezpieczeństwa zastosowania.
Tunelowanie SSH i techniki przekierowywania portów to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Koncepcja lokalnego przekierowania portu
Lokalne przekierowanie portu (ssh -L local_port:destination_host:destination_port user@ssh_server) wiąże port na lokalnym komputerze. Ruch wysyłany na ten port lokalny przechodzi przez szyfrowane połączenie SSH do serwera SSH, który następnie łączy się z miejscem docelowym. Lokalna aplikacja komunikuje się z localhost, a SSH bezpiecznie dostarcza ruch do zdalnego celu.
Przypadek użycia lokalnego przekierowania: dostęp do bazy danych
Typowym zastosowaniem lokalnego przekierowania portu jest dostęp do wewnętrznej bazy danych znajdującej się za zaporą sieciową. Po użyciu ssh -L 5432:db.internal:5432 user@bastion lokalny klient PostgreSQL łączy się z localhost:5432. Host bastionowy przekazuje ten ruch do wewnętrznego serwera bazy danych, który w przeciwnym razie byłby nieosiągalny z internetu.
Koncepcja zdalnego przekierowania portu
Zdalne przekierowanie portu (ssh -R remote_port:local_host:local_port user@ssh_server) wiąże port na zdalnym serwerze SSH. Gdy zewnętrzni klienci łączą się z tym zdalnym portem, ruch przepływa przez tunel SSH z powrotem do lokalnego komputera. Pozwala to udostępnić usługę działającą lokalnie za pośrednictwem serwera dostępnego z internetu.
Przypadek użycia zdalnego przekierowania: za NAT-em
Zdalne przekierowanie jest szczególnie przydatne, gdy komputer znajduje się za NAT-em i nie może bezpośrednio odbierać połączeń przychodzących. Tworząc tunel zwrotny do publicznego serwera, można umożliwić klientom zewnętrznym dostęp do lokalnej usługi za pośrednictwem tego serwera. Technika ta jest również wykorzystywana przez niektóre narzędzia zdalnego dostępu i systemy zarządzania urządzeniami IoT.
Dynamiczne przekierowanie portu: proxy SOCKS5
Dynamiczne przekierowanie portu (ssh -D local_port user@ssh_server) tworzy proxy SOCKS5 na lokalnym komputerze. Każda aplikacja obsługująca SOCKS5 może kierować ruch przez to proxy, dzięki czemu będzie on wyglądał, jakby pochodził z serwera SSH. W praktyce kieruje to przeglądanie przez sieć zdalną, co jest przydatne do uzyskiwania dostępu do zasobów ograniczonych geograficznie lub omijania lokalnych filtrów sieciowych.
Tunele zwrotne i konsekwencje dla bezpieczeństwa
Tunele zwrotne są przydatne, ale wiążą się z ryzykiem bezpieczeństwa. Jeśli serwer zezwala na GatewayPorts, porty przekierowane zdalnie stają się dostępne z publicznego internetu, a nie tylko z localhost. Napastnik, który przejmie komputer z tunelem zwrotnym, może potencjalnie uzyskać dostęp do usług wewnętrznych. Organizacje powinny monitorować nieautoryzowane tunele zwrotne i ograniczać GatewayPorts w konfiguracjach SSH.
Kontrola tunelowania na serwerze SSH
Konfiguracja serwera SSH steruje możliwościami tunelowania. AllowTcpForwarding określa, czy dozwolone jest lokalne i zdalne przekierowanie portów. AllowStreamLocalForwarding określa, czy dozwolone jest przekierowanie gniazd uniksowych. Ustawienie tych opcji na no wyłącza tunelowanie dla wszystkich użytkowników; można je również ograniczyć dla poszczególnych użytkowników lub grup. Wyłączenie zbędnego przekierowywania zmniejsza powierzchnię ataku.
SSH jako VPN z urządzeniami tun
SSH obsługuje tworzenie interfejsów sieciowych tun na potrzeby pełnego tunelowania IP (ssh -w). Dzięki temu SSH staje się lekkim VPN-em, w którym tunelowane są całe pakiety IP, a nie tylko określone połączenia TCP. Na serwerze musi być włączona opcja PermitTunnel. Choć to rozwiązanie jest mniej wydajne niż dedykowane oprogramowanie VPN, nie wymaga dodatkowego oprogramowania i wykorzystuje istniejącą infrastrukturę SSH.
Multipleksowanie połączeń
Multipleksowanie połączeń SSH (ustawienia ControlMaster i ControlPath) pozwala ponownie wykorzystać istniejące połączenie SSH podczas ustanawiania nowych sesji. Znacznie przyspiesza to kolejne połączenia z tym samym hostem, co jest szczególnie przydatne w środowiskach wykorzystujących skrypty. Tunele można również utrzymywać między wieloma sesjami SSH za pośrednictwem współdzielonego połączenia.
Wykrywanie tuneli SSH
Administratorzy sieci mogą wykrywać tunelowanie SSH na podstawie nietypowych wzorców ruchu: długotrwałych połączeń TCP na porcie 22, niespodziewanie dużych ilości danych w połączeniach, które powinny obsługiwać wyłącznie ruch terminalowy, lub połączeń z miejscami docelowymi znanymi jako wrażliwe, nawiązywanych już po ustanowieniu sesji. Głęboka inspekcja pakietów nie pozwala zobaczyć zawartości SSH, ale analiza metadanych może wskazać podejrzane zachowanie tunelu.
Najlepsze praktyki konfiguracji tuneli
W przypadku autoryzowanego użycia należy udokumentować wszystkie tunele i ich przeznaczenie. Z tunelami należy używać opcji -N (bez polecenia), aby nie otwierać niepotrzebnie powłoki, oraz opcji -f (w tle), aby uruchamiać je bez blokowania terminala. W przypadku tuneli trwałych należy użyć AutoSSH lub aktywacji gniazda przez systemd, które automatycznie ponownie uruchamiają tunel po zerwaniu połączenia.
Lokalne a zdalne przekierowanie portów
Chcą Państwo udostępnić lokalny serwer deweloperski (działający na porcie 3000) w internecie za pośrednictwem publicznego serwera SSH. Jakiego typu przekierowania należy użyć?
Podsumowanie tunelowania SSH
Podsumowanie tunelowania SSH: przekierowanie lokalne (-L) umożliwia bezpieczny dostęp z Państwa komputera do usług wewnętrznych, przekierowanie zdalne (-R) udostępnia usługi lokalne za pośrednictwem publicznego serwera, przekierowanie dynamiczne (-D) tworzy serwer proxy SOCKS5 do trasowania ruchu na poziomie aplikacji, przekierowanie tun pozwala utworzyć pełną sieć VPN IP, a ustawienie AllowTcpForwarding na serwerze kontroluje te możliwości.
Często zadawane pytania
Czy lekcja „Tunelowanie SSH i techniki przekierowywania portów” jest bezpłatna?
Tak — pełny tekst „Tunelowanie SSH i techniki przekierowywania portów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Tunelowanie SSH i techniki przekierowywania portów”?
Proszę opanować lokalne, zdalne i dynamiczne przekierowywanie portów oraz poznać ich uzasadnione i wrażliwe pod względem bezpieczeństwa zastosowania. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?
Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Tunelowanie SSH i techniki przekierowywania portów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?
Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Uzgadnianie SSH i uwierzytelnianie kluczem hosta
- Uwierzytelnianie kluczem publicznym i przekazywanie agenta
- Tunelowanie SSH i techniki przekierowywania portów
- Hartowanie SSH i najlepsze praktyki audytowe