piątek, 21 listopada 2008 
Start arrow FreeBSD arrow POCZTA arrow Postfix +AMaViS +ClamAV
Menu BSD4u
FreeBSD
OpenBSD
NetBSD
Dla *BSD
FAQ BSD4u
Forum BSDGuru.org
Security Advisory
Licencje
Images BSD
Menu ogólne
Start
Aktualności
Download
Sondy
Szukaj
Linki
Książki
About BSD4u
Info
Team BSD4u
Regulamin
Kanał #BSD4u
Kontakt
Sondy
Co sądzisz o naszym nowym Projekcie, i jak oceniasz zmianę koncepcji Projektu?
 
Popularne
Kompilacja i konfigu...
SQUID - najpopularni...
Neostrada+ i modem ...
NATowanie czyli jak ...
Samba - serwer plikó...
Upgrade systemu
Apache (konfiguracja...
Praktyczne IPFW
MRTG - statystyki ru...
CVSup - pomocny podc...
Neostrada na modemie...
Postfix z autoryzacj...
Postfix - bezpieczny...
System Portów (Kolek...
Dummynet - dzielenie...
Top Download
File icon Postfix - "Krok po kroku" v1.16697
File icon Postfix - "Krok po kroku" v1.06601
File icon PPTPd - "Prosty i szybki VPN" v1.0b6066
File icon sdi.sh3845
File icon uEagle 1.0p12963
File icon named.sh2908
File icon uEagle 0.99b2864
File icon cs.sh2785
File icon uEagle 1.02752
File icon uEagle 1.12555
Ostatnie komentarze
transparent a virus...
Dodał: grzywka18
Dnia: 2008-05-13 11:19:58
hmm
Dodał: dzibi
Dnia: 2007-12-12 10:01:14
Bez tytułu
Dodał: grzywka18
Dnia: 2007-12-11 17:46:06
Bez tytułu
Dodał: termid
Dnia: 2007-05-09 18:01:11
Bez tytułu
Dodał: sarelo33
Dnia: 2006-12-30 23:50:14
Jest ok ale..
Dodał: theviant
Dnia: 2006-11-16 08:10:05
Google

Google


Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..




Stunnel - tunelowanie poczty po SSL Drukuj E-mail
Oceny: / 21
KiepskiBardzo dobry 
piątek, 08 sierpnia 2003 - Napisał: Artur Kulda (19494 odsłon)

Poczta elektroniczna jest jedną z najczęściej wykorzystywanych usług internetowych, korzysta z niej praktycznie każdy. Jest to także usługa bardzo osobista -  każdy ma własny adres email, a czytanie cudzej poczty jest jednym z największych przestępstw przeciwko netykiecie. Poufność korespondencji, która chronić można za pomocą PGP, to jednak tylko jedna strona medalu. Drugim największym problemem związanym z poczta elektroniczna jest bezpieczeństwo protokołu POP3 używanego do jej ściągania z serwera. POP3 wymaga zalogowania do serwera, przy czym hasło oraz login użytkownika są przesyłane otwartym tekstem i łatwe do podsłuchania. Do niedawna jednym z głównych źródeł takich informacji uzyskiwanych za pomocą snifferów był telnet, jednak w ciągu ostatnich kilku lat został on praktycznie wyeliminowany przez bezpieczne SSH. Problem jednak nadal istnieje, jako ze ogromna większość ludzi nadal ściąga swoja pocztę po POP3 bez żadnej dodatkowej ochrony. W międzyczasie wynaleziono rozszerzenia POP3 (takie jak APOP), mające za zadanie zabezpieczenie procesu logowania przed podsłuchaniem, ale maja one szereg wad wychodzących w praktyce. Jedną z nich jest także to, ze nie są one zbyt chętnie wdrażane przez producentów oprogramowani klienckiego, co niestety jest dość poważnym argumentem w dobie dominacji Windows na stacjach roboczych. W chwili obecnej najlepszym rozwiązaniem, posiadającym szereg zalet i, co istotne, wspieranym przez przemysł komputerowy jest protokół SSL. Z punktu widzenia klienta jest to przeważnie kwestia jednego przełącznika w konfiguracji programu pocztowego. Postawienie serwera POP3/SSL wymaga trochę więcej zaangażowania od administratora, ale wysiłek ten z pewnością się opłaci. 
Główne zalety tunelowania POP3/SSL to:
- szyfrowana jest całość transmisji, włącznie z nagłówkami i treścią ściąganych listów;
- protokół SSL jest powszechnie uznanym standardem, dostępnym na praktycznie wszystkie używane obecnie platformy;
- z kryptograficznego punktu widzenia SSL jest protokołem sprawdzonym i bezpiecznym;

1. Wstęp

Do naszych celów będzie jedynie potrzebny program stunnel, który można zainstalować z paczki za pomocą polecenia pkg_add lub z portów (co oczywiście polecam) /usr/ports/security/stunnel. Zakładam z góry, że serwer poczty pop3 i smtp jest już poprawnie skonfigurowany i działa bez problemów. Plik konfiguracyjny znajduje się w katalogu /usr/local/etc/stunnel/stunnel.conf

2. Oprogramowanie

Dla potrzeb tego artykułu nie ma większego znaczenia, z jakiego systemu operacyjnego korzystamy, pod warunkiem ze jest to system unixowy ;). Wykorzystywane oprogramowanie jest dostępne w postaci źródeł i kompiluje się na wszystkich popularnych odmianach Unixa, z Linuxem i BSD na czele.
Oprzemy się na następujących pakietach oprogramowania:
- OpenSSL
Biblioteki oraz aplikacje kryptograficzne, stanowiące serce protokołu SSL. Dostępne w postaci binarnej dla wszystkich dystrybucji Linuxa oraz BSD (pakiet openssl), a w przypadku OpenBSD jest dostępny od razu w standardowej dystrybucji. W przypadku innych systemów operacyjnych konieczne może być skompilowanie pakietu ze źródeł dostępnych na wielu serwerach.
- Stunnel 
Uniwersalny demon proxy, pozwalający na tunelowanie po SSL praktycznie dowolnych protokołów, z POP3 włącznie. W największym skrócie, stunnel potrafi przyjąć połączenie SSL i przesyłać rozszyfrowane dane dalej, do zadanego serwera, a następnie zwracać otrzymane wyniki z powrotem przez bezpieczny tunel. Również dostępny w postaci gotowych pakietów oraz jako kod źródłowy. 
- Solid?POP3
Tunelowanie POP3 nie wymaga żadnej świadomości tego faktu ze strony demona serwującego ten protokół, ale jeśli nie wybrałeś jeszcze żadnego innego, to polecam właśnie spop3d. Wszystkie wymienione wyżej programy są dostępne jako open-source, są rozwijane od dłuższego czasu i nie miały w przeszłości problemów z bezpieczeństwem.

3. Garść teorii

3.1 Tunelowanie POP3/SSL

Tunelowanie POP3 po SSL odbywa się w sposób przezroczysty dla tego pierwszego protokołu. Nie wie on nic o tym, ze faktycznie cała konwersacja odbywa się wewnątrz szyfrowanego tunelu SSL. Jest to bardzo wygodne, ponieważ nie wymaga żadnego szczególnego wsparcia ze strony samego serwera POP3 i pozwala na łatwe adaptowanie tego rozwiązania dla innych protokołów pocztowych, np. SMTP lub IMAP. Konfiguracja nie wymaga wiec żadnych zmian w serwerze POP3, działającym na porcie 110. Zamiast tego na porcie 995 (zarezerwowanym dla POP3/SSL) uruchamiamy stunnel, przyjmujący zaszyfrowane połączenia od klientów. Połączenie to jest rozszyfrowywane przez stunnela i przekierowywane, już jako zwykły protokół POP3, na port 110 tego samego serwera. Chroniony w ten sposób jest najbardziej narażony na podsłuch odcinek pomiędzy klientem a serwerem, zakładamy natomiast oczywiście, ze połączenia w ramach samego serwera są bezpieczne. Odpowiedzi serwera wracają ponownie do stunnela, który wysyła je do klienta w tym samym zaszyfrowanym tunelu SSL. Klient nie wie nic o tych manipulacjach - dla niego po prostu wygląda to jak protokół POP3 tunelowany po SSL na porcie 995.

3.2 Certyfikaty SSL

Protokół SSL, pomimo ze stosunkowo prosty, wykorzystuje do uwierzytelnienia złożony standard jakim jest X.509, będący częścią Infrastruktury Klucza Publicznego (Public Key Infrastructure). Jego celem jest upewnienie klienta, ze faktycznie łączy się z tym serwerem, z którym chciał się połączyć. Certyfikaty X.509 opierają się o kryptografie klucza publicznego i są hierarchiczne, tzn. organizacje wyższego poziomu mogą poświadczać certyfikaty organizacji niższego poziomu. Weryfikacja legalności certyfikatu otrzymanego na samym dole takiego drzewa certyfikacji wymaga sprawdzenia całej ścieżki, aż do samej góry. Koncepcje stojące za X.509 są stosunkowo proste, lecz złożoność samego standardu bardzo utrudnia ich zauważenie i, paradoksalnie, ten mały krok stanowi z reguły najtrudniejsza część konfiguracji serwera SSL. W 90% bowiem procentach przypadków cała ogromna infrastruktura X.509 nie jest nam potrzebna, wykorzystujemy bowiem drobny jej ułamek. Wystarczy tylko wiedzieć, ze będziemy musieli wygenerować na własne potrzeby dwa certyfikaty. Licząc od końca, będzie to certyfikat (klucz publiczny) samego serwera POP3/SSL oraz drugi, certyfikat naszego mikrourzędu certyfikującego (Certifying Authority), którym poświadczymy certyfikat serwera.

4. Konfiguracja SSL

Zaczniemy od przygotowania certyfikatów dla serwera POP3/SSL. Warto pamiętać, ze certyfikat X.509 jest w tym wypadku związany z nazwa serwera i łączący się z nami klient będzie automatycznie porównywał wskazana mu nazwę maszyny z nazwą przedstawioną mu w certyfikacie. Dlatego ważne jest, by nazwa skonfigurowana w certyfikacie była taka sama, jak ta podawana klientom, np. mail.domena.pl. Z drugiej strony, dzięki temu możemy ten sam certyfikat wykorzystać do wielu różnych usług na tej samej maszynie (np. SMTP/SSL, IMAP/SSL).

4.1 Certyfikat CA

Certyfikat jest tak na prawdę kluczem publicznym serwera, wraz z jego opisem oraz sygnaturą instytucji wyższego poziomu. Występuje zawsze w parze z kluczem prywatnym, od którego wygenerowania zaczniemy. Stworzymy klucz RSA o długości 1024 bitów i zapiszemy go do pliku cakey.pem:

# openssl genrsa -out cakey.pem 1024
Generating RSA private key, 1024 bit long modulus
.................++++++
......................++++++
e is 65537 (0x10001)

Następnie, z klucza prywatnego generujemy klucz publiczny, dokładając do niego informacje o serwerze. To wszystko stanowi Certificate Signing Request, czyli po prostu niepodpisany jeszcze certyfikat X.509.

# openssl req -new -key cakey.pem -out cacsr.pem
Using configuration from /usr/lib/ssl/openssl.cnf
-----
Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Malopolska
Locality Name (eg, city) []:Krakow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ABA sp. z o.o.
Organizational Unit Name (eg, section) []:.
Common Name (eg, YOUR name) []:ABA sp z o.o
Email Address []:

Jak widać, podajemy podstawowe informacje o samym serwerze oraz jego właścicielu. W prawdziwym X.509 organizacja występująca o oficjalnie podpisany certyfikat musi dowieść, ze dane te są prawdziwe i że ma prawo posługiwać się podana nazwa. Właśnie formalne potwierdzenie prawdziwości tych danych jest sednem procesu certyfikacji.
W tej chwili powinniśmy zgłosić nasz CSR do podpisania, jest to jednak proces kosztowny i niepotrzebny, jeśli stawiamy serwer na potrzeby firmy, a zależy nam głównie na poufności transmisji. Standard SSL przewiduje na szczęście cos takiego, jak certyfikaty self-signed, czyli podpisane przez te sama osobę, która wystawia CSR. W tym celu bierzemy podpisywany CSR, podpisujący klucz prywatny i wynik zapisujemy do pliku cacert.pem.

# openssl x509 -req -in cacsr.pem -signkey cakey.pem -out cacert.pem
Signature ok
subject=/C=PL/ST=Malopolska/L=Krakow/O=ABA sp. z o.o.
/CN=mail.aba.krakow.pl/Email=
Getting Private key

Tego certyfikatu CA możemy teraz używać wielokrotnie do podpisywania różnych certyfikatów roboczych dla poszczególnych usług. W tym wypadku zrobimy to dla serwera mail.aba.krakow.pl, dla którego musimy powtórzyć cały proces z pewnymi różnicami.

4.2 Certyfikat serwera

Tak jak poprzednio, generujemy klucz prywatny RSA i zapisujemy go do pliku pop3key.pem:

# openssl genrsa -out pop3key.pem 1024

Następnie generujemy CSR podając te same dane firmy, z jedną różnicą. Zamiast nazwy firmy w polu Common name podajemy nazwę serwera:

# openssl req -new -key pop3key.pem -out pop3csr.pem
...
Common Name (eg, YOUR name) []:mail.aba.krakow.pl
...

Pole to będzie później wykorzystywane przez klientów do porównania z nazwą serwera, z którym się połączyli. Następny krok to już tylko złożenie podpisu. Nasz mikrourząd certyfikujący podpisze swoim kluczem nowy certyfikat serwera mail.aba.krakow.pl:

# openssl x509 -CA cacert.pem -CAkey cakey.pem -req -CAcreateserial -in pop3csr.pem -out pop3cert.pem
Signature ok
subject=/C=PL/ST=Malopolska/L=Krakow/O=ABA sp z o.o.
/CN=mail.aba.krakow.pl/Email=
Getting CA Private Key

Do złożenia podpisu wykorzystujemy jak widać klucz prywatny CA (to on faktycznie składa podpis), klucz publiczny CA, czyli jego certyfikat (są tam dane CA). Dane wejściowe to CSR serwera, a na wyjściu otrzymujemy jego podpisany certyfikat. Opcja -CAcreateserial powoduje stworzenie pliku zawierającego numery kolejnych certyfikatów, wystawianych przez tego CA. Ta szczypta biurokracji jest tutaj niezbędna.

5. Konfiguracja Stunnela

Teraz musimy przygotować środowisko do uruchomienia Stunnela. W tym celu połączymy dwa pliki, klucz oraz certyfikat serwera w jeden, umieszczony przykładowo w katalogu stunnela

# cd /usr/local/etc/stunnel
# cat pop3key.pem pop3cert.pem >> pop3.pem

Plik pop3.pem powinien mieć tak ustawione prawa, aby stunnel mógł go bez problemu odczytać, czyli np.
-rw-r-----   stunnel   stunnel   pop3.pem
wykonujemy poniższe polecenia aby nadać odpowiednie prawa

# chmod 640 pop3.pem
# chown stunnel:stunnel pop3.pem

W pliku konfiguracyjnym stunnel.conf ustawiamy kilka opcji:

cert = /usr/local/etc/stunnel/pop3.pem
setuid = stunnel
setgid = stunnel
output = /var/log/stunnel.log
[pop3s]
accept = 995
connect = 110
[ssmtp]
accept = 465
connect = 25

Teraz wystarczy już tylko nam uruchomić stunnel, 

# /usr/local/sbin/stunnel   /usr/local/etc/stunnel/stunnel.conf

Program zgłasza komunikaty na temat swojego działania za pomocą sysloga do pliku, który podaliśmy w opcjach konfiguracyjnych.

Od tej pory klienci powinni móc się już łączyć na ten port i ściągać przez niego pocztę. Najprostszy test to nawiązanie takiego połączenia ręcznie za pomocą klienta SSL:

# openssl s_client -quiet -connect localhost:995
CONNECTED(00000003)
...
+OK Solid POP3 server ready

Fakt zgłoszenia się serwera POP3 jest wystarczającym dowodem na poprawność instalacji. Jeśli usługa nadal nie działa poprawnie, to przyczyn należy szukać gdzie indziej - na przykład w konfiguracji filtrów pakietowych lub programów pocztowych.


Autor: Paweł Krawczyk 
kravietz(at)aba.krakow.pl 
Nowe wersje tego dokumentu dostępne są pod adresem http://ipsec.pl

Poprawki wprowadzone na potrzeby systemu FreeBSD:
Artur Kulda
arti(at)bsd4u.org

Komentarze:
start przy uruchomieniu kompa
Dodane przez przemo w dniu - 2006-09-05 11:01:40
... i jeszcze dodajemy do /etc/rc.conf  
stunnel_enable="YES"

Tylko zarejestrowani użytkownicy mogą pisać komentarze.
Prosze zaloguj się i dodaj komentarz.

Powered by AkoComment!

Ostatnio aktualizowany ( czwartek, 10 listopada 2005 )

« wstecz
Ciekawostki
W tcsh, możesz użyć `set autolist' by shell automatycznie wypisywał pliki pasujące do wzorca (nie trzeba naciskać ^D)
Pobierz
FreeBSD
OpenBSD
NetBSD
DragonFlyBSD
PC-BSD
FreeSBIE LiveCD
4.4BSD Lite
Reklama M3M.pl
Domeny
Książki

FreeBSD. Księga eksperta

FreeBSD. Księga eksperta

Cena: 125.00 zł
Dodaj do koszyka


FreeBSD. Podstawy administracji systemem

FreebBSD

Cena: 64.90 zł
Dodaj do koszyka


OpenBSD. Podstawy administracji systemem

OpenBSD

Cena: 84.90 zł
Dodaj do koszyka


OpenBSD. Tworzenie firewalla za pomocą PF

Firewall PF

Cena: 44.90 zł
Dodaj do koszyka

Licznik odwiedzin
Odwiedziło już nas
2522099
Internautów od lutego 2003

Korzystamy ze statysyk