Piotr Konieczny

konsultant ds. bezpieczeństwa, podróżnik,
hobbystycznie fuksiarz i gadżeciarz
szkot, prawie spadochroniarz...
nienawidzi zielonego.


« wszystkie wpisy | reklama: Porównywarka cen

Czwartek, 07 maja 2009 :: 22:54:43

Zabezpieczanie połączenia Jabber na Dreamhost

Jabber/XMPP - SSH tunneling

Ci, z Was, którzy korzystają z serwera Jabbera w swojej domenie osadzonej na Dreamhoscie zapewne zauważyli, że nie mogą połączyć się z serwerem za pomocą bezpiecznego protokołu (TLS/SSL). To naraża użytkowników na ataki MITM i możliwość podsłuchania prowadzonej rozmowy. Nie wierzysz? Odpal Wiresharka, napisz coś do kogoś na Jabberze, a następnie w polu filtr wpisz "tcp.port == 5222" — wewnątrz pokazanych pakietów znajdziesz treść swoich rozmów.

Jabber/XMPP - SSH tunneling

Oczywiście Dreamhost oferuje wariant z bezpiecznym połączeniem do serwera, ale wyłącznie po uprzednim zainstalowaniu certyfikatu SSL (do którego potrzebne jest wykupienie unikalnego adresu IP za 4 USD/mc). Po co płacić dodatkowe 48 USD rocznie, skoro można zabezpieczyć swoje połączenie z serwerem Jabbera za darmo?

Zabezpieczamy połączenie do Jabbera na Dreamhoscie

Do ustanowienia szyfrowanego połączenia z naszym serwerem Jabbera wykorzystamy tunelowanie SSH (pisałem już o nim w kontekście omijania blokady nałożonej na Polaków przez internetowe radio Pandora.com).

  1. Odpal PuTTY (na Windows) i skonfiguruj połączenie do swojego serwera

  2. Następnie, wybierz z menu po lewej stronie Connection -> SSH -> Tunnels

  3. Jako Source port podaj L5222, a jako Destination twojadomena.tld:5222 - upewnij się, ze poniżej zaznaczone są pola Local i Auto

  4. Zapisz ustawienia sesji i nawiąż kliknij Open

W przypadku Linuksa lub Mac OS X wystarczy wydać następującą komendę:

ssh -l twój_login twoja_domena -L 5222:twoja_domena:5222

W moim przypadku, wygląda to tak:

ssh -l pk konieczny.be -L 5222:konieczny.be:5222

Teraz wystarczy tylko zmienić ustawienia serwera w kliencie Jabbera — ja korzystam z komunikatora PSI:

  1. Kliknij prawym przyciskiem na nazwę swojego konta i wybierz Modify Account

  2. Przejdź na zakładkę Connection i zaznacz Manually Specify Server Host/Port oraz wpisz: 127.0.0.1 w polu Host i 5222 w polu Port.

  3. Zapisz zmiany i rozłącz się a następnie połącz z serwerem. Od teraz twoje połączenie jest już bezpieczne.

Możesz teraz spróbować powtórzy test z Wiresharkiem (patrz pierwszy akapit). Treść zawarta w znalezionych pakietach będzie ciągiem niezrozumiałych znaków.

Jak to działa?

Łącząc się ze swoim serwerem po bezpiecznym protokole SSH, tworzysz tunel - czyli szyfrowane połączenie wewnątrz którego mogą płynąć pakiety "niezabezpieczonego" protokołu (w naszym przypadku, jest to nieszyfrowany protokół Jabber/XMPP). Parametr -L wskazuje poleceniu SSH, który port lokalny (u nas: 5222) ma zostać otwarty na twoim komputerze (127.0.0.1) i gdzie ruch zostanie przekierowany (u nas: konieczny.be:5222). Port 5222 to standardowy port Jabbera.

Po pomyślnym zalogowaniu się do serwera SSH, PuTTY (bądź inny klient SSH) otwiera na wskazanym lokalnym porcie "drzwi do tunelu". Wszelkie połączenia skierowane na ten port, będą teraz (poprzez szyfrowany protokół) przenoszone do hosta i portu zdefiniowanego w dalszej części parametru -L — ciąg po pierwszym dwukropku (u nas: konieczny.be:5222).

Łącząc się więc klientem Jabbera z adresem swojego komputera (127.0.0.1) na porcie 5222 jesteś automatycznie "przekierowywany" na drugi koniec tunelu, a zatem docierasz do konieczny.be, ale już nie "gołym" protokołem Jabbera, a z "ochroną kryptograficzną" SSH.

Podane wyżej wskazówki zadziałają również w przypadku serwerów Jabbera u innych niż DreamHost dostawców. Analogicznie, tunelować można inne niż Jabber/XMPP protokoły. Ta metoda świetnie sprawdza się również w przypadku FTP (brak SFTP) lub POP3 (brak SSL). Wystarczy tylko dopasować numery portów.

Ciągle nie jesteśmy bezpieczni...

Warto mieć na uwadze, że tunelowanie (a także natywne szyfrowane SSL-em połączenia Jabber/XMPP) zabezpieczają nasza wiadomości TYLKO na trasie My -> Nasz serwer Jabbera. Atakujący dalej może podsłuchać nasze rozmowy, sniffując połączenia pomiędzy serwerami nadawcy i odbiorcy w sieci Jabber.

W następnym Jabberowym odcinku opiszę, jak zapewnić bezpieczną komunikację na całej trasie pomiędzy nadawcą i odbiorcą (tzw. end to end encryption).

Aktualizacja 8.5.2009:
Mateusz Biliński celnie zauważa, że można "oszukać" Dreamhost w jeszcze jeden sposób. Jako host/port serwera Jabbera podajemy nie nazwę naszej domeny, a nazwę dreamhostowego serwera na którym mamy konto i port 5223. Nazwę swojego serwera możesz znaleźć po zalogowaniu się do panelu, i kliknięciu na Account Status (prawy górny róg) — interesuje nas pozycja Webserver. Serwery Dreamhosta (w przeciwieństwie do dodawanych domen) mają zainstalowane certyfikaty SSL ;-) W niektórych klientach trzeba jeszcze zmienić metodę uwierzytelnienia na "Legacy SSL". Znów, bez tunelowania, bez płacenia, bez...piecznie ;-)

• Następny post: Tydzień bezpieczeństwa IT w Krakowie
• Poprzedni post: Jabber na Dreamhost - jak dodać ludzi z GMail?

 

Chcesz być informowany o kolejnych wpisach na ten temat?
Kanał RSS: kliknij tutaj. Subskrybcja poprzez e-mail: kliknij tutaj.

 

Tagi:

« reszta wpisów | • trackback | ‡ torturuj posta!

Komentarze:

1. Void Czwartek, 07 maja 2009, 23:35:38
 

Użyć GPG. Tadaaa :)

 
2. Gynvael Coldwind Piątek, 08 maja 2009, 08:00:08
 

Ano przyznaje że dodatkowa kasa za SSL jest kapkę nie na rękę, tak że bardzo celny wpis ;>
Dodam że userzy Windowsa mogą użyć plink jeżeli chcą trochę zautomatyzować proces (parametry jak w ssh bodajże), dobrym pomysłem jest również zrobienie pary kluczy.

 
3. Łukasz Derkacz Piątek, 08 maja 2009, 08:04:33
 

GTK na Macu wygląda tam samo żałośnie jak wszędzie? :)

 
4. Piotr Konieczny Piątek, 08 maja 2009, 08:29:32
 

Void: Yhm. To podnosze poprzeczkę o rozszerzenie użycia GPG do *latwego* i *bezpiecznego* szyfrowania Webmaila ;-)

Gynvael Coldwin: Jeszcze jakis pegeant jest...

Łukasz Derkacz: Tak samo żałośnie :-) czasem aż chce się zwymiotować na ekran...

 
5. Piotr Konieczny Piątek, 08 maja 2009, 08:42:43
 

Dodałem aktualizację o metodę Mateusza - skorzystanie z certyfikatu SSL webserwera DH.

 
6. Moarc/J-23 Piątek, 08 maja 2009, 14:56:54
 

enjoy ur failhost, własny jabberd ftw ;p

 
7. mh Sobota, 09 maja 2009, 23:53:44
 

jak zamazujesz adres ip, to zamaż też go w dumpie ;)
chociaż co komu po nich? :)
#paranoidfail zdz alike: http://zdzichubg.jogger.pl/2007/04/24/bounce-bounce-bounce-spam/

 

Dodaj komentarz:

Wyślij pustą wiadomość, aby śledzić komentarze przez bota.
Komentarze są własnością osób komentujących.
Właściciel bloga nie ponosi za nie odpowiedzialności.
Komentarze nie na temat będą usuwane.

Ofiara

Jeśli powyższy wpis przydał Ci się w jakiś sposób,

autorowi :-)

Czytelnicy:

« wszystkie wpisy