968 lines
36 KiB
Groff
968 lines
36 KiB
Groff
.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
|
||
.\"
|
||
.\" 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" ''
|
||
'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.
|
||
.ie \nF \{\
|
||
. de IX
|
||
. tm Index:\\$1\t\\n%\t"\\$2"
|
||
..
|
||
. nr % 0
|
||
. rr F
|
||
.\}
|
||
.el \{\
|
||
. de IX
|
||
..
|
||
.\}
|
||
.\" ========================================================================
|
||
.\"
|
||
.IX Title "STUNNEL.PL 8"
|
||
.TH STUNNEL.PL 8 "2012.01.14" "4.53" "stunnel"
|
||
.\" 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-1SSL\s0
|
||
.SH "SKŁADNIA"
|
||
.IX Header "SKŁADNIA"
|
||
.IP "\fBUnix:\fR" 4
|
||
.IX Item "Unix:"
|
||
\&\fBstunnel\fR [<plik>] | \-fd n | \-help | \-version | \-sockets
|
||
.IP "\fB\s-1WIN32:\s0\fR" 4
|
||
.IX Item "WIN32:"
|
||
\&\fBstunnel\fR [ [\-install | \-uninstall | \-start | \-stop ] | \-exit]
|
||
[\-quiet] [<plik>] ] | \-help | \-version | \-sockets
|
||
.SH "OPIS"
|
||
.IX Header "OPIS"
|
||
Program \fBstunnel\fR został zaprojektowany do opakowywania w protokół \fI\s-1SSL\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-1SSL\s0\fR poprzez bezpieczne kanały \fI\s-1SSL\s0\fR.
|
||
.PP
|
||
\&\fBstunnel\fR pozwala dodać funkcjonalność \fI\s-1SSL\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 "<\fBplik\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\-install\fR (tylko \s-1NT/2000/XP\s0)" 4
|
||
.IX Item "-install (tylko NT/2000/XP)"
|
||
instaluj serwis \s-1NT\s0
|
||
.IP "\fB\-uninstall\fR (tylko \s-1NT/2000/XP\s0)" 4
|
||
.IX Item "-uninstall (tylko NT/2000/XP)"
|
||
odinstaluj serwis \s-1NT\s0
|
||
.IP "\fB\-start\fR (tylko \s-1NT/2000/XP\s0)" 4
|
||
.IX Item "-start (tylko NT/2000/XP)"
|
||
uruchom serwis \s-1NT\s0
|
||
.IP "\fB\-stop\fR (tylko \s-1NT/2000/XP\s0)" 4
|
||
.IX Item "-stop (tylko NT/2000/XP)"
|
||
zatrzymaj serwis \s-1NT\s0
|
||
.IP "\fB\-exit\fR (tylko Win32)" 4
|
||
.IX Item "-exit (tylko Win32)"
|
||
zatrzymaj uruchomiony program
|
||
.IP "\fB\-quiet\fR (tylko \s-1NT/2000/XP\s0)" 4
|
||
.IX Item "-quiet (tylko NT/2000/XP)"
|
||
nie wyświetlaj okienka informującego o pomyślnym zainstalowaniu lub
|
||
odinstalowaniu
|
||
.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\s0 \s-1GLOBALNE\s0"
|
||
.IX Subsection "OPCJE GLOBALNE"
|
||
.IP "\fBchroot\fR = katalog (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.
|
||
.IP "\fBcompression\fR = deflate | zlib | rle" 4
|
||
.IX Item "compression = deflate | zlib | rle"
|
||
wybór algorytmu kompresji przesyłanych danych
|
||
.Sp
|
||
domyślnie: bez kompresji
|
||
.Sp
|
||
Algorytm deflate jest standardową metodą kompresji zgodnie z \s-1RFC\s0 1951.
|
||
.Sp
|
||
Kompresja zlib zaimplementowana w OpenSSL 0.9.8 i nowszych nie jest
|
||
kompatybilna implementacją OpenSSL 0.9.7.
|
||
.Sp
|
||
Kompresja rle nie jest zaimplementowana w aktualnych wersjach OpenSSL.
|
||
.IP "\fBdebug\fR = poziom[.podsystem]" 4
|
||
.IX Item "debug = poziom[.podsystem]"
|
||
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
|
||
OpenSSL. Opcja jest dostępna z biblioteką OpenSSL 0.9.5a lub nowszą.
|
||
.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
|
||
Przykładowa konfiguracja umożliwiająca odczytanie klucza prywatnego z
|
||
urządzenia zgodnego z OpenSC:
|
||
.Sp
|
||
.Vb 7
|
||
\& engine=dynamic
|
||
\& engineCtrl=SO_PATH:/usr/lib/opensc/engine_pkcs11.so
|
||
\& engineCtrl=ID:pkcs11
|
||
\& engineCtrl=LIST_ADD:1
|
||
\& engineCtrl=LOAD
|
||
\& engineCtrl=MODULE_PATH:/usr/lib/pkcs11/opensc\-pkcs11.so
|
||
\& engineCtrl=INIT
|
||
\&
|
||
\& [service]
|
||
\& engineNum=1
|
||
\& key=id_45
|
||
.Ve
|
||
.IP "\fBengineCtrl\fR = <command>[:<parameter>]" 4
|
||
.IX Item "engineCtrl = <command>[:<parameter>]"
|
||
konfiguracja urządzenia kryptograficznego
|
||
.Sp
|
||
Specjalne komendy \*(L"\s-1LOAD\s0\*(R" i \*(L"\s-1INIT\s0\*(R" pozwalają na załadowanie i inicjalizację
|
||
modułu kryptograficznego urządzenia.
|
||
.IP "\fBfips\fR = yes | no" 4
|
||
.IX Item "fips = yes | no"
|
||
Włącz lub wyłącz tryb \s-1FIPS\s0 140\-2.
|
||
.Sp
|
||
Opcja pozwala wyłączyć wejście w tryb \s-1FIPS\s0, jeśli stunnel został skompilowany
|
||
ze wsparciem dla \s-1FIPS\s0 140\-2.
|
||
.Sp
|
||
domyślnie: yes (pracuj w trybie \s-1FIPS\s0 140\-2)
|
||
.IP "\fBforeground\fR = yes | no (tylko Unix)" 4
|
||
.IX Item "foreground = yes | no (tylko Unix)"
|
||
tryb pierwszoplanowy
|
||
.Sp
|
||
Użycie tej opcji powoduje, że \fIstunnel\fR nie przechodzi w tło logując
|
||
swoje komunikaty na konsolę zamiast przez \fIsyslog\fR (o ile nie użyto
|
||
opcji \fIoutput\fR).
|
||
.IP "\fBoutput\fR = plik" 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 kierowaniakomunikató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 = plik (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
|
||
.Sp
|
||
W wersjach biblioteki OpenSSL starszych niż 0.9.5a opcja ta określa
|
||
również liczbę bajtów wystarczających do zainicjowania \s-1PRNG\s0.
|
||
Nowsze wersje biblioteki mają wbudowaną funkcję określającą, czy
|
||
dostarczona ilość losowości jest wystarczająca do zainicjowania generatora.
|
||
.IP "\fBRNDfile\fR = plik" 4
|
||
.IX Item "RNDfile = plik"
|
||
ścieżka do pliku zawierającego losowe dane
|
||
.Sp
|
||
Biblioteka OpenSSL 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 = nazwa_serwisu (tylko Unix)" 4
|
||
.IX Item "service = nazwa_serwisu (tylko Unix)"
|
||
użyj parametru jako nazwy serwisu dla biblioteki \s-1TCP\s0 Wrapper w trybie \fIinetd\fR
|
||
.Sp
|
||
domyślnie: stunnel
|
||
.IP "\fBsetgid\fR = identyfikator_grupy (tylko Unix)" 4
|
||
.IX Item "setgid = identyfikator_grupy (tylko Unix)"
|
||
grupa z której prawami pracował będzie \fIstunnel\fR
|
||
.IP "\fBsetuid\fR = identyfikator_użytkownika (tylko Unix)" 4
|
||
.IX Item "setuid = identyfikator_użytkownika (tylko Unix)"
|
||
użytkownik, z którego prawami pracował będzie \fIstunnel\fR
|
||
.IP "\fBsocket\fR = a|l|r:option=value[:value]" 4
|
||
.IX Item "socket = a|l|r:option=value[:value]"
|
||
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\s0 \s-1INETD\s0\fR poniżej.
|
||
.IP "\fBaccept\fR = [adres:]port" 4
|
||
.IX Item "accept = [adres:]port"
|
||
nasłuchuje na połączenia na podanym adresie i porcie
|
||
.Sp
|
||
Jeżeli nie został podany adres, \fIstunnel\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 = katalog_CA" 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 \fIverify\fR. Pliki z certyfikatami muszą
|
||
posiadać specjalne nazwy \s-1XXXXXXXX\s0.0, gdzie \s-1XXXXXXXX\s0 jest skrótem
|
||
kryptograficznym reprezentacji \s-1DER\s0 nazwy podmiotu certyfikatu.
|
||
.Sp
|
||
Funkcja skrótu została zmieniona w wersji 1.0.0 biblioteki OpenSSL.
|
||
Należy wykonać c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x.
|
||
.Sp
|
||
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fICApath\fR jest określona
|
||
względem tego katalogu.
|
||
.IP "\fBCAfile\fR = plik_CA" 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ę \fIverify\fR.
|
||
.IP "\fBcert\fR = plik_pem" 4
|
||
.IX Item "cert = plik_pem"
|
||
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.
|
||
Certyfikat jest konieczny, aby używać programu w trybie serwera.
|
||
W trybie klienta certyfikat jest opcjonalny.
|
||
.IP "\fBciphers\fR = lista_szyfrów" 4
|
||
.IX Item "ciphers = lista_szyfrów"
|
||
lista dozwolonych szyfrów \s-1SSL\s0
|
||
.Sp
|
||
Parametrem tej opcji jest lista szyfrów, które będą użyte przy
|
||
otwieraniu nowych połączeń \s-1SSL\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-1SSL\s0)
|
||
.Sp
|
||
domyślnie: no (tryb serwerowy)
|
||
.IP "\fBconnect\fR = [adres:]port" 4
|
||
.IX Item "connect = [adres:]port"
|
||
połącz się ze zdalnym serwerem na podany port
|
||
.Sp
|
||
Jeżeli nie został podany adres, \fIstunnel\fR domyślnie łączy się
|
||
z lokalnym serwerem.
|
||
.Sp
|
||
Komenda może byc użyta wielokrotnie w pojedynczej sekcji
|
||
celem zapewnienia wysokiej niezawodności lub rozłożenia
|
||
ruchu pomiędzy wiele serwerów.
|
||
.IP "\fBCRLpath\fR = katalog_CRL" 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,
|
||
jeżeli użyta została opcja \fIverify\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 w wersji 1.0.0 biblioteki OpenSSL.
|
||
Należy wykonać c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x.
|
||
.Sp
|
||
Jeżeli zdefiniowano katalog \fIchroot\fR, to ścieżka do \fICRLpath\fR jest określona
|
||
względem tego katalogu.
|
||
.IP "\fBCRLfile\fR = plik_CRL" 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 opcję \fIverify\fR.
|
||
.IP "\fBcurve\fR = nid" 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 "\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 stunnel (klient \s-1VPN\s0, połączenie wdzwaniane).
|
||
.IP "\fBengineNum\fR = <numer urządzenia>" 4
|
||
.IX Item "engineNum = <numer urządzenia>"
|
||
wybierz urządzenie do odczyta klucza prywatnego
|
||
.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.
|
||
.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".
|
||
.Sp
|
||
.Vb 2
|
||
\& rr (round robin) \- sprawiedliwe rozłożenie obciążenia
|
||
\& prio (priority) \- użyj kolejności opcji w pliku konfiguracyjnym
|
||
.Ve
|
||
.Sp
|
||
domyślnie: rr
|
||
.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\s0 1413)
|
||
.IP "\fBkey\fR = plik_klucza" 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
|
||
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: yes
|
||
.IP "\fBlocal\fR = serwer" 4
|
||
.IX Item "local = serwer"
|
||
\&\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 "\fBsni\fR = nazwa_usługi:nazwa_serwera (tryb serwera)" 4
|
||
.IX Item "sni = nazwa_usługi:nazwa_serwera (tryb serwera)"
|
||
Użyj usługi jako podrzędnej (virtualnego serwera) dla rozszerzenia \s-1TLS\s0 Server
|
||
Name Indication (\s-1RFC\s0 3546).
|
||
.Sp
|
||
\&\fInazwa_usługi\fR wskazuje usługę nadrzędną, która odbiera połączenia od klientów
|
||
przy pomocy opcji \fIaccept\fR. \fInazwa_serwera\fR wskazuje nazwę serwera
|
||
wirtualnego. 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. 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. 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 wersji 1.0.0 biblioteki OpenSSL.
|
||
.IP "\fBsni\fR = nazwa_serwera (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\s0 3546).
|
||
.Sp
|
||
Opcja \fIsni\fR jest dostępna począwszy od wersji 1.0.0 biblioteki OpenSSL.
|
||
.IP "\fB\s-1OCSP\s0\fR = \s-1URL\s0" 4
|
||
.IX Item "OCSP = URL"
|
||
serwer \s-1OCSP\s0 do weryfikacji certyfikatów
|
||
.IP "\fBOCSPflag\fR = flaga" 4
|
||
.IX Item "OCSPflag = flaga"
|
||
flaga serwera \s-1OCSP\s0
|
||
.Sp
|
||
aktualnie wspierane flagi: \s-1NOCERTS\s0, \s-1NOINTERN\s0 \s-1NOSIGS\s0, \s-1NOCHAIN\s0, \s-1NOVERIFY\s0,
|
||
\&\s-1NOEXPLICIT\s0, \s-1NOCASIGN\s0, \s-1NODELEGATED\s0, \s-1NOCHECKS\s0, \s-1TRUSTOTHER\s0, \s-1RESPID_KEY\s0, \s-1NOTIME\s0
|
||
.Sp
|
||
Aby wyspecyfikować kilka flag należy użyć \fIOCSPflag\fR wielokrotnie.
|
||
.IP "\fBoptions\fR = opcje_SSL" 4
|
||
.IX Item "options = opcje_SSL"
|
||
opcje biblioteki OpenSSL
|
||
.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.
|
||
Aby wyspecyfikować kilka opcji należy użyć \fIoptions\fR wielokrotnie.
|
||
.Sp
|
||
Na przykład dla zachowania kompatybilności z błędami implementacji \s-1SSL\s0
|
||
w programie Eudora można użyć opcji:
|
||
.Sp
|
||
.Vb 1
|
||
\& options = DONT_INSERT_EMPTY_FRAGMENTS
|
||
.Ve
|
||
.IP "\fBprotocol\fR = protokół" 4
|
||
.IX Item "protocol = protokół"
|
||
negocjuj \s-1SSL\s0 podanym protokołem aplikacyjnym (np. \fIstarttls\fR lub \fIstls\fR)
|
||
.Sp
|
||
Opcji \fIprotocol\fR nie należy używać z szyfrowaniem \s-1SSL\s0 na osobnym porcie.
|
||
.Sp
|
||
Aktualnie wspierane protokoły:
|
||
.RS 4
|
||
.IP "\fIcifs\fR" 4
|
||
.IX Item "cifs"
|
||
Unieudokumentowane 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\s0 2817 \- \fIUpgrading to \s-1TLS\s0 Within \s-1HTTP/1\s0.1\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\s0 2595 \- \fIUsing \s-1TLS\s0 with \s-1IMAP\s0, \s-1POP3\s0 and \s-1ACAP\s0\fR
|
||
.IP "\fInntp\fR" 4
|
||
.IX Item "nntp"
|
||
Negocjacja \s-1RFC\s0 4642 \- \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\s0 2449 \- \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\s0 2487 \- \fI\s-1SMTP\s0 Service Extension for Secure \s-1SMTP\s0 over \s-1TLS\s0\fR
|
||
.RE
|
||
.RS 4
|
||
.RE
|
||
.IP "\fBprotocolAuthentication\fR = uwierzytelnienie" 4
|
||
.IX Item "protocolAuthentication = uwierzytelnienie"
|
||
rodzaj uwierzytelnienia do negocjacji protokołu
|
||
.Sp
|
||
aktualnie wspierane: basic, \s-1NTLM\s0
|
||
.Sp
|
||
Obecnie typ uwierzytelnienia ma zastosowanie wyłącznie w protokole 'connect'.
|
||
.Sp
|
||
domyślnie: basic
|
||
.IP "\fBprotocolHost\fR = adres:port" 4
|
||
.IX Item "protocolHost = adres:port"
|
||
adres docelowy do negocjacji protokołu
|
||
.IP "\fBprotocolPassword\fR = hasło" 4
|
||
.IX Item "protocolPassword = hasło"
|
||
hasło do negocjacji protokołu
|
||
.IP "\fBprotocolUsername\fR = użytkownik" 4
|
||
.IX Item "protocolUsername = użytkownik"
|
||
nazwa użytkownika do negocjacji protokołu
|
||
.IP "\fBpty\fR = yes | no (tylko Unix)" 4
|
||
.IX Item "pty = yes | no (tylko Unix)"
|
||
alokuj pseudoterminal dla programu uruchamianego w opcji 'exec'
|
||
.IP "\fBretry\fR = yes | no (tylko Unix)" 4
|
||
.IX Item "retry = yes | no (tylko Unix)"
|
||
połącz ponownie sekcję connect+exec po rozłączeniu
|
||
.Sp
|
||
domyślnie: no
|
||
.IP "\fBsession\fR = przeterminowanie_pamięci_podręcznej_sesji" 4
|
||
.IX Item "session = przeterminowanie_pamięci_podręcznej_sesji"
|
||
czas w sekundach, po którym sesja \s-1SSL\s0 zostanie usunięta z pamięci podręcznej
|
||
.IP "\fBsessiond\fR = adres:port" 4
|
||
.IX Item "sessiond = adres:port"
|
||
adres sessiond \- servera cache sesji \s-1SSL\s0
|
||
.IP "\fBsslVersion\fR = wersja" 4
|
||
.IX Item "sslVersion = wersja"
|
||
wersja protokołu \s-1SSL\s0
|
||
.Sp
|
||
Dozwolone opcje: all, SSLv2, SSLv3, TLSv1
|
||
.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 = liczba_sekund" 4
|
||
.IX Item "TIMEOUTbusy = liczba_sekund"
|
||
czas oczekiwania na spodziewane dane
|
||
.IP "\fBTIMEOUTclose\fR = liczba_sekund" 4
|
||
.IX Item "TIMEOUTclose = liczba_sekund"
|
||
czas oczekiwania na close_notify (ustaw na 0, jeżeli klientem jest \s-1MSIE\s0)
|
||
.IP "\fBTIMEOUTconnect\fR = liczba_sekund" 4
|
||
.IX Item "TIMEOUTconnect = liczba_sekund"
|
||
czas oczekiwania na nawiązanie połączenia
|
||
.IP "\fBTIMEOUTidle\fR = liczba_sekund" 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 \fIstunnel\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 stunnela.
|
||
.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 następujących ustawień iptables
|
||
(na przykład w pliku /etc/rc.local lub analogicznym):
|
||
.Sp
|
||
.Vb 2
|
||
\& /sbin/iptables \-I INPUT \-i eth0 \-p tcp \-\-dport <port_stunnela> \-j ACCEPT
|
||
\& /sbin/iptables \-t nat \-I PREROUTING \-i eth0 \-p tcp \-\-dport <port_przekierowany> \-j DNAT \-\-to\-destination <lokalne_ip>:<port_stunnela>
|
||
.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 = poziom" 4
|
||
.IX Item "verify = poziom"
|
||
weryfikuj certyfikat drugiej strony połączenia
|
||
.RS 4
|
||
.IP "\fIpoziom 0\fR \- zarządaj certyfikatu i zignoruj go" 4
|
||
.IX Item "poziom 0 - zarządaj certyfikatu i zignoruj go"
|
||
.PD 0
|
||
.IP "\fIpoziom 1\fR \- weryfikuj, jeżeli został przedstawiony" 4
|
||
.IX Item "poziom 1 - weryfikuj, jeżeli został przedstawiony"
|
||
.IP "\fIpoziom 2\fR \- weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji" 4
|
||
.IX Item "poziom 2 - weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji"
|
||
.IP "\fIpoziom 3\fR \- weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony" 4
|
||
.IX Item "poziom 3 - weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony"
|
||
.IP "\fIpoziom 4\fR \- weryfikuj z certyfikatem drugiej strony ignorując łańcuch \s-1CA\s0" 4
|
||
.IX Item "poziom 4 - weryfikuj z certyfikatem drugiej strony ignorując łańcuch CA"
|
||
.IP "\fIdomyślnie\fR \- nie weryfikuj" 4
|
||
.IX Item "domyślnie - nie weryfikuj"
|
||
.RE
|
||
.RS 4
|
||
.RE
|
||
.PD
|
||
.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' stunnel nie będzie mógł załadować
|
||
ponownie konfiguracji wykorzystującej uprzywilejowane (<1024) porty.
|
||
.Sp
|
||
Jeżeli wykorzystywana jest opcja 'chroot' stunnel 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 stunnel.
|
||
.IP "\s-1SIGTERM\s0, \s-1SIGQUIT\s0, \s-1SIGINT\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
|
||
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
|
||
.SH "NOTKI"
|
||
.IX Header "NOTKI"
|
||
.SS "\s-1OGRANICZENIA\s0"
|
||
.IX Subsection "OGRANICZENIA"
|
||
\&\fIstunnel\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-1SSL\s0\fR.
|
||
.SS "\s-1TRYB\s0 \s-1INETD\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 /usr/bin/stunnel
|
||
\& stunnel /etc/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-1SSL\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 \fIOpenSSL\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-1SSL\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
|
||
Współczesne (>=0.9.5a) wersje biblioteki \fIOpenSSL\fR automatycznie
|
||
zaprzestają ładowania kolejnych danych w momencie uzyskania wystarczającej
|
||
ilości entropii. Wcześniejsze wersje biblioteki wykorzystają wszystkie
|
||
powyższe źródła, gdyż nie istnieje tam funkcja pozwalająca określić,
|
||
czy uzyskano już wystarczająco dużo danych.
|
||
.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\s0. W 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 \fIOpenSSL\fR.
|
||
.PP
|
||
Jeszcze jedna istotna informacja \*(-- jeżeli dostępne jest urządzenie
|
||
\&\fI/dev/urandom\fR biblioteka \fIOpenSSL\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 \fIOpenSSL\fR, a nie programu
|
||
\&\fIstunnel\fR.
|
||
.SS "\s-1PARAMETRY\s0 \s-1DH\s0"
|
||
.IX Subsection "PARAMETRY DH"
|
||
Począwszy od wersji 4.40 stunnel zawiera w kodzie programu 2048\-bitowe
|
||
parametry \s-1DH\s0.
|
||
.PP
|
||
Alternatywnie parametry \s-1DH\s0 można umieścić w pliku razem z certyfikatem:
|
||
.PP
|
||
.Vb 1
|
||
\& openssl dhparam 2048 >> stunnel.pem
|
||
.Ve
|
||
.PP
|
||
Wygenerowanie parametrów \s-1DH\s0 może zająć nawet wiele minut.
|
||
.SH "PLIKI"
|
||
.IX Header "PLIKI"
|
||
.IP "\fIstunnel.conf\fR" 4
|
||
.IX Item "stunnel.conf"
|
||
plik konfiguracyjny programu
|
||
.SH "BŁĘDY"
|
||
.IX Header "BŁĘDY"
|
||
Opcja \fIexecargs\fR 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 \fIstunnel\fR
|
||
.IP "\fIhttp://www.openssl.org/\fR" 4
|
||
.IX Item "http://www.openssl.org/"
|
||
strona projektu \fIOpenSSL\fR
|
||
.SH "AUTOR"
|
||
.IX Header "AUTOR"
|
||
.IP "Michał Trojnara" 4
|
||
.IX Item "Michał Trojnara"
|
||
<\fIMichal.Trojnara@mirt.net\fR>
|