 Instalacja i konfiguracja bezpiecznego serwera IMAP
Arkadiusz Piotrowski 20-03-2000
0. Wstęp
Dokument ten opisuje proces instalacji serwera poczty IMAP używającego
bezpiecznych połączeń przy użyciu protokołu SSL. Nie opisujemy instalacji
pakietu OpenSSL - jest jej poświęcony odrębny dokument.
Zakładamy, że wszystkie działania wykonywane są z poziomu administratora.
1. Instalacja IMAPa
1.1. Kompilacja pakietu
Sposób kompilacji odbiega nieco od przyjętego standardu:
uncompress imap.tar.Z
tar xfv imap.tar
make lnx
Do polecenia make podajemy jeden argument, którym jest
skrót nazwy systemu dla którego kompilujemy program (patrz
imap-2001/Makefile ).
1.2. Ustawienia demona inetd
W pliku /etc/inetd.conf należy dodać następującą linię:
imap stream tcp nowait root /usr/sbin/imapd imapd
(Zakładamy, że imapd został zainstalowany w katalogu /etc/sbin )
1.3. Ustawienia pliku /etc/services
Należy dodać następujący wpis:
imap 143/tcp
2. Instalacja stunnel-a
2.1. Kompilacja pakietu
gzip -cd stunnel-VERSION.tar.gz | tar xfv -
cd stunnel-VERSION
./configure --with-pem-dir=/usr/local/ssl/certs \
--with-ssl=/usr/local
make
make install
gdzie i parametry polecenia configure interpretujemy
następująco:
--with-ssl=DIR - ścieżka gdzie zostały zainstalowane
pliki wykonywalne SSL'a
--with-pem-dir=DIR - domyślny katalog dla pliku
stunnel.pem (Certyfikat serwera - musi
być generowany z opcją -nodes
- generuje ona klucz prywatny bez hasła.)
Uwaga: Instalując Stunnel'a (na pewno stunnel-3.9, niższa wersja raczej nie),
generujemy jednocześnie jego certyfikat stunnel.pem typu "self-signed".
Certyfikat ten służy jedynie do celów testowych. Nie należy go używać
jako zaufanego, gdyż każdy w sieci będzie miał do niego dostęp. Ponadto
programy takie jak Netscape Messenger i Outlook Express posiadają
ścisłą listę zaufanych CA i nie będą mogły korzystać z bezpiecznej
poczty, dopóki certyfikat stunnel.pem nie zostanie podpisany
przez dowolny, z tej listy, urząd certyfikacyjny.
2.2. Generacja certyfikatu serwera
Należy wykonać następujące polecenie
openssl req -new -days 365 -nodes -config stunnel.cnf \
-out certreq.pem -keyout stunnel.key
Uwaga: Common Name musi być nazwą serwera (FQDN - Fully Qualified
Domain Name), na którym będzie uruchamiany stunnel.
Polecenie to generuje klucz prywatny serwera stunnel.key i certyfikat
serwera certreq.pem. Teraz należy przesłać certreq.pem do
odpowiedniego ( wybranego ) urzędu certyfikacyjnego, który
podpisze ten certyfikat. Następnie należy wykonać:
cat stunnel.key certreq.pem > stunnel.pem
dodatkowo usuwając wszelkie nagłówki typu subject, itp.
Ostatecznie plik stunnel.pem powinien mieć postać :
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
3. Opcje konfiguracyjne
Najważniejszą opcją jest '-v'. Określa ona sposób weryfikacji klienta.
Może ona przyjmować następujące argumenty:
-
-v 1
oznacza, że należy spróbować zweryfikować osobę
nawiązującą połączenie. Jeśli "wylegitymuje się"
prawidłowym certyfikatem, nawiązuje połączenie,
jeśli certyfikat jest zły połączenie zostaje przerwane.
Jeśli klient nie przedstawi żadnego certyfikatu, to
połączenie będzie mimo wszystko nawiązane.
-
-v 2
oznacza, że należy zweryfikować klienta przy każdym
połączeniu z serwerem. Jeśli użytkownik nie posiada
certyfikatu lub posiada zły certyfikat (tzn. nieważny,
niewłaściwy lub też nie posiadamy certyfikatu CA, którym
podpisany jest certyfikat klienta) wówczas nawiązanie
połączenia z serwerem będzie niemożliwe.
-
-v 3
nakazuje stunnelowi zweryfikować klienta a także poszukać
jego certyfikatu w naszej lokalnej bazie.
- brak opcji -v
jest to domyślna opcja. Stunnel ignoruje przedstawiane
certyfikaty akceptując każde żądane połączenie.
Inne ważne opcje:
-
-p
ścieżka do certyfikatu stunnel.pem.
Można ją określić podczas instalacji używając opcji --with-pem-dir=DIR.
-
-A
ścieżka do pliku zawierającego certyfikaty CA. Używana z opcją -v.
-
-a
ścieżka do katalogu gdzie znajdują się lokalna baza certyfikatów.
Używana z opcją -v 3.
-
-d
-
-r
4. Przykłady
Podamy kilka przykładów jak można wystartowac serwer stunnela.
Mamy wiele ciekawych możliwości. (Zakładamy ze w pliku /etc/services
znajduje się wpis : imaps 993/tcp i że nic nie nasłuchuje na tym
porcie).
stunnel -d imaps -r pc207b:imap
co oznacza tyle, że serwer nasłuchuje na porcie 993 (imaps).
Jeśli przyjmie zgłoszenie, odszyfruje przesłanż wiadomość i prześle
ją na port 143 (imap) na maszynie pc207b.
stunnel -d imaps -l /usr/sbin/imapd
co oznacza tyle, że serwer nasłuchuje na porcie imaps i jeśli
przyjmie zgłoszenie, uruchamia program /usr/sbin/imapd . Jeśli
usuniemy z pliku /etc/inetd.conf linię uruchamiającą imapa i
zrestartujemy demona inetd (kill -HUP pid ) zapewnimy sobie
tym samym gwarancję, że z serwera imap'a bedą korzystać tylko
te programy klienckie, które chćą nawiązać bezpieczne połączenie.
W przeciwnym przypadku połączenie nie zostaje zrealizowane.
stunnel -d imaps -v 2 -p /usr/local/ssl/certs/stunnel.pem \
-A /usr/local/ssl/certs/cacert.pem -r pc207b:imap &
podobnie jak w przykładzie pierwszym. Dodatkowo wymagana jest weryfikacja
klienta. Każdy kto posiada certyfikat podpisany przez dowolny z
CA, których certyfikaty (klucze publiczne) znajdują się w pliku
cacert.pem, może korzystać z bezpiecznej usługi.
stunnel -d imaps -v 3 -p /usr/local/ssl/certs/stunnel.pem \
-A /usr/local/ssl/certs/cacert.pem \
-a /usr/local/ssl/certs/trusted \
-r pc207b:imap &
podobnie jak w przykładzie czwartym. Różnica polega na tym, że z
bezpiecznej poczty mogą korzystać wybrabne osoby, których
certyfikaty umieszczamy w katalogu /usr/local/ssl/certs/trusted .
Uwaga: Po umieszczeniu nowego certyfikatu w powyższym katalogu
należy wykonać polecenia:
c_hash nowy_certyfikat.pem
# dostaniemy np: f3e3425b4.0 => nowy_certyfikat.pem
mv nowy_certyfikat.pem f3e3425b4.0
Następnie restartujemy stunnela.
stunnel -d imaps -v 3 -p /usr/local/ssl/certs/stunnel.pem \
-A /usr/local/ssl/certs/cacert.pem \
-a /usr/local/ssl/certs/trusted \
-l /usr/sbin/imapd &
dodatkowo należy w pliku /etc/inetd.conf usunać linie uruchamiającą
imapa (patrz przykład drugi).
|