stunnel4/doc/stunnel.pl.pod.in

1556 lines
42 KiB
Plaintext
Raw Normal View History

2017-03-28 09:58:13 +02:00
=head1 NAZWA
=encoding utf8
2017-11-15 15:03:25 +01:00
stunnel - uniwersalny tunel protokołu TLS
2017-03-28 09:58:13 +02:00
=head1 SKŁADNIA
=over 4
=item B<Unix:>
2017-11-15 15:03:25 +01:00
B<stunnel> [S<PLIK>] | S<-fd N> | S<-help> | S<-version> | S<-sockets> | S<-options>
2017-03-28 09:58:13 +02:00
=item B<WIN32:>
2017-11-15 15:03:25 +01:00
B<stunnel> [ [ S<-install> | S<-uninstall> | S<-start> | S<-stop> |
S<-reload> | S<-reopen> | S<-exit> ] [S<-quiet>] [S<PLIK>] ] |
S<-help> | S<-version> | S<-sockets> | S<-options>
2017-03-28 09:58:13 +02:00
=back
=head1 OPIS
2017-11-15 15:03:25 +01:00
Program B<stunnel> został zaprojektowany do opakowywania w protokół I<TLS>
2017-03-28 09:58:13 +02:00
połączeń pomiędzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami.
Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania
przy pomocy I<inetd>.
Stunnel pozwala na proste zestawienie komunikacji serwerów nie posiadających
2017-11-15 15:03:25 +01:00
funkcjonalności I<TLS> poprzez bezpieczne kanały I<TLS>.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
B<stunnel> pozwala dodać funkcjonalność I<TLS> do powszechnie stosowanych
2017-03-28 09:58:13 +02:00
demonów I<inetd>, np. I<pop3> lub I<imap>, do samodzielnych demonów,
np. I<nntp>, I<smtp> lub I<http>, a nawet tunelować ppp poprzez gniazda sieciowe
bez zmian w kodzie źródłowym.
=head1 OPCJE
=over 4
2017-11-15 15:03:25 +01:00
=item B<PLIK>
2017-03-28 09:58:13 +02:00
użyj podanego pliku konfiguracyjnego
2017-11-15 15:03:25 +01:00
=item B<-fd N> (tylko Unix)
2017-03-28 09:58:13 +02:00
wczytaj konfigurację z podanego deskryptora pliku
=item B<-help>
drukuj listę wspieranych opcji
=item B<-version>
drukuj wersję programu i domyślne wartości parametrów
=item B<-sockets>
drukuj domyślne opcje gniazd
2017-11-15 15:03:25 +01:00
=item B<-options>
drukuj wspierane opcje TLS
=item B<-install> (tylko Windows NT lub nowszy)
2017-03-28 09:58:13 +02:00
instaluj serwis NT
2017-11-15 15:03:25 +01:00
=item B<-uninstall> (tylko Windows NT lub nowszy)
2017-03-28 09:58:13 +02:00
odinstaluj serwis NT
2017-11-15 15:03:25 +01:00
=item B<-start> (tylko Windows NT lub nowszy)
2017-03-28 09:58:13 +02:00
uruchom serwis NT
2017-11-15 15:03:25 +01:00
=item B<-stop> (tylko Windows NT lub nowszy)
2017-03-28 09:58:13 +02:00
zatrzymaj serwis NT
2017-11-15 15:03:25 +01:00
=item B<-reload> (tylko Windows NT lub nowszy)
przeładuj plik konfiguracyjny uruchomionego serwisu NT
=item B<-reopen> (tylko Windows NT lub nowszy)
otwórz ponownie log uruchomionego serwisu NT
2017-03-28 09:58:13 +02:00
=item B<-exit> (tylko Win32)
zatrzymaj uruchomiony program
2017-11-15 15:03:25 +01:00
=item B<-quiet> (tylko Win32)
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
nie wyświetlaj okienek z komunikatami
2017-03-28 09:58:13 +02:00
=back
=head1 PLIK KONFIGURACYJNY
Linia w pliku konfiguracyjnym może być:
=over 4
2017-03-28 10:18:03 +02:00
=item *
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
pusta (ignorowana)
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item *
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
komentarzem rozpoczynającym się znakiem ';' (ignorowana)
=item *
parą 'nazwa_opcji = wartość_opcji'
=item *
tekstem '[nazwa_usługi]' wskazującym początek definicji usługi
2017-03-28 09:58:13 +02:00
=back
Parametr adres może być:
=over 4
2017-03-28 10:18:03 +02:00
=item *
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
numerem portu
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item *
oddzieloną średnikiem parą adresu (IPv4, IPv6, lub nazwą domenową) i numeru portu
=item *
ścieżką do gniazda Unix (tylko Unix)
2017-03-28 09:58:13 +02:00
=back
=head2 OPCJE GLOBALNE
=over 4
2017-11-15 15:03:25 +01:00
=item B<chroot> = KATALOG (tylko Unix)
2017-03-28 09:58:13 +02:00
katalog roboczego korzenia systemu plików
Opcja określa katalog, w którym uwięziony zostanie proces programu
B<stunnel> tuż po jego inicjalizacji, a przed rozpoczęciem odbierania
połączeń. Ścieżki podane w opcjach I<CApath>, I<CRLpath>, I<pid>
oraz I<exec> muszą być umieszczone wewnątrz katalogu podanego w opcji
I<chroot> i określone względem tego katalogu.
2017-03-28 10:18:03 +02:00
Niektóre funkcje systemu operacyjnego mogą wymagać dodatkowych plików umieszczonych w katalogu podanego w parametrze chroot:
=over 4
=item *
opóźnione rozwinięcie adresów DNS typowo wymaga /etc/nsswitch.conf i /etc/resolv.conf
=item *
lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone
=item *
niektóre inne pliki mogą potrzebować plików urządzeń, np. /dev/zero lub /dev/null
=back
2017-11-15 15:03:25 +01:00
=item B<compression> = deflate | zlib
2017-03-28 09:58:13 +02:00
wybór algorytmu kompresji przesyłanych danych
domyślnie: bez kompresji
Algorytm deflate jest standardową metodą kompresji zgodnie z RFC 1951.
2017-11-15 15:03:25 +01:00
=item B<debug> = [PODSYSTEM].POZIOM
2017-03-28 09:58:13 +02:00
szczegółowość logowania
Poziom logowania można określić 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 niższym (numerycznie) lub równym podanemu.
Do uzyskania najwyższego poziomu szczegółowości można użyć opcji
I<debug = debug> lub I<debug = 7>. Domyślnym poziomem jest notice (5).
O ile nie wyspecyfikowano podsystemu użyty będzie domyślny: daemon.
Podsystemy nie są wspierane przez platformę Win32.
Wielkość liter jest ignorowana zarówno dla poziomu jak podsystemu.
2017-11-15 15:03:25 +01:00
=item B<EGD> = ŚCIEŻKA_DO_EGD (tylko Unix)
2017-03-28 09:58:13 +02:00
ścieżka do gniazda programu Entropy Gathering Daemon
Opcja pozwala określić ścieżkę do gniazda programu Entropy Gathering Daemon
używanego do zainicjalizowania generatora ciągów pseudolosowych biblioteki
2017-11-15 15:03:25 +01:00
B<OpenSSL>.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<engine> = auto | IDENTYFIKATOR_URZĄDZENIA
2017-03-28 09:58:13 +02:00
wybór sprzętowego urządzenia kryptograficznego
domyślnie: bez wykorzystania urządzeń kryptograficznych
2017-11-15 15:03:25 +01:00
Sekcja PRZYKŁADY zawiera przykładowe konfiguracje wykorzystujące
urządzenia kryptograficzne.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<engineCtrl> = KOMENDA[:PARAMETR]
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
konfiguracja urządzenia kryptograficznego
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<engineDefault> = LISTA_ZADAŃ
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
lista zadań OpenSSL oddelegowanych do bieżącego urządzenia
Parametrem jest lista oddzielonych przecinkami zadań OpenSSL, które mają
zostać oddelegowane do bieżącego urządzenia kryptograficznego.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
W zależności od konkretnego urządzenia dostępne mogą być następujące zadania:
ALL, RSA, DSA, ECDH, ECDSA, DH, RAND, CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO,
PKEY_ASN1.
2017-03-28 09:58:13 +02:00
=item B<fips> = yes | no
2017-11-15 15:03:25 +01:00
tryb FIPS 140-2
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
Opcja pozwala wyłączyć wejście w tryb FIPS, jeśli B<stunnel> został
skompilowany ze wsparciem dla FIPS 140-2.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
domyślnie: no (od wersji 5.00)
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<foreground> = yes | quiet | no (tylko Unix)
2017-03-28 09:58:13 +02:00
tryb pierwszoplanowy
2017-11-15 15:03:25 +01:00
Użycie tej opcji powoduje, że B<stunnel> nie przechodzi w tło.
Parametr I<yes> powoduje dodatkowo, że komunikaty diagnostyczne logowane są na
standardowy strumień błędów (stderr) oprócz wyjść zdefiniowanych przy pomocy
opcji I<syslog> i I<output>.
=item B<iconActive> = PLIK_Z_IKONKĄ (tylko GUI)
ikonka wyświetlana przy obecności aktywnych połączeń do usługi
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.
=item B<iconError> = PLIK_Z_IKONKĄ (tylko GUI)
ikonka wyświetlana, jeżeli nie został załadowany poprawny plik konfiguracyjny
W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.
=item B<iconIdle> = PLIK_Z_IKONKĄ (tylko GUI)
ikonka wyświetlana przy braku aktywnych połączeń do usługi
W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.
=item B<log> = append | overwrite
obsługa logów
Ta opcja pozwala określić, czy nowe logi w pliku (określonym w opcji I<output>) będą dodawane czy nadpisywane.
domyślnie: append
=item B<output> = PLIK
2017-03-28 09:58:13 +02:00
plik, do którego dopisane zostaną logi
Użycie tej opcji powoduje dopisanie logów do podanego pliku.
2017-11-15 15:03:25 +01:00
Do kierowania komunikatów na standardowe wyjście (na przykład po to, żeby
2017-03-28 09:58:13 +02:00
zalogować je programem splogger z pakietu daemontools) można podać jako
parametr urządzenie /dev/stdout.
2017-11-15 15:03:25 +01:00
=item B<pid> = PLIK (tylko Unix)
2017-03-28 09:58:13 +02:00
położenie pliku z numerem procesu
2017-11-15 15:03:25 +01:00
Jeżeli argument jest pusty, plik nie zostanie stworzony.
2017-03-28 09:58:13 +02:00
Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<pid> jest określona
względem tego katalogu.
2017-11-15 15:03:25 +01:00
=item B<RNDbytes> = LICZBA_BAJTÓW
2017-03-28 09:58:13 +02:00
liczba bajtów do zainicjowania generatora pseudolosowego
2017-11-15 15:03:25 +01:00
=item B<RNDfile> = PLIK
2017-03-28 09:58:13 +02:00
ścieżka do pliku zawierającego losowe dane
2017-03-28 10:18:03 +02:00
Biblioteka B<OpenSSL> użyje danych z tego pliku do zainicjowania
2017-03-28 09:58:13 +02:00
generatora pseudolosowego.
=item B<RNDoverwrite> = yes | no
nadpisz plik nowymi wartościami pseudolosowymi
domyślnie: yes (nadpisz)
2017-11-15 15:03:25 +01:00
=item B<service> = SERWIS (tylko Unix)
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
nazwa usługi
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Podana nazwa usługi będzie używana jako nazwa usługi dla inicjalizacji sysloga,
oraz dla biblioteki TCP Wrapper w trybie I<inetd>. Chociaż technicznie można
użyć tej opcji w trybie w sekcji usług, to jest ona użyteczna jedynie w opcjach
globalnych.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
domyślnie: stunnel
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<socket> = a|l|r:OPCJA=WARTOŚĆ[:WARTOŚĆ]
2017-03-28 09:58:13 +02:00
ustaw opcję na akceptującym/lokalnym/zdalnym gnieździe
Dla opcji linger wartości mają postać l_onof:l_linger.
Dla opcji time wartości mają postać tv_sec:tv_usec.
Przykłady:
socket = l:SO_LINGER=1:60
ustaw jednominutowe przeterminowanie
przy zamykaniu lokalnego gniazda
socket = r:SO_OOBINLINE=yes
umieść dane pozapasmowe (out-of-band)
bezpośrednio w strumieniu danych
wejściowych dla zdalnych gniazd
socket = a:SO_REUSEADDR=no
zablokuj ponowne używanie portu
(domyślnie włączone)
socket = a:SO_BINDTODEVICE=lo
przyjmuj połączenia wyłącznie na
interfejsie zwrotnym (ang. loopback)
=item B<syslog> = yes | no (tylko Unix)
włącz logowanie poprzez mechanizm syslog
domyślnie: yes (włącz)
=item B<taskbar> = yes | no (tylko WIN32)
włącz ikonkę w prawym dolnym rogu ekranu
domyślnie: yes (włącz)
=back
=head2 OPCJE USŁUG
Każda sekcja konfiguracji usługi zaczyna się jej nazwą ujętą w nawias
kwadratowy. Nazwa usługi używana jest do kontroli dostępu przez
bibliotekę libwrap (TCP wrappers) oraz pozwala rozróżnić poszczególne
usługi w logach.
Jeżeli B<stunnel> ma zostać użyty w trybie I<inetd>, gdzie za odebranie
połączenia odpowiada osobny program (zwykle I<inetd>, I<xinetd>
lub I<tcpserver>), należy przeczytać sekcję I<TRYB INETD> poniżej.
=over 4
2017-11-15 15:03:25 +01:00
=item B<accept> = [HOST:]PORT
2017-03-28 09:58:13 +02:00
nasłuchuje na połączenia na podanym adresie i porcie
2017-03-28 10:18:03 +02:00
Jeżeli nie został podany adres, B<stunnel> domyślnie nasłuchuje
2017-03-28 09:58:13 +02:00
na wszystkich adresach IPv4 lokalnych interfejsów.
Aby nasłuchiwać na wszystkich adresach IPv6 należy użyć:
accept = :::port
2017-11-15 15:03:25 +01:00
=item B<CApath> = KATALOG_CA
2017-03-28 09:58:13 +02:00
katalog Centrum Certyfikacji
2017-11-15 15:03:25 +01:00
Opcja określa katalog, w którym B<stunnel> będzie szukał certyfikatów, jeżeli
użyta została opcja I<verifyChain> lub I<verifyPeer>. Pliki z certyfikatami
muszą posiadać specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrótem
2017-03-28 09:58:13 +02:00
kryptograficznym reprezentacji DER nazwy podmiotu certyfikatu.
2017-03-28 10:18:03 +02:00
Funkcja skrótu została zmieniona w B<OpenSSL 1.0.0>.
Należy wykonać c_rehash przy zmianie B<OpenSSL 0.x.x> na B<1.x.x>.
2017-03-28 09:58:13 +02:00
Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<CApath> jest określona
względem tego katalogu.
2017-11-15 15:03:25 +01:00
=item B<CAfile> = PLIK_CA
2017-03-28 09:58:13 +02:00
plik Centrum Certyfikacji
Opcja pozwala określić położenie pliku zawierającego certyfikaty używane
2017-11-15 15:03:25 +01:00
przez opcję I<verifyChain> lub I<verifyPeer>.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<cert> = PLIK_CERT
2017-03-28 09:58:13 +02:00
plik z łańcuchem certyfikatów
Opcja określa położenie pliku zawierającego certyfikaty używane przez
program B<stunnel> do uwierzytelnienia się przed drugą stroną połączenia.
2017-11-15 15:03:25 +01:00
Plik powinien zawierać kompletny łańcuch certyfikatów począwszy od certyfikatu
klienta/serwera, a skończywszy na samopodpisanym certyfikacie głównego CA.
Obsługiwane są pliki w formacie PEM lub P12.
2017-03-28 09:58:13 +02:00
Certyfikat jest konieczny, aby używać programu w trybie serwera.
W trybie klienta certyfikat jest opcjonalny.
2017-11-15 15:03:25 +01:00
Jeżeli używane jest sprzętowe urządzenie kryptograficzne, to opcja B<cert>
pozwala wybrać identyfikator używanego certyfikatu.
=item B<checkEmail> = EMAIL
adres email przedstawionego certyfikatu
Pojedyncza sekcja może zawierać wiele wystąpień opcji B<checkEmail>.
Certyfikaty są akceptowane, jeżeli sekcja nie zawiera opcji B<checkEmail>,
albo adres email przedstawionego certyfikatu pasuje do jednego z adresów
email określonych przy pomocy B<checkEmail>.
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
=item B<checkHost> = NAZWA_SERWERA
nazwa serwera przedstawionego certyfikatu
Pojedyncza sekcja może zawierać wiele wystąpień opcji B<checkHost>.
Certyfikaty są akceptowane, jeżeli sekcja nie zawiera opcji B<checkHost>, albo
nazwa serwera przedstawionego certyfikatu pasuje do jednego nazw określonych
przy pomocy B<checkHost>.
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
=item B<checkIP> = IP
adres IP przedstawionego certyfikatu
Pojedyncza sekcja może zawierać wiele wystąpień opcji B<checkIP>. Certyfikaty
są akceptowane, jeżeli sekcja nie zawiera opcji B<checkIP>, albo adres IP
przedstawionego certyfikatu pasuje do jednego z adresów IP określonych przy
pomocy B<checkIP>.
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<ciphers> = LISTA_SZYFRÓW
lista dozwolonych szyfrów TLS
2017-03-28 09:58:13 +02:00
Parametrem tej opcji jest lista szyfrów, które będą użyte przy
2017-11-15 15:03:25 +01:00
otwieraniu nowych połączeń TLS, np.: DES-CBC3-SHA:IDEA-CBC-MD5
2017-03-28 09:58:13 +02:00
=item B<client> = yes | no
2017-11-15 15:03:25 +01:00
tryb kliencki (zdalna usługa używa TLS)
2017-03-28 09:58:13 +02:00
domyślnie: no (tryb serwerowy)
2017-11-15 15:03:25 +01:00
=item B<config> = KOMENDA[:PARAMETR]
komenda konfiguracyjna B<OpenSSL>
Komenda konfiguracyjna B<OpenSSL> zostaje wykonana z podanym parametrem.
Pozwala to na wydawanie komend konfiguracyjnych B<OpenSSL> z pliku
konfiguracyjnego stunnela. Dostępne komendy opisane są w manualu
I<SSL_CONF_cmd(3ssl)>.
Możliwe jest wyspecyfikowanie wielu opcji B<OpenSSL> przez wielokrotne użycie
komendy B<config>.
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
=item B<connect> = [HOST:]PORT
2017-03-28 09:58:13 +02:00
połącz się ze zdalnym serwerem na podany port
2017-03-28 10:18:03 +02:00
Jeżeli nie został podany adres, B<stunnel> domyślnie łączy się
2017-03-28 09:58:13 +02:00
z lokalnym serwerem.
2017-11-15 15:03:25 +01:00
Komenda może być użyta wielokrotnie w pojedynczej sekcji
2017-03-28 09:58:13 +02:00
celem zapewnienia wysokiej niezawodności lub rozłożenia
ruchu pomiędzy wiele serwerów.
2017-11-15 15:03:25 +01:00
=item B<CRLpath> = KATALOG_CRL
2017-03-28 09:58:13 +02:00
katalog List Odwołanych Certyfikatów (CRL)
2017-11-15 15:03:25 +01:00
Opcja określa katalog, w którym B<stunnel> będzie szukał list CRL używanych
przez opcje I<verifyChain> i I<verifyPeer>. Pliki z listami CRL muszą posiadać
specjalne nazwy XXXXXXXX.r0, gdzie XXXXXXXX jest skrótem listy CRL.
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
Funkcja skrótu została zmieniona B<OpenSSL 1.0.0>.
Należy wykonać c_rehash przy zmianie B<OpenSSL 0.x.x> na B<1.x.x>.
2017-03-28 09:58:13 +02:00
Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<CRLpath> jest określona
względem tego katalogu.
2017-11-15 15:03:25 +01:00
=item B<CRLfile> = PLIK_CRL
2017-03-28 09:58:13 +02:00
plik List Odwołanych Certyfikatów (CRL)
Opcja pozwala określić położenie pliku zawierającego listy CRL używane
2017-11-15 15:03:25 +01:00
przez opcje I<verifyChain> i I<verifyPeer>.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<curve> = NID
2017-03-28 09:58:13 +02:00
krzywa dla ECDH
Listę dostępnych krzywych można uzyskać poleceniem:
openssl ecparam -list_curves
domyślnie: prime256v1
2017-11-15 15:03:25 +01:00
=item B<logId> = TYP
typ identyfikatora połączenia klienta
Identyfikator ten pozwala rozróżnić wpisy w logu wygenerowane dla
poszczególnych połączeń.
Aktualnie wspierane typy:
=over 4
=item I<sequential>
Kolejny numer połączenia jest unikalny jedynie w obrębie pojedynczej instancji
programu B<stunnel>, ale bardzo krótki. Jest on szczególnie użyteczny przy
ręcznej analizie logów.
=item I<unique>
Ten rodzaj identyfikatora jest globalnie unikalny, ale znacznie dłuższy, niż
kolejny numer połączenia. Jest on szczególnie użyteczny przy zautomatyzowanej
analizie logów.
=item I<thread>
Identyfikator wątku systemu operacyjnego nie jest ani unikalny (nawet w obrębie
pojedynczej instancji programu B<stunnel>), ani krótki. Jest on szczególnie
użyteczny przy diagnozowaniu problemów z oprogramowaniem lub konfiguracją.
=item I<process>
Identyfikator procesu (PID) może być użyteczny w trybie inetd.
=back
domyślnie: sequential
=item B<debug> = POZIOM
szczegółowość logowania
Poziom logowania można określić 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 niższym (numerycznie) lub równym podanemu.
Do uzyskania najwyższego poziomu szczegółowości można użyć opcji
I<debug = debug> lub I<debug = 7>. Domyślnym poziomem jest notice (5).
2017-03-28 09:58:13 +02:00
=item B<delay> = yes | no
opóźnij rozwinięcie adresu DNS podanego w opcji I<connect>
Opcja jest przydatna przy dynamicznym DNS, albo gdy usługa DNS nie jest
2017-03-28 10:18:03 +02:00
dostępna przy starcie programu B<stunnel> (klient VPN, połączenie wdzwaniane).
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Opóźnione rozwijanie adresu DNS jest włączane automatycznie, jeżeli nie
powiedzie się rozwinięcie któregokolwiek z adresów I<connect> dla danej
usługi.
Opóźnione rozwijanie adresu automatycznie aktywuje I<failover = prio>.
default: no
=item B<engineId> = NUMER_URZĄDZENIA
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
wybierz urządzenie dla usługi
=item B<engineNum> = NUMER_URZĄDZENIA
wybierz urządzenie dla usługi
2017-03-28 09:58:13 +02:00
Urządzenia są numerowane od 1 w górę.
2017-11-15 15:03:25 +01:00
=item B<exec> = ŚCIEŻKA_DO_PROGRAMU
2017-03-28 09:58:13 +02:00
wykonaj lokalny program przystosowany do pracy z superdemonem inetd
Jeżeli zdefiniowano katalog I<chroot>, to ścieżka do I<exec> jest określona
względem tego katalogu.
2017-11-15 15:03:25 +01:00
Na platformach Unix ustawiane są następujące zmienne środowiskowe:
REMOTE_HOST, REMOTE_PORT, SSL_CLIENT_DN, SSL_CLIENT_I_DN.
=item B<execArgs> = $0 $1 $2 ...
2017-03-28 09:58:13 +02:00
argumenty do opcji I<exec> włącznie z nazwą programu ($0)
Cytowanie nie jest wspierane w obecnej wersji programu.
Argumenty są rozdzielone dowolną liczbą białych znaków.
=item B<failover> = rr | prio
Strategia wybierania serwerów wyspecyfikowanych parametrami "connect".
2017-11-15 15:03:25 +01:00
=over 4
=item I<rr>
round robin - sprawiedliwe rozłożenie obciążenia
=item I<prio>
priority - użyj kolejności opcji w pliku konfiguracyjnym
=back
2017-03-28 09:58:13 +02:00
domyślnie: rr
2017-11-15 15:03:25 +01:00
=item B<ident> = NAZWA_UŻYTKOWNIKA
2017-03-28 09:58:13 +02:00
weryfikuj nazwę zdalnego użytkownika korzystając z protokołu IDENT (RFC 1413)
2017-11-15 15:03:25 +01:00
=item B<include> = KATALOG
wczytaj fragmenty plików konfiguracyjnych z podanego katalogu
Pliki są wczytywane w rosnącej kolejności alfabetycznej ich nazw.
=item B<key> = PLIK_KLUCZA
2017-03-28 09:58:13 +02:00
klucz prywatny do certyfikatu podanego w opcji I<cert>
Klucz prywatny jest potrzebny do uwierzytelnienia właściciela certyfikatu.
Ponieważ powinien on być zachowany w tajemnicy, prawa do jego odczytu
powinien mieć wyłącznie właściciel pliku. W systemie Unix można to osiągnąć
komendą:
chmod 600 keyfile
2017-11-15 15:03:25 +01:00
Jeżeli używane jest sprzętowe urządzenie kryptograficzne, to opcja B<key>
pozwala wybrać identyfikator używanego klucza prywatnego.
2017-03-28 09:58:13 +02:00
domyślnie: wartość opcji I<cert>
=item B<libwrap> = yes | no
włącz lub wyłącz korzystanie z /etc/hosts.allow i /etc/hosts.deny.
2017-11-15 15:03:25 +01:00
domyślnie: no (od wersji 5.00)
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<local> = HOST
2017-03-28 09:58:13 +02:00
IP źródła do nawiązywania zdalnych połączeń
Domyślnie używane jest IP najbardziej zewnętrznego interfejsu w stronę
serwera, do którego nawiązywane jest połączenie.
2017-11-15 15:03:25 +01:00
=item B<OCSP> = URL
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
responder OCSP do weryfikacji certyfikatów
2017-03-28 10:18:03 +02:00
2017-11-15 15:03:25 +01:00
=item B<OCSPaia> = yes | no
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
weryfikuj certyfikaty przy użyciu respondertów AIA
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Opcja I<OCSPaia> pozwala na weryfikowanie certyfikatów przy pomocy listy URLi
responderów OCSP przesłanych w rozszerzeniach AIA (Authority Information Access).
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<OCSPflag> = FLAGA_OCSP
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
flaga respondera OCSP
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Aktualnie wspierane flagi: NOCERTS, NOINTERN, NOSIGS, NOCHAIN, NOVERIFY,
NOEXPLICIT, NOCASIGN, NODELEGATED, NOCHECKS, TRUSTOTHER, RESPID_KEY, NOTIME
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Aby wyspecyfikować kilka flag należy użyć I<OCSPflag> wielokrotnie.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<OCSPnonce> = yes | no
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
wysyłaj i weryfikuj OCSP nonce
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Opcja B<OCSPnonce> zabezpiecza protokół OCSP przed atakami powtórzeniowymi.
Ze względu na złożoność obliczeniową rozszerzenie nonce jest zwykle wspierane
jedynie przez wewnętrzne (np. korporacyjne), a nie przez publiczne respondery
OCSP.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<options> = OPCJE_SSL
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
opcje biblioteki B<OpenSSL>
2017-03-28 09:58:13 +02:00
Parametrem jest nazwa opcji zgodnie z opisem w I<SSL_CTX_set_options(3ssl)>,
ale bez przedrostka I<SSL_OP_>.
2017-11-15 15:03:25 +01:00
I<stunnel -options> wyświetla opcje dozwolone w aktualnej kombinacji
programu I<stunnel> i biblioteki I<OpenSSL>.
2017-03-28 09:58:13 +02:00
Aby wyspecyfikować kilka opcji należy użyć I<options> wielokrotnie.
2017-11-15 15:03:25 +01:00
Nazwa opcji może być poprzedzona myślnikiem ("-") celem wyłączenia opcji.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Na przykład, dla zachowania kompatybilności z błędami implementacji TLS
w programie Eudora, można użyć opcji:
2017-03-28 09:58:13 +02:00
options = DONT_INSERT_EMPTY_FRAGMENTS
2017-11-15 15:03:25 +01:00
domyślnie:
options = NO_SSLv2
options = NO_SSLv3
=item B<protocol> = PROTOKÓŁ
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
negocjuj TLS podanym protokołem aplikacyjnym
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Opcja ta włącza wstępną negocjację szyfrowania TLS dla wybranego protokołu
2017-03-28 10:18:03 +02:00
aplikacyjnego.
2017-11-15 15:03:25 +01:00
Opcji I<protocol> nie należy używać z szyfrowaniem TLS na osobnym porcie.
2017-03-28 09:58:13 +02:00
Aktualnie wspierane protokoły:
=over 4
=item I<cifs>
2017-11-15 15:03:25 +01:00
Nieudokumentowane rozszerzenie protokołu CIFS wspierane przez serwer Samba.
2017-03-28 09:58:13 +02:00
Wsparcie dla tego rozrzeczenia zostało zarzucone w wersji 3.0.0 serwera Samba.
=item I<connect>
Negocjacja RFC 2817 - I<Upgrading to TLS Within HTTP/1.1>, rozdział 5.2 - I<Requesting a Tunnel with CONNECT>
Ten protokół jest wspierany wyłącznie w trybie klienckim.
=item I<imap>
Negocjacja RFC 2595 - I<Using TLS with IMAP, POP3 and ACAP>
=item I<nntp>
Negocjacja RFC 4642 - I<Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP)>
Ten protokół jest wspierany wyłącznie w trybie klienckim.
=item I<pgsql>
Negocjacja http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982
=item I<pop3>
Negocjacja RFC 2449 - I<POP3 Extension Mechanism>
=item I<proxy>
Przekazywanie adresu IP haproxy http://haproxy.1wt.eu/download/1.5/doc/proxy-protocol.txt
=item I<smtp>
Negocjacja RFC 2487 - I<SMTP Service Extension for Secure SMTP over TLS>
2017-11-15 15:03:25 +01:00
=item I<socks>
Wspierany jest protokół SOCKS w wersjach 4, 4a i 5.
Protokół SOCKS enkapsulowany jest w protokole TLS, więc adres serwera
docelowego nie jest widoczny dla napastnika przechwytującego ruch sieciowy.
F<http://www.openssh.com/txt/socks4.protocol>
F<http://www.openssh.com/txt/socks4a.protocol>
Nie jest wspierana komenda BIND protokołu SOCKS.
Przesłana wartość parametru USERID jest ignorowana.
Sekcja PRZYKŁADY zawiera przykładowe pliki konfiguracyjne VPNa zbudowanego
w oparciu o szyfrowany protokół SOCKS.
2017-03-28 09:58:13 +02:00
=back
2017-11-15 15:03:25 +01:00
=item B<protocolAuthentication> = UWIERZYTELNIENIE
2017-03-28 09:58:13 +02:00
rodzaj uwierzytelnienia do negocjacji protokołu
2017-11-15 15:03:25 +01:00
Opcja ta jest wpierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.
W protokole 'connect' wspierane jest uwierzytelnienie 'basic' oraz 'ntlm'.
Domyślnym rodzajem uwierzytelnienia protokołu 'connect' jest 'basic'.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
W protokole 'smtp' wspierane jest uwierzytelnienie 'plain' oraz 'login'.
Domyślnym rodzajem uwierzytelnienia protokołu 'smtp' jest 'plain'.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<protocolDomain> = DOMENA
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
domena do negocjacji protokołu
W obecnej wersji wybrana domena ma zastosowanie wyłącznie w protokole 'connect'.
=item B<protocolHost> = HOST:PORT
2017-03-28 09:58:13 +02:00
adres docelowy do negocjacji protokołu
2017-11-15 15:03:25 +01:00
I<protocolHost> określa docelowy serwer TLS, do którego połączyć ma się proxy.
2017-03-28 10:18:03 +02:00
Nie jest to adres serwera proxy, do którego połączenie zestawia B<stunnel>.
Adres serwera proxy powinien być określony przy pomocy opcji 'connect'.
W obecnej wersji adres docelowy protokołu ma zastosowanie wyłącznie w protokole
'connect'.
2017-11-15 15:03:25 +01:00
=item B<protocolPassword> = HASŁO
2017-03-28 09:58:13 +02:00
hasło do negocjacji protokołu
2017-11-15 15:03:25 +01:00
Opcja ta jest wspierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.
=item B<protocolUsername> = UŻYTKOWNIK
2017-03-28 09:58:13 +02:00
nazwa użytkownika do negocjacji protokołu
2017-11-15 15:03:25 +01:00
Opcja ta jest wspierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.
=item B<PSKidentity> = TOŻSAMOŚĆ
tożsamość klienta PSK
I<PSKidentity> może zostać użyte w sekcjach klienckich do wybrania
tożsamości użytej do uwierzytelnienia PSK.
Opcja jest ignorowana w sekcjach serwerowych.
domyślnie: pierwsza tożsamość zdefiniowana w pliku I<PSKsecrets>
=item B<PSKsecrets> = PLIK
plik z tożsamościami i kluczami PSK
Każda linia pliku jest w następującym formacie:
TOŻSAMOŚĆ:KLUCZ
Klucz musi być mieć przynajmniej 20 znaków.
Należy ograniczyć dostęp do czytania lub pisania do tego pliku.
2017-03-28 09:58:13 +02:00
=item B<pty> = yes | no (tylko Unix)
alokuj pseudoterminal dla programu uruchamianego w opcji 'exec'
2017-11-15 15:03:25 +01:00
=item B<redirect> = [HOST:]PORT
przekieruj klienta, któremu nie udało się poprawnie uwierzytelnić przy pomocy certyfikatu
Opcja działa wyłącznie w trybie serwera.
Część negocjacji protokołów jest niekompatybilna z opcją I<redirect>.
2017-03-28 10:18:03 +02:00
=item B<renegotiation> = yes | no
2017-11-15 15:03:25 +01:00
pozwalaj na renegocjację TLS
2017-03-28 10:18:03 +02:00
2017-11-15 15:03:25 +01:00
Zastosowania renegocjacji TLS zawierają niektóre scenariusze uwierzytelniania oraz renegocjację kluczy dla długotrwałych połączeń.
2017-03-28 10:18:03 +02:00
Z drugiej strony własność na może ułatwić trywialny atak DoS poprzez
wygenerowanie obciążenia procesora:
http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html
2017-11-15 15:03:25 +01:00
Warto zauważyć, że zablokowanie renegocjacji TLS nie zebezpiecza w pełni
2017-03-28 10:18:03 +02:00
przed opisanym problemem.
domyślnie: yes (o ile wspierane przez B<OpenSSL>)
=item B<reset> = yes | no
sygnalizuj wystąpienie błędu przy pomocy flagi TCP RST
2017-11-15 15:03:25 +01:00
Opcja nie jest wspierana na niektórych platformach.
2017-03-28 10:18:03 +02:00
domyślnie: yes
=item B<retry> = yes | no
2017-03-28 09:58:13 +02:00
połącz ponownie sekcję connect+exec po rozłączeniu
domyślnie: no
2017-11-15 15:03:25 +01:00
=item B<requireCert> = yes | no
wymagaj certyfikatu klienta dla I<verifyChain> lub I<verifyPeer>
Przy opcji I<requireCert> ustawionej na I<no>, B<stunnel> akceptuje
połączenia klientów, które nie wysłały certyfikatu.
Zarówno I<verifyChain = yes> jak i I<verifyPeer = yes>
automatycznie ustawiają I<requireCert> na I<yes>.
domyślnie: no
=item B<setgid> = IDENTYFIKATOR_GRUPY (tylko Unix)
identyfikator grupy Unix
Jako opcja globalna: grupa, z której prawami pracował będzie B<stunnel>.
Jako opcja usługi: grupa gniazda Unix utworzonego przy pomocy opcji "accept".
=item B<setuid> = IDENTYFIKATOR_UŻYTKOWNIKA (tylko Unix)
identyfikator użytkownika Unix
Jako opcja globalna: użytkownik, z którego prawami pracował będzie B<stunnel>.
Jako opcja usługi: właściciel gniazda Unix utworzonego przy pomocy opcji "accept".
=item B<sessionCacheSize> = LICZBA_POZYCJI_CACHE
2017-03-28 10:18:03 +02:00
2017-11-15 15:03:25 +01:00
rozmiar pamięci podręcznej sesji TLS
2017-03-28 10:18:03 +02:00
Parametr określa maksymalną liczbę pozycji wewnętrznej pamięci podręcznej
sesji.
Wartość 0 oznacza brak ograniczenia rozmiaru. Nie jest to zalecane dla
systemów produkcyjnych z uwagi na ryzyko ataku DoS przez wyczerpanie pamięci
RAM.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<sessionCacheTimeout> = LICZBA_SEKUND
2017-03-28 10:18:03 +02:00
2017-11-15 15:03:25 +01:00
przeterminowanie pamięci podręcznej sesji TLS
2017-03-28 10:18:03 +02:00
2017-11-15 15:03:25 +01:00
Parametr określa czas w sekundach, po którym sesja TLS zostanie usunięta z
2017-03-28 10:18:03 +02:00
pamięci podręcznej.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<sessiond> = HOST:PORT
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
adres sessiond - servera cache sesji TLS
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
=item B<sni> = NAZWA_USŁUGI:WZORZEC_NAZWY_SERWERA (tryb serwera)
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Użyj usługi jako podrzędnej (virtualnego serwera) dla rozszerzenia TLS Server
Name Indication (RFC 3546).
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
I<NAZWA_USŁUGI> wskazuje usługę nadrzędną, która odbiera połączenia od klientów
przy pomocy opcji I<accept>. I<WZORZEC_NAZWY_SERWERA> wskazuje nazwę serwera
wirtualnego. Wzorzec może zaczynać się znakiem '*', np. '*.example.com". Z
pojedyńczą usługą nadrzędną powiązane jest zwykle wiele usług podrzędnych.
Opcja I<sni> może być rownież użyta wielokrotnie w ramach jednej usługi
podrzędnej.
Zarówno usługa nadrzędna jak i podrzędna nie może być skonfigurowana w trybie
klienckim.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Opcja I<connect> usługi podrzędnej jest ignorowana w połączeniu z opcją
I<protocol>, gdyż połączenie do zdalnego serwera jest w tym wypadku nawiązywane
przed negocjacją TLS.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Uwierzytelnienie przy pomocy biblioteki libwrap jest realizowane dwukrotnie:
najpierw dla usługi nadrzędnej po odebraniu połączenia TCP, a następnie dla
usługi podrzędnej podczas negocjacji TLS.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Opcja I<sni> jest dostępna począwszy od B<OpenSSL 1.0.0>.
=item B<sni> = NAZWA_SERWERA (tryb klienta)
Użyj parametru jako wartości rozszerzenia TLS Server Name Indication
(RFC 3546).
Pusta wartość parametru NAZWA_SERWERA wyłącza wysyłanie rozszerzenia SNI.
Opcja I<sni> jest dostępna począwszy od B<OpenSSL 1.0.0>.
=item B<sslVersion> = WERSJA_SSL
wersja protokołu TLS
Wspierane opcje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2
Dostępność konkretnych protokołów zależy od użytej wersji OpenSSL.
Starsze wersje OpenSSL nie wspierają TLSv1.1 i TLSv1.2.
Nowsze wersje OpenSSL nie wspierają SSLv2.
Przestarzałe protokoły SSLv2 i SSLv3 są domyślnie wyłączone.
Szczegółowe informacje dostępne są w opisie opcji B<options>.
=item B<stack> = LICZBA_BAJTÓW (z wyjątkiem modelu FORK)
rozmiar stosu procesora wątku
=item B<TIMEOUTbusy> = LICZBA_SEKUND
2017-03-28 09:58:13 +02:00
czas oczekiwania na spodziewane dane
2017-11-15 15:03:25 +01:00
=item B<TIMEOUTclose> = LICZBA_SEKUND
2017-03-28 09:58:13 +02:00
czas oczekiwania na close_notify (ustaw na 0, jeżeli klientem jest MSIE)
2017-11-15 15:03:25 +01:00
=item B<TIMEOUTconnect> = LICZBA_SEKUND
2017-03-28 09:58:13 +02:00
czas oczekiwania na nawiązanie połączenia
2017-11-15 15:03:25 +01:00
=item B<TIMEOUTidle> = LICZBA_SEKUND
2017-03-28 09:58:13 +02:00
maksymalny czas utrzymywania bezczynnego połączenia
=item B<transparent> = none | source | destination | both (tylko Unix)
tryb przezroczystego proxy na wspieranych platformach
Wspierane opcje:
=over 4
=item B<none>
Zablokuj wsparcie dla przezroczystago proxy. Jest to wartość domyślna.
=item B<source>
Przepisz adres, aby nawiązywane połączenie wydawało się pochodzić
2017-03-28 10:18:03 +02:00
bezpośrednio od klienta, a nie od programu B<stunnel>.
2017-03-28 09:58:13 +02:00
Opcja jest aktualnie obsługiwana w:
=over 4
=item Trybie zdalnym (opcja I<connect>) w systemie I<Linux E<gt>=2.6.28>
Konfiguracja wymaga następujących ustawień iptables oraz routingu
(na przykład 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 B<stunnel> był wykonywany jako root i bez opcji I<setuid>.
=item Trybie zdalnym (opcja I<connect>) w systemie I<Linux 2.2.x>
Konfiguracja ta wymaga skompilowania jądra z opcją I<transparent proxy>.
Docelowa usługa musi być umieszczona na osobnej maszynie, do której routing
2017-03-28 10:18:03 +02:00
kierowany jest poprzez serwer B<stunnela>.
2017-03-28 09:58:13 +02:00
Dodatkowo B<stunnel> powinien być wykonywany jako root i bez opcji I<setuid>.
=item Trybie zdalnym (opcja I<connect>) w systemie I<FreeBSD E<gt>=8.0>
Konfiguracja ta wymaga skonfigurowania firewalla i routingu.
B<stunnel> musi być wykonywany jako root i bez opcji I<setuid>.
=item Trybie lokalnym (opcja I<exec>)
Konfiguracja ta jest realizowana przy pomocy biblioteki I<libstunnel.so>.
Do załadowania biblioteki wykorzystywana jest zmienna środowiskowa _RLD_LIST na
platformie Tru64 lub LD_PRELOAD na innych platformach.
=back
=item I<destination>
Oryginalny adres docelowy jest używany zamiast opcji I<connect>.
Przykładowana konfiguracja przezroczystego adresu docelowego:
[transparent]
2017-11-15 15:03:25 +01:00
client = yes
accept = <port_stunnela>
transparent = destination
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Konfiguracja wymaga ustawień iptables, na przykład w pliku
/etc/rc.local lub analogicznym.
W przypadku docelowej usługi umieszczonej na tej samej maszynie:
/sbin/iptables -t nat -I OUTPUT -p tcp --dport <port_przekierowany> \
-m ! --uid-owner <identyfikator_użytkownika_stunnela> \
-j DNAT --to-destination <lokalne_ip>:<lokalny_port>
W przypadku docelowej usługi umieszczonej na zdalnej maszynie:
2017-03-28 09:58:13 +02:00
/sbin/iptables -I INPUT -i eth0 -p tcp --dport <port_stunnela> -j ACCEPT
2017-11-15 15:03:25 +01:00
/sbin/iptables -t nat -I PREROUTING -p tcp --dport <port_przekierowany> \
-i eth0 -j DNAT --to-destination <lokalne_ip>:<port_stunnela>
2017-03-28 09:58:13 +02:00
Przezroczysty adres docelowy jest aktualnie wspierany wyłącznie w systemie Linux.
=item I<both>
Użyj przezroczystego proxy zarówno dla adresu źródłowego jak i docelowego.
=back
Dla zapewnienia kompatybilności z wcześniejszymim wersjami wspierane są dwie
dodatkowe opcje:
=over 4
=item I<yes>
Opcja została przemianowana na I<source>.
=item I<no>
Opcja została przemianowana na I<none>.
=back
2017-11-15 15:03:25 +01:00
=item B<verify> = POZIOM
2017-03-28 09:58:13 +02:00
weryfikuj certyfikat drugiej strony połączenia
2017-11-15 15:03:25 +01:00
Opcja ta jest przestarzała i należy ją zastąpić przez opcje
I<verifyChain> i I<verifyPeer>.
2017-03-28 09:58:13 +02:00
=over 4
2017-03-28 10:18:03 +02:00
=item I<poziom 0>
zarządaj certyfikatu i zignoruj go
=item I<poziom 1>
weryfikuj, jeżeli został przedstawiony
=item I<poziom 2>
weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item I<poziom 3>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item I<poziom 4>
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
weryfikuj z certyfikatem drugiej strony ignorując łańcuch CA
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item I<domyślnie>
nie weryfikuj
2017-03-28 09:58:13 +02:00
=back
2017-11-15 15:03:25 +01:00
=item B<verifyChain> = yes | no
weryfikuj łańcuch certyfikatów drugiej strony
Do weryfikacji certyfikatu serwera kluczowe jest, aby wymagać również
konkretnego certyfikatu przy pomocy I<checkHost> lub I<checkIP>.
Samopodpisany certyfikat głównego CA należy umieścić albo w pliku
podanym w opcji I<CAfile>, albo w katalogu podanym w opcji I<CApath>.
domyślnie: no
=item B<verifyPeer> = yes | no
weryfikuj certyfikat drugiej strony
Certyfikat drugiej strony należy umieścić albo w pliku podanym w opcji
I<CAfile>, albo w katalogu podanym w opcji I<CApath>.
domyślnie: no
2017-03-28 09:58:13 +02:00
=back
=head1 ZWRACANA WARTOŚĆ
B<stunnel> zwraca zero w przypadku sukcesu, lub wartość niezerową
w przypadku błędu.
=head1 SIGNAŁY
Następujące sygnały mogą być użyte do sterowania programem w systemie Unix:
=over 4
=item SIGHUP
Załaduj ponownie plik konfiguracyjny.
Niektóre globalne opcje nie będą przeładowane:
=over 4
2017-03-28 10:18:03 +02:00
=item *
chroot
=item *
foreground
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item *
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
pid
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item *
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
setgid
=item *
setuid
2017-03-28 09:58:13 +02:00
=back
2017-03-28 10:18:03 +02:00
Jeżeli wykorzystywana jest opcja 'setuid' B<stunnel> nie będzie mógł załadować
2017-03-28 09:58:13 +02:00
ponownie konfiguracji wykorzystującej uprzywilejowane (<1024) porty.
2017-03-28 10:18:03 +02:00
Jeżeli wykorzystywana jest opcja 'chroot' B<stunnel> będzie szukał wszystkich
2017-03-28 09:58:13 +02:00
potrzebnych plików (łącznie z plikiem konfiguracyjnym, certyfikatami, logiem i
plikiem pid) wewnątrz katalogu wskazanego przez 'chroot'.
=item SIGUSR1
Zamknij i otwórz ponownie log.
2017-03-28 10:18:03 +02:00
Funkcja ta może zostać użyta w skrypcie rotującym log programu B<stunnel>.
2017-03-28 09:58:13 +02:00
=item SIGTERM, SIGQUIT, SIGINT
Zakończ działanie programu.
=back
Skutek wysłania innych sygnałów jest niezdefiniowany.
=head1 PRZYKŁADY
Szyfrowanie połączeń do lokalnego serwera I<imapd> można użyć:
[imapd]
accept = 993
exec = /usr/sbin/imapd
2017-11-15 15:03:25 +01:00
execArgs = imapd
2017-03-28 09:58:13 +02:00
albo w trybie zdalnym:
[imapd]
accept = 993
connect = 143
2017-11-15 15:03:25 +01:00
Aby umożliwić lokalnemu klientowi poczty elektronicznej korzystanie z serwera
I<imapd> przez TLS należy skonfigurować pobieranie poczty z adresu localhost i
portu 119, oraz użyć następującej konfiguracji:
[imap]
client = yes
accept = 143
connect = serwer:993
2017-03-28 09:58:13 +02:00
W połączeniu z programem I<pppd> B<stunnel> pozwala zestawić prosty VPN.
Po stronie serwera nasłuchującego na porcie 2020 jego konfiguracja
może wyglądać następująco:
[vpn]
accept = 2020
exec = /usr/sbin/pppd
2017-11-15 15:03:25 +01:00
execArgs = pppd local
2017-03-28 09:58:13 +02:00
pty = yes
Poniższy plik konfiguracyjny może być wykorzystany do uruchomienia
programu B<stunnel> w trybie I<inetd>. Warto zauważyć, że w pliku
konfiguracyjnym nie ma sekcji I<[nazwa_usługi]>.
exec = /usr/sbin/imapd
2017-11-15 15:03:25 +01:00
execArgs = imapd
Aby skonfigurować VPN można użyć następującej konfiguracji klienta:
[socks_client]
client = yes
accept = 127.0.0.1:1080
connect = vpn_server:9080
verifyPeer = yes
CAfile = stunnel.pem
Odpowiadająca jej konfiguracja serwera vpn_server:
[socks_server]
protocol = socks
accept = 9080
cert = stunnel.pem
key = stunnel.key
Do przetestowania konfiguracji można wydać na maszynie klienckiej komendę:
curl --socks4a localhost http://www.example.com/
Przykładowa konfiguracja serwera SNI:
[virtual]
; usługa nadrzędna
accept = 443
cert = default.pem
connect = default.internal.mydomain.com:8080
[sni1]
; usługa podrzędna 1
sni = virtual:server1.mydomain.com
cert = server1.pem
connect = server1.internal.mydomain.com:8081
[sni2]
; usługa podrzędna 2
sni = virtual:server2.mydomain.com
cert = server2.pem
connect = server2.internal.mydomain.com:8082
verifyPeer = yes
CAfile = server2-allowed-clients.pem
Przykładowa konfiguracja umożliwiająca uwierzytelnienie z użyciem klucza prywatnego
przechowywanego w Windows Certificate Store (tylko Windows).
W przypadku użycia silnika CAPI, nie należy ustawiać opcji cert, gdyż klucz klienta
zostanie automatycznie pobrany z Certificate Store na podstawie zaufanych certyfikatów
CA przedstawionych przez serwer.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
engine = capi
[service]
engineId = capi
client = yes
accept = 127.0.0.1:8080
connect = example.com:8443
Przykładowa konfiguracja umożliwiająca użycie certyfikatu i klucza prywatnego z
urządzenia zgodnego z pkcs11:
engine = pkcs11
engineCtrl = MODULE_PATH:opensc-pkcs11.so
engineCtrl = PIN:123456
[service]
engineId = pkcs11
client = yes
accept = 127.0.0.1:8080
connect = example.com:843
cert = pkcs11:token=MyToken;object=MyCert
key = pkcs11:token=MyToken;object=MyKey
Przykładowa konfiguracja umożliwiająca użycie certyfikatu i klucza prywatnego
umieszczonego na tokenie SoftHSM
engine = pkcs11
engineCtrl = MODULE_PATH:softhsm2.dll
engineCtrl = PIN:12345
[service]
engineId = pkcs11
client = yes
accept = 127.0.0.1:8080
connect = example.com:843
cert = pkcs11:token=MyToken;object=KeyCert
2017-03-28 09:58:13 +02:00
=head1 NOTKI
=head2 OGRANICZENIA
2017-03-28 10:18:03 +02:00
B<stunnel> nie może być używany do szyfrowania protokołu I<FTP>,
2017-03-28 09:58:13 +02:00
ponieważ do przesyłania poszczególnych plików używa on dodatkowych
połączeń otwieranych na portach o dynamicznie przydzielanych numerach.
Istnieją jednak specjalne wersje klientów i serwerów FTP pozwalające
2017-11-15 15:03:25 +01:00
na szyfrowanie przesyłanych danych przy pomocy protokołu I<TLS>.
2017-03-28 09:58:13 +02:00
=head2 TRYB INETD (tylko Unix)
W większości zastosowań B<stunnel> samodzielnie nasłuchuje na porcie
podanym w pliku konfiguracyjnym i tworzy połączenie z innym portem
podanym w opcji I<connect> lub nowym programem podanym w opcji I<exec>.
Niektórzy wolą jednak wykorzystywać oddzielny program, który odbiera
połączenia, po czym uruchamia program B<stunnel>. Przykładami takich
programów są inetd, xinetd i tcpserver.
Przykładowa linia pliku /etc/inetd.conf może wyglądać tak:
2017-11-15 15:03:25 +01:00
imaps stream tcp nowait root @bindir@/stunnel
stunnel @sysconfdir@/stunnel/imaps.conf
2017-03-28 09:58:13 +02:00
Ponieważ w takich przypadkach połączenie na zdefiniowanym porcie
(tutaj I<imaps>) nawiązuje osobny program (tutaj I<inetd>), B<stunnel>
nie może używać opcji I<accept>. W pliku konfiguracyjnym nie może
być również zdefiniowana żadna usługa (I<[nazwa_usługi]>), ponieważ
konfiguracja taka pozwala na nawiązanie tylko jednego połączenia.
Wszystkie I<OPCJE USŁUG> powinny być umieszczone razem z opcjami
globalnymi. Przykład takiej konfiguracji znajduje się w sekcji
I<PRZYKŁADY>.
=head2 CERTYFIKATY
2017-11-15 15:03:25 +01:00
Protokół TLS wymaga, aby każdy serwer przedstawiał się nawiązującemu
2017-03-28 09:58:13 +02:00
połączenie klientowi prawidłowym certyfikatem X.509.
Potwierdzenie tożsamości serwera polega na wykazaniu, że posiada on
odpowiadający certyfikatowi klucz prywatny.
2017-03-28 10:18:03 +02:00
Najprostszą metodą uzyskania certyfikatu jest wygenerowanie go przy pomocy
wolnego pakietu B<OpenSSL>. Więcej informacji na temat generowania
certyfikatów można znaleźć na umieszczonych poniżej stronach.
2017-03-28 09:58:13 +02:00
Istotną kwestią jest kolejność zawartości pliku I<.pem>.
W pierwszej kolejności powinien on zawierać klucz prywatny,
a dopiero za nim podpisany certyfikat (nie żądanie certyfikatu).
Po certyfikacie i kluczu prywatnym powinny znajdować się puste linie.
Jeżeli przed certyfikatem znajdują się dodatkowe informacje tekstowe,
to powinny one zostać usunięte. Otrzymany plik powinien mieć
następującą postać:
-----BEGIN RSA PRIVATE KEY-----
[zakodowany klucz]
-----END RSA PRIVATE KEY-----
[pusta linia]
-----BEGIN CERTIFICATE-----
[zakodowany certyfikat]
-----END CERTIFICATE-----
[pusta linia]
=head2 LOSOWOŚĆ
B<stunnel> potrzebuje zainicjować PRNG (generator liczb pseudolosowych),
2017-11-15 15:03:25 +01:00
gdyż protokół TLS wymaga do bezpieczeństwa kryptograficznego źródła
2017-03-28 09:58:13 +02:00
dobrej losowości. Następujące źródła są kolejno odczytywane aż do
uzyskania wystarczającej ilości entropii:
=over 4
2017-03-28 10:18:03 +02:00
=item *
Zawartość pliku podanego w opcji I<RNDfile>.
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item *
Zawartość pliku o nazwie określonej przez zmienną środowiskową
2017-03-28 09:58:13 +02:00
RANDFILE, o ile jest ona ustawiona.
2017-03-28 10:18:03 +02:00
=item *
Plik .rnd umieszczony w katalogu domowym użytkownika,
2017-03-28 09:58:13 +02:00
jeżeli zmienna RANDFILE nie jest ustawiona.
2017-03-28 10:18:03 +02:00
=item *
Plik podany w opcji '--with-random' w czasie konfiguracji programu.
=item *
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
Zawartość ekranu w systemie Windows.
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
=item *
2017-03-28 09:58:13 +02:00
2017-03-28 10:18:03 +02:00
Gniazdo egd, jeżeli użyta została opcja I<EGD>.
=item *
Gniazdo egd podane w opcji '--with-egd-socket' w czasie konfiguracji
2017-03-28 09:58:13 +02:00
programu.
2017-03-28 10:18:03 +02:00
=item *
Urządzenie /dev/urandom.
2017-03-28 09:58:13 +02:00
=back
Warto zwrócić uwagę, że na maszynach z systemem Windows, na których
konsoli nie pracuje użytkownik, zawartość ekranu nie jest wystarczająco
zmienna, aby zainicjować PRNG. W takim przypadku do zainicjowania
generatora należy użyć opcji I<RNDfile>.
Plik I<RNDfile> powinien zawierać dane losowe -- również w tym sensie,
że powinny być one inne przy każdym uruchomieniu programu B<stunnel>.
O ile nie użyta została opcja I<RNDoverwrite> jest to robione
automatycznie. Do ręcznego uzyskania takiego pliku użyteczna
może być komenda I<openssl rand> dostarczana ze współczesnymi
2017-03-28 10:18:03 +02:00
wersjami pakietu B<OpenSSL>.
2017-03-28 09:58:13 +02:00
Jeszcze jedna istotna informacja -- jeżeli dostępne jest urządzenie
2017-03-28 10:18:03 +02:00
I</dev/urandom> biblioteka B<OpenSSL> ma zwyczaj zasilania nim PRNG w trakcie
2017-03-28 09:58:13 +02:00
sprawdzania stanu generatora. W systemach z I</dev/urandom> urządzenie
to będzie najprawdopodobniej użyte, pomimo że znajduje się na samym końcu
2017-03-28 10:18:03 +02:00
powyższej listy. Jest to właściwość biblioteki B<OpenSSL>, a nie programu
B<stunnel>.
2017-03-28 09:58:13 +02:00
=head2 PARAMETRY DH
2017-03-28 10:18:03 +02:00
Począwszy od wersji 4.40 B<stunnel> zawiera w kodzie programu 2048-bitowe
2017-11-15 15:03:25 +01:00
parametry DH. Od wersji 5.18 te początkowe wartości parametrów DH są
wymieniane na autogenerowane parametry tymczasowe.
Wygenerowanie parametrów DH może zająć nawet wiele minut.
2017-03-28 09:58:13 +02:00
2017-11-15 15:03:25 +01:00
Alternatywnie parametry DH można umieścić w pliku razem z certyfikatem,
co wyłącza generowanie parametrów tymczasowych:
2017-03-28 09:58:13 +02:00
openssl dhparam 2048 >> stunnel.pem
=head1 PLIKI
=over 4
2017-11-15 15:03:25 +01:00
=item F<@sysconfdir@/stunnel/stunnel.conf>
2017-03-28 09:58:13 +02:00
plik konfiguracyjny programu
=back
=head1 BŁĘDY
2017-11-15 15:03:25 +01:00
Opcja I<execArgs> oraz linia komend Win32 nie obsługuje cytowania.
2017-03-28 09:58:13 +02:00
=head1 ZOBACZ RÓWNIEŻ
=over 4
=item L<tcpd(8)>
biblioteka kontroli dostępu do usług internetowych
=item L<inetd(8)>
'super-serwer' internetowy
=item F<http://www.stunnel.org/>
2017-03-28 10:18:03 +02:00
strona domowa programu B<stunnel>
2017-03-28 09:58:13 +02:00
=item F<http://www.openssl.org/>
2017-03-28 10:18:03 +02:00
strona projektu B<OpenSSL>
2017-03-28 09:58:13 +02:00
=back
=head1 AUTOR
=over 4
=item Michał Trojnara
2017-11-15 15:03:25 +01:00
<F<Michal.Trojnara@stunnel.org>>
2017-03-28 09:58:13 +02:00
=back
2017-11-15 15:03:25 +01:00
=for comment
vim:spelllang=pl:spell