{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

Proxytunnel - czyli jak wykorzystać dziurę w firmowym firewallu

Załóżmy, że mamy taką sytuację: pracujesz w firmie gdzie dostęp do Sieci masz poprzez proxy (kompy wewnątrz sieci mają numery IP sieci wewnętrznych).

Czasami jesteś w domu a potrzebujesz z pracy jakiś ważny plik, lecz niestety nie możesz podjechać do pracy. Więc się zastanawiasz: jak dostać się przez Internet do swojej unixowej maszyny, która znajduje się wewnątrz sieci firmowej i to jeszcze za serwerem PROXY? Albo jesteś w pracy i chciałbyś się zalogować poprzez klienta SSH na serwer gdzieś-tam-w-Internecie, a tutaj dostajesz odpowiedzi w stylu: Forbiden..., Conection closed by Remote Host. Jak się połączyć na taki serwer ?

Z pomocą przyjdą: Proxytunnel, FreeBSD i OpenSSH.

Proxytunnel jest to program, który zestawia tunelowaną sesje SSH pomiędzy kompami w Internecie, poprzez standardowy serwer proxy - HTTPS. Pracuje dla klienta ssh jako dodatkowy driver, potrafi również pracować jako samodzielna aplikacja, nasłuchując na portach połączeń i tunelując je do określonego przeznaczenia. Jeżeli zamierzasz używać Proxytunnel, serwer przez którego zamierzasz się tunelować, musi pozwalać co najmniej na przeglądanie stron WWW (z lub bez autoryzacji proxy). Większość serwerów proxy pozwala tylko na połączenia przez nieliczne porty takie jak: 80(http), 443(https), niektóre przez dodatkowe porty: 8000, 8001, 8002, 8080 itp. oraz 119(nntp), 563(snntp). Po prostu musisz ich poszukać (np. wpisy w opcjach proxy dla przeglądarki WWW).

TYLKO NA LITOŚĆ BOSKĄ NIE SKANUJCIE PORTÓW !

Jak wiesz SSH pozwala na przekierowywanie portów i wiele innych ciekawych sztuczek. Jeden z autorów programu tworzy podwójny tunel dla poczty oraz usnetu.
Musisz sobie zdawać sprawę z tego, że serwer proxy musi posiadać co najmniej 2 interfejsy sieciowe, jeden z IP publicznym widoczny w Internecie i drugi z IP dla sieci wewnętrznej, widoczny dla użytkowników w firmie. Pobawimy się na 2 sposoby: 1 kiedy jesteś wewnątrz swojej sieci firmowej i 2 kiedy jesteś na zewnątrz - gdzieś w Internecie.

1. Wewnątrz sieci firmowej.
Musisz posiadać konto shellowe na jakimś serwerze w Internecie, gdzie demon SSHD jest odpalony na porcie, który jest dziurą w naszym proxy - firewallu (nie bójmy się tego określenia - to jest dziura). Musisz też posiadać w firmie komputer z FreeBSD (np. komputer z 2 systemami, Windows 98 i FreeBSD) i OpenSSH. Jako root na FreeBSD instalujemy z portów (ports/net/proxytunnel) lub z paczek Proxytunnel. We FreeBSD 4.5-Release jest dostępny proxytunnel w wersji 1.0.6. Zobaczmy jakie opcje oferuje proxytunnel:

#proxytunnel -h
Proxytunnel 1.0.6
Jos Visser (Muppet) , Mark Janssen (Maniac)
Purpose:
Build generic tunnels trough HTTPS proxy's, supports HTTP authorization
Usage: Proxytunnel [OPTIONS]...
-h --help Wyświetla ten help
-V --version Wyświetla wersję programu
-i --inetd Uruchamia się z inetd (domyślnie jest wyłączony)
-u STRING --user=STRING Podaje do autoryzacji HTTPS twój login
-s STRING --pass=STRING Podaje do autoryzacji HTTPS twoje hasło
-g STRING --proxyhost=STRING adres serwera Proxy przez który masz się tunelować (może być jawne IP)
-G INT --proxyport=INT port serwera Proxy przez który masz się tunelować
-d STRING --desthost=STRING adres hosta przeznaczenia (może być jawne IP)
-D INT --destport=INT port na hoście przeznaczenia
-v --verbose Włącza wyświetlanie wszystkich komunikatów

Teraz możemy utworzyć w katalogu domowym ~/.ssh/ plik konfiguracyjny dla klienta ssh. Po wyedytowaniu powinien wyglądać jakoś tak:

#cat ~/.ssh/config
Host alex
ProtocolKeepAlives yes # podtrzymywanie połączenia
ProxyCommand /usr/local/bin/proxytunnel -g proxy2.mojafima.com -G 8080 -u
marpil -s w_d_trzasło -d serwer-alexa.pl -D 563

Host piotr
ProtocolKeepAlives yes
ProxyCommand /usr/local/bin/proxytunnel -g proxy1.mojafima.com -G 8080
-d serwer-piotra.pl -D 443

Pokazałem tutaj, że w mojej firmie są 2 serwery proxy, jeden z autoryzacją i drugi bez. Posiadam też 2 konta shellowe na 2 różnych serwerach w Sieci, gdzie demony SSHD nasłuchują na nietypowych dla siebie portach. Oczywiście kumple administrujący tymi maszynami nie uruchamiają na tych portach żadnej innej usługi. Jeszcze jedna uwaga: adresy moich serwerów proxy mogą być jawnymi IP widzianymi z sieci wewnętrznej, np. 10.0.0.1, 10.0.0.2
Pozostało nam wydać komendę i cieszyć się z ominięcia firewalla :):

# ssh -l marpil alex
Connected to proxy2.mojafirma.com
Starting tunnel

login: marpil
password:
Welcome to FreeBSD !

You have new mail.
% exit

Goodbye.
#

2. Na zewnątrz sieci firmowej - gdzieś w Internecie.

Musisz wewnątrz swojej firmy posiadać na jakimś kompie unixowym konto shellowe, gdzie demon SSHD nasłuchuje na porcie - dziurze ;). Niech to będzie np. komp o adresie 10.0.0.35 a port na którym nasłuchuje SSHD to 443, oczywiście serwer proxy pozwala na płączenia przez ten port. A nasz adres w Internecie to moj.komp.org. Instalujemy na naszym ".org" Proxytunnel i tworzymy plik konfiguracyjny, który powinien wyglądać tak:

#cat ~/.ssh/config
Host firma
ProtocolKeepAlives yes
ProxyCommand /usr/local/bin/proxytunnel -g proxy.publicznyAdresFirmy.com -G 8080 -d 10.0.0.35 -D 443

A teraz tylko:

# ssh -l marpil firma

strona projektu Proxytunnel: http://proxytunnel.sourceforge.net/

Autor: 
Mariusz Pilipczuk
Porozmawiaj o tym artykule na forum: 

quex, pon., 25/02/2008 - 01:22