Provided by:
stunnel4_4.42-1_i386 
NAZWA
stunnel - uniwersalny tunel protokolu SSL
SK/LADNIA
Unix:
stunnel [<plik>] | -fdn | -help | -version | -sockets
WIN32:
stunnel [ [-install | -uninstall | -start | -stop ] | -exit]
[-quiet] [<plik>] ] | -help | -version | -sockets
OPIS
Program stunnel zostal zaprojektowany do opakowywania w protokol SSL
polcze pomidzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami.
Przez serwer lokalny rozumiana jest aplikacja przeznaczona do
uruchamiania przy pomocy inetd. Stunnel pozwala na proste zestawienie
komunikacji serwerow nie posiadajcych funkcjonalnoci SSL poprzez
bezpieczne kanaly SSL.
stunnel pozwala doda funkcjonalno SSL do powszechnie stosowanych
demonow inetd, np. pop3 lub imap, do samodzielnych demonow, np. nntp,
smtp lub http, a nawet tunelowa ppp poprzez gniazda sieciowe bez zmian
w kodzie rodlowym.
OPCJE
<plik>
uyj podanego pliku konfiguracyjnego
-fd n (tylko Unix)
wczytaj konfiguracj z podanego deskryptora pliku
-help
drukuj list wspieranych opcji
-version
drukuj wersj programu i domylne wartoci parametrow
-sockets
drukuj domylne opcje gniazd
-install (tylko NT/2000/XP)
instaluj serwis NT
-uninstall (tylko NT/2000/XP)
odinstaluj serwis NT
-start (tylko NT/2000/XP)
uruchom serwis NT
-stop (tylko NT/2000/XP)
zatrzymaj serwis NT
-exit (tylko Win32)
zatrzymaj uruchomiony program
-quiet (tylko NT/2000/XP)
nie wywietlaj okienka informujcego o pomylnym zainstalowaniu lub
odinstalowaniu
PLIK KONFIGURACYJNY
Linia w pliku konfiguracyjnym moe by:
o pusta (ignorowana)
o komentarzem rozpoczynajcym si znakiem ';' (ignorowana)
o par 'nazwa_opcji = warto_opcji'
o tekstem '[nazwa_uslugi]' wskazujcym pocztek definicji uslugi
OPCJE GLOBALNE
chroot = katalog (tylko Unix)
katalog roboczego korzenia systemu plikow
Opcja okrela katalog, w ktorym uwiziony zostanie proces programu
stunnel tu po jego inicjalizacji, a przed rozpoczciem odbierania
polcze. cieki podane w opcjach CApath, CRLpath, pid oraz exec musz
by umieszczone wewntrz katalogu podanego w opcji chroot i okrelone
wzgldem tego katalogu.
compression = zlib | rle
wybor algorytmu kompresji przesylanych danych
domylnie: bez kompresji
Kompresja zlib zaimplementowana w OpenSSL 0.9.8 i nowszych nie jest
kompatybilna implementacj OpenSSL 0.9.7.
Kompresja rle nie jest zaimplementowana w aktualnych wersjach
OpenSSL.
debug = poziom[.podsystem]
szczegolowo logowania
Poziom logowania mona okreli przy pomocy jednej z nazw lub liczb:
emerg (0), alert (1), crit (2), err (3), warning (4), notice (5),
info (6) lub debug (7). Zapisywane s komunikaty o poziomie niszym
(numerycznie) lub rownym podanemu. Do uzyskania najwyszego poziomu
szczegolowoci mona uy opcji debug = debug lub debug = 7. Domylnym
poziomem jest notice (5).
O ile nie wyspecyfikowano podsystemu uyty bdzie domylny: daemon.
Podsystemy nie s wspierane przez platform Win32.
Wielko liter jest ignorowana zarowno dla poziomu jak podsystemu.
EGD = cieka_do_EGD (tylko Unix)
cieka do gniazda programu Entropy Gathering Daemon
Opcja pozwala okreli ciek do gniazda programu Entropy Gathering
Daemon uywanego do zainicjalizowania generatora cigow
pseudolosowych biblioteki OpenSSL. Opcja jest dostpna z bibliotek
OpenSSL 0.9.5a lub nowsz.
engine = auto | <identyfikator urzdzenia>
wybor sprztowego urzdzenia kryptograficznego
domylnie: bez wykorzystania urzdze kryptograficznych
Przykladowa konfiguracja umoliwiajca odczytanie klucza prywatnego z
urzdzenia zgodnego z OpenSC:
engine=dynamic
engineCtrl=SO_PATH:/usr/lib/opensc/engine_pkcs11.so
engineCtrl=ID:pkcs11
engineCtrl=LIST_ADD:1
engineCtrl=LOAD
engineCtrl=MODULE_PATH:/usr/lib/pkcs11/opensc-pkcs11.so
engineCtrl=INIT
[service]
engineNum=1
key=id_45
engineCtrl = <command>[:<parameter>]
konfiguracja urzdzenia kryptograficznego
Specjalne komendy "LOAD" i "INIT" pozwalaj na zaladowanie i
inicjalizacj modulu kryptograficznego urzdzenia.
fips = yes | no
Wlcz lub wylcz tryb FIPS 140-2.
Opcja pozwala wylczy wejcie w tryb FIPS, jeli stunnel zostal
skompilowany ze wsparciem dla FIPS 140-2.
domylnie: yes (pracuj w trybie FIPS 140-2)
foreground = yes | no (tylko Unix)
tryb pierwszoplanowy
Uycie tej opcji powoduje, e stunnel nie przechodzi w tlo logujc
swoje komunikaty na konsol zamiast przez syslog (o ile nie uyto
opcji output).
output = plik
plik, do ktorego dopisane zostan logi
Uycie tej opcji zmienia domylne zachowanie programu polegajce na
logowaniu swoich komunikatow poprzez syslog.
Do przekierowania komunikatow na standardowe wyjcie (na przyklad po
to, eby zalogowa je programem splogger z pakietu daemontools) mona
poda jako parametr urzdzenie /dev/stdout.
pid = plik (tylko Unix)
poloenie pliku z numerem procesu
Jeeli argument jest pusty plik nie zostanie stworzony.
Jeeli zdefiniowano katalog chroot, to cieka do pid jest okrelona
wzgldem tego katalogu.
RNDbytes = liczba_bajtow
liczba bajtow do zainicjowania generatora pseudolosowego
W wersjach biblioteki OpenSSL starszych ni 0.9.5a opcja ta okrela
rownie liczb bajtow wystarczajcych do zainicjowania PRNG. Nowsze
wersje biblioteki maj wbudowan funkcj okrelajc, czy dostarczona ilo
losowoci jest wystarczajca do zainicjowania generatora.
RNDfile = plik
cieka do pliku zawierajcego losowe dane
Biblioteka OpenSSL uyje danych z tego pliku do zainicjowania
generatora pseudolosowego.
RNDoverwrite = yes | no
nadpisz plik nowymi wartociami pseudolosowymi
domylnie: yes (nadpisz)
service = nazwa_serwisu
uyj parametru jako nazwy serwisu
Unix: nazwa serwisu dla biblioteki TCP Wrapper w trybie inetd.
domylnie: stunnel
setgid = identyfikator_grupy (tylko Unix)
grupa z ktorej prawami pracowal bdzie stunnel
setuid = identyfikator_uytkownika (tylko Unix)
uytkownik, z ktorego prawami pracowal bdzie stunnel
socket = a|l|r:option=value[:value]
ustaw opcj na akceptujcym/lokalnym/zdalnym gniedzie
Dla opcji linger wartoci maj posta l_onof:l_linger. Dla opcji time
wartoci maj posta tv_sec:tv_usec.
Przyklady:
socket = l:SO_LINGER=1:60
ustaw jednominutowe przeterminowanie
przy zamykaniu lokalnego gniazda
socket = r:SO_OOBINLINE=yes
umie dane pozapasmowe (out-of-band)
bezporednio w strumieniu danych
wejciowych dla zdalnych gniazd
socket = a:SO_REUSEADDR=no
zablokuj ponowne uywanie portu
(domylnie wlczone)
socket = a:SO_BINDTODEVICE=lo
przyjmuj polczenia wylcznie na
interfejsie zwrotnym (ang. loopback)
syslog = yes | no (tylko Unix)
wlcz logowanie poprzez mechanizm syslog
domylnie: yes (wlcz)
taskbar = yes | no (tylko WIN32)
wlcz ikonk w prawym dolnym rogu ekranu
domylnie: yes (wlcz)
OPCJE US/LUG
Kada sekcja konfiguracji uslugi zaczyna si jej nazw ujt w nawias
kwadratowy. Nazwa uslugi uywana jest do kontroli dostpu przez
bibliotek libwrap (TCP wrappers) oraz pozwala rozroni poszczegolne
uslugi w logach.
Jeeli stunnel ma zosta uyty w trybie inetd, gdzie za odebranie
polczenia odpowiada osobny program (zwykle inetd, xinetd lub
tcpserver), naley przeczyta sekcj TRYB INETD poniej.
accept = [adres:]port
nasluchuje na polczenia na podanym adresie i porcie
Jeeli nie zostal podany adres, stunnel domylnie nasluchuje na
wszystkich adresach IP lokalnych interfejsow.
CApath = katalog_CA
katalog Centrum Certyfikacji
Opcja okrela katalog, w ktorym stunnel bdzie szukal certyfikatow,
jeeli uyta zostala opcja verify. Pliki z certyfikatami musz
posiada specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrotem
kryptograficznym reprezentacji DER nazwy podmiotu certyfikatu.
Funkcja skrotu zostala zmieniona w wersji 1.0.0 biblioteki OpenSSL.
Naley wykona c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x.
Jeeli zdefiniowano katalog chroot, to cieka do CApath jest okrelona
wzgldem tego katalogu.
CAfile = plik_CA
plik Centrum Certyfikacji
Opcja pozwala okreli poloenie pliku zawierajcego certyfikaty uywane
przez opcj verify.
cert = plik_pem
plik z lacuchem certyfikatow
Opcja okrela poloenie pliku zawierajcego certyfikaty uywane przez
program stunnel do uwierzytelnienia si przed drug stron polczenia.
Certyfikat jest konieczny, aby uywa programu w trybie serwera. W
trybie klienta certyfikat jest opcjonalny.
ciphers = lista_szyfrow
lista dozwolonych szyfrow SSL
Parametrem tej opcji jest lista szyfrow, ktore bd uyte przy
otwieraniu nowych polcze SSL, np.: DES-CBC3-SHA:IDEA-CBC-MD5
client = yes | no
tryb kliencki (zdalna usluga uywa SSL)
domylnie: no (tryb serwerowy)
connect = [adres:]port
polcz si ze zdalnym serwerem na podany port
Jeeli nie zostal podany adres, stunnel domylnie lczy si z lokalnym
serwerem.
Komenda moe byc uyta wielokrotnie w pojedynczej sekcji celem
zapewnienia wysokiej niezawodnoci lub rozloenia ruchu pomidzy wiele
serwerow.
CRLpath = katalog_CRL
katalog List Odwolanych Certyfikatow (CRL)
Opcja okrela katalog, w ktorym stunnel bdzie szukal list CRL, jeeli
uyta zostala opcja verify. Pliki z listami CRL musz posiada
specjalne nazwy XXXXXXXX.r0, gdzie XXXXXXXX jest skrotem listy CRL.
Funkcja skrotu zostala zmieniona w wersji 1.0.0 biblioteki OpenSSL.
Naley wykona c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x.
Jeeli zdefiniowano katalog chroot, to cieka do CRLpath jest
okrelona wzgldem tego katalogu.
CRLfile = plik_CRL
plik List Odwolanych Certyfikatow (CRL)
Opcja pozwala okreli poloenie pliku zawierajcego listy CRL uywane
przez opcj verify.
curve = nid
krzywa dla ECDH
List dostpnych krzywych mona uzyska poleceniem:
openssl ecparam -list_curves
domylnie: prime256v1
delay = yes | no
oponij rozwinicie adresu DNS podanego w opcji connect
Opcja jest przydatna przy dynamicznym DNS, albo gdy usluga DNS nie
jest dostpna przy starcie programu stunnel (klient VPN, polczenie
wdzwaniane).
engineNum = <numer urzdzenia>
wybierz urzdzenie do odczyta klucza prywatnego
Urzdzenia s numerowane od 1 w gor.
exec = cieka_do_programu
wykonaj lokalny program przystosowany do pracy z superdemonem inetd
Jeeli zdefiniowano katalog chroot, to cieka do exec jest okrelona
wzgldem tego katalogu.
execargs = $0 $1 $2 ...
argumenty do opcji exec wlcznie z nazw programu ($0)
Cytowanie nie jest wspierane w obecnej wersji programu. Argumenty
s rozdzielone dowoln liczb bialych znakow.
failover = rr | prio
Strategia wybierania serwerow wyspecyfikowanych parametrami
"connect".
rr (round robin) - sprawiedliwe rozloenie obcienia
prio (priority) - uyj kolejnoci opcji w pliku konfiguracyjnym
domylnie: rr
ident = nazwa_uytkownika
weryfikuj nazw zdalnego uytkownika korzystajc z protokolu IDENT
(RFC 1413)
key = plik_klucza
klucz prywatny do certyfikatu podanego w opcji cert
Klucz prywatny jest potrzebny do uwierzytelnienia wlaciciela
certyfikatu. Poniewa powinien on by zachowany w tajemnicy, prawa
do jego odczytu powinien mie wylcznie wlaciciel pliku. W systemie
Unix mona to osign komend:
chmod 600 keyfile
domylnie: warto opcji cert
libwrap = yes | no
wlcz lub wylcz korzystanie z /etc/hosts.allow i /etc/hosts.deny.
domylnie: yes
local = serwer
IP rodla do nawizywania zdalnych polcze
Domylnie uywane jest IP najbardziej zewntrznego interfejsu w stron
serwera, do ktorego nawizywane jest polczenie.
sni = nazwa_uslugi:nazwa_serwera
Uyj uslugi jako podrzdnej (virtualnego serwera) dla rozszerzenia
TLS Server Name Indication (RFC 3546).
nazwa_us/lugi wskazuje uslug nadrzdn, ktora odbiera polczenia od
klientow przy pomocy opcji accept. nazwa_serwera wskazuje nazw
serwera wirtualnego. Z pojedycz uslug nadrzdn powizane jest zwykle
wiele uslug podrzdnych. Opcja sni moe by rownie uyta wielokrotnie
w ramach jednej uslugi podrzdnej.
Zarowno usluga nadrzdna jak i podrzdna nie moe by skonfigurowana w
trybie klienckim. Opcja connect uslugi podrzdnej jest ignorowana w
polczeniu z opcj protocol, gdy polczenie do zdalnego serwera jest w
tym wypadku nawizywane przed negocjacj TLS. Uwierzytelnienie przy
pomocy biblioteki libwrap jest realizowane dwukrotnie: najpierw dla
uslugi nadrzdnej po odebraniu polczenia TCP, a nastpnie dla uslugi
podrzdnej podczas negocjacji TLS.
Opcja sni jest dostpna poczwszy od wersji 1.0.0 biblioteki OpenSSL.
OCSP = URL
serwer OCSP do weryfikacji certyfikatow
OCSPflag = flaga
flaga serwera OCSP
aktualnie wspierane flagi: NOCERTS, NOINTERN NOSIGS, NOCHAIN,
NOVERIFY, NOEXPLICIT, NOCASIGN, NODELEGATED, NOCHECKS, TRUSTOTHER,
RESPID_KEY, NOTIME
Aby wyspecyfikowa kilka flag naley uy OCSPflag wielokrotnie.
options = opcje_SSL
opcje biblioteki OpenSSL
Parametrem jest nazwa opcji zgodnie z opisem w
SSL_CTX_set_options(3ssl), ale bez przedrostka SSL_OP_. Aby
wyspecyfikowa kilka opcji naley uy options wielokrotnie.
Na przyklad dla zachowania kompatybilnoci z bldami implementacji
SSL w programie Eudora mona uy opcji:
options = DONT_INSERT_EMPTY_FRAGMENTS
protocol = protokol
negocjuj SSL podanym protokolem aplikacyjnym (np. starttls lub
stls)
Opcji protocol nie naley uywa z szyfrowaniem SSL na osobnym porcie.
Aktualnie wspierane protokoly:
cifs
Unieudokumentowane rozszerzenie protokolu CIFS wspierane przez
serwer Samba. Wsparcie dla tego rozrzeczenia zostalo zarzucone
w wersji 3.0.0 serwera Samba.
connect
Negocjacja RFC 2817 - Upgrading to TLS Within HTTP/1.1,
rozdzial 5.2 - Requesting a Tunnel with CONNECT
Ten protokol jest wspierany wylcznie w trybie klienckim.
imap
Negocjacja RFC 2595 - Using TLS with IMAP, POP3 and ACAP
nntp
Negocjacja RFC 4642 - Using Transport Layer Security (TLS) with
Network News Transfer Protocol (NNTP)
Ten protokol jest wspierany wylcznie w trybie klienckim.
pop3
Negocjacja RFC 2449 - POP3 Extension Mechanism
smtp
Negocjacja RFC 2487 - SMTP Service Extension for Secure SMTP
over TLS
pgsql
Negocjacja
http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982
protocolAuthentication = uwierzytelnienie
rodzaj uwierzytelnienia do negocjacji protokolu
aktualnie wspierane: basic, NTLM
Obecnie typ uwierzytelnienia ma zastosowanie wylcznie w protokole
'connect'.
domylnie: basic
protocolHost = adres:port
adres docelowy do negocjacji protokolu
protocolPassword = haslo
haslo do negocjacji protokolu
protocolUsername = uytkownik
nazwa uytkownika do negocjacji protokolu
pty = yes | no (tylko Unix)
alokuj pseudoterminal dla programu uruchamianego w opcji 'exec'
retry = yes | no (tylko Unix)
polcz ponownie sekcj connect+exec po rozlczeniu
domylnie: no
session = przeterminowanie_pamici_podrcznej_sesji
czas w sekundach, po ktorym sesja SSL zostanie usunita z pamici
podrcznej
sessiond = adres:port
adres sessiond - servera cache sesji SSL
sslVersion = wersja
wersja protokolu SSL
Dozwolone opcje: all, SSLv2, SSLv3, TLSv1
stack = liczba_bajtow (z wyjtkiem modelu FORK)
rozmiar stosu procesora wtku
TIMEOUTbusy = liczba_sekund
czas oczekiwania na spodziewane dane
TIMEOUTclose = liczba_sekund
czas oczekiwania na close_notify (ustaw na 0, jeeli klientem jest
MSIE)
TIMEOUTconnect = liczba_sekund
czas oczekiwania na nawizanie polczenia
TIMEOUTidle = liczba_sekund
maksymalny czas utrzymywania bezczynnego polczenia
transparent = none | source | destination | both (tylko Unix)
tryb przezroczystego proxy na wspieranych platformach
Wspierane opcje:
none
Zablokuj wsparcie dla przezroczystago proxy. Jest to warto
domylna.
source
Przepisz adres, aby nawizywane polczenie wydawalo si pochodzi
bezporednio od klienta, a nie od programu stunnel.
Opcja jest aktualnie obslugiwana w:
Trybie zdalnym (opcja connect) w systemie Linux >=2.6.28
Konfiguracja wymaga nastpujcych ustawie iptables oraz
routingu (na przyklad w pliku /etc/rc.local lub
analogicznym):
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
echo 0 >/proc/sys/net/ipv4/conf/lo/rp_filter
Konfiguracja ta wymaga, aby stunnel byl wykonywany jako
root i bez opcji setuid.
Trybie zdalnym (opcja connect) w systemie Linux 2.2.x
Konfiguracja ta wymaga skompilowania jdra z opcj
transparent proxy. Docelowa usluga musi by umieszczona na
osobnej maszynie, do ktorej routing kierowany jest poprzez
serwer stunnela.
Dodatkowo stunnel powinien by wykonywany jako root i bez
opcji setuid.
Trybie zdalnym (opcja connect) w systemie FreeBSD >=8.0
Konfiguracja ta wymaga skonfigurowania firewalla i
routingu. stunnel musi by wykonywany jako root i bez opcji
setuid.
Trybie lokalnym (opcja exec)
Konfiguracja ta jest realizowana przy pomocy biblioteki
libstunnel.so. Do zaladowania biblioteki wykorzystywana
jest zmienna rodowiskowa _RLD_LIST na platformie Tru64 lub
LD_PRELOAD na innych platformach.
destination
Oryginalny adres docelowy jest uywany zamiast opcji connect.
Przykladowana konfiguracja przezroczystego adresu docelowego:
[transparent]
client=yes
accept=<port_stunnela>
transparent=destination
Konfiguracja wymaga nastpujcych ustawie iptables (na przyklad w
pliku /etc/rc.local lub analogicznym):
/sbin/iptables -I INPUT -i eth0 -p tcp --dport <port_stunnela> -j ACCEPT
/sbin/iptables -t nat -I PREROUTING -i eth0 -p tcp --dport <port_przekierowany> -j DNAT --to-destination <lokalne_ip>:<port_stunnela>
Przezroczysty adres docelowy jest aktualnie wspierany wylcznie
w systemie Linux.
both
Uyj przezroczystego proxy zarowno dla adresu rodlowego jak i
docelowego.
Dla zapewnienia kompatybilnoci z wczeniejszymim wersjami wspierane
s dwie dodatkowe opcje:
yes Opcja zostala przemianowana na source.
no Opcja zostala przemianowana na none.
verify = poziom
weryfikuj certyfikat drugiej strony polczenia
poziom 0 - zarzdaj certyfikatu i zignoruj go
poziom 1 - weryfikuj, jeeli zostal przedstawiony
poziom 2 - weryfikuj z zainstalowanym certyfikatem Centrum
Certyfikacji
poziom 3 - weryfikuj z lokalnie zainstalowanym certyfikatem drugiej
strony
domylnie - nie weryfikuj
ZWRACANA WARTO
stunnel zwraca zero w przypadku sukcesu, lub warto niezerow w przypadku
bldu.
SIGNA/LY
Nastpujce sygnaly mog by uyte do sterowania programem w systemie Unix:
SIGHUP
Zaladuj ponownie plik konfiguracyjny.
Niektore globalne opcje nie bd przeladowane:
o chroot
o fips
o foreground
o pid
o setgid
o setuid
Jeeli wykorzystywana jest opcja 'setuid' stunnel nie bdzie mogl
zaladowa ponownie konfiguracji wykorzystujcej uprzywilejowane
(<1024) porty.
Jeeli wykorzystywana jest opcja 'chroot' stunnel bdzie szukal
wszystkich potrzebnych plikow (lcznie z plikiem konfiguracyjnym,
certyfikatami, logiem i plikiem pid) wewntrz katalogu wskazanego
przez 'chroot'.
SIGUSR1
Zamknij i otworz ponownie log. Funkcja ta moe zosta uyta w
skrypcie rotujcym log programu stunnel.
SIGTERM, SIGQUIT, SIGINT
Zakocz dzialanie programu.
Skutek wyslania innych sygnalow jest niezdefiniowany.
PRZYK/LADY
Szyfrowanie polcze do lokalnego serwera imapd mona uy:
[imapd]
accept = 993
exec = /usr/sbin/imapd
execargs = imapd
albo w trybie zdalnym:
[imapd]
accept = 993
connect = 143
W polczeniu z programem pppd stunnel pozwala zestawi prosty VPN. Po
stronie serwera nasluchujcego na porcie 2020 jego konfiguracja moe
wyglda nastpujco:
[vpn]
accept = 2020
exec = /usr/sbin/pppd
execargs = pppd local
pty = yes
Poniszy plik konfiguracyjny moe by wykorzystany do uruchomienia
programu stunnel w trybie inetd. Warto zauway, e w pliku
konfiguracyjnym nie ma sekcji [nazwa_us/lugi].
exec = /usr/sbin/imapd
execargs = imapd
NOTKI
OGRANICZENIA
stunnel nie moe by uywany do szyfrowania protokolu FTP, poniewa do
przesylania poszczegolnych plikow uywa on dodatkowych polcze
otwieranych na portach o dynamicznie przydzielanych numerach. Istniej
jednak specjalne wersje klientow i serwerow FTP pozwalajce na
szyfrowanie przesylanych danych przy pomocy protokolu SSL.
TRYB INETD (tylko Unix)
W wikszoci zastosowa stunnel samodzielnie nasluchuje na porcie podanym
w pliku konfiguracyjnym i tworzy polczenie z innym portem podanym w
opcji connect lub nowym programem podanym w opcji exec. Niektorzy wol
jednak wykorzystywa oddzielny program, ktory odbiera polczenia, po czym
uruchamia program stunnel. Przykladami takich programow s inetd,
xinetd i tcpserver.
Przykladowa linia pliku /etc/inetd.conf moe wyglda tak:
imaps stream tcp nowait root /usr/bin/stunnel
stunnel /etc/stunnel/imaps.conf
Poniewa w takich przypadkach polczenie na zdefiniowanym porcie (tutaj
imaps) nawizuje osobny program (tutaj inetd), stunnel nie moe uywa
opcji accept. W pliku konfiguracyjnym nie moe by rownie zdefiniowana
adna usluga ([nazwa_us/lugi]), poniewa konfiguracja taka pozwala na
nawizanie tylko jednego polczenia. Wszystkie OPCJE US/LUG powinny by
umieszczone razem z opcjami globalnymi. Przyklad takiej konfiguracji
znajduje si w sekcji PRZYK/LADY.
CERTYFIKATY
Protokol SSL wymaga, aby kady serwer przedstawial si nawizujcemu
polczenie klientowi prawidlowym certyfikatem X.509. Potwierdzenie
tosamoci serwera polega na wykazaniu, e posiada on odpowiadajcy
certyfikatowi klucz prywatny. Najprostsz metod uzyskania certyfikatu
jest wygenerowanie go przy pomocy wolnego pakietu OpenSSL. Wicej
informacji na temat generowania certyfikatow mona znale na
umieszczonych poniej stronach.
Istotn kwesti jest kolejno zawartoci pliku .pem. W pierwszej kolejnoci
powinien on zawiera klucz prywatny, a dopiero za nim podpisany
certyfikat (nie danie certyfikatu). Po certyfikacie i kluczu prywatnym
powinny znajdowa si puste linie. Jeeli przed certyfikatem znajduj si
dodatkowe informacje tekstowe, to powinny one zosta usunite. Otrzymany
plik powinien mie nastpujc posta:
-----BEGIN RSA PRIVATE KEY-----
[zakodowany klucz]
-----END RSA PRIVATE KEY-----
[pusta linia]
-----BEGIN CERTIFICATE-----
[zakodowany certyfikat]
-----END CERTIFICATE-----
[pusta linia]
LOSOWO
stunnel potrzebuje zainicjowa PRNG (generator liczb pseudolosowych),
gdy protokol SSL wymaga do bezpieczestwa kryptograficznego rodla dobrej
losowoci. Nastpujce rodla s kolejno odczytywane a do uzyskania
wystarczajcej iloci entropii:
o Zawarto pliku podanego w opcji RNDfile.
o Zawarto pliku o nazwie okrelonej przez zmienn rodowiskow RANDFILE,
o ile jest ona ustawiona.
o Plik .rnd umieszczony w katalogu domowym uytkownika, jeeli zmienna
RANDFILE nie jest ustawiona.
o Plik podany w opcji '--with-random' w czasie konfiguracji programu.
o Zawarto ekranu w systemie Windows.
o Gniazdo egd, jeeli uyta zostala opcja EGD.
o Gniazdo egd podane w opcji '--with-egd-socket' w czasie
konfiguracji programu.
o Urzdzenie /dev/urandom.
Wspolczesne (>=0.9.5a) wersje biblioteki OpenSSL automatycznie
zaprzestaj ladowania kolejnych danych w momencie uzyskania
wystarczajcej iloci entropii. Wczeniejsze wersje biblioteki
wykorzystaj wszystkie powysze rodla, gdy nie istnieje tam funkcja
pozwalajca okreli, czy uzyskano ju wystarczajco duo danych.
Warto zwroci uwag, e na maszynach z systemem Windows, na ktorych
konsoli nie pracuje uytkownik, zawarto ekranu nie jest wystarczajco
zmienna, aby zainicjowa PRNG. W takim przypadku do zainicjowania
generatora naley uy opcji RNDfile.
Plik RNDfile powinien zawiera dane losowe -- rownie w tym sensie, e
powinny by one inne przy kadym uruchomieniu programu stunnel. O ile
nie uyta zostala opcja RNDoverwrite jest to robione automatycznie. Do
rcznego uzyskania takiego pliku uyteczna moe by komenda openssl rand
dostarczana ze wspolczesnymi wersjami pakietu OpenSSL.
Jeszcze jedna istotna informacja -- jeeli dostpne jest urzdzenie
/dev/urandom biblioteka OpenSSL ma zwyczaj zasilania nim PRNG w trakcie
sprawdzania stanu generatora. W systemach z /dev/urandom urzdzenie to
bdzie najprawdopodobniej uyte, pomimo e znajduje si na samym kocu
powyszej listy. Jest to wlaciwo biblioteki OpenSSL, a nie programu
stunnel.
PARAMETRY DH
Poczwszy od wersji 4.40 stunnel zawiera w kodzie programu 2048-bitowe
parametry DH.
Alternatywnie parametry DH mona umieci w pliku razem z certyfikatem:
openssl dhparam 2048 >> stunnel.pem
Wygenerowanie parametrow DH moe zaj nawet wiele minut.
PLIKI
stunnel.conf
plik konfiguracyjny programu
B/LDY
Opcja execargs nie obsluguje cytowania.
ZOBACZ R'OWNIE
tcpd(8)
biblioteka kontroli dostpu do uslug internetowych
inetd(8)
'super-serwer' internetowy
http://www.stunnel.org/
strona domowa programu stunnel
http://www.openssl.org/
strona projektu OpenSSL
AUTOR
Michal Trojnara
<Michal.Trojnara@mirt.net>