Tunelowanie POP3 i SMTP
Data: 21-07-2003 o godz. 22:26:55
Temat: Konfiguracje SMTP, POP3, IMAP


Prawie każdy z nas posiada prywatną skrzynkę e-mail, każdy kto taką skrzynkę posiada na pewnio chce aby informację które się na niej znajdują były jego i tylko jego. Ale czy tak jest na prawdę ?. Logując się na swoje konto poczty elektronicznej wprowadzamy nazwę użytkownika i hasło i większości przypadków wysyłamy te dane do serwera w celu weryfiakcji w postacji jawnej. Jeżeli ktoś bardzo będzie chciał to taki jawny login i hasło przechwyci, użyje i podszyje się pod naszą osobę wysyłając pocztę w naszym imieniu.
Aby temu zapobiec w kilku zdaniach opiszę jak skonfigurować popularne protokoły pop3 oraz smtp aby były bezpieczne.

W artykule Konfigurowanie Apache razem z SSL opisałem jak wygenerować certyfikaty dla serwera www, tutaj opierając się na tym artykule wygenerujemy certyfikaty dla POP3 i SMTP.
No to zaczynamy:
Musimy zainstalować program STUNNEL który jest dostępny w portach. Wchodzimy cd /usr/ports/security/stunnel i wydajemy komende make install clean.
Po chwili mamy już odpowiednie pliki w systemie, teraz musimy zająć się plikiem konfiguracyjnym który bez problemu znajdziemy w /usr/local/etc/stunnel/stunnel.conf
Edytujemy go i zostawiamy tylko potrzebne linijki. Po edycji powinien wyglądać następująco:
cert = /usr/local/etc/stunnel/mail.pem
setuid = stunnel
setgid = stunnel
output = /var/log/stunnel.log

[pop3s]
accept = 995
connect = 110
Teraz artykuł będzie składał się z dwóch części : pierwsza dla tych którzy nie generowałi jeszcze certyfikatu dla serwera www, natomiast druga jest przeznaczona dla tych którzy już powyższe kroki przeszli przy okazji konfigurowania Apache z SSL
1. Najpierw staniemy się organizacją certyfikującą (CA). Potrzebujemy, klucza prywatnego CA oraz certyfikatu. Nasze certyfikaty i klucze będziemy generowali do katalogu /etc/ssl.
Przystępujemy do generowania klucza CA.
cd /etc/ssl
openssl genrsa -des3 -out ca.key 1024

W ten sposób utworzyliśmy prywatny klucz, ca.key, instytucji certyfikującej. Teraz musimy sobie wygenerować właściwy certyfikat CA. Będzimy proszeni o wpisanie hasła do klucza prywatnego CA i wypełnienie poszczególnych pól.
openssl req -new -x509 -key ca.key -out ca.crt -days 3650
Otrzymaliśmy w ten sposób plik ca.crt, który jest właściwym certyfikatem CA do podpisywania innych.

2. Teraz stworzymy dla naszego POP3 i SMTP, klucz prywatny oraz wygenerujmy prośbę o certyfikat:
openssl genrsa -des3 -out mail.key 1024

Teraz gdy mamy już klucz prywatny, pozostało wygenerować plik .csr, który później sobie podpiszemy:
openssl req -new -key mail.key -out mail.csr

Teraz musimy uważnie wypełnić poszczególne linijki:

Country Name (2 letter code) [AU]: Należy podać dwuliterowy kod kraju (PL)

State or Province Name (full name) [Some-State]: Należy wpisać kropkę (.) lub podać nazwę województwa

Locality Name (eg, city) []: Należy podać nazwę miasta, w którym znajduje się siedziba instytucji

Organization Name (eg, company) [Internet Widgits Pty Ltd]: Należy podać nazwę instytucji

Organizational Unit Name (eg, section) []: Należy wpisać kropkę (.) lub podać nazwę komórki organizacyjnej

Common Name (eg, YOUR name) []: Należy podać nazwę domenową serwera np. mail.domena.pl (bardzo ważne jeżeli nie chcemy żeby później wyietlały nam się błędy)

Email Address []: Należy wpisać kropkę

A challenge password []: Należy wpisać kropkę

An optional company name []: Należy wpisać kropkę

Podpisanie pliku .csr musimy zrobić przy pomocy skryptu znajdującego się w kodzie źródłowym mod_ssl'a
(/usr/ports/distfiles/mod_ssl-2.8.14-1.3.27/pkg.contrib/sign.sh)
Podpisujemy:

./sign.sh mail.csr

Oraz:
cd /etc/ssl/
cp mail.key mail.key.old
openssl rsa -in mail.key.old -out mail.key
chmod 400 mail.key

Następnym krokiem będzie połączenie plików mail.key oraz mail.crt:
cat mail.key mail.crt >> mail.pem

Teraz jeszcze usuwamy niepotrzebne dane, zostawiamy tylko to co znajduje się pomiędzy wierszami:

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

oraz

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

i ustawiamy prawa pliku mail.pem:
chmod 400 mail.pem
Teraz uruchamiamy stunnel /usr/local/etc/rc.d/stunnel.sh start
openssl s_client -quiet -connect localhost:995
Jeżeli jest w ostatniej linijce:
+OK POP3 domena.pl v2001.80 server ready
to już jest dobrze, można jeszcze zajrzeć do pliku /var/log/stunnel.log czy wszystko jest OK.

Na koniec tunelowanie SMTP (Sendmail)

Przechodzimy do pliku konfiguracyjnego sendmaila, (u mnie nazwa.hosta.pl.mc ) i dopisujemy następujące linijki:
define(`confCACERT_PATH',`/usr/local/etc/stunnel')
define(`confCACERT',`/usr/local/etc/stunnel/ca.crt')
define(`confSERVER_CERT',`/usr/local/etc/stunnel/mail.pem')
define(`confSERVER_KEY',`/usr/local/etc/stunnel/mail.key')

wydajemy w katalogu /etc/mail komendy
make
make install
i restartujemy sendmaila.
Teraz np. w Outlooku wchodzimy:
Narzędzia>>Konta>>Właściwości>>Zaawansowane
i zaznaczamy przy POP3 i SMTP
"Ten serwer wymaga bezpiecznego połączenia SSL"

To już chyba wszystko proszę o ewentualne uwagi.

Pozdrawiam
Jacek






Artykuł jest z FreeBSD na www.malisz.eu.org
http://www.malisz.eu.org/

Adres tego artykułu to:
http://www.malisz.eu.org/15_Tunelowanie_POP3_SMTP.htm