1426 lines
53 KiB
Groff
1426 lines
53 KiB
Groff
.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
|
||
.\"
|
||
.\" Standard preamble:
|
||
.\" ========================================================================
|
||
.de Sp \" Vertical space (when we can't use .PP)
|
||
.if t .sp .5v
|
||
.if n .sp
|
||
..
|
||
.de Vb \" Begin verbatim text
|
||
.ft CW
|
||
.nf
|
||
.ne \\$1
|
||
..
|
||
.de Ve \" End verbatim text
|
||
.ft R
|
||
.fi
|
||
..
|
||
.\" Set up some character translations and predefined strings. \*(-- will
|
||
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
||
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
|
||
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
|
||
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
|
||
.\" nothing in troff, for use with C<>.
|
||
.tr \(*W-
|
||
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
||
.ie n \{\
|
||
. ds -- \(*W-
|
||
. ds PI pi
|
||
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
||
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
||
. ds L" ""
|
||
. ds R" ""
|
||
. ds C` ""
|
||
. ds C' ""
|
||
'br\}
|
||
.el\{\
|
||
. ds -- \|\(em\|
|
||
. ds PI \(*p
|
||
. ds L" ``
|
||
. ds R" ''
|
||
. ds C`
|
||
. ds C'
|
||
'br\}
|
||
.\"
|
||
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
||
.ie \n(.g .ds Aq \(aq
|
||
.el .ds Aq '
|
||
.\"
|
||
.\" If the F register is turned on, we'll generate index entries on stderr for
|
||
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
|
||
.\" entries marked with X<> in POD. Of course, you'll have to process the
|
||
.\" output yourself in some meaningful fashion.
|
||
.\"
|
||
.\" Avoid warning from groff about undefined register 'F'.
|
||
.de IX
|
||
..
|
||
.nr rF 0
|
||
.if \n(.g .if rF .nr rF 1
|
||
.if (\n(rF:(\n(.g==0)) \{
|
||
. if \nF \{
|
||
. de IX
|
||
. tm Index:\\$1\t\\n%\t"\\$2"
|
||
..
|
||
. if !\nF==2 \{
|
||
. nr % 0
|
||
. nr F 2
|
||
. \}
|
||
. \}
|
||
.\}
|
||
.rr rF
|
||
.\" ========================================================================
|
||
.\"
|
||
.IX Title "stunnel 8"
|
||
.TH stunnel 8 "2017.04.01" "5.42" "stunnel TLS Proxy"
|
||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||
.\" way too many mistakes in technical documents.
|
||
.if n .ad l
|
||
.nh
|
||
.SH "NAZWA"
|
||
.IX Header "NAZWA"
|
||
stunnel \- uniwersalny tunel protokołu \s-1TLS\s0
|
||
.SH "SKŁADNIA"
|
||
.IX Header "SKŁADNIA"
|
||
.IP "\fBUnix:\fR" 4
|
||
.IX Item "Unix:"
|
||
\&\fBstunnel\fR [\s-1PLIK\s0] | \-fd N | \-help | \-version | \-sockets | \-options
|
||
.IP "\fB\s-1WIN32:\s0\fR" 4
|
||
.IX Item "WIN32:"
|
||
\&\fBstunnel\fR [ [ \-install | \-uninstall | \-start | \-stop |
|
||
\-reload | \-reopen | \-exit ] [\-quiet] [\s-1PLIK\s0] ] |
|
||
\-help | \-version | \-sockets | \-options
|
||
.SH "OPIS"
|
||
.IX Header "OPIS"
|
||
Program \fBstunnel\fR został zaprojektowany do opakowywania w protokół \fI\s-1TLS\s0\fR
|
||
połączeń pomiędzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami.
|
||
Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania
|
||
przy pomocy \fIinetd\fR.
|
||
Stunnel pozwala na proste zestawienie komunikacji serwerów nie posiadających
|
||
funkcjonalności \fI\s-1TLS\s0\fR poprzez bezpieczne kanały \fI\s-1TLS\s0\fR.
|
||
.PP
|
||
\&\fBstunnel\fR pozwala dodać funkcjonalność \fI\s-1TLS\s0\fR do powszechnie stosowanych
|
||
demonów \fIinetd\fR, np. \fIpop3\fR lub \fIimap\fR, do samodzielnych demonów,
|
||
np. \fInntp\fR, \fIsmtp\fR lub \fIhttp\fR, a nawet tunelować ppp poprzez gniazda sieciowe
|
||
bez zmian w kodzie źródłowym.
|
||
.SH "OPCJE"
|
||
.IX Header "OPCJE"
|
||
.IP "\fB\s-1PLIK\s0\fR" 4
|
||
.IX Item "PLIK"
|
||
użyj podanego pliku konfiguracyjnego
|
||
.IP "\fB\-fd N\fR (tylko Unix)" 4
|
||
.IX Item "-fd N (tylko Unix)"
|
||
wczytaj konfigurację z podanego deskryptora pliku
|
||
.IP "\fB\-help\fR" 4
|
||
.IX Item "-help"
|
||
drukuj listę wspieranych opcji
|
||
.IP "\fB\-version\fR" 4
|
||
.IX Item "-version"
|
||
drukuj wersję programu i domyślne wartości parametrów
|
||
.IP "\fB\-sockets\fR" 4
|
||
.IX Item "-sockets"
|
||
drukuj domyślne opcje gniazd
|
||
.IP "\fB\-options\fR" 4
|
||
.IX Item "-options"
|
||
drukuj wspierane opcje \s-1TLS\s0
|
||
.IP "\fB\-install\fR (tylko Windows \s-1NT\s0 lub nowszy)" 4
|
||
.IX Item "-install (tylko Windows NT lub nowszy)"
|
||
instaluj serwis \s-1NT\s0
|
||
.IP "\fB\-uninstall\fR (tylko Windows \s-1NT\s0 lub nowszy)" 4
|
||
.IX Item "-uninstall (tylko Windows NT lub nowszy)"
|
||
odinstaluj serwis \s-1NT\s0
|
||
.IP "\fB\-start\fR (tylko Windows \s-1NT\s0 lub nowszy)" 4
|
||
.IX Item "-start (tylko Windows NT lub nowszy)"
|
||
uruchom serwis \s-1NT\s0
|
||
.IP "\fB\-stop\fR (tylko Windows \s-1NT\s0 lub nowszy)" 4
|
||
.IX Item "-stop (tylko Windows NT lub nowszy)"
|
||
zatrzymaj serwis \s-1NT\s0
|
||
.IP "\fB\-reload\fR (tylko Windows \s-1NT\s0 lub nowszy)" 4
|
||
.IX Item "-reload (tylko Windows NT lub nowszy)"
|
||
przeładuj plik konfiguracyjny uruchomionego serwisu \s-1NT\s0
|
||
.IP "\fB\-reopen\fR (tylko Windows \s-1NT\s0 lub nowszy)" 4
|
||
.IX Item "-reopen (tylko Windows NT lub nowszy)"
|
||
otwórz ponownie log uruchomionego serwisu \s-1NT\s0
|
||
.IP "\fB\-exit\fR (tylko Win32)" 4
|
||
.IX Item "-exit (tylko Win32)"
|
||
zatrzymaj uruchomiony program
|
||
.IP "\fB\-quiet\fR (tylko Win32)" 4
|
||
.IX Item "-quiet (tylko Win32)"
|
||
nie wyświetlaj okienek z komunikatami
|
||
.SH "PLIK KONFIGURACYJNY"
|
||
.IX Header "PLIK KONFIGURACYJNY"
|
||
Linia w pliku konfiguracyjnym może być:
|
||
.IP "\(bu" 4
|
||
pusta (ignorowana)
|
||
.IP "\(bu" 4
|
||
komentarzem rozpoczynającym się znakiem ';' (ignorowana)
|
||
.IP "\(bu" 4
|
||
parą 'nazwa_opcji = wartość_opcji'
|
||
.IP "\(bu" 4
|
||
tekstem '[nazwa_usługi]' wskazującym początek definicji usługi
|
||
.PP
|
||
Parametr adres może być:
|
||
.IP "\(bu" 4
|
||
numerem portu
|
||
.IP "\(bu" 4
|
||
oddzieloną średnikiem parą adresu (IPv4, IPv6, lub nazwą domenową) i numeru portu
|
||
.IP "\(bu" 4
|
||
ścieżką do gniazda Unix (tylko Unix)
|
||
.SS "\s-1OPCJE GLOBALNE\s0"
|
||
.IX Subsection "OPCJE GLOBALNE"
|
||
.IP "\fBchroot\fR = \s-1KATALOG \s0(tylko Unix)" 4
|
||
.IX Item "chroot = KATALOG (tylko Unix)"
|
||
katalog roboczego korzenia systemu plików
|
||
.Sp
|
||
Opcja określa katalog, w którym uwięziony zostanie proces programu
|
||
\&\fBstunnel\fR tuż po jego inicjalizacji, a przed rozpoczęciem odbierania
|
||
połączeń. Ścieżki podane w opcjach \fICApath\fR, \fICRLpath\fR, \fIpid\fR
|
||
oraz \fIexec\fR muszą być umieszczone wewnątrz katalogu podanego w opcji
|
||
\&\fIchroot\fR i określone względem tego katalogu.
|
||
.Sp
|
||
Niektóre funkcje systemu operacyjnego mogą wymagać dodatkowych plików umieszczonych w katalogu podanego w parametrze chroot:
|
||
.RS 4
|
||
.IP "\(bu" 4
|
||
opóźnione rozwinięcie adresów \s-1DNS\s0 typowo wymaga /etc/nsswitch.conf i /etc/resolv.conf
|
||
.IP "\(bu" 4
|
||
lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone
|
||
.IP "\(bu" 4
|
||
niektóre inne pliki mogą potrzebować plików urządzeń, np. /dev/zero lub /dev/null
|
||
.RE
|
||
.RS 4
|
||
.RE
|
||
.IP "\fBcompression\fR = deflate | zlib" 4
|
||
.IX Item "compression = deflate | zlib"
|
||
wybór algorytmu kompresji przesyłanych danych
|
||
.Sp
|
||
domyślnie: bez kompresji
|
||
.Sp
|
||
Algorytm deflate jest standardową metodą kompresji zgodnie z \s-1RFC 1951.\s0
|
||
.IP "\fBdebug\fR = [\s-1PODSYSTEM\s0].POZIOM" 4
|
||
.IX Item "debug = [PODSYSTEM].POZIOM"
|
||
szczegółowość logowania
|
||
.Sp
|
||
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
|
||
\&\fIdebug = debug\fR lub \fIdebug = 7\fR. Domyślnym poziomem jest notice (5).
|
||
.Sp
|
||
O ile nie wyspecyfikowano podsystemu użyty będzie domyślny: daemon.
|
||
Podsystemy nie są wspierane przez platformę Win32.
|
||
.Sp
|
||
Wielkość liter jest ignorowana zarówno dla poziomu jak podsystemu.
|
||
.IP "\fB\s-1EGD\s0\fR = ŚCIEŻKA_DO_EGD (tylko Unix)" 4
|
||
.IX Item "EGD = ŚCIEŻKA_DO_EGD (tylko Unix)"
|
||
ścieżka do gniazda programu Entropy Gathering Daemon
|
||
.Sp
|
||
Opcja pozwala określić ścieżkę do gniazda programu Entropy Gathering Daemon
|
||
używanego do zainicjalizowania generatora ciągów pseudolosowych biblioteki
|
||
\&\fBOpenSSL\fR.
|
||
.IP "\fBengine\fR = auto | IDENTYFIKATOR_URZĄDZENIA" 4
|
||
.IX Item "engine = auto | IDENTYFIKATOR_URZĄDZENIA"
|
||
wybór sprzętowego urządzenia kryptograficznego
|
||
.Sp
|
||
domyślnie: bez wykorzystania urządzeń kryptograficznych
|
||
.Sp
|
||
Sekcja PRZYKŁADY zawiera przykładowe konfiguracje wykorzystujące
|
||
urządzenia kryptograficzne.
|
||
.IP "\fBengineCtrl\fR = KOMENDA[:PARAMETR]" 4
|
||
.IX Item "engineCtrl = KOMENDA[:PARAMETR]"
|
||
konfiguracja urządzenia kryptograficznego
|
||
.IP "\fBengineDefault\fR = LISTA_ZADAŃ" 4
|
||
.IX Item "engineDefault = LISTA_ZADAŃ"
|
||
lista zadań OpenSSL oddelegowanych do bieżącego urządzenia
|
||
.Sp
|
||
Parametrem jest lista oddzielonych przecinkami zadań OpenSSL, które mają
|
||
zostać oddelegowane do bieżącego urządzenia kryptograficznego.
|
||
.Sp
|
||
W zależności od konkretnego urządzenia dostępne mogą być następujące zadania:
|
||
\&\s-1ALL, RSA, DSA, ECDH, ECDSA, DH, RAND, CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO,
|
||
PKEY_ASN1.\s0
|
||
.IP "\fBfips\fR = yes | no" 4
|
||
.IX Item "fips = yes | no"
|
||
tryb \s-1FIPS 140\-2\s0
|
||
.Sp
|
||
Opcja pozwala wyłączyć wejście w tryb \s-1FIPS,\s0 jeśli \fBstunnel\fR został
|
||
skompilowany ze wsparciem dla \s-1FIPS 140\-2.\s0
|
||
.Sp
|
||
domyślnie: no (od wersji 5.00)
|
||
.IP "\fBforeground\fR = yes | quiet | no (tylko Unix)" 4
|
||
.IX Item "foreground = yes | quiet | no (tylko Unix)"
|
||
tryb pierwszoplanowy
|
||
.Sp
|
||
Użycie tej opcji powoduje, że \fBstunnel\fR nie przechodzi w tło.
|
||
.Sp
|
||
Parametr \fIyes\fR powoduje dodatkowo, że komunikaty diagnostyczne logowane są na
|
||
standardowy strumień błędów (stderr) oprócz wyjść zdefiniowanych przy pomocy
|
||
opcji \fIsyslog\fR i \fIoutput\fR.
|
||
.IP "\fBiconActive\fR = PLIK_Z_IKONKĄ (tylko \s-1GUI\s0)" 4
|
||
.IX Item "iconActive = PLIK_Z_IKONKĄ (tylko GUI)"
|
||
ikonka wyświetlana przy obecności aktywnych połączeń do usługi
|
||
.Sp
|
||
W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.
|
||
.IP "\fBiconError\fR = PLIK_Z_IKONKĄ (tylko \s-1GUI\s0)" 4
|
||
.IX Item "iconError = PLIK_Z_IKONKĄ (tylko GUI)"
|
||
ikonka wyświetlana, jeżeli nie został załadowany poprawny plik konfiguracyjny
|
||
.Sp
|
||
W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.
|
||
.IP "\fBiconIdle\fR = PLIK_Z_IKONKĄ (tylko \s-1GUI\s0)" 4
|
||
.IX Item "iconIdle = PLIK_Z_IKONKĄ (tylko GUI)"
|
||
ikonka wyświetlana przy braku aktywnych połączeń do usługi
|
||
.Sp
|
||
W systemie Windows ikonka to plik .ico zawierający obrazek 16x16 pikseli.
|
||
.IP "\fBlog\fR = append | overwrite" 4
|
||
.IX Item "log = append | overwrite"
|
||
obsługa logów
|
||
.Sp
|
||
Ta opcja pozwala określić, czy nowe logi w pliku (określonym w opcji \fIoutput\fR) będą dodawane czy nadpisywane.
|
||
.Sp
|
||
domyślnie: append
|
||
.IP "\fBoutput\fR = \s-1PLIK\s0" 4
|
||
.IX Item "output = PLIK"
|
||
plik, do którego dopisane zostaną logi
|
||
.Sp
|
||
Użycie tej opcji powoduje dopisanie logów do podanego pliku.
|
||
.Sp
|
||
Do kierowania komunikatów na standardowe wyjście (na przykład po to, żeby
|
||
zalogować je programem splogger z pakietu daemontools) można podać jako
|
||
parametr urządzenie /dev/stdout.
|
||
.IP "\fBpid\fR = \s-1PLIK \s0(tylko Unix)" 4
|
||
.IX Item "pid = PLIK (tylko Unix)"
|
||
położenie pliku z numerem procesu
|
||
.Sp
|
||
Jeżeli argument jest pusty, plik nie zostanie stworzony.
|
||
.Sp
|
||
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fIpid\fR jest określona
|
||
względem tego katalogu.
|
||
.IP "\fBRNDbytes\fR = LICZBA_BAJTÓW" 4
|
||
.IX Item "RNDbytes = LICZBA_BAJTÓW"
|
||
liczba bajtów do zainicjowania generatora pseudolosowego
|
||
.IP "\fBRNDfile\fR = \s-1PLIK\s0" 4
|
||
.IX Item "RNDfile = PLIK"
|
||
ścieżka do pliku zawierającego losowe dane
|
||
.Sp
|
||
Biblioteka \fBOpenSSL\fR użyje danych z tego pliku do zainicjowania
|
||
generatora pseudolosowego.
|
||
.IP "\fBRNDoverwrite\fR = yes | no" 4
|
||
.IX Item "RNDoverwrite = yes | no"
|
||
nadpisz plik nowymi wartościami pseudolosowymi
|
||
.Sp
|
||
domyślnie: yes (nadpisz)
|
||
.IP "\fBservice\fR = \s-1SERWIS \s0(tylko Unix)" 4
|
||
.IX Item "service = SERWIS (tylko Unix)"
|
||
nazwa usługi
|
||
.Sp
|
||
Podana nazwa usługi będzie używana jako nazwa usługi dla inicjalizacji sysloga,
|
||
oraz dla biblioteki \s-1TCP\s0 Wrapper w trybie \fIinetd\fR. Chociaż technicznie można
|
||
użyć tej opcji w trybie w sekcji usług, to jest ona użyteczna jedynie w opcjach
|
||
globalnych.
|
||
.Sp
|
||
domyślnie: stunnel
|
||
.IP "\fBsocket\fR = a|l|r:OPCJA=WARTOŚĆ[:WARTOŚĆ]" 4
|
||
.IX Item "socket = a|l|r:OPCJA=WARTOŚĆ[:WARTOŚĆ]"
|
||
ustaw opcję na akceptującym/lokalnym/zdalnym gnieździe
|
||
.Sp
|
||
Dla opcji linger wartości mają postać l_onof:l_linger.
|
||
Dla opcji time wartości mają postać tv_sec:tv_usec.
|
||
.Sp
|
||
Przykłady:
|
||
.Sp
|
||
.Vb 10
|
||
\& 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)
|
||
.Ve
|
||
.IP "\fBsyslog\fR = yes | no (tylko Unix)" 4
|
||
.IX Item "syslog = yes | no (tylko Unix)"
|
||
włącz logowanie poprzez mechanizm syslog
|
||
.Sp
|
||
domyślnie: yes (włącz)
|
||
.IP "\fBtaskbar\fR = yes | no (tylko \s-1WIN32\s0)" 4
|
||
.IX Item "taskbar = yes | no (tylko WIN32)"
|
||
włącz ikonkę w prawym dolnym rogu ekranu
|
||
.Sp
|
||
domyślnie: yes (włącz)
|
||
.SS "\s-1OPCJE\s0 USŁUG"
|
||
.IX Subsection "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 (\s-1TCP\s0 wrappers) oraz pozwala rozróżnić poszczególne
|
||
usługi w logach.
|
||
.PP
|
||
Jeżeli \fBstunnel\fR ma zostać użyty w trybie \fIinetd\fR, gdzie za odebranie
|
||
połączenia odpowiada osobny program (zwykle \fIinetd\fR, \fIxinetd\fR
|
||
lub \fItcpserver\fR), należy przeczytać sekcję \fI\s-1TRYB INETD\s0\fR poniżej.
|
||
.IP "\fBaccept\fR = [\s-1HOST:\s0]PORT" 4
|
||
.IX Item "accept = [HOST:]PORT"
|
||
nasłuchuje na połączenia na podanym adresie i porcie
|
||
.Sp
|
||
Jeżeli nie został podany adres, \fBstunnel\fR domyślnie nasłuchuje
|
||
na wszystkich adresach IPv4 lokalnych interfejsów.
|
||
.Sp
|
||
Aby nasłuchiwać na wszystkich adresach IPv6 należy użyć:
|
||
.Sp
|
||
.Vb 1
|
||
\& accept = :::port
|
||
.Ve
|
||
.IP "\fBCApath\fR = \s-1KATALOG_CA\s0" 4
|
||
.IX Item "CApath = KATALOG_CA"
|
||
katalog Centrum Certyfikacji
|
||
.Sp
|
||
Opcja określa katalog, w którym \fBstunnel\fR będzie szukał certyfikatów, jeżeli
|
||
użyta została opcja \fIverifyChain\fR lub \fIverifyPeer\fR. Pliki z certyfikatami
|
||
muszą posiadać specjalne nazwy \s-1XXXXXXXX.0,\s0 gdzie \s-1XXXXXXXX\s0 jest skrótem
|
||
kryptograficznym reprezentacji \s-1DER\s0 nazwy podmiotu certyfikatu.
|
||
.Sp
|
||
Funkcja skrótu została zmieniona w \fBOpenSSL 1.0.0\fR.
|
||
Należy wykonać c_rehash przy zmianie \fBOpenSSL 0.x.x\fR na \fB1.x.x\fR.
|
||
.Sp
|
||
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fICApath\fR jest określona
|
||
względem tego katalogu.
|
||
.IP "\fBCAfile\fR = \s-1PLIK_CA\s0" 4
|
||
.IX Item "CAfile = PLIK_CA"
|
||
plik Centrum Certyfikacji
|
||
.Sp
|
||
Opcja pozwala określić położenie pliku zawierającego certyfikaty używane
|
||
przez opcję \fIverifyChain\fR lub \fIverifyPeer\fR.
|
||
.IP "\fBcert\fR = \s-1PLIK_CERT\s0" 4
|
||
.IX Item "cert = PLIK_CERT"
|
||
plik z łańcuchem certyfikatów
|
||
.Sp
|
||
Opcja określa położenie pliku zawierającego certyfikaty używane przez
|
||
program \fBstunnel\fR do uwierzytelnienia się przed drugą stroną połączenia.
|
||
Plik powinien zawierać kompletny łańcuch certyfikatów począwszy od certyfikatu
|
||
klienta/serwera, a skończywszy na samopodpisanym certyfikacie głównego \s-1CA.\s0
|
||
Obsługiwane są pliki w formacie \s-1PEM\s0 lub P12.
|
||
.Sp
|
||
Certyfikat jest konieczny, aby używać programu w trybie serwera.
|
||
W trybie klienta certyfikat jest opcjonalny.
|
||
.Sp
|
||
Jeżeli używane jest sprzętowe urządzenie kryptograficzne, to opcja \fBcert\fR
|
||
pozwala wybrać identyfikator używanego certyfikatu.
|
||
.IP "\fBcheckEmail\fR = \s-1EMAIL\s0" 4
|
||
.IX Item "checkEmail = EMAIL"
|
||
adres email przedstawionego certyfikatu
|
||
.Sp
|
||
Pojedyncza sekcja może zawierać wiele wystąpień opcji \fBcheckEmail\fR.
|
||
Certyfikaty są akceptowane, jeżeli sekcja nie zawiera opcji \fBcheckEmail\fR,
|
||
albo adres email przedstawionego certyfikatu pasuje do jednego z adresów
|
||
email określonych przy pomocy \fBcheckEmail\fR.
|
||
.Sp
|
||
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
|
||
.IP "\fBcheckHost\fR = \s-1NAZWA_SERWERA\s0" 4
|
||
.IX Item "checkHost = NAZWA_SERWERA"
|
||
nazwa serwera przedstawionego certyfikatu
|
||
.Sp
|
||
Pojedyncza sekcja może zawierać wiele wystąpień opcji \fBcheckHost\fR.
|
||
Certyfikaty są akceptowane, jeżeli sekcja nie zawiera opcji \fBcheckHost\fR, albo
|
||
nazwa serwera przedstawionego certyfikatu pasuje do jednego nazw określonych
|
||
przy pomocy \fBcheckHost\fR.
|
||
.Sp
|
||
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
|
||
.IP "\fBcheckIP\fR = \s-1IP\s0" 4
|
||
.IX Item "checkIP = IP"
|
||
adres \s-1IP\s0 przedstawionego certyfikatu
|
||
.Sp
|
||
Pojedyncza sekcja może zawierać wiele wystąpień opcji \fBcheckIP\fR. Certyfikaty
|
||
są akceptowane, jeżeli sekcja nie zawiera opcji \fBcheckIP\fR, albo adres \s-1IP\s0
|
||
przedstawionego certyfikatu pasuje do jednego z adresów \s-1IP\s0 określonych przy
|
||
pomocy \fBcheckIP\fR.
|
||
.Sp
|
||
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
|
||
.IP "\fBciphers\fR = LISTA_SZYFRÓW" 4
|
||
.IX Item "ciphers = LISTA_SZYFRÓW"
|
||
lista dozwolonych szyfrów \s-1TLS\s0
|
||
.Sp
|
||
Parametrem tej opcji jest lista szyfrów, które będą użyte przy
|
||
otwieraniu nowych połączeń \s-1TLS,\s0 np.: \s-1DES\-CBC3\-SHA:IDEA\-CBC\-MD5\s0
|
||
.IP "\fBclient\fR = yes | no" 4
|
||
.IX Item "client = yes | no"
|
||
tryb kliencki (zdalna usługa używa \s-1TLS\s0)
|
||
.Sp
|
||
domyślnie: no (tryb serwerowy)
|
||
.IP "\fBconfig\fR = KOMENDA[:PARAMETR]" 4
|
||
.IX Item "config = KOMENDA[:PARAMETR]"
|
||
komenda konfiguracyjna \fBOpenSSL\fR
|
||
.Sp
|
||
Komenda konfiguracyjna \fBOpenSSL\fR zostaje wykonana z podanym parametrem.
|
||
Pozwala to na wydawanie komend konfiguracyjnych \fBOpenSSL\fR z pliku
|
||
konfiguracyjnego stunnela. Dostępne komendy opisane są w manualu
|
||
\&\fI\fISSL_CONF_cmd\fI\|(3ssl)\fR.
|
||
.Sp
|
||
Możliwe jest wyspecyfikowanie wielu opcji \fBOpenSSL\fR przez wielokrotne użycie
|
||
komendy \fBconfig\fR.
|
||
.Sp
|
||
Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej.
|
||
.IP "\fBconnect\fR = [\s-1HOST:\s0]PORT" 4
|
||
.IX Item "connect = [HOST:]PORT"
|
||
połącz się ze zdalnym serwerem na podany port
|
||
.Sp
|
||
Jeżeli nie został podany adres, \fBstunnel\fR domyślnie łączy się
|
||
z lokalnym serwerem.
|
||
.Sp
|
||
Komenda może być użyta wielokrotnie w pojedynczej sekcji
|
||
celem zapewnienia wysokiej niezawodności lub rozłożenia
|
||
ruchu pomiędzy wiele serwerów.
|
||
.IP "\fBCRLpath\fR = \s-1KATALOG_CRL\s0" 4
|
||
.IX Item "CRLpath = KATALOG_CRL"
|
||
katalog List Odwołanych Certyfikatów (\s-1CRL\s0)
|
||
.Sp
|
||
Opcja określa katalog, w którym \fBstunnel\fR będzie szukał list \s-1CRL\s0 używanych
|
||
przez opcje \fIverifyChain\fR i \fIverifyPeer\fR. Pliki z listami \s-1CRL\s0 muszą posiadać
|
||
specjalne nazwy \s-1XXXXXXXX\s0.r0, gdzie \s-1XXXXXXXX\s0 jest skrótem listy \s-1CRL.\s0
|
||
.Sp
|
||
Funkcja skrótu została zmieniona \fBOpenSSL 1.0.0\fR.
|
||
Należy wykonać c_rehash przy zmianie \fBOpenSSL 0.x.x\fR na \fB1.x.x\fR.
|
||
.Sp
|
||
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fICRLpath\fR jest określona
|
||
względem tego katalogu.
|
||
.IP "\fBCRLfile\fR = \s-1PLIK_CRL\s0" 4
|
||
.IX Item "CRLfile = PLIK_CRL"
|
||
plik List Odwołanych Certyfikatów (\s-1CRL\s0)
|
||
.Sp
|
||
Opcja pozwala określić położenie pliku zawierającego listy \s-1CRL\s0 używane
|
||
przez opcje \fIverifyChain\fR i \fIverifyPeer\fR.
|
||
.IP "\fBcurve\fR = \s-1NID\s0" 4
|
||
.IX Item "curve = NID"
|
||
krzywa dla \s-1ECDH\s0
|
||
.Sp
|
||
Listę dostępnych krzywych można uzyskać poleceniem:
|
||
.Sp
|
||
.Vb 1
|
||
\& openssl ecparam \-list_curves
|
||
.Ve
|
||
.Sp
|
||
domyślnie: prime256v1
|
||
.IP "\fBlogId\fR = \s-1TYP\s0" 4
|
||
.IX Item "logId = TYP"
|
||
typ identyfikatora połączenia klienta
|
||
.Sp
|
||
Identyfikator ten pozwala rozróżnić wpisy w logu wygenerowane dla
|
||
poszczególnych połączeń.
|
||
.Sp
|
||
Aktualnie wspierane typy:
|
||
.RS 4
|
||
.IP "\fIsequential\fR" 4
|
||
.IX Item "sequential"
|
||
Kolejny numer połączenia jest unikalny jedynie w obrębie pojedynczej instancji
|
||
programu \fBstunnel\fR, ale bardzo krótki. Jest on szczególnie użyteczny przy
|
||
ręcznej analizie logów.
|
||
.IP "\fIunique\fR" 4
|
||
.IX Item "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.
|
||
.IP "\fIthread\fR" 4
|
||
.IX Item "thread"
|
||
Identyfikator wątku systemu operacyjnego nie jest ani unikalny (nawet w obrębie
|
||
pojedynczej instancji programu \fBstunnel\fR), ani krótki. Jest on szczególnie
|
||
użyteczny przy diagnozowaniu problemów z oprogramowaniem lub konfiguracją.
|
||
.IP "\fIprocess\fR" 4
|
||
.IX Item "process"
|
||
Identyfikator procesu (\s-1PID\s0) może być użyteczny w trybie inetd.
|
||
.RE
|
||
.RS 4
|
||
.Sp
|
||
domyślnie: sequential
|
||
.RE
|
||
.IP "\fBdebug\fR = \s-1POZIOM\s0" 4
|
||
.IX Item "debug = POZIOM"
|
||
szczegółowość logowania
|
||
.Sp
|
||
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
|
||
\&\fIdebug = debug\fR lub \fIdebug = 7\fR. Domyślnym poziomem jest notice (5).
|
||
.IP "\fBdelay\fR = yes | no" 4
|
||
.IX Item "delay = yes | no"
|
||
opóźnij rozwinięcie adresu \s-1DNS\s0 podanego w opcji \fIconnect\fR
|
||
.Sp
|
||
Opcja jest przydatna przy dynamicznym \s-1DNS,\s0 albo gdy usługa \s-1DNS\s0 nie jest
|
||
dostępna przy starcie programu \fBstunnel\fR (klient \s-1VPN,\s0 połączenie wdzwaniane).
|
||
.Sp
|
||
Opóźnione rozwijanie adresu \s-1DNS\s0 jest włączane automatycznie, jeżeli nie
|
||
powiedzie się rozwinięcie któregokolwiek z adresów \fIconnect\fR dla danej
|
||
usługi.
|
||
.Sp
|
||
Opóźnione rozwijanie adresu automatycznie aktywuje \fIfailover = prio\fR.
|
||
.Sp
|
||
default: no
|
||
.IP "\fBengineId\fR = NUMER_URZĄDZENIA" 4
|
||
.IX Item "engineId = NUMER_URZĄDZENIA"
|
||
wybierz urządzenie dla usługi
|
||
.IP "\fBengineNum\fR = NUMER_URZĄDZENIA" 4
|
||
.IX Item "engineNum = NUMER_URZĄDZENIA"
|
||
wybierz urządzenie dla usługi
|
||
.Sp
|
||
Urządzenia są numerowane od 1 w górę.
|
||
.IP "\fBexec\fR = ŚCIEŻKA_DO_PROGRAMU" 4
|
||
.IX Item "exec = ŚCIEŻKA_DO_PROGRAMU"
|
||
wykonaj lokalny program przystosowany do pracy z superdemonem inetd
|
||
.Sp
|
||
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fIexec\fR jest określona
|
||
względem tego katalogu.
|
||
.Sp
|
||
Na platformach Unix ustawiane są następujące zmienne środowiskowe:
|
||
\&\s-1REMOTE_HOST, REMOTE_PORT, SSL_CLIENT_DN, SSL_CLIENT_I_DN.\s0
|
||
.ie n .IP "\fBexecArgs\fR = $0 $1 $2 ..." 4
|
||
.el .IP "\fBexecArgs\fR = \f(CW$0\fR \f(CW$1\fR \f(CW$2\fR ..." 4
|
||
.IX Item "execArgs = $0 $1 $2 ..."
|
||
argumenty do opcji \fIexec\fR włącznie z nazwą programu ($0)
|
||
.Sp
|
||
Cytowanie nie jest wspierane w obecnej wersji programu.
|
||
Argumenty są rozdzielone dowolną liczbą białych znaków.
|
||
.IP "\fBfailover\fR = rr | prio" 4
|
||
.IX Item "failover = rr | prio"
|
||
Strategia wybierania serwerów wyspecyfikowanych parametrami \*(L"connect\*(R".
|
||
.RS 4
|
||
.IP "\fIrr\fR" 4
|
||
.IX Item "rr"
|
||
round robin \- sprawiedliwe rozłożenie obciążenia
|
||
.IP "\fIprio\fR" 4
|
||
.IX Item "prio"
|
||
priority \- użyj kolejności opcji w pliku konfiguracyjnym
|
||
.RE
|
||
.RS 4
|
||
.Sp
|
||
domyślnie: rr
|
||
.RE
|
||
.IP "\fBident\fR = NAZWA_UŻYTKOWNIKA" 4
|
||
.IX Item "ident = NAZWA_UŻYTKOWNIKA"
|
||
weryfikuj nazwę zdalnego użytkownika korzystając z protokołu \s-1IDENT \s0(\s-1RFC 1413\s0)
|
||
.IP "\fBinclude\fR = \s-1KATALOG\s0" 4
|
||
.IX Item "include = KATALOG"
|
||
wczytaj fragmenty plików konfiguracyjnych z podanego katalogu
|
||
.Sp
|
||
Pliki są wczytywane w rosnącej kolejności alfabetycznej ich nazw.
|
||
.IP "\fBkey\fR = \s-1PLIK_KLUCZA\s0" 4
|
||
.IX Item "key = PLIK_KLUCZA"
|
||
klucz prywatny do certyfikatu podanego w opcji \fIcert\fR
|
||
.Sp
|
||
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ą:
|
||
.Sp
|
||
.Vb 1
|
||
\& chmod 600 keyfile
|
||
.Ve
|
||
.Sp
|
||
Jeżeli używane jest sprzętowe urządzenie kryptograficzne, to opcja \fBkey\fR
|
||
pozwala wybrać identyfikator używanego klucza prywatnego.
|
||
.Sp
|
||
domyślnie: wartość opcji \fIcert\fR
|
||
.IP "\fBlibwrap\fR = yes | no" 4
|
||
.IX Item "libwrap = yes | no"
|
||
włącz lub wyłącz korzystanie z /etc/hosts.allow i /etc/hosts.deny.
|
||
.Sp
|
||
domyślnie: no (od wersji 5.00)
|
||
.IP "\fBlocal\fR = \s-1HOST\s0" 4
|
||
.IX Item "local = HOST"
|
||
\&\s-1IP\s0 źródła do nawiązywania zdalnych połączeń
|
||
.Sp
|
||
Domyślnie używane jest \s-1IP\s0 najbardziej zewnętrznego interfejsu w stronę
|
||
serwera, do którego nawiązywane jest połączenie.
|
||
.IP "\fB\s-1OCSP\s0\fR = \s-1URL\s0" 4
|
||
.IX Item "OCSP = URL"
|
||
responder \s-1OCSP\s0 do weryfikacji certyfikatów
|
||
.IP "\fBOCSPaia\fR = yes | no" 4
|
||
.IX Item "OCSPaia = yes | no"
|
||
weryfikuj certyfikaty przy użyciu respondertów \s-1AIA\s0
|
||
.Sp
|
||
Opcja \fIOCSPaia\fR pozwala na weryfikowanie certyfikatów przy pomocy listy URLi
|
||
responderów \s-1OCSP\s0 przesłanych w rozszerzeniach \s-1AIA \s0(Authority Information Access).
|
||
.IP "\fBOCSPflag\fR = \s-1FLAGA_OCSP\s0" 4
|
||
.IX Item "OCSPflag = FLAGA_OCSP"
|
||
flaga respondera \s-1OCSP\s0
|
||
.Sp
|
||
Aktualnie wspierane flagi: \s-1NOCERTS, NOINTERN, NOSIGS, NOCHAIN, NOVERIFY,
|
||
NOEXPLICIT, NOCASIGN, NODELEGATED, NOCHECKS, TRUSTOTHER, RESPID_KEY, NOTIME\s0
|
||
.Sp
|
||
Aby wyspecyfikować kilka flag należy użyć \fIOCSPflag\fR wielokrotnie.
|
||
.IP "\fBOCSPnonce\fR = yes | no" 4
|
||
.IX Item "OCSPnonce = yes | no"
|
||
wysyłaj i weryfikuj \s-1OCSP\s0 nonce
|
||
.Sp
|
||
Opcja \fBOCSPnonce\fR zabezpiecza protokół \s-1OCSP\s0 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
|
||
\&\s-1OCSP.\s0
|
||
.IP "\fBoptions\fR = \s-1OPCJE_SSL\s0" 4
|
||
.IX Item "options = OPCJE_SSL"
|
||
opcje biblioteki \fBOpenSSL\fR
|
||
.Sp
|
||
Parametrem jest nazwa opcji zgodnie z opisem w \fI\fISSL_CTX_set_options\fI\|(3ssl)\fR,
|
||
ale bez przedrostka \fI\s-1SSL_OP_\s0\fR.
|
||
\&\fIstunnel \-options\fR wyświetla opcje dozwolone w aktualnej kombinacji
|
||
programu \fIstunnel\fR i biblioteki \fIOpenSSL\fR.
|
||
.Sp
|
||
Aby wyspecyfikować kilka opcji należy użyć \fIoptions\fR wielokrotnie.
|
||
Nazwa opcji może być poprzedzona myślnikiem (\*(L"\-\*(R") celem wyłączenia opcji.
|
||
.Sp
|
||
Na przykład, dla zachowania kompatybilności z błędami implementacji \s-1TLS\s0
|
||
w programie Eudora, można użyć opcji:
|
||
.Sp
|
||
.Vb 1
|
||
\& options = DONT_INSERT_EMPTY_FRAGMENTS
|
||
.Ve
|
||
.Sp
|
||
domyślnie:
|
||
.Sp
|
||
.Vb 2
|
||
\& options = NO_SSLv2
|
||
\& options = NO_SSLv3
|
||
.Ve
|
||
.IP "\fBprotocol\fR = PROTOKÓŁ" 4
|
||
.IX Item "protocol = PROTOKÓŁ"
|
||
negocjuj \s-1TLS\s0 podanym protokołem aplikacyjnym
|
||
.Sp
|
||
Opcja ta włącza wstępną negocjację szyfrowania \s-1TLS\s0 dla wybranego protokołu
|
||
aplikacyjnego.
|
||
Opcji \fIprotocol\fR nie należy używać z szyfrowaniem \s-1TLS\s0 na osobnym porcie.
|
||
.Sp
|
||
Aktualnie wspierane protokoły:
|
||
.RS 4
|
||
.IP "\fIcifs\fR" 4
|
||
.IX Item "cifs"
|
||
Nieudokumentowane rozszerzenie protokołu \s-1CIFS\s0 wspierane przez serwer Samba.
|
||
Wsparcie dla tego rozrzeczenia zostało zarzucone w wersji 3.0.0 serwera Samba.
|
||
.IP "\fIconnect\fR" 4
|
||
.IX Item "connect"
|
||
Negocjacja \s-1RFC 2817 \- \s0\fIUpgrading to \s-1TLS\s0 Within \s-1HTTP/1.1\s0\fR, rozdział 5.2 \- \fIRequesting a Tunnel with \s-1CONNECT\s0\fR
|
||
.Sp
|
||
Ten protokół jest wspierany wyłącznie w trybie klienckim.
|
||
.IP "\fIimap\fR" 4
|
||
.IX Item "imap"
|
||
Negocjacja \s-1RFC 2595 \- \s0\fIUsing \s-1TLS\s0 with \s-1IMAP, POP3\s0 and \s-1ACAP\s0\fR
|
||
.IP "\fInntp\fR" 4
|
||
.IX Item "nntp"
|
||
Negocjacja \s-1RFC 4642 \- \s0\fIUsing Transport Layer Security (\s-1TLS\s0) with Network News Transfer Protocol (\s-1NNTP\s0)\fR
|
||
.Sp
|
||
Ten protokół jest wspierany wyłącznie w trybie klienckim.
|
||
.IP "\fIpgsql\fR" 4
|
||
.IX Item "pgsql"
|
||
Negocjacja http://www.postgresql.org/docs/8.3/static/protocol\-flow.html#AEN73982
|
||
.IP "\fIpop3\fR" 4
|
||
.IX Item "pop3"
|
||
Negocjacja \s-1RFC 2449 \- \s0\fI\s-1POP3\s0 Extension Mechanism\fR
|
||
.IP "\fIproxy\fR" 4
|
||
.IX Item "proxy"
|
||
Przekazywanie adresu \s-1IP\s0 haproxy http://haproxy.1wt.eu/download/1.5/doc/proxy\-protocol.txt
|
||
.IP "\fIsmtp\fR" 4
|
||
.IX Item "smtp"
|
||
Negocjacja \s-1RFC 2487 \- \s0\fI\s-1SMTP\s0 Service Extension for Secure \s-1SMTP\s0 over \s-1TLS\s0\fR
|
||
.IP "\fIsocks\fR" 4
|
||
.IX Item "socks"
|
||
Wspierany jest protokół \s-1SOCKS\s0 w wersjach 4, 4a i 5.
|
||
Protokół \s-1SOCKS\s0 enkapsulowany jest w protokole \s-1TLS,\s0 więc adres serwera
|
||
docelowego nie jest widoczny dla napastnika przechwytującego ruch sieciowy.
|
||
.Sp
|
||
\&\fIhttp://www.openssh.com/txt/socks4.protocol\fR
|
||
.Sp
|
||
\&\fIhttp://www.openssh.com/txt/socks4a.protocol\fR
|
||
.Sp
|
||
Nie jest wspierana komenda \s-1BIND\s0 protokołu \s-1SOCKS.\s0
|
||
Przesłana wartość parametru \s-1USERID\s0 jest ignorowana.
|
||
.Sp
|
||
Sekcja PRZYKŁADY zawiera przykładowe pliki konfiguracyjne VPNa zbudowanego
|
||
w oparciu o szyfrowany protokół \s-1SOCKS.\s0
|
||
.RE
|
||
.RS 4
|
||
.RE
|
||
.IP "\fBprotocolAuthentication\fR = \s-1UWIERZYTELNIENIE\s0" 4
|
||
.IX Item "protocolAuthentication = UWIERZYTELNIENIE"
|
||
rodzaj uwierzytelnienia do negocjacji protokołu
|
||
.Sp
|
||
Opcja ta jest wpierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.
|
||
.Sp
|
||
W protokole 'connect' wspierane jest uwierzytelnienie 'basic' oraz 'ntlm'.
|
||
Domyślnym rodzajem uwierzytelnienia protokołu 'connect' jest 'basic'.
|
||
.Sp
|
||
W protokole 'smtp' wspierane jest uwierzytelnienie 'plain' oraz 'login'.
|
||
Domyślnym rodzajem uwierzytelnienia protokołu 'smtp' jest 'plain'.
|
||
.IP "\fBprotocolDomain\fR = \s-1DOMENA\s0" 4
|
||
.IX Item "protocolDomain = DOMENA"
|
||
domena do negocjacji protokołu
|
||
.Sp
|
||
W obecnej wersji wybrana domena ma zastosowanie wyłącznie w protokole 'connect'.
|
||
.IP "\fBprotocolHost\fR = \s-1HOST:PORT\s0" 4
|
||
.IX Item "protocolHost = HOST:PORT"
|
||
adres docelowy do negocjacji protokołu
|
||
.Sp
|
||
\&\fIprotocolHost\fR określa docelowy serwer \s-1TLS,\s0 do którego połączyć ma się proxy.
|
||
Nie jest to adres serwera proxy, do którego połączenie zestawia \fBstunnel\fR.
|
||
Adres serwera proxy powinien być określony przy pomocy opcji 'connect'.
|
||
.Sp
|
||
W obecnej wersji adres docelowy protokołu ma zastosowanie wyłącznie w protokole
|
||
\&'connect'.
|
||
.IP "\fBprotocolPassword\fR = HASŁO" 4
|
||
.IX Item "protocolPassword = HASŁO"
|
||
hasło do negocjacji protokołu
|
||
.Sp
|
||
Opcja ta jest wspierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.
|
||
.IP "\fBprotocolUsername\fR = UŻYTKOWNIK" 4
|
||
.IX Item "protocolUsername = UŻYTKOWNIK"
|
||
nazwa użytkownika do negocjacji protokołu
|
||
.Sp
|
||
Opcja ta jest wspierana wyłącznie w klienckich protokołach 'connect' i 'smtp'.
|
||
.IP "\fBPSKidentity\fR = TOŻSAMOŚĆ" 4
|
||
.IX Item "PSKidentity = TOŻSAMOŚĆ"
|
||
tożsamość klienta \s-1PSK\s0
|
||
.Sp
|
||
\&\fIPSKidentity\fR może zostać użyte w sekcjach klienckich do wybrania
|
||
tożsamości użytej do uwierzytelnienia \s-1PSK.\s0
|
||
Opcja jest ignorowana w sekcjach serwerowych.
|
||
.Sp
|
||
domyślnie: pierwsza tożsamość zdefiniowana w pliku \fIPSKsecrets\fR
|
||
.IP "\fBPSKsecrets\fR = \s-1PLIK\s0" 4
|
||
.IX Item "PSKsecrets = PLIK"
|
||
plik z tożsamościami i kluczami \s-1PSK\s0
|
||
.Sp
|
||
Każda linia pliku jest w następującym formacie:
|
||
.Sp
|
||
.Vb 1
|
||
\& TOŻSAMOŚĆ:KLUCZ
|
||
.Ve
|
||
.Sp
|
||
Klucz musi być mieć przynajmniej 20 znaków.
|
||
Należy ograniczyć dostęp do czytania lub pisania do tego pliku.
|
||
.IP "\fBpty\fR = yes | no (tylko Unix)" 4
|
||
.IX Item "pty = yes | no (tylko Unix)"
|
||
alokuj pseudoterminal dla programu uruchamianego w opcji 'exec'
|
||
.IP "\fBredirect\fR = [\s-1HOST:\s0]PORT" 4
|
||
.IX Item "redirect = [HOST:]PORT"
|
||
przekieruj klienta, któremu nie udało się poprawnie uwierzytelnić przy pomocy certyfikatu
|
||
.Sp
|
||
Opcja działa wyłącznie w trybie serwera.
|
||
Część negocjacji protokołów jest niekompatybilna z opcją \fIredirect\fR.
|
||
.IP "\fBrenegotiation\fR = yes | no" 4
|
||
.IX Item "renegotiation = yes | no"
|
||
pozwalaj na renegocjację \s-1TLS\s0
|
||
.Sp
|
||
Zastosowania renegocjacji \s-1TLS\s0 zawierają niektóre scenariusze uwierzytelniania oraz renegocjację kluczy dla długotrwałych połączeń.
|
||
.Sp
|
||
Z drugiej strony własność na może ułatwić trywialny atak DoS poprzez
|
||
wygenerowanie obciążenia procesora:
|
||
.Sp
|
||
http://vincent.bernat.im/en/blog/2011\-ssl\-dos\-mitigation.html
|
||
.Sp
|
||
Warto zauważyć, że zablokowanie renegocjacji \s-1TLS\s0 nie zebezpiecza w pełni
|
||
przed opisanym problemem.
|
||
.Sp
|
||
domyślnie: yes (o ile wspierane przez \fBOpenSSL\fR)
|
||
.IP "\fBreset\fR = yes | no" 4
|
||
.IX Item "reset = yes | no"
|
||
sygnalizuj wystąpienie błędu przy pomocy flagi \s-1TCP RST\s0
|
||
.Sp
|
||
Opcja nie jest wspierana na niektórych platformach.
|
||
.Sp
|
||
domyślnie: yes
|
||
.IP "\fBretry\fR = yes | no" 4
|
||
.IX Item "retry = yes | no"
|
||
połącz ponownie sekcję connect+exec po rozłączeniu
|
||
.Sp
|
||
domyślnie: no
|
||
.IP "\fBrequireCert\fR = yes | no" 4
|
||
.IX Item "requireCert = yes | no"
|
||
wymagaj certyfikatu klienta dla \fIverifyChain\fR lub \fIverifyPeer\fR
|
||
.Sp
|
||
Przy opcji \fIrequireCert\fR ustawionej na \fIno\fR, \fBstunnel\fR akceptuje
|
||
połączenia klientów, które nie wysłały certyfikatu.
|
||
.Sp
|
||
Zarówno \fIverifyChain = yes\fR jak i \fIverifyPeer = yes\fR
|
||
automatycznie ustawiają \fIrequireCert\fR na \fIyes\fR.
|
||
.Sp
|
||
domyślnie: no
|
||
.IP "\fBsetgid\fR = \s-1IDENTYFIKATOR_GRUPY \s0(tylko Unix)" 4
|
||
.IX Item "setgid = IDENTYFIKATOR_GRUPY (tylko Unix)"
|
||
identyfikator grupy Unix
|
||
.Sp
|
||
Jako opcja globalna: grupa, z której prawami pracował będzie \fBstunnel\fR.
|
||
.Sp
|
||
Jako opcja usługi: grupa gniazda Unix utworzonego przy pomocy opcji \*(L"accept\*(R".
|
||
.IP "\fBsetuid\fR = IDENTYFIKATOR_UŻYTKOWNIKA (tylko Unix)" 4
|
||
.IX Item "setuid = IDENTYFIKATOR_UŻYTKOWNIKA (tylko Unix)"
|
||
identyfikator użytkownika Unix
|
||
.Sp
|
||
Jako opcja globalna: użytkownik, z którego prawami pracował będzie \fBstunnel\fR.
|
||
.Sp
|
||
Jako opcja usługi: właściciel gniazda Unix utworzonego przy pomocy opcji \*(L"accept\*(R".
|
||
.IP "\fBsessionCacheSize\fR = \s-1LICZBA_POZYCJI_CACHE\s0" 4
|
||
.IX Item "sessionCacheSize = LICZBA_POZYCJI_CACHE"
|
||
rozmiar pamięci podręcznej sesji \s-1TLS\s0
|
||
.Sp
|
||
Parametr określa maksymalną liczbę pozycji wewnętrznej pamięci podręcznej
|
||
sesji.
|
||
.Sp
|
||
Wartość 0 oznacza brak ograniczenia rozmiaru. Nie jest to zalecane dla
|
||
systemów produkcyjnych z uwagi na ryzyko ataku DoS przez wyczerpanie pamięci
|
||
\&\s-1RAM.\s0
|
||
.IP "\fBsessionCacheTimeout\fR = \s-1LICZBA_SEKUND\s0" 4
|
||
.IX Item "sessionCacheTimeout = LICZBA_SEKUND"
|
||
przeterminowanie pamięci podręcznej sesji \s-1TLS\s0
|
||
.Sp
|
||
Parametr określa czas w sekundach, po którym sesja \s-1TLS\s0 zostanie usunięta z
|
||
pamięci podręcznej.
|
||
.IP "\fBsessiond\fR = \s-1HOST:PORT\s0" 4
|
||
.IX Item "sessiond = HOST:PORT"
|
||
adres sessiond \- servera cache sesji \s-1TLS\s0
|
||
.IP "\fBsni\fR = NAZWA_USŁUGI:WZORZEC_NAZWY_SERWERA (tryb serwera)" 4
|
||
.IX Item "sni = NAZWA_USŁUGI:WZORZEC_NAZWY_SERWERA (tryb serwera)"
|
||
Użyj usługi jako podrzędnej (virtualnego serwera) dla rozszerzenia \s-1TLS\s0 Server
|
||
Name Indication (\s-1RFC 3546\s0).
|
||
.Sp
|
||
\&\fINAZWA_USŁUGI\fR wskazuje usługę nadrzędną, która odbiera połączenia od klientów
|
||
przy pomocy opcji \fIaccept\fR. \fI\s-1WZORZEC_NAZWY_SERWERA\s0\fR 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 \fIsni\fR może być rownież użyta wielokrotnie w ramach jednej usługi
|
||
podrzędnej.
|
||
.Sp
|
||
Zarówno usługa nadrzędna jak i podrzędna nie może być skonfigurowana w trybie
|
||
klienckim.
|
||
.Sp
|
||
Opcja \fIconnect\fR usługi podrzędnej jest ignorowana w połączeniu z opcją
|
||
\&\fIprotocol\fR, gdyż połączenie do zdalnego serwera jest w tym wypadku nawiązywane
|
||
przed negocjacją \s-1TLS.\s0
|
||
.Sp
|
||
Uwierzytelnienie przy pomocy biblioteki libwrap jest realizowane dwukrotnie:
|
||
najpierw dla usługi nadrzędnej po odebraniu połączenia \s-1TCP,\s0 a następnie dla
|
||
usługi podrzędnej podczas negocjacji \s-1TLS.\s0
|
||
.Sp
|
||
Opcja \fIsni\fR jest dostępna począwszy od \fBOpenSSL 1.0.0\fR.
|
||
.IP "\fBsni\fR = \s-1NAZWA_SERWERA \s0(tryb klienta)" 4
|
||
.IX Item "sni = NAZWA_SERWERA (tryb klienta)"
|
||
Użyj parametru jako wartości rozszerzenia \s-1TLS\s0 Server Name Indication
|
||
(\s-1RFC 3546\s0).
|
||
.Sp
|
||
Pusta wartość parametru \s-1NAZWA_SERWERA\s0 wyłącza wysyłanie rozszerzenia \s-1SNI.\s0
|
||
.Sp
|
||
Opcja \fIsni\fR jest dostępna począwszy od \fBOpenSSL 1.0.0\fR.
|
||
.IP "\fBsslVersion\fR = \s-1WERSJA_SSL\s0" 4
|
||
.IX Item "sslVersion = WERSJA_SSL"
|
||
wersja protokołu \s-1TLS\s0
|
||
.Sp
|
||
Wspierane opcje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2
|
||
.Sp
|
||
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.
|
||
.Sp
|
||
Przestarzałe protokoły SSLv2 i SSLv3 są domyślnie wyłączone.
|
||
Szczegółowe informacje dostępne są w opisie opcji \fBoptions\fR.
|
||
.IP "\fBstack\fR = LICZBA_BAJTÓW (z wyjątkiem modelu \s-1FORK\s0)" 4
|
||
.IX Item "stack = LICZBA_BAJTÓW (z wyjątkiem modelu FORK)"
|
||
rozmiar stosu procesora wątku
|
||
.IP "\fBTIMEOUTbusy\fR = \s-1LICZBA_SEKUND\s0" 4
|
||
.IX Item "TIMEOUTbusy = LICZBA_SEKUND"
|
||
czas oczekiwania na spodziewane dane
|
||
.IP "\fBTIMEOUTclose\fR = \s-1LICZBA_SEKUND\s0" 4
|
||
.IX Item "TIMEOUTclose = LICZBA_SEKUND"
|
||
czas oczekiwania na close_notify (ustaw na 0, jeżeli klientem jest \s-1MSIE\s0)
|
||
.IP "\fBTIMEOUTconnect\fR = \s-1LICZBA_SEKUND\s0" 4
|
||
.IX Item "TIMEOUTconnect = LICZBA_SEKUND"
|
||
czas oczekiwania na nawiązanie połączenia
|
||
.IP "\fBTIMEOUTidle\fR = \s-1LICZBA_SEKUND\s0" 4
|
||
.IX Item "TIMEOUTidle = LICZBA_SEKUND"
|
||
maksymalny czas utrzymywania bezczynnego połączenia
|
||
.IP "\fBtransparent\fR = none | source | destination | both (tylko Unix)" 4
|
||
.IX Item "transparent = none | source | destination | both (tylko Unix)"
|
||
tryb przezroczystego proxy na wspieranych platformach
|
||
.Sp
|
||
Wspierane opcje:
|
||
.RS 4
|
||
.IP "\fBnone\fR" 4
|
||
.IX Item "none"
|
||
Zablokuj wsparcie dla przezroczystago proxy. Jest to wartość domyślna.
|
||
.IP "\fBsource\fR" 4
|
||
.IX Item "source"
|
||
Przepisz adres, aby nawiązywane połączenie wydawało się pochodzić
|
||
bezpośrednio od klienta, a nie od programu \fBstunnel\fR.
|
||
.Sp
|
||
Opcja jest aktualnie obsługiwana w:
|
||
.RS 4
|
||
.IP "Trybie zdalnym (opcja \fIconnect\fR) w systemie \fILinux >=2.6.28\fR" 4
|
||
.IX Item "Trybie zdalnym (opcja connect) w systemie Linux >=2.6.28"
|
||
Konfiguracja wymaga następujących ustawień iptables oraz routingu
|
||
(na przykład w pliku /etc/rc.local lub analogicznym):
|
||
.Sp
|
||
.Vb 7
|
||
\& 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
|
||
.Ve
|
||
.Sp
|
||
Konfiguracja ta wymaga, aby \fBstunnel\fR był wykonywany jako root i bez opcji \fIsetuid\fR.
|
||
.IP "Trybie zdalnym (opcja \fIconnect\fR) w systemie \fILinux 2.2.x\fR" 4
|
||
.IX Item "Trybie zdalnym (opcja connect) w systemie Linux 2.2.x"
|
||
Konfiguracja ta wymaga skompilowania jądra z opcją \fItransparent proxy\fR.
|
||
Docelowa usługa musi być umieszczona na osobnej maszynie, do której routing
|
||
kierowany jest poprzez serwer \fBstunnela\fR.
|
||
.Sp
|
||
Dodatkowo \fBstunnel\fR powinien być wykonywany jako root i bez opcji \fIsetuid\fR.
|
||
.IP "Trybie zdalnym (opcja \fIconnect\fR) w systemie \fIFreeBSD >=8.0\fR" 4
|
||
.IX Item "Trybie zdalnym (opcja connect) w systemie FreeBSD >=8.0"
|
||
Konfiguracja ta wymaga skonfigurowania firewalla i routingu.
|
||
\&\fBstunnel\fR musi być wykonywany jako root i bez opcji \fIsetuid\fR.
|
||
.IP "Trybie lokalnym (opcja \fIexec\fR)" 4
|
||
.IX Item "Trybie lokalnym (opcja exec)"
|
||
Konfiguracja ta jest realizowana przy pomocy biblioteki \fIlibstunnel.so\fR.
|
||
Do załadowania biblioteki wykorzystywana jest zmienna środowiskowa _RLD_LIST na
|
||
platformie Tru64 lub \s-1LD_PRELOAD\s0 na innych platformach.
|
||
.RE
|
||
.RS 4
|
||
.RE
|
||
.IP "\fIdestination\fR" 4
|
||
.IX Item "destination"
|
||
Oryginalny adres docelowy jest używany zamiast opcji \fIconnect\fR.
|
||
.Sp
|
||
Przykładowana konfiguracja przezroczystego adresu docelowego:
|
||
.Sp
|
||
.Vb 4
|
||
\& [transparent]
|
||
\& client = yes
|
||
\& accept = <port_stunnela>
|
||
\& transparent = destination
|
||
.Ve
|
||
.Sp
|
||
Konfiguracja wymaga ustawień iptables, na przykład w pliku
|
||
/etc/rc.local lub analogicznym.
|
||
.Sp
|
||
W przypadku docelowej usługi umieszczonej na tej samej maszynie:
|
||
.Sp
|
||
.Vb 3
|
||
\& /sbin/iptables \-t nat \-I OUTPUT \-p tcp \-\-dport <port_przekierowany> \e
|
||
\& \-m ! \-\-uid\-owner <identyfikator_użytkownika_stunnela> \e
|
||
\& \-j DNAT \-\-to\-destination <lokalne_ip>:<lokalny_port>
|
||
.Ve
|
||
.Sp
|
||
W przypadku docelowej usługi umieszczonej na zdalnej maszynie:
|
||
.Sp
|
||
.Vb 3
|
||
\& /sbin/iptables \-I INPUT \-i eth0 \-p tcp \-\-dport <port_stunnela> \-j ACCEPT
|
||
\& /sbin/iptables \-t nat \-I PREROUTING \-p tcp \-\-dport <port_przekierowany> \e
|
||
\& \-i eth0 \-j DNAT \-\-to\-destination <lokalne_ip>:<port_stunnela>
|
||
.Ve
|
||
.Sp
|
||
Przezroczysty adres docelowy jest aktualnie wspierany wyłącznie w systemie Linux.
|
||
.IP "\fIboth\fR" 4
|
||
.IX Item "both"
|
||
Użyj przezroczystego proxy zarówno dla adresu źródłowego jak i docelowego.
|
||
.RE
|
||
.RS 4
|
||
.Sp
|
||
Dla zapewnienia kompatybilności z wcześniejszymim wersjami wspierane są dwie
|
||
dodatkowe opcje:
|
||
.IP "\fIyes\fR" 4
|
||
.IX Item "yes"
|
||
Opcja została przemianowana na \fIsource\fR.
|
||
.IP "\fIno\fR" 4
|
||
.IX Item "no"
|
||
Opcja została przemianowana na \fInone\fR.
|
||
.RE
|
||
.RS 4
|
||
.RE
|
||
.IP "\fBverify\fR = \s-1POZIOM\s0" 4
|
||
.IX Item "verify = POZIOM"
|
||
weryfikuj certyfikat drugiej strony połączenia
|
||
.Sp
|
||
Opcja ta jest przestarzała i należy ją zastąpić przez opcje
|
||
\&\fIverifyChain\fR i \fIverifyPeer\fR.
|
||
.RS 4
|
||
.IP "\fIpoziom 0\fR" 4
|
||
.IX Item "poziom 0"
|
||
zarządaj certyfikatu i zignoruj go
|
||
.IP "\fIpoziom 1\fR" 4
|
||
.IX Item "poziom 1"
|
||
weryfikuj, jeżeli został przedstawiony
|
||
.IP "\fIpoziom 2\fR" 4
|
||
.IX Item "poziom 2"
|
||
weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji
|
||
.IP "\fIpoziom 3\fR" 4
|
||
.IX Item "poziom 3"
|
||
weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony
|
||
.IP "\fIpoziom 4\fR" 4
|
||
.IX Item "poziom 4"
|
||
weryfikuj z certyfikatem drugiej strony ignorując łańcuch \s-1CA\s0
|
||
.IP "\fIdomyślnie\fR" 4
|
||
.IX Item "domyślnie"
|
||
nie weryfikuj
|
||
.RE
|
||
.RS 4
|
||
.RE
|
||
.IP "\fBverifyChain\fR = yes | no" 4
|
||
.IX Item "verifyChain = yes | no"
|
||
weryfikuj łańcuch certyfikatów drugiej strony
|
||
.Sp
|
||
Do weryfikacji certyfikatu serwera kluczowe jest, aby wymagać również
|
||
konkretnego certyfikatu przy pomocy \fIcheckHost\fR lub \fIcheckIP\fR.
|
||
.Sp
|
||
Samopodpisany certyfikat głównego \s-1CA\s0 należy umieścić albo w pliku
|
||
podanym w opcji \fICAfile\fR, albo w katalogu podanym w opcji \fICApath\fR.
|
||
.Sp
|
||
domyślnie: no
|
||
.IP "\fBverifyPeer\fR = yes | no" 4
|
||
.IX Item "verifyPeer = yes | no"
|
||
weryfikuj certyfikat drugiej strony
|
||
.Sp
|
||
Certyfikat drugiej strony należy umieścić albo w pliku podanym w opcji
|
||
\&\fICAfile\fR, albo w katalogu podanym w opcji \fICApath\fR.
|
||
.Sp
|
||
domyślnie: no
|
||
.SH "ZWRACANA WARTOŚĆ"
|
||
.IX Header "ZWRACANA WARTOŚĆ"
|
||
\&\fBstunnel\fR zwraca zero w przypadku sukcesu, lub wartość niezerową
|
||
w przypadku błędu.
|
||
.SH "SIGNAŁY"
|
||
.IX Header "SIGNAŁY"
|
||
Następujące sygnały mogą być użyte do sterowania programem w systemie Unix:
|
||
.IP "\s-1SIGHUP\s0" 4
|
||
.IX Item "SIGHUP"
|
||
Załaduj ponownie plik konfiguracyjny.
|
||
.Sp
|
||
Niektóre globalne opcje nie będą przeładowane:
|
||
.RS 4
|
||
.IP "\(bu" 4
|
||
chroot
|
||
.IP "\(bu" 4
|
||
foreground
|
||
.IP "\(bu" 4
|
||
pid
|
||
.IP "\(bu" 4
|
||
setgid
|
||
.IP "\(bu" 4
|
||
setuid
|
||
.RE
|
||
.RS 4
|
||
.Sp
|
||
Jeżeli wykorzystywana jest opcja 'setuid' \fBstunnel\fR nie będzie mógł załadować
|
||
ponownie konfiguracji wykorzystującej uprzywilejowane (<1024) porty.
|
||
.Sp
|
||
Jeżeli wykorzystywana jest opcja 'chroot' \fBstunnel\fR będzie szukał wszystkich
|
||
potrzebnych plików (łącznie z plikiem konfiguracyjnym, certyfikatami, logiem i
|
||
plikiem pid) wewnątrz katalogu wskazanego przez 'chroot'.
|
||
.RE
|
||
.IP "\s-1SIGUSR1\s0" 4
|
||
.IX Item "SIGUSR1"
|
||
Zamknij i otwórz ponownie log.
|
||
Funkcja ta może zostać użyta w skrypcie rotującym log programu \fBstunnel\fR.
|
||
.IP "\s-1SIGTERM, SIGQUIT, SIGINT\s0" 4
|
||
.IX Item "SIGTERM, SIGQUIT, SIGINT"
|
||
Zakończ działanie programu.
|
||
.PP
|
||
Skutek wysłania innych sygnałów jest niezdefiniowany.
|
||
.SH "PRZYKŁADY"
|
||
.IX Header "PRZYKŁADY"
|
||
Szyfrowanie połączeń do lokalnego serwera \fIimapd\fR można użyć:
|
||
.PP
|
||
.Vb 4
|
||
\& [imapd]
|
||
\& accept = 993
|
||
\& exec = /usr/sbin/imapd
|
||
\& execArgs = imapd
|
||
.Ve
|
||
.PP
|
||
albo w trybie zdalnym:
|
||
.PP
|
||
.Vb 3
|
||
\& [imapd]
|
||
\& accept = 993
|
||
\& connect = 143
|
||
.Ve
|
||
.PP
|
||
Aby umożliwić lokalnemu klientowi poczty elektronicznej korzystanie z serwera
|
||
\&\fIimapd\fR przez \s-1TLS\s0 należy skonfigurować pobieranie poczty z adresu localhost i
|
||
portu 119, oraz użyć następującej konfiguracji:
|
||
.PP
|
||
.Vb 4
|
||
\& [imap]
|
||
\& client = yes
|
||
\& accept = 143
|
||
\& connect = serwer:993
|
||
.Ve
|
||
.PP
|
||
W połączeniu z programem \fIpppd\fR \fBstunnel\fR pozwala zestawić prosty \s-1VPN.\s0
|
||
Po stronie serwera nasłuchującego na porcie 2020 jego konfiguracja
|
||
może wyglądać następująco:
|
||
.PP
|
||
.Vb 5
|
||
\& [vpn]
|
||
\& accept = 2020
|
||
\& exec = /usr/sbin/pppd
|
||
\& execArgs = pppd local
|
||
\& pty = yes
|
||
.Ve
|
||
.PP
|
||
Poniższy plik konfiguracyjny może być wykorzystany do uruchomienia
|
||
programu \fBstunnel\fR w trybie \fIinetd\fR. Warto zauważyć, że w pliku
|
||
konfiguracyjnym nie ma sekcji \fI[nazwa_usługi]\fR.
|
||
.PP
|
||
.Vb 2
|
||
\& exec = /usr/sbin/imapd
|
||
\& execArgs = imapd
|
||
.Ve
|
||
.PP
|
||
Aby skonfigurować \s-1VPN\s0 można użyć następującej konfiguracji klienta:
|
||
.PP
|
||
.Vb 6
|
||
\& [socks_client]
|
||
\& client = yes
|
||
\& accept = 127.0.0.1:1080
|
||
\& connect = vpn_server:9080
|
||
\& verifyPeer = yes
|
||
\& CAfile = stunnel.pem
|
||
.Ve
|
||
.PP
|
||
Odpowiadająca jej konfiguracja serwera vpn_server:
|
||
.PP
|
||
.Vb 5
|
||
\& [socks_server]
|
||
\& protocol = socks
|
||
\& accept = 9080
|
||
\& cert = stunnel.pem
|
||
\& key = stunnel.key
|
||
.Ve
|
||
.PP
|
||
Do przetestowania konfiguracji można wydać na maszynie klienckiej komendę:
|
||
.PP
|
||
.Vb 1
|
||
\& curl \-\-socks4a localhost http://www.example.com/
|
||
.Ve
|
||
.PP
|
||
Przykładowa konfiguracja serwera \s-1SNI:\s0
|
||
.PP
|
||
.Vb 5
|
||
\& [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
|
||
.Ve
|
||
.PP
|
||
Przykładowa konfiguracja umożliwiająca uwierzytelnienie z użyciem klucza prywatnego
|
||
przechowywanego w Windows Certificate Store (tylko Windows).
|
||
W przypadku użycia silnika \s-1CAPI,\s0 nie należy ustawiać opcji cert, gdyż klucz klienta
|
||
zostanie automatycznie pobrany z Certificate Store na podstawie zaufanych certyfikatów
|
||
\&\s-1CA\s0 przedstawionych przez serwer.
|
||
.PP
|
||
.Vb 1
|
||
\& engine = capi
|
||
\&
|
||
\& [service]
|
||
\& engineId = capi
|
||
\& client = yes
|
||
\& accept = 127.0.0.1:8080
|
||
\& connect = example.com:8443
|
||
.Ve
|
||
.PP
|
||
Przykładowa konfiguracja umożliwiająca użycie certyfikatu i klucza prywatnego z
|
||
urządzenia zgodnego z pkcs11:
|
||
.PP
|
||
.Vb 3
|
||
\& 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
|
||
.Ve
|
||
.PP
|
||
Przykładowa konfiguracja umożliwiająca użycie certyfikatu i klucza prywatnego
|
||
umieszczonego na tokenie SoftHSM
|
||
.PP
|
||
.Vb 3
|
||
\& 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
|
||
.Ve
|
||
.SH "NOTKI"
|
||
.IX Header "NOTKI"
|
||
.SS "\s-1OGRANICZENIA\s0"
|
||
.IX Subsection "OGRANICZENIA"
|
||
\&\fBstunnel\fR nie może być używany do szyfrowania protokołu \fI\s-1FTP\s0\fR,
|
||
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 \s-1FTP\s0 pozwalające
|
||
na szyfrowanie przesyłanych danych przy pomocy protokołu \fI\s-1TLS\s0\fR.
|
||
.SS "\s-1TRYB INETD \s0(tylko Unix)"
|
||
.IX Subsection "TRYB INETD (tylko Unix)"
|
||
W większości zastosowań \fBstunnel\fR samodzielnie nasłuchuje na porcie
|
||
podanym w pliku konfiguracyjnym i tworzy połączenie z innym portem
|
||
podanym w opcji \fIconnect\fR lub nowym programem podanym w opcji \fIexec\fR.
|
||
Niektórzy wolą jednak wykorzystywać oddzielny program, który odbiera
|
||
połączenia, po czym uruchamia program \fBstunnel\fR. Przykładami takich
|
||
programów są inetd, xinetd i tcpserver.
|
||
.PP
|
||
Przykładowa linia pliku /etc/inetd.conf może wyglądać tak:
|
||
.PP
|
||
.Vb 2
|
||
\& imaps stream tcp nowait root @bindir@/stunnel
|
||
\& stunnel @sysconfdir@/stunnel/imaps.conf
|
||
.Ve
|
||
.PP
|
||
Ponieważ w takich przypadkach połączenie na zdefiniowanym porcie
|
||
(tutaj \fIimaps\fR) nawiązuje osobny program (tutaj \fIinetd\fR), \fBstunnel\fR
|
||
nie może używać opcji \fIaccept\fR. W pliku konfiguracyjnym nie może
|
||
być również zdefiniowana żadna usługa (\fI[nazwa_usługi]\fR), ponieważ
|
||
konfiguracja taka pozwala na nawiązanie tylko jednego połączenia.
|
||
Wszystkie \fI\s-1OPCJE\s0 USŁUG\fR powinny być umieszczone razem z opcjami
|
||
globalnymi. Przykład takiej konfiguracji znajduje się w sekcji
|
||
\&\fIPRZYKŁADY\fR.
|
||
.SS "\s-1CERTYFIKATY\s0"
|
||
.IX Subsection "CERTYFIKATY"
|
||
Protokół \s-1TLS\s0 wymaga, aby każdy serwer przedstawiał się nawiązującemu
|
||
połączenie klientowi prawidłowym certyfikatem X.509.
|
||
Potwierdzenie tożsamości serwera polega na wykazaniu, że posiada on
|
||
odpowiadający certyfikatowi klucz prywatny.
|
||
Najprostszą metodą uzyskania certyfikatu jest wygenerowanie go przy pomocy
|
||
wolnego pakietu \fBOpenSSL\fR. Więcej informacji na temat generowania
|
||
certyfikatów można znaleźć na umieszczonych poniżej stronach.
|
||
.PP
|
||
Istotną kwestią jest kolejność zawartości pliku \fI.pem\fR.
|
||
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ć:
|
||
.PP
|
||
.Vb 8
|
||
\& \-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\-
|
||
\& [zakodowany klucz]
|
||
\& \-\-\-\-\-END RSA PRIVATE KEY\-\-\-\-\-
|
||
\& [pusta linia]
|
||
\& \-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
||
\& [zakodowany certyfikat]
|
||
\& \-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
||
\& [pusta linia]
|
||
.Ve
|
||
.SS "LOSOWOŚĆ"
|
||
.IX Subsection "LOSOWOŚĆ"
|
||
\&\fBstunnel\fR potrzebuje zainicjować \s-1PRNG \s0(generator liczb pseudolosowych),
|
||
gdyż protokół \s-1TLS\s0 wymaga do bezpieczeństwa kryptograficznego źródła
|
||
dobrej losowości. Następujące źródła są kolejno odczytywane aż do
|
||
uzyskania wystarczającej ilości entropii:
|
||
.IP "\(bu" 4
|
||
Zawartość pliku podanego w opcji \fIRNDfile\fR.
|
||
.IP "\(bu" 4
|
||
Zawartość pliku o nazwie określonej przez zmienną środowiskową
|
||
\&\s-1RANDFILE,\s0 o ile jest ona ustawiona.
|
||
.IP "\(bu" 4
|
||
Plik .rnd umieszczony w katalogu domowym użytkownika,
|
||
jeżeli zmienna \s-1RANDFILE\s0 nie jest ustawiona.
|
||
.IP "\(bu" 4
|
||
Plik podany w opcji '\-\-with\-random' w czasie konfiguracji programu.
|
||
.IP "\(bu" 4
|
||
Zawartość ekranu w systemie Windows.
|
||
.IP "\(bu" 4
|
||
Gniazdo egd, jeżeli użyta została opcja \fI\s-1EGD\s0\fR.
|
||
.IP "\(bu" 4
|
||
Gniazdo egd podane w opcji '\-\-with\-egd\-socket' w czasie konfiguracji
|
||
programu.
|
||
.IP "\(bu" 4
|
||
Urządzenie /dev/urandom.
|
||
.PP
|
||
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ć \s-1PRNG. W\s0 takim przypadku do zainicjowania
|
||
generatora należy użyć opcji \fIRNDfile\fR.
|
||
.PP
|
||
Plik \fIRNDfile\fR powinien zawierać dane losowe \*(-- również w tym sensie,
|
||
że powinny być one inne przy każdym uruchomieniu programu \fBstunnel\fR.
|
||
O ile nie użyta została opcja \fIRNDoverwrite\fR jest to robione
|
||
automatycznie. Do ręcznego uzyskania takiego pliku użyteczna
|
||
może być komenda \fIopenssl rand\fR dostarczana ze współczesnymi
|
||
wersjami pakietu \fBOpenSSL\fR.
|
||
.PP
|
||
Jeszcze jedna istotna informacja \*(-- jeżeli dostępne jest urządzenie
|
||
\&\fI/dev/urandom\fR biblioteka \fBOpenSSL\fR ma zwyczaj zasilania nim \s-1PRNG\s0 w trakcie
|
||
sprawdzania stanu generatora. W systemach z \fI/dev/urandom\fR urządzenie
|
||
to będzie najprawdopodobniej użyte, pomimo że znajduje się na samym końcu
|
||
powyższej listy. Jest to właściwość biblioteki \fBOpenSSL\fR, a nie programu
|
||
\&\fBstunnel\fR.
|
||
.SS "\s-1PARAMETRY DH\s0"
|
||
.IX Subsection "PARAMETRY DH"
|
||
Począwszy od wersji 4.40 \fBstunnel\fR zawiera w kodzie programu 2048\-bitowe
|
||
parametry \s-1DH. \s0 Od wersji 5.18 te początkowe wartości parametrów \s-1DH\s0 są
|
||
wymieniane na autogenerowane parametry tymczasowe.
|
||
Wygenerowanie parametrów \s-1DH\s0 może zająć nawet wiele minut.
|
||
.PP
|
||
Alternatywnie parametry \s-1DH\s0 można umieścić w pliku razem z certyfikatem,
|
||
co wyłącza generowanie parametrów tymczasowych:
|
||
.PP
|
||
.Vb 1
|
||
\& openssl dhparam 2048 >> stunnel.pem
|
||
.Ve
|
||
.SH "PLIKI"
|
||
.IX Header "PLIKI"
|
||
.ie n .IP "\fI\fI@sysconfdir\fI@/stunnel/stunnel.conf\fR" 4
|
||
.el .IP "\fI\f(CI@sysconfdir\fI@/stunnel/stunnel.conf\fR" 4
|
||
.IX Item "@sysconfdir@/stunnel/stunnel.conf"
|
||
plik konfiguracyjny programu
|
||
.SH "BŁĘDY"
|
||
.IX Header "BŁĘDY"
|
||
Opcja \fIexecArgs\fR oraz linia komend Win32 nie obsługuje cytowania.
|
||
.SH "ZOBACZ RÓWNIEŻ"
|
||
.IX Header "ZOBACZ RÓWNIEŻ"
|
||
.IP "\fItcpd\fR\|(8)" 4
|
||
.IX Item "tcpd"
|
||
biblioteka kontroli dostępu do usług internetowych
|
||
.IP "\fIinetd\fR\|(8)" 4
|
||
.IX Item "inetd"
|
||
\&'super\-serwer' internetowy
|
||
.IP "\fIhttp://www.stunnel.org/\fR" 4
|
||
.IX Item "http://www.stunnel.org/"
|
||
strona domowa programu \fBstunnel\fR
|
||
.IP "\fIhttp://www.openssl.org/\fR" 4
|
||
.IX Item "http://www.openssl.org/"
|
||
strona projektu \fBOpenSSL\fR
|
||
.SH "AUTOR"
|
||
.IX Header "AUTOR"
|
||
.IP "Michał Trojnara" 4
|
||
.IX Item "Michał Trojnara"
|
||
<\fIMichal.Trojnara@stunnel.org\fR>
|