FreeBSD Manual Pages
STUNNEL(8) stunnel TLS Proxy STUNNEL(8) NAZWA stunnel - uniwersalny tunel protokoAu TLS AADNIA * Unix: stunnel [PLIK] | -fd N | -help | -version | -sockets | -options * WIN32: stunnel [ [ -install | -uninstall | -start | -stop | -reload | -reopen | -exit ] [-quiet] [PLIK] ] | -help | -version | -sockets | -op- tions OPIS Program stunnel zostaA zaprojektowany do opakowywania w protokA^3A TLS poAAczeA pomiAdzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami. Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania przy pomocy inetd. Stunnel pozwala na proste zestawienie komunikacji serw- erA^3w nie posiadajAcych funkcjonalnoAci TLS poprzez bezpieczne kanaAy TLS. stunnel pozwala dodaA funkcjonalnoAA TLS do powszechnie stosowanych de- monA^3w inetd, np. pop3 lub imap, do samodzielnych demonA^3w, np. nntp, smtp lub http, a nawet tunelowaA ppp poprzez gniazda sieciowe bez zmian w kodzie AorA^3dAowym. OPCJE * PLIK uA1/4yj podanego pliku konfiguracyjnego * -fd N (tylko Unix) wczytaj konfiguracjA z podanego deskryptora pliku * -help drukuj listA wspieranych opcji * -version drukuj wersjA programu i domyAlne wartoAci parametrA^3w * -sockets drukuj domyAlne opcje gniazd * -options drukuj wspierane opcje TLS * -install (tylko Windows NT lub nowszy) instaluj serwis NT * -uninstall (tylko Windows NT lub nowszy) odinstaluj serwis NT * -start (tylko Windows NT lub nowszy) uruchom serwis NT * -stop (tylko Windows NT lub nowszy) zatrzymaj serwis NT * -reload (tylko Windows NT lub nowszy) przeAaduj plik konfiguracyjny uruchomionego serwisu NT * -reopen (tylko Windows NT lub nowszy) otwA^3rz ponownie log uruchomionego serwisu NT * -exit (tylko Win32) zatrzymaj uruchomiony program * -quiet (tylko Win32) nie wyAwietlaj okienek z komunikatami PLIK KONFIGURACYJNY Linia w pliku konfiguracyjnym moA1/4e byA: * pusta (ignorowana) * komentarzem rozpoczynajAcym siA znakiem `;' (ignorowana) * parA `nazwa_opcji = wartoAA_opcji' * tekstem `[nazwa_usAugi]' wskazujAcym poczAtek definicji usAugi Parametr adres moA1/4e byA: * numerem portu * oddzielonA Arednikiem parA adresu (IPv4, IPv6, lub nazwA domenowA) i nu- meru portu * AcieA1/4kA do gniazda Unix (tylko Unix) OPCJE GLOBALNE * chroot = KATALOG (tylko Unix) katalog roboczego korzenia systemu plikA^3w Opcja okreAla katalog, w ktA^3rym uwiAziony zostanie proces programu stunnel tuA1/4 po jego inicjalizacji, a przed rozpoczAciem odbierania poAAczeA. AcieA1/4ki podane w opcjach CApath, CRLpath, pid oraz exec muszA byA umieszczone wewnAtrz katalogu podanego w opcji chroot i okre- Alone wzglAdem tego katalogu. NiektA^3re funkcje systemu operacyjnego mogA wymagaA dodatkowych plikA^3w umieszczonych w katalogu podanego w parametrze chroot: * opA^3Aonione rozwiniAcie adresA^3w DNS typowo wymaga /etc/nsswitch.conf i /etc/resolv.conf * lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone * niektA^3re inne pliki mogA potrzebowaA plikA^3w urzAdzeA, np. /dev/zero lub /dev/null * compression = deflate | zlib | zstd | brotli wybA^3r algorytmu kompresji przesyAanych danych domyAlnie: bez kompresji Kompresja danych jest dostApna wyAAcznie dla protokoAu TLS 1.2 i starszych. Wymaga obniA1/4enia securityLevel do 1 poczAwszy od OpenSSL 1.1.0. Algorytmy zlib, zstd i brotli sA wyAAczone w domyAlnej konfiguracji OpenSSL. Algorytmy zstd i brotli zostaAy dodane w OpenSSL 3.2. Kompresja danych stanowi ryzyko w aplikacjach, ktA^3re umoA1/4liwiajA na- pastnikowi wstrzykniAcie wybranego tekstu jawnego. Algorytm deflate jest standardowA metodA kompresji zgodnie z RFC 1951. Uwaga: Kompresja TLS moA1/4e umoA1/4liwiaA ataki prowadzAce do odzyskania tekstu jawnego, takie jak CRIME, gdy dane kontrolowane przez atakujAcego sA kompresowane razem danymi chronionymi. * debug = [PODSYSTEM].POZIOM szczegA^3AowoAA logowania Poziom logowania moA1/4na okreAliA 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 sA komunikaty o poziomie niA1/4szym (nu- merycznie) lub rA^3wnym podanemu. DomyAlnym poziomem jest notice (5). Jakkolwiek uA1/4ycie debug = debug lub debug = 7 zapewnia najbardziej szczegA^3Aowe logi, ich zawartoAA jest uA1/4yteczna jedynie dla pro- gramistA^3w zajmujAcych siA stunnelem. UA1/4yj tego poziomu logowania jedynie jeAli jesteA programistkA/programistA stunnela, albo przygotowu- jesz szczegA^3Aowe informacje celem przesAania do wsparcia technicznego. W przeciwnym wypadku prA^3ba analizy zawartoAci logA^3w b"Adzie jedynie AorA^3dAem dodatkowego zamieszania. O ile nie wyspecyfikowano podsystemu uA1/4yty bAdzie domyAlny: daemon. Podsystemy nie sA wspierane przez platformA Win32. WielkoAA liter jest ignorowana zarA^3wno dla poziomu jak podsystemu. * EGD = ACIEA>>KA_DO_EGD (tylko Unix) AcieA1/4ka do gniazda programu Entropy Gathering Daemon Opcja pozwala okreAliA AcieA1/4kA do gniazda programu Entropy Gathering Daemon uA1/4ywanego do zainicjalizowania generatora ciAgA^3w pseudolosowych biblioteki OpenSSL. * engine = auto | IDENTYFIKATOR_URZADZENIA wybA^3r silnika kryptograficznego domyAlnie: bez wykorzystania silnikA^3w kryptograficznych Sekcja PRZYKAADY zawiera przykAadowe konfiguracje wykorzystujAce silniki kryptograficzne. * engineCtrl = KOMENDA[:PARAMETR] konfiguracja silnika kryptograficznego * engineDefault = LISTA_ZADAA lista zadaA OpenSSL oddelegowanych do bieA1/4Acego silnika Parametrem jest lista oddzielonych przecinkami zadaA OpenSSL, ktA^3re majA zostaA oddelegowane do bieA1/4Acego silnika kryptograficznego. W zaleA1/4noAci od konkretnego silnika dostApne mogA byA nastApujAce zadania: ALL, RSA, DSA, ECDH, ECDSA, DH, RAND, CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1. * fips = yes | no tryb FIPS 140-2 Opcja pozwala wyAAczyA wejAcie w tryb FIPS, jeAli stunnel zostaA skompi- lowany ze wsparciem dla FIPS 140-2. domyAlnie: no (od wersji 5.00) * foreground = yes | quiet | no (tylko Unix) tryb pierwszoplanowy UA1/4ycie tej opcji powoduje, A1/4e stunnel nie przechodzi w tAo. Parametr yes powoduje dodatkowo, A1/4e komunikaty diagnostyczne logowane sA na standardowy strumieA bAAdA^3w (stderr) oprA^3cz wyjAA zdefin- iowanych przy pomocy opcji syslog i output. * iconActive = PLIK_Z_IKONKA (tylko GUI) ikonka wyAwietlana przy obecnoAci aktywnych poAAczeA do usAugi W systemie Windows ikonka to plik .ico zawierajAcy obrazek 16x16 pikseli. * iconError = PLIK_Z_IKONKA (tylko GUI) ikonka wyAwietlana, jeA1/4eli nie zostaA zaAadowany poprawny plik konfig- uracyjny W systemie Windows ikonka to plik .ico zawierajAcy obrazek 16x16 pikseli. * iconIdle = PLIK_Z_IKONKA (tylko GUI) ikonka wyAwietlana przy braku aktywnych poAAczeA do usAugi W systemie Windows ikonka to plik .ico zawierajAcy obrazek 16x16 pikseli. * log = append | overwrite obsAuga logA^3w Ta opcja pozwala okreAliA, czy nowe logi w pliku (okreAlonym w opcji out- put) bAdA dodawane czy nadpisywane. domyAlnie: append * output = PLIK plik, do ktA^3rego dopisane zostanA logi UA1/4ycie tej opcji powoduje dopisanie logA^3w do podanego pliku. Do kierowania komunikatA^3w na standardowe wyjAcie (na przykAad po to, A1/4eby zalogowaA je programem splogger z pakietu daemontools) moA1/4na podaA jako parametr urzAdzenie /dev/stdout. * pid = PLIK (tylko Unix) poAoA1/4enie pliku z numerem procesu JeA1/4eli argument jest pusty, plik nie zostanie stworzony. JeA1/4eli zdefiniowano katalog chroot, to AcieA1/4ka do pid jest okre- Alona wzglAdem tego katalogu. * provider = PROVIDER_ID OkreAla identyfikator dostawcy (provider), ktA^3ry ma byA uA1/4ywany. PROVIDER_ID to unikalny identyfikator wskazujAcy na konkretnego dostawcA usAug kryptograficznych. Opcja ta wymaga biblioteki OpenSSL w wersji 3.0 lub nowszej. * providerParameter = PROVIDER_ID:PARAMETER=VALUE Ustawia okreAlony parametr dla wskazanego dostawcy. PROVIDER_ID identy- fikuje dostawcA, PARAMETER to nazwa parametru, a VALUE to jego wartoAA. Ta opcja pozwala na dostosowanie konfiguracji wybranego dostawcy usAug kryptograficznych. Opcja ta wymaga biblioteki OpenSSL w wersji 3.5 lub nowszej. * RNDbytes = LICZBA_BAJTAW liczba bajtA^3w do zainicjowania generatora pseudolosowego * RNDfile = PLIK AcieA1/4ka do pliku zawierajAcego losowe dane Biblioteka OpenSSL uA1/4yje danych z tego pliku do zainicjowania genera- tora pseudolosowego. * RNDoverwrite = yes | no nadpisz plik nowymi wartoAciami pseudolosowymi domyAlnie: yes (nadpisz) * service = SERWIS (tylko Unix) nazwa usAugi Podana nazwa usAugi bAdzie uA1/4ywana jako nazwa usAugi dla inicjalizacji sysloga, oraz dla biblioteki TCP Wrapper w trybie inetd. ChociaA1/4 technicznie moA1/4na uA1/4yA tej opcji w trybie w sekcji usAug, to jest ona uA1/4yteczna jedynie w opcjach globalnych. domyAlnie: stunnel * setEnv = VAR_NAME=VALUE Zmienia lub dodaje zmiennA ArodowiskowA dla procesA^3w potomnych. JeAli VAR_NAME juA1/4 istnieje, jej wartoAA zostanie zaktualizowana; w przeci- wnym razie zostanie utworzona nowa zmienna. Modyfikacja dotyczy tylko uruchamianych procesA^3w potomnych i nie wpAywa na bieA1/4Ace Arodowisko. * syslog = yes | no (tylko Unix) wAAcz logowanie poprzez mechanizm syslog domyAlnie: yes (wAAcz) * taskbar = yes | no (tylko WIN32) wAAcz ikonkA w prawym dolnym rogu ekranu domyAlnie: yes (wAAcz) OPCJE USoAUG KaA1/4da sekcja konfiguracji usAugi zaczyna siA jej nazwA ujAtA w nawias kwadratowy. Nazwa usAugi uA1/4ywana jest do kontroli dostApu przez bib- liotekA libwrap (TCP wrappers) oraz pozwala rozrA^3A1/4niA poszczegA^3lne usAugi w logach. JeA1/4eli stunnel ma zostaA uA1/4yty w trybie inetd, gdzie za odebranie poAAczenia odpowiada osobny program (zwykle inetd, xinetd lub tcpserver), naleA1/4y przeczytaA sekcjA TRYB INETD poniA1/4ej. * accept = [HOST:]PORT nasAuchuje na poAAczenia na podanym adresie i porcie JeA1/4eli nie zostaA podany adres, stunnel domyAlnie nasAuchuje na wszys- tkich adresach IPv4 lokalnych interfejsA^3w. Aby nasAuchiwaA na wszystkich adresach IPv6 naleA1/4y uA1/4yA: accept = :::port * CAengine = IDENTYFIKATOR_CA_W_ENGINE Aaduje zaufane certyfikaty Centrum certyfikacji z silnika Opcja pozwala okreAliA poAoA1/4enie pliku zawierajAcego certyfikaty uA1/4ywane przez opcjA verifyChain lub verifyPeer. Opcja moA1/4e byA uA1/4yta wielokrotnie w pojedynczej sekcji. Aktualnie wspierane silniki: pkcs11, cng. * CApath = KATALOG_CA Aaduje zaufane certyfikaty Centrum certyfikacji z katalogu Opcja okreAla katalog, w ktA^3rym stunnel bAdzie szukaA certyfikatA^3w, jeA1/4eli uA1/4yta zostaAa opcja verifyChain lub verifyPeer. Pliki z certyfikatami muszA posiadaA specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrA^3tem kryptograficznym reprezentacji DER nazwy podmiotu certy- fikatu. Ta opcja moA1/4e byA rA^3wnieA1/4 uA1/4yta do dostarczenia certyfikatu root CA, ktA^3ry jest niezbAdny do prawidAowej weryfikacji OCSP stapling w trybie serwera. Funkcja skrA^3tu zostaAa zmieniona w OpenSSL 1.0.0. NaleA1/4y wykonaA c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x. JeA1/4eli zdefiniowano katalog chroot, to AcieA1/4ka do CApath jest okre- Alona wzglAdem tego katalogu. * CAfile = PLIK_CA Aaduje zaufane certyfikaty Centrum certyfikacji z pliku Opcja pozwala okreAliA poAoA1/4enie pliku zawierajAcego certyfikaty uA1/4ywane przez opcjA verifyChain lub verifyPeer. Ta opcja moA1/4e byA rA^3wnieA1/4 uA1/4yta do dostarczenia certyfikatu root CA, ktA^3ry jest niezbAdny do prawidAowej weryfikacji OCSP stapling w trybie serwera. * CAstore = URI_CA Aaduje zaufane certyfikaty Centrum certyfikacji z zasobu wskazanego przez URI Opcja umoA1/4liwia zaAadowanie certyfikatA^3w CA z zewnAtrznego magazynu obsAugiwanego przez mechanizm OSSL_STORE, takiego jak moduA PKCS#11 (np. token sprzAtowy), systemowy magazyn certyfikatA^3w lub zasA^3b sieciowy. Opcja moA1/4e byA stosowana niezaleA1/4nie od CAfile i CAdir, analog- icznie sAuA1/4y do walidacji AaAcucha certyfikatA^3w przy uA1/4yciu opcji verifyChain lub verifyPeer, a takA1/4e do weryfikacji OCSP stapling po stronie serwera. Opcja ta wymaga biblioteki OpenSSL w wersji 3.0 lub nowszej. * cert = PLIK_CERT | URI plik z AaAcuchem certyfikatA^3w Opcja okreAla poAoA1/4enie pliku zawierajAcego certyfikaty uA1/4ywane przez program stunnel do uwierzytelnienia siA przed drugA stronA poAAczenia. Plik powinien zawieraA kompletny AaAcuch certyfikatA^3w poczAwszy od certyfikatu klienta/serwera, a skoAczywszy na samopodpisanym certyfikacie gAA^3wnego CA. ObsAugiwane sA pliki w formacie PEM lub P12. Certyfikat jest konieczny, aby uA1/4ywaA programu w trybie serwera. W trybie klienta certyfikat jest opcjonalny. Opcja cert moA1/4e byA podana wielokrotnie. Pierwszy napotkany certy- fikat zostanie uA1/4yty jako certyfikat serwera lub klienta, natomiast kolejne bAdA traktowane jako elementy poArednie AaAcucha. Ta funkcjonal- noAA wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. JeA1/4eli uA1/4ywany jest silnik kryptograficzny lub provider, to opcja cert pozwala wybraA identyfikator (PKCS#11 URI) uA1/4ywanego certyfikatu. Uwaga: provider wymaga OpenSSL 3.0 lub nowszego * checkEmail = EMAIL adres email podmiotu przedstawionego certyfikatu Pojedyncza sekcja moA1/4e zawieraA wiele wystApieA opcji checkEmail. Certyfikaty sA akceptowane, jeA1/4eli sekcja nie weryfikuje podmiotu cer- tyfikatu, albo adres email przedstawionego certyfikatu pasuje do jednego z adresA^3w email okreAlonych przy pomocy checkEmail. Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. * checkHost = NAZWA_SERWERA nazwa serwera podmiotu przedstawionego certyfikatu Pojedyncza sekcja moA1/4e zawieraA wiele wystApieA opcji checkHost. Cer- tyfikaty sA akceptowane, jeA1/4eli sekcja nie weryfikuje podmiotu certy- fikatu, albo nazwa serwera przedstawionego certyfikatu pasuje do jednego nazw okreAlonych przy pomocy checkHost. Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. * checkIP = IP adres IP podmiotu przedstawionego certyfikatu Pojedyncza sekcja moA1/4e zawieraA wiele wystApieA opcji checkIP. Certy- fikaty sA akceptowane, jeA1/4eli sekcja nie weryfikuje podmiotu certy- fikatu, albo adres IP przedstawionego certyfikatu pasuje do jednego z adresA^3w IP okreAlonych przy pomocy checkIP. Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. * ciphers = LISTA_SZYFRAW lista dozwolonych szyfrA^3w dla protokoAA^3w SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2 Ta opcja nie wpAywa na listA parametrA^3w kryptograficznych dla protokoAu TLSv1.3 Parametrem tej opcji jest lista szyfrA^3w, ktA^3re bAdA uA1/4yte przy otwieraniu nowych poAAczeA TLS, np.: DES-CBC3-SHA:IDEA-CBC-MD5 * ciphersuites = LISTA_PARAMETRAW_KRYPTOGRAFICZNYCH lista dozwolonych parametrA^3w kryptograficznych dla protokoAu TLSv1.3 Parametrem tej opcji sA listy parametrA^3w kryptograficznych w kolejnoAci ich preferowania. PoczAwszy od OpenSSL 3.0 opcja ciphersuites ignoruje nieznane szyfry. Opcja ciphersuites jest dostApna poczAwszy od OpenSSL 1.1.1. domyAlnie: TLS_CHACHA20_POLY1305_SHA256: TLS_AES_256_GCM_SHA384: TLS_AES_128_GCM_SHA256 * client = yes | no tryb kliencki (zdalna usAuga uA1/4ywa TLS) domyAlnie: no (tryb serwerowy) * config = KOMENDA[:PARAMETR] komenda konfiguracyjna OpenSSL Komenda konfiguracyjna OpenSSL zostaje wykonana z podanym parametrem. Pozwala to na wydawanie komend konfiguracyjnych OpenSSL z pliku konfigu- racyjnego stunnela. DostApne komendy opisane sA w podrAczniku SSL_CONF_cmd(3ssl). MoA1/4liwe jest wyspecyfikowanie wielu opcji OpenSSL przez wielokrotne uA1/4ycie komendy config. Zamiast wyAAczaA config = Curves:list_curves uA1/4yj opcji curves w celu ustawienia krzywych eliptycznych. Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. * connect = [HOST:]PORT poAAcz siA ze zdalnym serwerem na podany port JeA1/4eli nie zostaA podany adres, stunnel domyAlnie AAczy siA z lokalnym serwerem. Komenda moA1/4e byA uA1/4yta wielokrotnie w pojedynczej sekcji celem za- pewnienia wysokiej niezawodnoAci lub rozAoA1/4enia ruchu pomiAdzy wiele serwerA^3w. * CRLpath = KATALOG_CRL katalog List OdwoAanych CertyfikatA^3w (CRL) Opcja okreAla katalog, w ktA^3rym stunnel bAdzie szukaA list CRL uA1/4ywanych przez opcje verifyChain i verifyPeer. Pliki z listami CRL muszA posiadaA specjalne nazwy XXXXXXXX.r0, gdzie XXXXXXXX jest skrA^3tem listy CRL. Funkcja skrA^3tu zostaAa zmieniona OpenSSL 1.0.0. NaleA1/4y wykonaA c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x. JeA1/4eli zdefiniowano katalog chroot, to AcieA1/4ka do CRLpath jest okreAlona wzglAdem tego katalogu. * CRLfile = PLIK_CRL plik List OdwoAanych CertyfikatA^3w (CRL) Opcja pozwala okreAliA poAoA1/4enie pliku zawierajAcego listy CRL uA1/4ywane przez opcje verifyChain i verifyPeer. * curves = lista krzywe ECDH odddzielone `:' Uwaga: ta opcja wpAywa tylko na gniazda w trybie serwera. Wersje OpenSSL starsze niA1/4 1.1.1 pozwalajA na uA1/4ycie tylko jednej krzywej. ListA dostApnych krzywych moA1/4na uzyskaA poleceniem: openssl ecparam -list_curves domyAlnie: X25519:P-256:X448:P-521:P-384 (poczAwszy od OpenSSL 1.1.1) prime256v1 (OpenSSL starszy niA1/4 1.1.1) * logId = TYP typ identyfikatora poAAczenia klienta Identyfikator ten pozwala rozrA^3A1/4niA wpisy w logu wygenerowane dla poszczegA^3lnych poAAczeA. Aktualnie wspierane typy: * sequential Kolejny numer poAAczenia jest unikalny jedynie w obrAbie pojedynczej instancji programu stunnel, ale bardzo krA^3tki. Jest on szczegA^3lnie uA1/4yteczny przy rAcznej analizie logA^3w. * unique Ten rodzaj identyfikatora jest globalnie unikalny, ale znacznie dAuA1/4szy, niA1/4 kolejny numer poAAczenia. Jest on szczegA^3lnie uA1/4yteczny przy zautomatyzowanej analizie logA^3w. * thread Identyfikator wAtku systemu operacyjnego nie jest ani unikalny (nawet w obrAbie pojedynczej instancji programu stunnel), ani krA^3tki. Jest on szczegA^3lnie uA1/4yteczny przy diagnozowaniu problemA^3w z opro- gramowaniem lub konfiguracjA. * process Identyfikator procesu (PID) moA1/4e byA uA1/4yteczny w trybie inetd. domyAlnie: sequential * debug = POZIOM szczegA^3AowoAA logowania Poziom logowania moA1/4na okreAliA 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 sA komunikaty o poziomie niA1/4szym (nu- merycznie) lub rA^3wnym podanemu. Do uzyskania najwyA1/4szego poziomu szczegA^3AowoAci moA1/4na uA1/4yA opcji debug = debug lub debug = 7. DomyAlnym poziomem jest notice (5). * delay = yes | no opA^3Aonij rozwiniAcie adresu DNS podanego w opcji connect Opcja jest przydatna przy dynamicznym DNS, albo gdy usAuga DNS nie jest dostApna przy starcie programu stunnel (klient VPN, poAAczenie wdzwani- ane). OpA^3Aonione rozwijanie adresu DNS jest wAAczane automatycznie, jeA1/4eli nie powiedzie siA rozwiniAcie ktA^3regokolwiek z adresA^3w connect dla danej usAugi. OpA^3Aonione rozwijanie adresu automatycznie aktywuje failover = prio. domyAlnie: no * engineId = NUMER_URZADZENIA wybierz silnik kryptograficzny dla usAugi * engineNum = NUMER_URZADZENIA wybierz silnik kryptograficzny dla usAugi UrzAdzenia sA numerowane od 1 w gA^3rA. * exec = ACIEA>>KA_DO_PROGRAMU wykonaj lokalny program przystosowany do pracy z superdemonem inetd JeA1/4eli zdefiniowano katalog chroot, to AcieA1/4ka do exec jest okre- Alona wzglAdem tego katalogu. Na platformach Unix ustawiane sA nastApujAce zmienne Arodowiskowe: RE- MOTE_HOST, REMOTE_PORT, SSL_CLIENT_DN, SSL_CLIENT_I_DN. * execArgs = $0 $1 $2 ... argumenty do opcji exec wAAcznie z nazwA programu ($0) Cytowanie nie jest wspierane w obecnej wersji programu. Argumenty sA rozdzielone dowolnA liczbA biaAych znakA^3w. * failover = rr | prio Strategia wybierania serwerA^3w wyspecyfikowanych parametrami "connect". * rr round robin - sprawiedliwe rozAoA1/4enie obciAA1/4enia * prio priority - uA1/4yj kolejnoAci opcji w pliku konfiguracyjnym domyAlnie: prio * ident = NAZWA_UA>>YTKOWNIKA weryfikuj nazwA zdalnego uA1/4ytkownika korzystajAc z protokoAu IDENT (RFC 1413) * include = KATALOG wczytaj fragmenty plikA^3w konfiguracyjnych z podanego katalogu Pliki sA wczytywane w rosnAcej kolejnoAci alfabetycznej ich nazw. Rekomendowana konwencja nazewnictwa plikA^3w dla opcji globalnych: 00-global.conf dla lokalnych opcji usAug: 01-service.conf 02-service.conf * key = PLIK_KLUCZA | URI klucz prywatny do certyfikatu podanego w opcji cert Klucz prywatny jest potrzebny do uwierzytelnienia wAaAciciela certy- fikatu. PoniewaA1/4 powinien on byA zachowany w tajemnicy, prawa do jego odczytu powinien mieA wyAAcznie wAaAciciel pliku. W systemie Unix moA1/4na to osiAgnAA komendA: chmod 600 keyfile JeA1/4eli uA1/4ywany jest silnik kryptograficzny lub provider, to opcja key pozwala wybraA identyfikator (PKCS#11 URI) uA1/4ywanego klucza pry- watnego. Uwaga: provider wymaga OpenSSL 3.0 lub nowszego domyAlnie: wartoAA opcji cert * libwrap = yes | no wAAcz lub wyAAcz korzystanie z /etc/hosts.allow i /etc/hosts.deny. domyAlnie: no (od wersji 5.00) * local = HOST IP AorA^3dAa do nawiAzywania zdalnych poAAczeA DomyAlnie uA1/4ywane jest IP najbardziej zewnAtrznego interfejsu w stronA serwera, do ktA^3rego nawiAzywane jest poAAczenie. * OCSP = URL responder OCSP do weryfikacji certyfikatu drugiej strony poAAczenia * OCSPaia = yes | no weryfikuj certyfikaty przy uA1/4yciu respondertA^3w AIA Opcja OCSPaia pozwala na weryfikowanie certyfikatA^3w przy pomocy listy URLi responderA^3w OCSP przesAanych w rozszerzeniach AIA (Authority In- formation Access). * OCSPflag = FLAGA_OCSP flaga respondera OCSP Aktualnie wspierane flagi: NOCERTS, NOINTERN, NOSIGS, NOCHAIN, NOVERIFY, NOEXPLICIT, NOCASIGN, NODELEGATED, NOCHECKS, TRUSTOTHER, RESPID_KEY, NO- TIME Aby wyspecyfikowaA kilka flag naleA1/4y uA1/4yA OCSPflag wielokrotnie. * OCSPnonce = yes | no wysyAaj i weryfikuj OCSP nonce Opcja OCSPnonce zabezpiecza protokA^3A OCSP przed atakami powtA^3rzeniowymi. Ze wzglAdu na zAoA1/4onoAA obliczeniowA rozszerzenie nonce jest zwykle wspierane jedynie przez wewnAtrzne (np. korporacyjne), a nie przez publiczne respondery OCSP. * OCSPrequire = yes | no wymagaj rozstrzygajAcej odpowiedzi respondera OCSP WyAAczenie tej opcji pozwala na zaakceptowanie poAAczenia pomimo braku otrzymania rozstrzygajAcej odpowiedzi OCSP ze staplingu i bezpoAredniego A1/4Adania wysAanego do respondera. domyAlnie: yes * options = OPCJE_SSL opcje biblioteki OpenSSL Parametrem jest nazwa opcji zgodnie z opisem w SSL_CTX_set_options(3ssl), ale bez przedrostka SSL_OP_. stunnel -options wyAwietla opcje dozwolone w aktualnej kombinacji programu stunnel i biblioteki OpenSSL. Aby wyspecyfikowaA kilka opcji naleA1/4y uA1/4yA options wielokrotnie. Nazwa opcji moA1/4e byA poprzedzona myAlnikiem ("-") celem wyAAczenia opcji. Na przykAad, dla zachowania kompatybilnoAci z bAAdami implementacji TLS w programie Eudora, moA1/4na uA1/4yA opcji: options = DONT_INSERT_EMPTY_FRAGMENTS domyAlnie: options = NO_SSLv2 options = NO_SSLv3 PoczAwszy od OpenSSL 1.1.0, zamiast wyAAczaA okreAlone wersje pro- tokoAA^3w TLS uA1/4yj opcji sslVersionMax lub sslVersionMin. * protocol = PROTOKAA negocjuj TLS podanym protokoAem aplikacyjnym Opcja ta wAAcza wstApnA negocjacjA szyfrowania TLS dla wybranego pro- tokoAu aplikacyjnego. Opcji protocol nie naleA1/4y uA1/4ywaA z szyfrowaniem TLS na osobnym porcie. Aktualnie wspierane protokoAy: * cifs Nieudokumentowane rozszerzenie protokoAu CIFS wspierane przez serwer Samba. Wsparcie dla tego rozszerzenia zostaAo zarzucone w wersji 3.0.0 serwera Samba. * capwin Wsparcie dla aplikacji https://www.capwin.org/ * capwinctrl Wsparcie dla aplikacji https://www.capwin.org/ Ten protokA^3A jest wspierany wyAAcznie w trybie klienckim. * connect Negocjacja RFC 2817 - Upgrading to TLS Within HTTP/1.1, rozdziaA 5.2 - Requesting a Tunnel with CONNECT Ten protokA^3A jest wspierany wyAAcznie w trybie klienckim. * imap Negocjacja RFC 2595 - Using TLS with IMAP, POP3 and ACAP * ldap Negocjacja RFC 2830 - Lightweight Directory Access Protocol (v3): Ex- tension for Transport Layer Security * nntp Negocjacja RFC 4642 - Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP) Ten protokA^3A jest wspierany wyAAcznie w trybie klienckim. * pgsql Negocjacja https://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982 * pop3 Negocjacja RFC 2449 - POP3 Extension Mechanism * proxy Przekazywanie oryginalnego IP klienta przez protokA^3A HAProxy PROXY w wersji 1 https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt * smtp Negocjacja RFC 2487 - SMTP Service Extension for Secure SMTP over TLS * socks Wspierany jest protokA^3A SOCKS w wersjach 4, 4a i 5. ProtokA^3A SOCKS enkapsulowany jest w protokole TLS, wiAc adres serwera docelowego nie jest widoczny dla napastnika przechwytujAcego ruch sieciowy. https://www.openssh.com/txt/socks4.protocol https://www.openssh.com/txt/socks4a.protocol Nie jest wspierana komenda BIND protokoAu SOCKS. PrzesAana wartoAA parametru USERID jest ignorowana. Sekcja PRZYKAADY zawiera przykAadowe pliki konfiguracyjne VPNa zbu- dowanego w oparciu o szyfrowany protokA^3A SOCKS. * protocolAuthentication = UWIERZYTELNIENIE rodzaj uwierzytelnienia do negocjacji protokoAu Opcja ta jest wpierana wyAAcznie w klienckich protokoAach `connect' i `smtp'. W protokole `connect' wspierane jest uwierzytelnienie `basic' oraz `ntlm'. DomyAlnym rodzajem uwierzytelnienia protokoAu `connect' jest `basic'. W protokole `smtp' wspierane jest uwierzytelnienie `plain' oraz `login'. DomyAlnym rodzajem uwierzytelnienia protokoAu `smtp' jest `plain'. * protocolDomain = DOMENA domena do negocjacji protokoAu W obecnej wersji opcja ma zastosowanie wyAAcznie w protokole `connect'. * protocolHeader = NAGAAWEK nagAA^3wek do negocjacji protokoAu W obecnej wersji opcja ma zastosowanie wyAAcznie w protokole `connect'. * protocolHost = ADRES adres hosta do negocjacji protokoAu Dla protokoAu `connect', protocolHost okreAla docelowy serwer TLS, do ktA^3rego poAAczyA ma siA proxy. Adres serwera proxy, do ktA^3rego AAczy siA stunnel, musi byA okreAlony przy pomocy opcji connect. Dla protokoAu `smtp', protocolHost okreAla wartoAA HELO/EHLO wysyAanego przy negocjacji klienta. * protocolPassword = HASAO hasAo do negocjacji protokoAu Opcja ta jest wspierana wyAAcznie w klienckich protokoAach `connect' i `smtp'. * protocolUsername = UA>>YTKOWNIK nazwa uA1/4ytkownika do negocjacji protokoAu Opcja ta jest wspierana wyAAcznie w klienckich protokoAach `connect' i `smtp'. * PSKidentity = TOA>>SAMOAA toA1/4samoAA klienta PSK PSKidentity moA1/4e zostaA uA1/4yte w sekcjach klienckich do wybrania toA1/4samoAci uA1/4ytej do uwierzytelnienia PSK. Opcja jest ignorowana w sekcjach serwerowych. domyAlnie: pierwsza toA1/4samoAA zdefiniowana w pliku PSKsecrets * PSKsecrets = PLIK plik z toA1/4samoAciami i kluczami PSK KaA1/4da linia pliku jest w nastApujAcym formacie: TOA>>SAMOAA:KLUCZ Szesnastkowe klucze sA automatycznie konwertowane do postaci binarnej. Klucz musi byA mieA przynajmniej 16 bajtA^3w, co w przypadku kluczy szes- nastkowych przekAada siA na przynajmniej 32 znaki. NaleA1/4y ograniczyA dostAp do czytania lub pisania do tego pliku. * pty = yes | no (tylko Unix) alokuj pseudo-terminal dla programu uruchamianego w opcji `exec' * redirect = [HOST:]PORT przekieruj klienta, ktA^3remu nie udaAo siA poprawnie uwierzytelniA przy pomocy certyfikatu Opcja dziaAa wyAAcznie w trybie serwera. CzAAA negocjacji protokoAA^3w jest niekompatybilna z opcjA redirect. * renegotiation = yes | no pozwalaj na renegocjacjA TLS Zastosowania renegocjacji TLS zawierajA niektA^3re scenariusze uwierzytelniania oraz renegocjacjA kluczy dla dAugotrwaAych poAAczeA. Z drugiej strony wAasnoAA na moA1/4e uAatwiA trywialny atak DoS poprzez wygenerowanie obciAA1/4enia procesora: https://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html Warto zauwaA1/4yA, A1/4e zablokowanie renegocjacji TLS nie zabezpiecza w peAni przed opisanym problemem. domyAlnie: yes (o ile wspierane przez OpenSSL) * reset = yes | no sygnalizuj wystApienie bAAdu przy pomocy flagi TCP RST Opcja nie jest wspierana na niektA^3rych platformach. domyAlnie: yes * retry = yes | no | OPAA^1NIENIE poAAcz ponownie sekcjA connect+exec po rozAAczeniu WartoAA parametru OPAA^1NIENIE okreAla liczbA milisekund oczekiwania przed wykonaniem ponownego poAAczenia. "retry = yes" jest synonimem dla "retry = 1000". domyAlnie: no * securityLevel = POZIOM ustaw poziom bezpieczeAstwa Znaczenie kaA1/4dego poziomu opisano poniA1/4ej: * poziom 0 Wszystko jest dozwolone. * poziom 1 Poziom bezpieczeAstwa zapewniajAcy minimum 80 bitA^3w bezpieczeAstwa. A>>adne parametry kryptograficzne oferujAce poziom bezpieczeAstwa poniA1/4ej 80 bitA^3w nie mogA zostaA uA1/4yte. W zwiAzku z tym RSA, DSA oraz klucze DH krA^3tsze niA1/4 1024 bity, a takA1/4e klucze ECC krA^3tsze niA1/4 160 bitA^3w i wszystkie eksportowe zestawy szyfrA^3w sA niedozwolone. UA1/4ycie SSLv2 jest zabronione. Wszelkie listy parametrA^3w kryptograficznych uA1/4ywajAce MD5 do MAC sA zabronione. PoczAwszy od OpenSSL 3.0 wersje TLS starsze niA1/4 1.2 sA wyAAczone. * poziom 2 Poziom bezpieczeAstwa zapewniajAcy 112 bitA^3w bezpieczeAstwa. W zwiAzku z tym RSA, DSA oraz klucze DH krA^3tsze niA1/4 2048 bitA^3w, a takA1/4e klucze ECC krA^3tsze niA1/4 224 bity sA niedozwolone. OprA^3cz wyAAczeA z poziomu 1 zabronione jest takA1/4e korzystanie z zestawA^3w szyfrA^3w uA1/4ywajAcych RC4. Kompresja jest wyAAczona. UA1/4ycie SSLv3 jest zabronione dla wersji OpenSSL starszych niA1/4 3.0. * poziom 3 Poziom bezpieczeAstwa zapewniajAcy 128 bitA^3w bezpieczeAstwa. W zwiAzku z tym RSA, DSA oraz klucze DH krA^3tsze niA1/4 3072 bity, a takA1/4e klucze ECC krA^3tsze niA1/4 256 bitA^3w sA niedozwolone. OprA^3cz wyAAczeA z poziomu 2 zabronione jest takA1/4e korzystanie z zestawA^3w szyfrA^3w nie zapewniajAcych utajniania z wyprzedzeniem (forward secrecy). Bilety sesji sA wyAAczone. Wersje TLS starsze niA1/4 1.1 sA zabronione dla wersji OpenSSL starszych niA1/4 3.0. * poziom 4 Poziom bezpieczeAstwa zapewniajAcy 192 bity bezpieczeAstwa. W zwiAzku z tym RSA, DSA oraz klucze DH krA^3tsze niA1/4 7680 bitA^3w, a takA1/4e klucze ECC krA^3tsze niA1/4 384 bity sA niedozwolone. Listy para- metrA^3w kryptograficznych uA1/4ywajAcych SHA1 do MAC sA zabronione. Wersje TLS starsze niA1/4 1.2 sA zabronione dla wersji OpenSSL starszych niA1/4 3.0. * poziom 5 Poziom bezpieczeAstwa zapewniajAcy 256 bitA^3w bezpieczeAstwa. W zwiAzku z tym RSA, DSA oraz klucze DH krA^3tsze niA1/4 15360 bitA^3w, a takA1/4e klucze ECC krA^3tsze niA1/4 512 bitA^3w sA niedozwolone. * domyAlnie: 2 Opcja securityLevel jest dostApna poczAwszy od OpenSSL 1.1.0. * requireCert = yes | no wymagaj certyfikatu klienta dla verifyChain lub verifyPeer Przy opcji requireCert ustawionej na no, stunnel akceptuje poAAczenia klientA^3w, ktA^3re nie wysAaAy certyfikatu. ZarA^3wno verifyChain = yes jak i verifyPeer = yes automatycznie ustaw- iajA requireCert na yes. domyAlnie: no * setgid = IDENTYFIKATOR_GRUPY (tylko Unix) identyfikator grupy Unix Jako opcja globalna: grupa, z ktA^3rej prawami pracowaA bAdzie stunnel. Jako opcja usAugi: grupa gniazda Unix utworzonego przy pomocy opcji "ac- cept". * setuid = IDENTYFIKATOR_UA>>YTKOWNIKA (tylko Unix) identyfikator uA1/4ytkownika Unix Jako opcja globalna: uA1/4ytkownik, z ktA^3rego prawami pracowaA bAdzie stunnel. Jako opcja usAugi: wAaAciciel gniazda Unix utworzonego przy pomocy opcji "accept". * sessionCacheSize = LICZBA_POZYCJI_CACHE rozmiar pamiAci podrAcznej sesji TLS Parametr okreAla maksymalnA liczbA pozycji wewnAtrznej pamiAci podrAcznej sesji. WartoAA 0 oznacza brak ograniczenia rozmiaru. Nie jest to zalecane dla systemA^3w produkcyjnych z uwagi na ryzyko ataku DoS przez wyczerpanie pamiAci RAM. * sessionCacheTimeout = LICZBA_SEKUND przeterminowanie pamiAci podrAcznej sesji TLS Parametr okreAla czas w sekundach, po ktA^3rym sesja TLS zostanie usuni- Ata z pamiAci podrAcznej. * sessionResume = yes | no zezwalaj lub nie zezwalaj na wznawianie sesji domyAlnie: yes * sessiond = HOST:PORT adres sessiond - serwera cache sesji TLS * sni = NAZWA_USAUGI:WZORZEC_NAZWY_SERWERA (tryb serwera) UA1/4yj usAugi jako podrzAdnej (virtualnego serwera) dla rozszerzenia TLS Server Name Indication (RFC 3546). NAZWA_USoAUGI wskazuje usAugA nadrzAdnA, ktA^3ra odbiera poAAczenia od klientA^3w przy pomocy opcji accept. WZORZEC_NAZWY_SERWERA wskazuje nazwA serwera wirtualnego. Wzorzec moA1/4e zaczynaA siA znakiem `*', np. '*.example.com". Z pojedynczA usAugA nadrzAdnA powiAzane jest zwykle wiele usAug podrzAdnych. Opcja sni moA1/4e byA rA^3wnieA1/4 uA1/4yta wielokrotnie w ramach jednej usAugi podrzAdnej. ZarA^3wno usAuga nadrzAdna jak i podrzAdna nie moA1/4e byA skonfigurowana w trybie klienckim. Opcja connect usAugi podrzAdnej jest ignorowana w poAAczeniu z opcjA pro- tocol, gdyA1/4 poAAczenie do zdalnego serwera jest w tym wypadku nawiAzy- wane przed negocjacjA TLS. Uwierzytelnienie przy pomocy biblioteki libwrap jest realizowane dwukrot- nie: najpierw dla usAugi nadrzAdnej po odebraniu poAAczenia TCP, a nastApnie dla usAugi podrzAdnej podczas negocjacji TLS. Opcja sni jest dostApna poczAwszy od OpenSSL 1.0.0. * sni = NAZWA_SERWERA (tryb klienta) UA1/4yj parametru jako wartoAci rozszerzenia TLS Server Name Indication (RFC 3546). Pusta wartoAA parametru NAZWA_SERWERA wyAAcza wysyAanie rozszerzenia SNI. Opcja sni jest dostApna poczAwszy od OpenSSL 1.0.0. * socket = a|l|r:OPCJA=WARTOAA[:WARTOAA] ustaw opcjA na akceptujAcym/lokalnym/zdalnym gnieAodzie Dla opcji linger wartoAci majA postaA l_onof:l_linger. Dla opcji time wartoAci majA postaA tv_sec:tv_usec. PrzykAady: socket = l:SO_LINGER=1:60 ustaw jednominutowe przeterminowanie przy zamykaniu lokalnego gniazda socket = r:SO_OOBINLINE=yes umieAA dane pozapasmowe (out-of-band) bezpoArednio w strumieniu danych wejAciowych dla zdalnych gniazd socket = a:SO_REUSEADDR=no zablokuj ponowne uA1/4ywanie portu (domyAlnie wAAczone) socket = a:SO_BINDTODEVICE=lo przyjmuj poAAczenia wyAAcznie na interfejsie zwrotnym (ang. loopback) * sslVersion = WERSJA_SSL wersja protokoAu TLS Wspierane wersje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 DostApnoAA konkretnych protokoAA^3w zaleA1/4y od uA1/4ytej wersji OpenSSL. Starsze wersje OpenSSL nie wspierajA TLSv1.1, TLSv1.2, TLSv1.3. Nowsze wersje OpenSSL nie wspierajA SSLv2. PrzestarzaAe protokoAy SSLv2 i SSLv3 sA domyAlnie wyAAczone. PoczAwszy od OpenSSL 1.1.0, ustawienie sslVersion = WERSJA_SSL jest rA^3wnowaA1/4ne opcjom sslVersionMax = WERSJA_SSL sslVersionMin = WERSJA_SSL * sslVersionMax = WERSJA_SSL maksymalna wspierana wersja protokoAu TLS Wspierane wersje: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 all wAAcza wszystkie wersje protokoAA^3w aA1/4 do maksymalnej wersji wspieranej przez bibliotekA uA1/4ytej wersji OpenSSL. DostApnoAA konkretnych protokoAA^3w zaleA1/4y od uA1/4ytej wersji OpenSSL. Opcja sslVersionMax jest dostApna poczAwszy od OpenSSL 1.1.0. domyAlnie: all * sslVersionMin = WERSJA_SSL minimalna wspierana wersja protokoAu TLS Wspierane wersje: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 all wAAcza wszystkie wersje protokoAA^3w aA1/4 do minimalnej wersji wspieranej przez bibliotekA uA1/4ytej wersji OpenSSL. DostApnoAA konkretnych protokoAA^3w zaleA1/4y od uA1/4ytej wersji OpenSSL. Opcja sslVersionMin jest dostApna poczAwszy od OpenSSL 1.1.0. domyAlnie: TLSv1 * stack = LICZBA_BAJTAW (z wyjAtkiem modelu FORK) rozmiar stosu procesora tworzonych wAtkA^3w Zbyt duA1/4y stos zwiAksza zuA1/4ycie pamiAci wirtualnej. Zbyt maAy stos moA1/4e powodowaA problemy ze stabilnoAciA aplikacji. domyAlnie: 65536 bytes (wystarczajAcy dla testowanych platform) * ticketKeySecret = SECRET szesnastkowy klucz symetryczny uA1/4ywany przez serwer do zapewnienia poufnoAci biletA^3w sesji Bilety sesji zdefiniowane w RFC 5077 zapewniajA ulepszonA moA1/4liwoAA wznawiania sesji, w ktA^3rej implementacja serwera nie jest wymagana do utrzymania stanu sesji. AAczne uA1/4ycie opcji ticketKeySecret i ticketMacSecret umoA1/4liwia wz- nawianie sesji na klastrze serwerA^3w lub wznowienie sesji po restarcie serwera. Klucz musi mieA rozmiar 16 lub 32 bajtA^3w, co przekAada siA na dokAadnie 32 lub 64 cyfry szesnastkowe. PoszczegA^3lne bajty mogA byA opcjonalnie oddzielone dwukropkami. Opcja dziaAa wyAAcznie w trybie serwera. Opcja ticketKeySecret jest dostApna poczAwszy od OpenSSL 1.0.0. WyAAczenie opcji NO_TICKET jest wymagane dla obsAugi biletA^3w sesji w OpenSSL-u starszym niA1/4 1.1.1, ale opcja ta jest niekompatybilna z opcjA redirect. * ticketMacSecret = SECRET szesnastkowy klucz symetryczny uA1/4ywany przez serwer zapewnienia inte- gralnoAci biletA^3w sesji Klucz musi mieA rozmiar 16 lub 32 bajtA^3w, co przekAada siA na dokAadnie 32 lub 64 cyfry szesnastkowe. PoszczegA^3lne bajty mogA byA opcjonalnie oddzielone dwukropkami. Opcja dziaAa wyAAcznie w trybie serwera. Opcja ticketMacSecret jest dostApna poczAwszy od OpenSSL 1.0.0. * TIMEOUTbusy = LICZBA_SEKUND czas oczekiwania na spodziewane dane * TIMEOUTclose = LICZBA_SEKUND czas oczekiwania na close_notify (ustaw na 0, jeA1/4eli klientem jest MSIE) * TIMEOUTconnect = LICZBA_SEKUND czas oczekiwania na nawiAzanie poAAczenia * TIMEOUTidle = LICZBA_SEKUND maksymalny czas utrzymywania bezczynnego poAAczenia * TIMEOUTocsp = LICZBA_SEKUND czas oczekiwania na nawiAzanie poAAczenia z serwerem OCSP * transport = tcp | udp wybA^3r protokoAu transportowego Wspierane wartoAci: * tcp Standardowy TLS po TCP (domyAlnie). * udp DTLS po UDP. KaA1/4dy datagram otwiera nowe poAAczenie logiczne w ramach usAugi. Serwer uA1/4ywa oddzielnego poAAczonego gniazda dla kaA1/4dego klienta, a ciasteczka DTLS chroniA przed atakami DDoS typu refleksyjnego. domyAlnie: tcp * transparent = none | source | destination | both (tylko Unix) tryb przezroczystego proxy na wspieranych platformach Wspierane wartoAci: * none Zablokuj wsparcie dla przezroczystego proxy. Jest to wartoAA domyAlna. * source Przepisz adres, aby nawiAzywane poAAczenie wydawaAo siA pochodziA bezpoArednio od klienta, a nie od programu stunnel. Opcja jest aktualnie obsAugiwana w: * Trybie zdalnym (opcja connect) w systemie Linux >=2.6.28 Konfiguracja wymaga nastApujAcych ustawieA iptables oraz routingu (na przykAad w pliku /etc/rc.local lub analogicznym): iptables -t mangle -N DIVERT iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT iptables -t mangle -A DIVERT -j MARK --set-mark 1 iptables -t mangle -A DIVERT -j ACCEPT ip rule add fwmark 1 lookup 100 ip route add local 0.0.0.0/0 dev lo table 100 echo 0 >/proc/sys/net/ipv4/conf/lo/rp_filter Konfiguracja ta wymaga, aby stunnel byA wykonywany jako root i bez opcji setuid. * Trybie zdalnym (opcja connect) w systemie Linux 2.2.x Konfiguracja ta wymaga skompilowania jAdra z opcjA transparent proxy. Docelowa usAuga musi byA umieszczona na osobnej maszynie, do ktA^3rej routing kierowany jest poprzez serwer stunnela. Dodatkowo stunnel powinien byA wykonywany jako root i bez opcji se- tuid. * Trybie zdalnym (opcja connect) w systemie FreeBSD >=8.0 Konfiguracja ta wymaga skonfigurowania firewalla i routingu. stunnel musi byA wykonywany jako root i bez opcji setuid. * Trybie lokalnym (opcja exec) Konfiguracja ta jest realizowana przy pomocy biblioteki libstun- nel.so. Do zaAadowania biblioteki wykorzystywana jest zmienna Aro- dowiskowa _RLD_LIST na platformie Tru64 lub LD_PRELOAD na innych platformach. * destination Oryginalny adres docelowy jest uA1/4ywany zamiast opcji connect. PrzykAadowa konfiguracja przezroczystego adresu docelowego: [transparent] client = yes accept = <port_stunnela> transparent = destination Konfiguracja wymaga ustawieA iptables, na przykAad w pliku /etc/rc.lo- cal lub analogicznym. W przypadku docelowej usAugi umieszczonej na tej samej maszynie: /sbin/iptables -t nat -I OUTPUT -p tcp --dport <port_przekierowany> \ -m ! --uid-owner <identyfikator_uA1/4ytkownika_stunnela> \ -j DNAT --to-destination <lokalne_ip>:<lokalny_port> W przypadku docelowej usAugi umieszczonej na zdalnej maszynie: /sbin/iptables -I INPUT -i eth0 -p tcp --dport <port_stunnela> -j ACCEPT /sbin/iptables -t nat -I PREROUTING -p tcp --dport <port_przekierowany> \ -i eth0 -j DNAT --to-destination <lokalne_ip>:<port_stunnela> Przezroczysty adres docelowy jest aktualnie wspierany wyAAcznie w sys- temie Linux. * both UA1/4yj przezroczystego proxy zarA^3wno dla adresu AorA^3dAowego jak i docelowego. Dla zapewnienia kompatybilnoAci z wczeAniejszymi wersjami wspierane sA dwie dodatkowe opcje: * yes Opcja zostaAa przemianowana na source. * no Opcja zostaAa przemianowana na none. * verify = POZIOM weryfikuj certyfikat drugiej strony poAAczenia Opcja ta jest przestarzaAa i naleA1/4y jA zastApiA przez opcje verify- Chain i verifyPeer. * poziom 0 zarzAdaj certyfikatu i zignoruj go * poziom 1 weryfikuj, jeA1/4eli zostaA przedstawiony * poziom 2 weryfikuj z zainstalowanym certyfikatem Centrum Certyfikacji * poziom 3 weryfikuj z lokalnie zainstalowanym certyfikatem drugiej strony * poziom 4 weryfikuj z certyfikatem drugiej strony ignorujAc AaAcuch CA * domyoAlnie nie weryfikuj * verifyChain = yes | no weryfikuj AaAcuch certyfikatA^3w drugiej strony Do weryfikacji certyfikatu serwera kluczowe jest, aby wymagaA rA^3wnieA1/4 konkretnego certyfikatu przy pomocy checkHost lub checkIP. Samopodpisany certyfikat gAA^3wnego CA naleA1/4y umieAciA albo w pliku podanym w opcji CAfile, albo w katalogu podanym w opcji CApath. domyAlnie: no * verifyPeer = yes | no weryfikuj certyfikat drugiej strony Certyfikat drugiej strony naleA1/4y umieAciA albo w pliku podanym w opcji CAfile, albo w katalogu podanym w opcji CApath. domyAlnie: no A stunnel zwraca zero w przypadku sukcesu, lub wartoAA niezerowA w przypadku bAAdu. AY NastApujAce sygnaAy mogA byA uA1/4yte do sterowania programem w systemie Unix: * SIGHUP ZaAaduj ponownie plik konfiguracyjny. NiektA^3re globalne opcje nie bAdA przeAadowane: * chroot * foreground * pid * setgid * setuid JeA1/4eli wykorzystywana jest opcja `setuid' stunnel nie bAdzie mA^3gA zaAadowaA ponownie konfiguracji wykorzystujAcej uprzywilejowane (<1024) porty. JeA1/4eli wykorzystywana jest opcja `chroot' stunnel bAdzie szukaA wszys- tkich potrzebnych plikA^3w (AAcznie z plikiem konfiguracyjnym, certy- fikatami, logiem i plikiem pid) wewnAtrz katalogu wskazanego przez `ch- root'. * SIGUSR1 Zamknij i otwA^3rz ponownie log. Funkcja ta moA1/4e zostaA uA1/4yta w skrypcie rotujAcym log programu stunnel. * SIGUSR2 Zapisz w logu listA aktywnych poAAczeA. * SIGTERM, SIGQUIT, SIGINT ZakoAcz dziaAanie programu. Skutek wysAania innych sygnaAA^3w jest niezdefiniowany. AADY Szyfrowanie poAAczeA do lokalnego serwera imapd moA1/4na uA1/4yA: [imapd] accept = 993 exec = /usr/sbin/imapd execArgs = imapd albo w trybie zdalnym: [imapd] accept = 993 connect = 143 Aby umoA1/4liwiA lokalnemu klientowi poczty elektronicznej korzystanie z serwera imapd przez TLS naleA1/4y skonfigurowaA pobieranie poczty z adresu localhost i portu 119, oraz uA1/4yA nastApujAcej konfiguracji: [imap] client = yes accept = 143 connect = serwer:993 W poAAczeniu z programem pppd stunnel pozwala zestawiA prosty VPN. Po stronie serwera nasAuchujAcego na porcie 2020 jego konfiguracja moA1/4e wyglAdaA nastApujAco: [vpn] accept = 2020 exec = /usr/sbin/pppd execArgs = pppd local pty = yes PoniA1/4szy plik konfiguracyjny moA1/4e byA wykorzystany do uruchomienia programu stunnel w trybie inetd. Warto zauwaA1/4yA, A1/4e w pliku konfigu- racyjnym nie ma sekcji [nazwa_usoAugi]. exec = /usr/sbin/imapd execArgs = imapd Aby skonfigurowaA VPN moA1/4na uA1/4yA nastApujAcej konfiguracji klienta: [socks_client] client = yes accept = 127.0.0.1:1080 connect = vpn_server:9080 verifyPeer = yes CAfile = stunnel.pem OdpowiadajAca jej konfiguracja serwera vpn_server: [socks_server] protocol = socks accept = 9080 cert = stunnel.pem key = stunnel.key Do przetestowania konfiguracji moA1/4na wydaA na maszynie klienckiej komendA: curl --socks4a localhost http://www.example.com/ PrzykAadowa konfiguracja serwera SNI: [virtual] ; usAuga nadrzAdna accept = 443 cert = default.pem connect = default.internal.mydomain.com:8080 [sni1] ; usAuga podrzAdna 1 sni = virtual:server1.mydomain.com cert = server1.pem connect = server1.internal.mydomain.com:8081 [sni2] ; usAuga podrzAdna 2 sni = virtual:server2.mydomain.com cert = server2.pem connect = server2.internal.mydomain.com:8082 verifyPeer = yes CAfile = server2-allowed-clients.pem PrzykAadowa konfiguracja umoA1/4liwiajAca uwierzytelnienie z uA1/4yciem klucza prywatnego przechowywanego w Windows Certificate Store (tylko Win- dows): engine = capi [service] engineId = capi client = yes accept = 127.0.0.1:8080 connect = example.com:8443 W przypadku uA1/4ycia silnika CAPI, nie naleA1/4y ustawiaA opcji cert, gdyA1/4 klucz klienta zostanie automatycznie pobrany z Certificate Store na podstawie zaufanych certyfikatA^3w CA przedstawionych przez serwer. PrzykAadowa konfiguracja umoA1/4liwiajAca uA1/4ycie certyfikatu i klucza prywatnego z urzAdzenia obsAugiwanego przez silnik pkcs11: engine = pkcs11 engineCtrl = MODULE_PATH:opensc-pkcs11.so engineCtrl = PIN:123456 [service] engineId = pkcs11 client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=MyCert key = pkcs11:token=MyToken;object=MyKey PrzykAadowa konfiguracja umoA1/4liwiajAca uA1/4ycie certyfikatu i klucza prywatnego umieszczonego na tokenie SoftHSM: engine = pkcs11 engineCtrl = MODULE_PATH:softhsm2.dll engineCtrl = PIN:12345 [service] engineId = pkcs11 client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=KeyCert PrzykAadowa konfiguracja umoA1/4liwiajAca uA1/4ycie certyfikatu i klucza prywatnego z urzAdzenia obsAugiwanego przez provider `pkcs11prov`: Uwaga: wymaga OpenSSL 3.0 lub nowszego setEnv = PKCS11_MODULE_PATH=opensc-pkcs11.dll setEnv = PKCS11_PIN:123456 provider = pkcs11prov [service] client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=MyCert key = pkcs11:token=MyToken;object=MyKey Uwaga: wymaga OpenSSL 3.5 lub nowszego provider = pkcs11prov providerParameter = pkcs11prov:pkcs11_module=opensc-pkcs11.dll providerParameter = pkcs11prov:pin=123456 [service] client = yes accept = 127.0.0.1:8080 connect = example.com:843 cert = pkcs11:token=MyToken;object=MyCert key = pkcs11:token=MyToken;object=MyKey W systemie Windows biblioteka PKCS#11 musi znajdowaA siA w katalogu `ossl-modules`, lub naleA1/4y podaA jej peAnA AcieA1/4kA bezwzglAdnA w `PKCS11_MODULE_PATH` lub parametrze `pkcs11_module`. NOTKI OGRANICZENIA stunnel nie moA1/4e byA uA1/4ywany do szyfrowania protokoAu FTP, poniewaA1/4 do przesyAania poszczegA^3lnych plikA^3w uA1/4ywa on do- datkowych poAAczeA otwieranych na portach o dynamicznie przydzielanych nu- merach. IstniejA jednak specjalne wersje klientA^3w i serwerA^3w FTP pozwalajAce na szyfrowanie przesyAanych danych przy pomocy protokoAu TLS. TRYB INETD (tylko Unix) W wiAkszoAci zastosowaA stunnel samodzielnie nasAuchuje na porcie podanym w pliku konfiguracyjnym i tworzy poAAczenie z innym portem podanym w opcji connect lub nowym programem podanym w opcji exec. NiektA^3rzy wolA jednak wykorzystywaA oddzielny program, ktA^3ry odbiera poAAczenia, po czym uruchamia program stunnel. PrzykAadami takich programA^3w sA inetd, xinetd i tcpserver. PrzykAadowa linia pliku /etc/inetd.conf moA1/4e wyglAdaA tak: imaps stream tcp nowait root @bindir@/stunnel stunnel @sysconfdir@/stunnel/imaps.conf PoniewaA1/4 w takich przypadkach poAAczenie na zdefiniowanym porcie (tutaj imaps) nawiAzuje osobny program (tutaj inetd), stunnel nie moA1/4e uA1/4ywaA opcji accept. W pliku konfiguracyjnym nie moA1/4e byA rA^3wnieA1/4 zdefiniowana A1/4adna usAuga ([nazwa_usoAugi]), poniewaA1/4 konfiguracja taka pozwala na nawiAzanie tylko jednego poAAczenia. Wszys- tkie OPCJE USoAUG powinny byA umieszczone razem z opcjami globalnymi. PrzykAad takiej konfiguracji znajduje siA w sekcji PRZYKoAADY. CERTYFIKATY ProtokA^3A TLS wymaga, aby kaA1/4dy serwer przedstawiaA siA nawiAzujAcemu poAAczenie klientowi prawidAowym certyfikatem X.509. Potwierdzenie toA1/4samoAci serwera polega na wykazaniu, A1/4e posiada on odpowiadajAcy certyfikatowi klucz prywatny. NajprostszA metodA uzyskania certyfikatu jest wygenerowanie go przy pomocy wolnego pakietu OpenSSL. WiAcej informa- cji na temat generowania certyfikatA^3w moA1/4na znaleAoA na umieszczonych poniA1/4ej stronach. Plik .pem powinien zawieraA klucz prywatny oraz podpisany certyfikat (nie A1/4Adanie certyfikatu). Otrzymany plik powinien mieA nastApujAcA postaA: -----BEGIN RSA PRIVATE KEY----- [zakodowany klucz] -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- [zakodowany certyfikat] -----END CERTIFICATE----- LOSOWOoA"A stunnel potrzebuje zainicjowaA PRNG (generator liczb pseudolosowych), gdyA1/4 protokA^3A TLS wymaga do bezpieczeAstwa kryptograficznego AorA^3dAa dobrej losowoAci. NastApujAce AorA^3dAa sA kolejno odczytywane aA1/4 do uzyskania wystarczajAcej iloAci entropii: * ZawartoAA pliku podanego w opcji RNDfile. * ZawartoAA pliku o nazwie okreAlonej przez zmiennA ArodowiskowA RANDFILE, o ile jest ona ustawiona. * Plik .rnd umieszczony w katalogu domowym uA1/4ytkownika, jeA1/4eli zmi- enna RANDFILE nie jest ustawiona. * Plik podany w opcji `--with-random' w czasie konfiguracji programu. * ZawartoAA ekranu w systemie Windows. * Gniazdo egd, jeA1/4eli uA1/4yta zostaAa opcja EGD. * Gniazdo egd podane w opcji `--with-egd-socket' w czasie konfiguracji pro- gramu. * UrzAdzenie /dev/urandom. Warto zwrA^3ciA uwagA, A1/4e na maszynach z systemem Windows, na ktA^3rych konsoli nie pracuje uA1/4ytkownik, zawartoAA ekranu nie jest wystarczajAco zmienna, aby zainicjowaA PRNG. W takim przypadku do zainicjowania genera- tora naleA1/4y uA1/4yA opcji RNDfile. Plik RNDfile powinien zawieraA dane losowe -- rA^3wnieA1/4 w tym sensie, A1/4e powinny byA one inne przy kaA1/4dym uruchomieniu programu stunnel. O ile nie uA1/4yta zostaAa opcja RNDoverwrite jest to robione automatycznie. Do rAcznego uzyskania takiego pliku uA1/4yteczna moA1/4e byA komenda openssl rand dostarczana ze wspA^3Aczesnymi wersjami pakietu OpenSSL. Jeszcze jedna istotna informacja -- jeA1/4eli dostApne jest urzAdzenie /dev/urandom biblioteka OpenSSL ma zwyczaj zasilania nim PRNG w trakcie sprawdzania stanu generatora. W systemach z /dev/urandom urzAdzenie to bAdzie najprawdopodobniej uA1/4yte, pomimo A1/4e znajduje siA na samym koAcu powyA1/4szej listy. Jest to wAaAciwoAA biblioteki OpenSSL, a nie programu stunnel. PARAMETRY DH PoczAwszy od wersji 4.40 stunnel zawiera w kodzie programu 2048-bitowe parametry DH. Od wersji 5.18 te poczAtkowe wartoAci parametrA^3w DH sA wymieniane na automatycznie generowane parametry tymczasowe. Wygenerowanie parametrA^3w DH moA1/4e zajAA nawet wiele minut. Alternatywnie parametry DH moA1/4na umieAciA w pliku razem z certyfikatem, co wyAAcza generowanie parametrA^3w tymczasowych: openssl dhparam 2048 >> stunnel.pem PLIKI * @sysconfdir@/stunnel/stunnel.conf plik konfiguracyjny programu ADY Opcja execArgs oraz linia komend Win32 nie obsAuguje cytowania. A>> * https://www.stunnel.org/ aplikacja stunnel * https://openssl-library.org/ biblioteka OpenSSL AUTOR * MichaA Trojnara Michal.Trojnara@stunnel.org stunnel 5.79 2026.06.02 STUNNEL(8)
NAZWA | AADNIA | OPIS | OPCJE | PLIK KONFIGURACYJNY | A | AY | AADY | NOTKI | PLIKI | ADY | A>> | AUTOR
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=stunnel.pl&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>
