Tunelowanie SSH w praktyce, czyli obchodzenie blokady portów przez admina ;-)

Dzisiaj miałem okazję uczestniczyć w krakowskiej konferencji o bezpieczeństwie SeConference. Bardzo fajna impreza organizowana przez studentów - sporo fajnych ludzi można spotkać i dowiedzieć o ciekawych odkryciach/informacjach od praktyków. Jednakże, nie o tym chciałbym napisać - na samym początku gdy przybyłem na konferencję, wyszły pewne uniedogodnienia po połączeniu się do udostępnionej dla uczestników sieci Wi-Fi, a dokładniej...

...Poblokowane porty...

...które uniemożliwiły mi skorzystanie z GG, Jabbera, a co najgorsze z IRC-a, który jest obowiązkowy dla każdej posiadówy na konferencji ;-) Okazało się, iż nie mogłem połączyć się z żadnym z serwerów za pomocą SSH, wszędzie dostawałem odpowiedź o przekroczeniu limitu czasu oczekiwania... Nawet, próbując połączyć się bezpośrednio przez telnet do jednego z serwerów IRC-a - nic mi to nie dało niestety...

reklama

Najprawdopodobniej wynika to z faktu, że admin zablokował na poziomie routera większość portów - ewentualnie wyżej w infrastrukturze sieci (sieć akademicka), w celu eliminacji nadużyć - zostały one poblokowane. Przez co łącząc się np. na swojego shella, gdzie trzymam sesję dla IRC'a i pomimo, że zestawiony jest "na wysokim porcie" tzn. większym niż 1024 - komenda:

ssh użytkownik@host -p <port>

Była uderzaniem głową w mur... Jednakże, to nic albowiem zawsze jest jakieś rozwiązanie sprawy, a dokładniej tunelowanie! Jako, że strony internetowe ładowały się zarówno po HTTP (czyli port 80) oraz HTTPS (port 443) - można wykorzystać jeden z tych portów do tego celu.... Ale to po kolei ;-)

Tunelowanie SSH w praktyce

Pokrótce, na poniższym schemacie przedstawiłem moje założenie. Mianowicie, w zaistniałej sytuacji jestem zmuszony skorzystać z mojego serwera VPS gdzie usługa SSH będzie nasłuchiwać na porcie 443. Mogąc połączyć się do serwera, stamtąd będę mógł nawiązać połączenia z moim kontami shellowymi, gdzie trzymam sesję IRC, EKG (czyli konsolowego komunikatora Gadu-Gadu) itd, a na których nie jestem w stanie zmienić portów nasłuchiwania serwera SSH.

Niestety, ale nie spodziewając się takiego obrotu sprawy, do tej pory - na moim serwerze ustawiłem inny port, który nasłuchuje na wysokim porcie (powyżej 5000). Dlatego też, potrzebowałbym zedytować plik konfiguracyjny /etc/ssh/sshd_config, by dopisać mu linijkę:

Port 443

No tak... ale jak się połączyć z tym serwerem, skoro mam zablokowane porty? ;-)

Dobry dostawca to podstawa

Na szczęście, OVH u którego dzierżawię serwer VPS - udostępnia w ramach swojego panelu sterowania wirtualny terminal, który pozwala właśnie w ramach takich kryzysowych sytuacji na skorzystanie z konsoli. Wystarczy w tym celu przejść na panel zarządzania, gdzie w głównym menu jest wybór opcji KVM.

Stamtąd, jesteśmy w stanie przejść do pliku konfiguracyjnego sshd_config, wystarczy ku temu skorzystanie z edytora nano, a dokładniej:

nano /etc/ssh/sshd_config

W domyślnej konfiguracji na początku pliku, ustawione mamy "Port 22". Oprócz tego, że dobrym zwyczajem jest zmienić domyślny port na wyższy niż 1024, to możemy także dopisać inny port na którym usługa SSH będzie nasluchiwać na serwerze. Na naszą tymczasową potrzebę, dopiszmy "Port 443". Zapiszmy zmiany i w konsoli wpiszmy

/etc/init.d/ssh restart

Dzięki czemu zrestartujemy serwer SSH. Od tej pory, możemy łączyć się na nasz serwer przez SSH, wykorzystując port 443:

ssh użytkownik@adres -p 443

Jednakże, ze względów bezpieczeństwa - warto taki port stosować tylko przy wyraźnych okazjach (np. konferencje) i po ich zakończeniu, przywrócić konfigurację usługi SSH do poprzednich ustawień.

Tunelowanie, można także wykorzystywać w pracy ;>

W przypadku, gdy blokowane mamy mnóstwo usług - idealnym rozwiązaniem mogą być właśnie serwery VPS, które pozwolą nam na obchodzenie blokad nałożonych przez adminów. Oprócz tego, że serwer VPS w najtańszych opcjach (jak najbardziej spełniających większość podstawowych działań) kosztują już od około 10 zł netto, a nawet i czasem taniej + dzierżawić można (w zależności od operatora) od kilku dni, do tygodni, miesiąca, kwartału, roku itd.

Podobnie jest z kontami shellowymi, jeśli nie są darmowe - to niekiedy wystarczy wpłacić jedynie 5 zł za ich stworzenie na wieczny użytek ;-)

Jest to całkiem przydatna sprawa, zwłaszcza, że częstokroć można też wykorzystywać taki serwer/shell do tunelowania połączeń HTTP, ale... o tym kiedyś indziej. Dla żądnych wiedzy, polecam ten artykuł albo ten wpis :-) 

linux porady serwery
reklama

Komentarze