Sposób na obejście

Recepta na skuteczne obchodzenie korporacyjnych firewalli.

Pracowałem w życiu w kilkunastu różnych firmach. Czasem bywało, że wyjście w świat było zablokowane na amen. Ogólna zasada jest taka, że czym większa firma i czym więcej ma komputerów, tym większe szanse na to, że będą mieli upierdliwego firewalla, który w więszości przypadków bardziej przeszkadza, niż pomaga.

Na szczęście większość takich firmowych firewalli da się obejść w dość prosty sposób – za pomocą znanej od dawna techniki tunelowania SSH.

(Czytelnicy zaznajomieni z tunelowaniem SSH mogą sobie odpuścić dalszy ciąg tego wpisu – to bardzo podstawowy poradnik, nie ma tu żadnych zaawansowanych tricków).

Potrzebne nam będą do tego celu dwie rzeczy:
1. Serwer w publicznej Sieci, najlepiej taki, którym możemy administrować przez SSH.
2. Odrobina cierpliwości.

W największym skrócie metoda polega na zestawieniu wirtualnego „tunelu” opartego na technologii SSH, a następnie przekierowaniu naszej lokalnej przeglądarki na ten tunel, dzięki czemu cały ruch www między przeglądarką a światem zewnętrznym będzie odbywał się właśnie za pośrednictwem tego tunelu, z ominięciem korporacyjnych piesków.

W pierwszej kolejności musimy ustalić, które z portów TCP są odblokowane na firewallu pracodawcy. W większości firm port 22 (domyślny SSH) jest zablokowany, ponieważ administratorzy znają technikę tunelowania SSH.

Na szczęście usługę SSH możemy uruchomić na porcie innym niż 22. Mój ulubiony numer portu to 53, używany domyślnie przez usługę DNS. O ile nie mamy na naszej maszynie w Sieci włączonej usługi serwera DNS, możemy śmiało wykorzystać ten port do połączeń SSH.

Jeżeli firewall pracodawcy opiera się wyłącznie na numerach portów, prawie na pewno pozwoli nam na łączenie się z portem 53 naszego serwera. Jeżeli jest bardziej zaawansowany i potrafi dynamicznie analizować (i blokować) ruch na podstawie zawartości, wówczas metoda nie zda egzaminu (ani na porcie 53 ani na żadnym innym).

Jeżeli port 53 jest zablokowany, próbujemy innych numerów portów (między 1 a 65535). Dobrymi kandydatami są na przykład porty 137, 138 lub 139, używane przez windowsową technologię NetBIOS, na ogół odblokowane na firewallach.

Jak sprawdzić, czy port jest odblokowany na firewallu?

Najlepiej po prostu uruchomić na nim usługę SSH i sprawdzić, czy da się zalogować przez ten port. Tylko jak zmienić konfigurację usługi SSH na naszym serwerze, skoro nie mamy do niego dostępu?

Jeżeli mamy telefon z Androidem, możemy skorzystać z aplikacji JuiceSSH, doskonałego klienta SSH na urządzenia mobilne. Logujemy się ze smartfona na serwer i modyfikujemy nieco zawartość pliku konfiguracyjnego usługi SSH:

# nano -w /etc/ssh/sshd_config

Znajdujemy (gdzieś w okolicach początku pliku) dyrektywę Port 22 i dodajemy pod spodem linijkę:

Port 53

Następnie zapisujemy plik (Ctrl-O, Enter), wychodzimy z Nano (Ctrl-X) i restartujemy usługę ssh:

# service ssh restart

Gotowe! Teraz uruchamiamy klienta SSH (polecam PuTTY) na służbowej maszynie, wpisujemy adres naszego serwera oraz numer portu 53 i próbujemy się połączyć. Jeżeli się udało – bomba. Jeżeli nie, powtarzamy powyższą procedurę dla innego niż 53 numeru portu tak długo, aż uda się połączyć, albo aż administratorzy sieciowi się wściekną, że ktoś coś kombinuje i wyślą nam ostrzeżenie.

Jeżeli uda nam się połączyć do serwera używając SSH, czeka nas teraz skonfigurowanie tunelu. W tym celu najpierw rozłączamy połączenie SSH, a następnie w PuTTY w drzewku opcji (po lewej stronie) doklikujemy się do Connection – SSH – Tunnels. Tam w polu „Source Port” wpisujemy numer portu, na którym będzie działał tunel (ja używam portu numer 9870, ale można sobie tu wpisać dowolny numer, najlepiej coś z zakresu 1025-65524), a w sekcji „Destination” zaznaczamy opcję „Dynamic” i klikamy Add.

Tak skonfigurowany tunel uruchamiamy poprzez zwykłe zalogowanie się do serwera przez SSH, na port numer 53 (lub inny, który udało nam się wykombinować wcześniej).

Ostatnim krokiem jest skonfigurowanie przeglądarki, żeby zamiast standardowego połączenia używała tunelu SSH. Ja używam do tego celu Firefoxa. Trzeba wejść w ustawienia zaawansowane, zakładkę Network i kliknąć Settings w sekcji Connections, a następnie włączyć „Manual proxy configuration” i wpisać wybrany wcześniej numer portu na localhost (ja używam 9870) jako „SOCKS Host”:

Zatwierdzamy przyciskiem OK – i gotowe. Od tej chwili cały ruch między naszą przeglądarką a światem zewnętrznym odbywać się będzie przez tunel SSH. Żeby przeglądarka działała musimy oczywiście mieć zawsze włączoną sesję PuTTY do naszego publicznego serwera. No i natychmiast przestaną nam działać wszystkie strony intranetowe (firmowe), bo od tej chwili przeglądarka nie ma kontaktu z firmową siecią lokalną. Stąd też warto pomyśleć o używaniu do połączeń „tunelowanych” osobnej przeglądarki.

Ot i cała tajemnica.

Autor: xpil

Po czterdziestce. Żonaty. Dzieciaty. Komputerowiec. Krwiodawca. Emigrant. Rusofil. Lemofil. Sarkastyczny. Uparty. Mól książkowy. Ateista. Apolityczny. Nie oglądam TV. Uwielbiam matematykę. Walę prosto z mostu. Gram na paru instrumentach. Lubię planszówki. Słucham bluesa, poezji śpiewanej i kapel a’capella. || Kliknij tutaj po więcej szczegółów ||

Dodaj komentarz

Bądź pierwszy!

Powiadom o
avatar