O programie
Stunnel to program udostępniający programom nie posiadającym możliwości obsługi szyfrowanych połączeń typu SSL zestawienie takich połączeń. Tworzy on tunel między portem usługi nie obsługującym szyfrowanych połączeń (np. POP3 na porcie 110) a własnym portem, na którym uruchomiony jest jego drugi koniec (np. SPOP3 na porcie 995).
Programy klienckie łączą się na końcu tunelu, na którym słucha stunnel, nawiązują szyfrowane połączenia, następnie stunnel już zdekodowane informacje wysyła na na port usługi nie obsługującej szyfrowanie. Jak widać program idealnie nadaje się do zabezpieczania połączeń nieszyfrowanych metodami kryptograficznymi.
Instalacja programu
Program występuje w postaci pakietów w prawie wszystkich dystrybucjach. Nie zawsze dostępne są pliki konfiguracyjne oraz startowe dla niego, dlatego należy czasem je samemu stworzyć. Są one również dostępne na naszym serwisie (plik startowy – www.linuxexpert.pl/pliki/stunnel i plik konfiguracyjny – www.linuxexpert.pl/pliki/stunnel.conf ). Dokładne instrukcje instalacyjne znajdą państwo w działach poświęconych konkretnym dystrybucjom.
Stunnel jako samodzielny demon
Jeżeli chcemy wykorzystać stunnela jako samodzielnego demona należy odpowiednio skonfigurować go. W tym celu edytujemy jego plik konfiguracyjny (przeważnie /etc/stunnel). Plik ten składa się z dwóch części: opcji globalnych oraz sekcji poświęconych poszczególnym usługom (zdefiniowanym w pliku /etc/services).
Część ogólną możemy zdefiniować następująco:
# najpierw plik zawierający certyfikat CA (Centrum Autoryzacji) CAfile = /etc/stunnel/cacert.pem # teraz plik z kluczem dla stunnel cert = /etc/stunnel/stunnel.pem # włączamy logowanie (przynajmniej na początek) dla naszego programu debug = 7 output = /var/log/stunnel.log # potem katalog, w którym zostanie "zamknięty" stunnel (chroot) chroot = /var/run/stunnel/ # następnie plik, w którym zapisany będzie PID programu # (jest to praktycznie ścieżka względna gdyż program zamkniemy w chroot) pid = /stunnel.pid # następnie użytkownik i grupa na prawach kogo działać będzie stunnel setuid = nobody setgid = nogroup
Następnie definiujemy sekcje dla poszczególnych usług.
[pop3s] accept = 995 connect = 110 [imaps] accept = 993 connect = 143 [ssmtp] accept = 465 connect = 25
Sprawdźmy także czy w pliku /etc/services znajdują się wpisy o świadczonych usługach (i ich portach oraz protokołach):
ssmtp 465/tcp imaps 993/tcp pop3s 995/tcp
Jeżeli ich nie ma, należy je dodać
Ostatnią czynnością jest uruchomienie stunnela. Możemy tego dokonać ręcznie wydając polecenie stunnel albo przy pomocy skryptów startowych dostarczonych w pakiecie dystrybucyjnym (np. w Debianie będzie to /etc/init.d/stunnel start)
W przypadku wystąpienia jakiś błędów masz możliwość przeczytania komunikatów programu w pliku logów (w naszym przypadku /var/log/stunnel.log).
Przykłady konfiguracji usług z wykorzystaniem xinetd
POP3
service pop3s { flags = REUSE NAMEINARGS socket_type = stream protocol = tcp wait = no user = root server = /usr/local/sbin/stunnel server_args = stunnel -l /usr/local/sbin/ipop3d ipop3d }
Uruchom teraz swojego klienta poczty i w zakładce bezpieczeństwo zaznacz opcję SSL
service imaps { flags = REUSE NAMEINARGS socket_type = stream protocol = tcp wait = no user = root server = /usr/local/sbin/stunnel server_args = stunnel -l /usr/local/sbin/imapd imapd }
service smtps { flags = REUSE NAMEINARGS socket_type = stream protocol = tcp wait = no user = root server = /usr/local/sbin/stunnel server_args = stunnel -r smtp }