FreeBSD Manual Pages
stunnel(8) stunnel TLS Proxy stunnel(8) NAZWA stunnel - uniwersalny tunel protokou TLS SKADNIA Unix: stunnel [PLIK] | -fd N | -help | -version | -sockets | -options WIN32: stunnel [ [ -install | -uninstall | -start | -stop | -reload | -reopen | -exit ] [-quiet] [PLIK] ] | -help | -version | -sockets | -options OPIS Program stunnel zosta zaprojektowany do opakowywania w protok TLS pocze pomidzy zdalnymi klientami a lokalnymi lub zdalnymi serwerami. Przez serwer lokalny rozumiana jest aplikacja przeznaczona do uruchamiania przy pomocy inetd. Stunnel pozwala na proste zestawienie komunikacji serwerw nie posiadajcych funkcjonalnoci TLS poprzez bezpieczne kanay TLS. stunnel pozwala doda funkcjonalno TLS do powszechnie stosowanych demonw inetd, np. pop3 lub imap, do samodzielnych demonw, np. nntp, smtp lub http, a nawet tunelowa ppp poprzez gniazda sieciowe bez zmian w kodzie rdowym. OPCJE PLIK uyj podanego pliku konfiguracyjnego -fd N (tylko Unix) wczytaj konfiguracj z podanego deskryptora pliku -help drukuj list wspieranych opcji -version drukuj wersj programu i domylne wartoci parametrw -sockets drukuj domylne 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) przeaduj plik konfiguracyjny uruchomionego serwisu NT -reopen (tylko Windows NT lub nowszy) otwrz ponownie log uruchomionego serwisu NT -exit (tylko Win32) zatrzymaj uruchomiony program -quiet (tylko Win32) nie wywietlaj okienek z komunikatami PLIK KONFIGURACYJNY Linia w pliku konfiguracyjnym moe by: • pusta (ignorowana) • komentarzem rozpoczynajcym si znakiem ';' (ignorowana) • par 'nazwa_opcji = warto_opcji' • tekstem '[nazwa_usugi]' wskazujcym pocztek definicji usugi Parametr adres moe by: • numerem portu • oddzielon rednikiem par adresu (IPv4, IPv6, lub nazw domenow) i numeru portu • ciek do gniazda Unix (tylko Unix) OPCJE GLOBALNE chroot = KATALOG (tylko Unix) katalog roboczego korzenia systemu plikw Opcja okrela katalog, w ktrym uwiziony zostanie proces programu stunnel tu po jego inicjalizacji, a przed rozpoczciem odbierania pocze. cieki podane w opcjach CApath, CRLpath, pid oraz exec musz by umieszczone wewntrz katalogu podanego w opcji chroot i okrelone wzgldem tego katalogu. Niektre funkcje systemu operacyjnego mog wymaga dodatkowych plikw umieszczonych w katalogu podanego w parametrze chroot: • opnione rozwinicie adresw DNS typowo wymaga /etc/nsswitch.conf i /etc/resolv.conf • lokalizacja strefy czasowej w logach wymaga pliku /etc/timezone • niektre inne pliki mog potrzebowa plikw urzdze, np. /dev/zero lub /dev/null compression = deflate | zlib wybr algorytmu kompresji przesyanych danych domylnie: bez kompresji Algorytm deflate jest standardow metod kompresji zgodnie z RFC 1951. debug = [PODSYSTEM].POZIOM szczegowo logowania Poziom logowania mona okreli przy pomocy jednej z nazw lub liczb: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6) lub debug (7). Zapisywane s komunikaty o poziomie niszym (numerycznie) lub rwnym podanemu. Domylnym poziomem jest notice (5). Jakkolwiek uycie debug = debug lub debug = 7 zapewnia najbardziej szczegowe logi, ich zawarto jest uyteczna jedynie dla programistw zajmujcych si stunnelem. Uyj tego poziomu logowania jedynie jeli jeste programistk/programist stunnela, albo przygotowujesz szczegowe informacje celem przesania do wsparcia technicznego. W przeciwnym wypadku prba analizy zawartoci logw bdzie jedynie rdem dodatkowego zamieszania. O ile nie wyspecyfikowano podsystemu uyty bdzie domylny: daemon. Podsystemy nie s wspierane przez platform Win32. Wielko liter jest ignorowana zarwno dla poziomu jak podsystemu. EGD = CIEKA_DO_EGD (tylko Unix) cieka do gniazda programu Entropy Gathering Daemon Opcja pozwala okreli ciek do gniazda programu Entropy Gathering Daemon uywanego do zainicjalizowania generatora cigw pseudolosowych biblioteki OpenSSL. engine = auto | IDENTYFIKATOR_URZDZENIA wybr silnika kryptograficznego domylnie: bez wykorzystania silnikw kryptograficznych Sekcja PRZYKADY zawiera przykadowe konfiguracje wykorzystujce silniki kryptograficzne. engineCtrl = KOMENDA[:PARAMETR] konfiguracja silnika kryptograficznego engineDefault = LISTA_ZADA lista zada OpenSSL oddelegowanych do biecego silnika Parametrem jest lista oddzielonych przecinkami zada OpenSSL, ktre maj zosta oddelegowane do biecego silnika kryptograficznego. W zalenoci od konkretnego silnika dostpne mog by nastpujce zadania: ALL, RSA, DSA, ECDH, ECDSA, DH, RAND, CIPHERS, DIGESTS, PKEY, PKEY_CRYPTO, PKEY_ASN1. fips = yes | no tryb FIPS 140-2 Opcja pozwala wyczy wejcie w tryb FIPS, jeli stunnel zosta skompilowany ze wsparciem dla FIPS 140-2. domylnie: no (od wersji 5.00) foreground = yes | quiet | no (tylko Unix) tryb pierwszoplanowy Uycie tej opcji powoduje, e stunnel nie przechodzi w to. Parametr yes powoduje dodatkowo, e komunikaty diagnostyczne logowane s na standardowy strumie bdw (stderr) oprcz wyj zdefiniowanych przy pomocy opcji syslog i output. iconActive = PLIK_Z_IKONK (tylko GUI) ikonka wywietlana przy obecnoci aktywnych pocze do usugi W systemie Windows ikonka to plik .ico zawierajcy obrazek 16x16 pikseli. iconError = PLIK_Z_IKONK (tylko GUI) ikonka wywietlana, jeeli nie zosta zaadowany poprawny plik konfiguracyjny W systemie Windows ikonka to plik .ico zawierajcy obrazek 16x16 pikseli. iconIdle = PLIK_Z_IKONK (tylko GUI) ikonka wywietlana przy braku aktywnych pocze do usugi W systemie Windows ikonka to plik .ico zawierajcy obrazek 16x16 pikseli. log = append | overwrite obsuga logw Ta opcja pozwala okreli, czy nowe logi w pliku (okrelonym w opcji output) bd dodawane czy nadpisywane. domylnie: append output = PLIK plik, do ktrego dopisane zostan logi Uycie tej opcji powoduje dopisanie logw do podanego pliku. Do kierowania komunikatw na standardowe wyjcie (na przykad po to, eby zalogowa je programem splogger z pakietu daemontools) mona poda jako parametr urzdzenie /dev/stdout. pid = PLIK (tylko Unix) pooenie pliku z numerem procesu Jeeli argument jest pusty, plik nie zostanie stworzony. Jeeli zdefiniowano katalog chroot, to cieka do pid jest okrelona wzgldem tego katalogu. RNDbytes = LICZBA_BAJTW liczba bajtw do zainicjowania generatora pseudolosowego RNDfile = PLIK cieka do pliku zawierajcego losowe dane Biblioteka OpenSSL uyje danych z tego pliku do zainicjowania generatora pseudolosowego. RNDoverwrite = yes | no nadpisz plik nowymi wartociami pseudolosowymi domylnie: yes (nadpisz) service = SERWIS (tylko Unix) nazwa usugi Podana nazwa usugi bdzie uywana jako nazwa usugi dla inicjalizacji sysloga, oraz dla biblioteki TCP Wrapper w trybie inetd. Chocia technicznie mona uy tej opcji w trybie w sekcji usug, to jest ona uyteczna jedynie w opcjach globalnych. domylnie: stunnel syslog = yes | no (tylko Unix) wcz logowanie poprzez mechanizm syslog domylnie: yes (wcz) taskbar = yes | no (tylko WIN32) wcz ikonk w prawym dolnym rogu ekranu domylnie: yes (wcz) OPCJE USUG Kada sekcja konfiguracji usugi zaczyna si jej nazw ujt w nawias kwadratowy. Nazwa usugi uywana jest do kontroli dostpu przez bibliotek libwrap (TCP wrappers) oraz pozwala rozrni poszczeglne usugi w logach. Jeeli stunnel ma zosta uyty w trybie inetd, gdzie za odebranie poczenia odpowiada osobny program (zwykle inetd, xinetd lub tcpserver), naley przeczyta sekcj TRYB INETD poniej. accept = [HOST:]PORT nasuchuje na poczenia na podanym adresie i porcie Jeeli nie zosta podany adres, stunnel domylnie nasuchuje na wszystkich adresach IPv4 lokalnych interfejsw. Aby nasuchiwa na wszystkich adresach IPv6 naley uy: accept = :::port CAengine = IDENTYFIKATOR_CA_W_ENGINE aduje zaufane certyfikaty Centrum certyfikacji z silnika Opcja pozwala okreli pooenie pliku zawierajcego certyfikaty uywane przez opcj verifyChain lub verifyPeer. Opcja moe by uyta wielokrotnie w pojedynczej sekcji. Aktualnie wspierane silniki: pkcs11, cng. CApath = KATALOG_CA aduje zaufane certyfikaty Centrum certyfikacji z katalogu Opcja okrela katalog, w ktrym stunnel bdzie szuka certyfikatw, jeeli uyta zostaa opcja verifyChain lub verifyPeer. Pliki z certyfikatami musz posiada specjalne nazwy XXXXXXXX.0, gdzie XXXXXXXX jest skrtem kryptograficznym reprezentacji DER nazwy podmiotu certyfikatu. Ta opcja moe by rwnie uyta do dostarczenia certyfikatu root CA, ktry jest niezbdny do prawidowej weryfikacji OCSP stapling w trybie serwera. Funkcja skrtu zostaa zmieniona w OpenSSL 1.0.0. Naley wykona c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x. Jeeli zdefiniowano katalog chroot, to cieka do CApath jest okrelona wzgldem tego katalogu. CAfile = PLIK_CA aduje zaufane certyfikaty Centrum certyfikacji z pliku Opcja pozwala okreli pooenie pliku zawierajcego certyfikaty uywane przez opcj verifyChain lub verifyPeer. Ta opcja moe by rwnie uyta do dostarczenia certyfikatu root CA, ktry jest niezbdny do prawidowej weryfikacji OCSP stapling w trybie serwera. cert = PLIK_CERT plik z acuchem certyfikatw Opcja okrela pooenie pliku zawierajcego certyfikaty uywane przez program stunnel do uwierzytelnienia si przed drug stron poczenia. Plik powinien zawiera kompletny acuch certyfikatw poczwszy od certyfikatu klienta/serwera, a skoczywszy na samopodpisanym certyfikacie gwnego CA. Obsugiwane s pliki w formacie PEM lub P12. Certyfikat jest konieczny, aby uywa programu w trybie serwera. W trybie klienta certyfikat jest opcjonalny. Jeeli uywany jest silnik kryptograficzny, to opcja cert pozwala wybra identyfikator uywanego certyfikatu. checkEmail = EMAIL adres email podmiotu przedstawionego certyfikatu Pojedyncza sekcja moe zawiera wiele wystpie opcji checkEmail. Certyfikaty s akceptowane, jeeli sekcja nie weryfikuje podmiotu certyfikatu, albo adres email przedstawionego certyfikatu pasuje do jednego z adresw email okrelonych 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 moe zawiera wiele wystpie opcji checkHost. Certyfikaty s akceptowane, jeeli sekcja nie weryfikuje podmiotu certyfikatu, albo nazwa serwera przedstawionego certyfikatu pasuje do jednego nazw okrelonych przy pomocy checkHost. Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. checkIP = IP adres IP podmiotu przedstawionego certyfikatu Pojedyncza sekcja moe zawiera wiele wystpie opcji checkIP. Certyfikaty s akceptowane, jeeli sekcja nie weryfikuje podmiotu certyfikatu, albo adres IP przedstawionego certyfikatu pasuje do jednego z adresw IP okrelonych przy pomocy checkIP. Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. ciphers = LISTA_SZYFRW lista dozwolonych szyfrw dla protokow SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2 Ta opcja nie wpywa na list parametrw kryptograficznych dla protokou TLSv1.3 Parametrem tej opcji jest lista szyfrw, ktre bd uyte przy otwieraniu nowych pocze TLS, np.: DES-CBC3-SHA:IDEA-CBC-MD5 ciphersuites = LISTA_PARAMETRW_KRYPTOGRAFICZNYCH lista dozwolonych parametrw kryptograficznych dla protokou TLSv1.3 Parametrem tej opcji s listy parametrw kryptograficznych w kolejnoci ich preferowania. Poczwszy od OpenSSL 3.0 opcja ciphersuites ignoruje nieznane szyfry. Opcja ciphersuites jest dostpna poczwszy od OpenSSL 1.1.1. domylnie: TLS_CHACHA20_POLY1305_SHA256: TLS_AES_256_GCM_SHA384: TLS_AES_128_GCM_SHA256 client = yes | no tryb kliencki (zdalna usuga uywa TLS) domylnie: 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 konfiguracyjnego stunnela. Dostpne komendy opisane s w podrczniku SSL_CONF_cmd(3ssl). Moliwe jest wyspecyfikowanie wielu opcji OpenSSL przez wielokrotne uycie komendy config. Zamiast wycza config = Curves:list_curves uyj opcji curves w celu ustawienia krzywych eliptycznych. Opcja ta wymaga biblioteki OpenSSL w wersji 1.0.2 lub nowszej. connect = [HOST:]PORT pocz si ze zdalnym serwerem na podany port Jeeli nie zosta podany adres, stunnel domylnie czy si z lokalnym serwerem. Komenda moe by uyta wielokrotnie w pojedynczej sekcji celem zapewnienia wysokiej niezawodnoci lub rozoenia ruchu pomidzy wiele serwerw. CRLpath = KATALOG_CRL katalog List Odwoanych Certyfikatw (CRL) Opcja okrela katalog, w ktrym stunnel bdzie szuka list CRL uywanych przez opcje verifyChain i verifyPeer. Pliki z listami CRL musz posiada specjalne nazwy XXXXXXXX.r0, gdzie XXXXXXXX jest skrtem listy CRL. Funkcja skrtu zostaa zmieniona OpenSSL 1.0.0. Naley wykona c_rehash przy zmianie OpenSSL 0.x.x na 1.x.x. Jeeli zdefiniowano katalog chroot, to cieka do CRLpath jest okrelona wzgldem tego katalogu. CRLfile = PLIK_CRL plik List Odwoanych Certyfikatw (CRL) Opcja pozwala okreli pooenie pliku zawierajcego listy CRL uywane przez opcje verifyChain i verifyPeer. curves = lista krzywe ECDH odddzielone ':' Wersje OpenSSL starsze ni 1.1.1 pozwalaj na uycie tylko jednej krzywej. List dostpnych krzywych mona uzyska poleceniem: openssl ecparam -list_curves domylnie: X25519:P-256:X448:P-521:P-384 (poczwszy od OpenSSL 1.1.1) prime256v1 (OpenSSL starszy ni 1.1.1) logId = TYP typ identyfikatora poczenia klienta Identyfikator ten pozwala rozrni wpisy w logu wygenerowane dla poszczeglnych pocze. Aktualnie wspierane typy: sequential Kolejny numer poczenia jest unikalny jedynie w obrbie pojedynczej instancji programu stunnel, ale bardzo krtki. Jest on szczeglnie uyteczny przy rcznej analizie logw. unique Ten rodzaj identyfikatora jest globalnie unikalny, ale znacznie duszy, ni kolejny numer poczenia. Jest on szczeglnie uyteczny przy zautomatyzowanej analizie logw. thread Identyfikator wtku systemu operacyjnego nie jest ani unikalny (nawet w obrbie pojedynczej instancji programu stunnel), ani krtki. Jest on szczeglnie uyteczny przy diagnozowaniu problemw z oprogramowaniem lub konfiguracj. process Identyfikator procesu (PID) moe by uyteczny w trybie inetd. domylnie: sequential debug = POZIOM szczegowo logowania Poziom logowania mona okreli przy pomocy jednej z nazw lub liczb: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6) lub debug (7). Zapisywane s komunikaty o poziomie niszym (numerycznie) lub rwnym podanemu. Do uzyskania najwyszego poziomu szczegowoci mona uy opcji debug = debug lub debug = 7. Domylnym poziomem jest notice (5). delay = yes | no opnij rozwinicie adresu DNS podanego w opcji connect Opcja jest przydatna przy dynamicznym DNS, albo gdy usuga DNS nie jest dostpna przy starcie programu stunnel (klient VPN, poczenie wdzwaniane). Opnione rozwijanie adresu DNS jest wczane automatycznie, jeeli nie powiedzie si rozwinicie ktregokolwiek z adresw connect dla danej usugi. Opnione rozwijanie adresu automatycznie aktywuje failover = prio. domylnie: no engineId = NUMER_URZDZENIA wybierz silnik kryptograficzny dla usugi engineNum = NUMER_URZDZENIA wybierz silnik kryptograficzny dla usugi Urzdzenia s numerowane od 1 w gr. exec = CIEKA_DO_PROGRAMU wykonaj lokalny program przystosowany do pracy z superdemonem inetd Jeeli zdefiniowano katalog chroot, to cieka do exec jest okrelona wzgldem tego katalogu. Na platformach Unix ustawiane s nastpujce zmienne rodowiskowe: REMOTE_HOST, REMOTE_PORT, SSL_CLIENT_DN, SSL_CLIENT_I_DN. execArgs = $0 $1 $2 ... argumenty do opcji exec wcznie z nazw programu ($0) Cytowanie nie jest wspierane w obecnej wersji programu. Argumenty s rozdzielone dowoln liczb biaych znakw. failover = rr | prio Strategia wybierania serwerw wyspecyfikowanych parametrami "connect". rr round robin - sprawiedliwe rozoenie obcienia prio priority - uyj kolejnoci opcji w pliku konfiguracyjnym domylnie: prio ident = NAZWA_UYTKOWNIKA weryfikuj nazw zdalnego uytkownika korzystajc z protokou IDENT (RFC 1413) include = KATALOG wczytaj fragmenty plikw konfiguracyjnych z podanego katalogu Pliki s wczytywane w rosncej kolejnoci alfabetycznej ich nazw. Rekomendowana konwencja nazewnictwa plikw dla opcji globalnych: 00-global.conf dla lokalnych opcji usug: 01-service.conf 02-service.conf key = PLIK_KLUCZA klucz prywatny do certyfikatu podanego w opcji cert Klucz prywatny jest potrzebny do uwierzytelnienia waciciela certyfikatu. Poniewa powinien on by zachowany w tajemnicy, prawa do jego odczytu powinien mie wycznie waciciel pliku. W systemie Unix mona to osign komend: chmod 600 keyfile Jeeli uywany jest silnik kryptograficzny, to opcja key pozwala wybra identyfikator uywanego klucza prywatnego. domylnie: warto opcji cert libwrap = yes | no wcz lub wycz korzystanie z /etc/hosts.allow i /etc/hosts.deny. domylnie: no (od wersji 5.00) local = HOST IP rda do nawizywania zdalnych pocze Domylnie uywane jest IP najbardziej zewntrznego interfejsu w stron serwera, do ktrego nawizywane jest poczenie. OCSP = URL responder OCSP do weryfikacji certyfikatu drugiej strony poczenia OCSPaia = yes | no weryfikuj certyfikaty przy uyciu respondertw AIA Opcja OCSPaia pozwala na weryfikowanie certyfikatw przy pomocy listy URLi responderw OCSP przesanych w rozszerzeniach AIA (Authority Information Access). OCSPflag = FLAGA_OCSP flaga respondera OCSP Aktualnie wspierane flagi: NOCERTS, NOINTERN, NOSIGS, NOCHAIN, NOVERIFY, NOEXPLICIT, NOCASIGN, NODELEGATED, NOCHECKS, TRUSTOTHER, RESPID_KEY, NOTIME Aby wyspecyfikowa kilka flag naley uy OCSPflag wielokrotnie. OCSPnonce = yes | no wysyaj i weryfikuj OCSP nonce Opcja OCSPnonce zabezpiecza protok OCSP przed atakami powtrzeniowymi. Ze wzgldu na zoono obliczeniow rozszerzenie nonce jest zwykle wspierane jedynie przez wewntrzne (np. korporacyjne), a nie przez publiczne respondery OCSP. OCSPrequire = yes | no wymagaj rozstrzygajcej odpowiedzi respondera OCSP OCSPrequire = yes | no Wyczenie tej opcji pozwala na zaakceptowanie poczenia pomimo braku otrzymania rozstrzygajcej odpowiedzi OCSP ze staplingu i bezporedniego dania wysanego do respondera. default: yes domylnie: 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 wywietla opcje dozwolone w aktualnej kombinacji programu stunnel i biblioteki OpenSSL. Aby wyspecyfikowa kilka opcji naley uy options wielokrotnie. Nazwa opcji moe by poprzedzona mylnikiem ("-") celem wyczenia opcji. Na przykad, dla zachowania kompatybilnoci z bdami implementacji TLS w programie Eudora, mona uy opcji: options = DONT_INSERT_EMPTY_FRAGMENTS domylnie: options = NO_SSLv2 options = NO_SSLv3 Poczwszy od OpenSSL 1.1.0, zamiast wycza okrelone wersje protokow TLS uyj opcji sslVersionMax lub sslVersionMin. protocol = PROTOK negocjuj TLS podanym protokoem aplikacyjnym Opcja ta wcza wstpn negocjacj szyfrowania TLS dla wybranego protokou aplikacyjnego. Opcji protocol nie naley uywa z szyfrowaniem TLS na osobnym porcie. Aktualnie wspierane protokoy: cifs Nieudokumentowane rozszerzenie protokou CIFS wspierane przez serwer Samba. Wsparcie dla tego rozszerzenia zostao zarzucone w wersji 3.0.0 serwera Samba. capwin Wsparcie dla aplikacji http://www.capwin.org/ capwinctrl Wsparcie dla aplikacji http://www.capwin.org/ Ten protok jest wspierany wycznie w trybie klienckim. connect Negocjacja RFC 2817 - Upgrading to TLS Within HTTP/1.1, rozdzia 5.2 - Requesting a Tunnel with CONNECT Ten protok jest wspierany wycznie w trybie klienckim. imap Negocjacja RFC 2595 - Using TLS with IMAP, POP3 and ACAP ldap Negocjacja RFC 2830 - Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security nntp Negocjacja RFC 4642 - Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP) Ten protok jest wspierany wycznie w trybie klienckim. pgsql Negocjacja http://www.postgresql.org/docs/8.3/static/protocol-flow.html#AEN73982 pop3 Negocjacja RFC 2449 - POP3 Extension Mechanism proxy Przekazywanie oryginalnego IP klienta przez protok 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 protok SOCKS w wersjach 4, 4a i 5. Protok SOCKS enkapsulowany jest w protokole TLS, wic adres serwera docelowego nie jest widoczny dla napastnika przechwytujcego ruch sieciowy. http://www.openssh.com/txt/socks4.protocol http://www.openssh.com/txt/socks4a.protocol Nie jest wspierana komenda BIND protokou SOCKS. Przesana warto parametru USERID jest ignorowana. Sekcja PRZYKADY zawiera przykadowe pliki konfiguracyjne VPNa zbudowanego w oparciu o szyfrowany protok SOCKS. protocolAuthentication = UWIERZYTELNIENIE rodzaj uwierzytelnienia do negocjacji protokou Opcja ta jest wpierana wycznie w klienckich protokoach 'connect' i 'smtp'. W protokole 'connect' wspierane jest uwierzytelnienie 'basic' oraz 'ntlm'. Domylnym rodzajem uwierzytelnienia protokou 'connect' jest 'basic'. W protokole 'smtp' wspierane jest uwierzytelnienie 'plain' oraz 'login'. Domylnym rodzajem uwierzytelnienia protokou 'smtp' jest 'plain'. protocolDomain = DOMENA domena do negocjacji protokou W obecnej wersji opcja ma zastosowanie wycznie w protokole 'connect'. protocolHeader = NAGWEK nagwek do negocjacji protokou W obecnej wersji opcja ma zastosowanie wycznie w protokole 'connect'. protocolHost = ADRES adres hosta do negocjacji protokou Dla protokou 'connect', protocolHost okrela docelowy serwer TLS, do ktrego poczy ma si proxy. Adres serwera proxy, do ktrego czy si stunnel, musi by okrelony przy pomocy opcji connect. Dla protokou 'smtp', protocolHost okrela warto HELO/EHLO wysyanego przy negocjacji klienta. protocolPassword = HASO haso do negocjacji protokou Opcja ta jest wspierana wycznie w klienckich protokoach 'connect' i 'smtp'. protocolUsername = UYTKOWNIK nazwa uytkownika do negocjacji protokou Opcja ta jest wspierana wycznie w klienckich protokoach 'connect' i 'smtp'. PSKidentity = TOSAMO tosamo klienta PSK PSKidentity moe zosta uyte w sekcjach klienckich do wybrania tosamoci uytej do uwierzytelnienia PSK. Opcja jest ignorowana w sekcjach serwerowych. domylnie: pierwsza tosamo zdefiniowana w pliku PSKsecrets PSKsecrets = PLIK plik z tosamociami i kluczami PSK Kada linia pliku jest w nastpujcym formacie: TOSAMO:KLUCZ Szesnastkowe klucze s automatycznie konwertowane do postaci binarnej. Klucz musi by mie przynajmniej 16 bajtw, co w przypadku kluczy szesnastkowych przekada si na przynajmniej 32 znaki. Naley ograniczy dostp 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, ktremu nie udao si poprawnie uwierzytelni przy pomocy certyfikatu Opcja dziaa wycznie w trybie serwera. Cz negocjacji protokow jest niekompatybilna z opcj redirect. renegotiation = yes | no pozwalaj na renegocjacj TLS Zastosowania renegocjacji TLS zawieraj niektre scenariusze uwierzytelniania oraz renegocjacj kluczy dla dugotrwaych pocze. Z drugiej strony wasno na moe uatwi trywialny atak DoS poprzez wygenerowanie obcienia procesora: http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html Warto zauway, e zablokowanie renegocjacji TLS nie zabezpiecza w peni przed opisanym problemem. domylnie: yes (o ile wspierane przez OpenSSL) reset = yes | no sygnalizuj wystpienie bdu przy pomocy flagi TCP RST Opcja nie jest wspierana na niektrych platformach. domylnie: yes retry = yes | no | OPNIENIE pocz ponownie sekcj connect+exec po rozczeniu Warto parametru OPNIENIE okrela liczb milisekund oczekiwania przed wykonaniem ponownego poczenia. "retry = yes" jest synonimem dla "retry = 1000". domylnie: no securityLevel = POZIOM ustaw poziom bezpieczestwa Znaczenie kadego poziomu opisano poniej: poziom 0 Wszystko jest dozwolone. poziom 1 Poziom bezpieczestwa zapewniajcy minimum 80 bitw bezpieczestwa. adne parametry kryptograficzne oferujce poziom bezpieczestwa poniej 80 bitw nie mog zosta uyte. W zwizku z tym RSA, DSA oraz klucze DH krtsze ni 1024 bity, a take klucze ECC krtsze ni 160 bitw i wszystkie eksportowe zestawy szyfrw s niedozwolone. Uycie SSLv2 jest zabronione. Wszelkie listy parametrw kryptograficznych uywajce MD5 do MAC s zabronione. Poczwszy od OpenSSL 3.0 wersje TLS starsze ni 1.2 s wyczone. poziom 2 Poziom bezpieczestwa zapewniajcy 112 bitw bezpieczestwa. W zwizku z tym RSA, DSA oraz klucze DH krtsze ni 2048 bitw, a take klucze ECC krtsze ni 224 bity s niedozwolone. Oprcz wycze z poziomu 1 zabronione jest take korzystanie z zestaww szyfrw uywajcych RC4. Kompresja jest wyczona. Uycie SSLv3 jest zabronione dla wersji OpenSSL starszych ni 3.0. poziom 3 Poziom bezpieczestwa zapewniajcy 128 bitw bezpieczestwa. W zwizku z tym RSA, DSA oraz klucze DH krtsze ni 3072 bity, a take klucze ECC krtsze ni 256 bitw s niedozwolone. Oprcz wycze z poziomu 2 zabronione jest take korzystanie z zestaww szyfrw nie zapewniajcych utajniania z wyprzedzeniem (forward secrecy). Bilety sesji s wyczone. Wersje TLS starsze ni 1.1 s zabronione dla wersji OpenSSL starszych ni 3.0. poziom 4 Poziom bezpieczestwa zapewniajcy 192 bity bezpieczestwa. W zwizku z tym RSA, DSA oraz klucze DH krtsze ni 7680 bitw, a take klucze ECC krtsze ni 384 bity s niedozwolone. Listy parametrw kryptograficznych uywajcych SHA1 do MAC s zabronione. Wersje TLS starsze ni 1.2 s zabronione dla wersji OpenSSL starszych ni 3.0. poziom 5 Poziom bezpieczestwa zapewniajcy 256 bitw bezpieczestwa. W zwizku z tym RSA, DSA oraz klucze DH krtsze ni 15360 bitw, a take klucze ECC krtsze ni 512 bitw s niedozwolone. domylnie: 2 Opcja securityLevel jest dostpna poczwszy od OpenSSL 1.1.0. requireCert = yes | no wymagaj certyfikatu klienta dla verifyChain lub verifyPeer Przy opcji requireCert ustawionej na no, stunnel akceptuje poczenia klientw, ktre nie wysay certyfikatu. Zarwno verifyChain = yes jak i verifyPeer = yes automatycznie ustawiaj requireCert na yes. domylnie: no setgid = IDENTYFIKATOR_GRUPY (tylko Unix) identyfikator grupy Unix Jako opcja globalna: grupa, z ktrej prawami pracowa bdzie stunnel. Jako opcja usugi: grupa gniazda Unix utworzonego przy pomocy opcji "accept". setuid = IDENTYFIKATOR_UYTKOWNIKA (tylko Unix) identyfikator uytkownika Unix Jako opcja globalna: uytkownik, z ktrego prawami pracowa bdzie stunnel. Jako opcja usugi: waciciel gniazda Unix utworzonego przy pomocy opcji "accept". sessionCacheSize = LICZBA_POZYCJI_CACHE rozmiar pamici podrcznej sesji TLS Parametr okrela maksymaln liczb pozycji wewntrznej pamici podrcznej sesji. Warto 0 oznacza brak ograniczenia rozmiaru. Nie jest to zalecane dla systemw produkcyjnych z uwagi na ryzyko ataku DoS przez wyczerpanie pamici RAM. sessionCacheTimeout = LICZBA_SEKUND przeterminowanie pamici podrcznej sesji TLS Parametr okrela czas w sekundach, po ktrym sesja TLS zostanie usunita z pamici podrcznej. sessionResume = yes | no zezwalaj lub nie zezwalaj na wznawianie sesji domylnie: yes sessiond = HOST:PORT adres sessiond - serwera cache sesji TLS sni = NAZWA_USUGI:WZORZEC_NAZWY_SERWERA (tryb serwera) Uyj usugi jako podrzdnej (virtualnego serwera) dla rozszerzenia TLS Server Name Indication (RFC 3546). NAZWA_USUGI wskazuje usug nadrzdn, ktra odbiera poczenia od klientw przy pomocy opcji accept. WZORZEC_NAZWY_SERWERA wskazuje nazw serwera wirtualnego. Wzorzec moe zaczyna si znakiem '*', np. '*.example.com". Z pojedyncz usug nadrzdn powizane jest zwykle wiele usug podrzdnych. Opcja sni moe by rwnie uyta wielokrotnie w ramach jednej usugi podrzdnej. Zarwno usuga nadrzdna jak i podrzdna nie moe by skonfigurowana w trybie klienckim. Opcja connect usugi podrzdnej jest ignorowana w poczeniu z opcj protocol, gdy poczenie do zdalnego serwera jest w tym wypadku nawizywane przed negocjacj TLS. Uwierzytelnienie przy pomocy biblioteki libwrap jest realizowane dwukrotnie: najpierw dla usugi nadrzdnej po odebraniu poczenia TCP, a nastpnie dla usugi podrzdnej podczas negocjacji TLS. Opcja sni jest dostpna poczwszy od OpenSSL 1.0.0. sni = NAZWA_SERWERA (tryb klienta) Uyj parametru jako wartoci rozszerzenia TLS Server Name Indication (RFC 3546). Pusta warto parametru NAZWA_SERWERA wycza wysyanie rozszerzenia SNI. Opcja sni jest dostpna poczwszy od OpenSSL 1.0.0. socket = a|l|r:OPCJA=WARTO[:WARTO] ustaw opcj na akceptujcym/lokalnym/zdalnym gniedzie Dla opcji linger wartoci maj posta l_onof:l_linger. Dla opcji time wartoci maj posta tv_sec:tv_usec. Przykady: socket = l:SO_LINGER=1:60 ustaw jednominutowe przeterminowanie przy zamykaniu lokalnego gniazda socket = r:SO_OOBINLINE=yes umie dane pozapasmowe (out-of-band) bezporednio w strumieniu danych wejciowych dla zdalnych gniazd socket = a:SO_REUSEADDR=no zablokuj ponowne uywanie portu (domylnie wczone) socket = a:SO_BINDTODEVICE=lo przyjmuj poczenia wycznie na interfejsie zwrotnym (ang. loopback) sslVersion = WERSJA_SSL wersja protokou TLS Wspierane wersje: all, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 Dostpno konkretnych protokow zaley od uytej wersji OpenSSL. Starsze wersje OpenSSL nie wspieraj TLSv1.1, TLSv1.2, TLSv1.3. Nowsze wersje OpenSSL nie wspieraj SSLv2. Przestarzae protokoy SSLv2 i SSLv3 s domylnie wyczone. Poczwszy od OpenSSL 1.1.0, ustawienie sslVersion = WERSJA_SSL jest rwnowane opcjom sslVersionMax = WERSJA_SSL sslVersionMin = WERSJA_SSL sslVersionMax = WERSJA_SSL maksymalna wspierana wersja protokou TLS Wspierane wersje: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 all wcza wszystkie wersje protokow a do maksymalnej wersji wspieranej przez bibliotek uytej wersji OpenSSL. Dostpno konkretnych protokow zaley od uytej wersji OpenSSL. Opcja sslVersionMax jest dostpna poczwszy od OpenSSL 1.1.0. domylnie: all sslVersionMin = WERSJA_SSL minimalna wspierana wersja protokou TLS Wspierane wersje: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 all wcza wszystkie wersje protokow a do minimalnej wersji wspieranej przez bibliotek uytej wersji OpenSSL. Dostpno konkretnych protokow zaley od uytej wersji OpenSSL. Opcja sslVersionMin jest dostpna poczwszy od OpenSSL 1.1.0. domylnie: TLSv1 stack = LICZBA_BAJTW (z wyjtkiem modelu FORK) rozmiar stosu procesora tworzonych wtkw Zbyt duy stos zwiksza zuycie pamici wirtualnej. Zbyt may stos moe powodowa problemy ze stabilnoci aplikacji. domylnie: 65536 bytes (wystarczajcy dla testowanych platform) ticketKeySecret = SECRET szesnastkowy klucz symetryczny uywany przez serwer do zapewnienia poufnoci biletw sesji Bilety sesji zdefiniowane w RFC 5077 zapewniaj ulepszon moliwo wznawiania sesji, w ktrej implementacja serwera nie jest wymagana do utrzymania stanu sesji. czne uycie opcji ticketKeySecret i ticketMacSecret umoliwia wznawianie sesji na klastrze serwerw lub wznowienie sesji po restarcie serwera. Klucz musi mie rozmiar 16 lub 32 bajtw, co przekada si na dokadnie 32 lub 64 cyfry szesnastkowe. Poszczeglne bajty mog by opcjonalnie oddzielone dwukropkami. Opcja dziaa wycznie w trybie serwera. Opcja ticketKeySecret jest dostpna poczwszy od OpenSSL 1.0.0. Wyczenie opcji NO_TICKET jest wymagane dla obsugi biletw sesji w OpenSSL-u starszym ni 1.1.1, ale opcja ta jest niekompatybilna z opcj redirect. ticketMacSecret = SECRET szesnastkowy klucz symetryczny uywany przez serwer zapewnienia integralnoci biletw sesji Klucz musi mie rozmiar 16 lub 32 bajtw, co przekada si na dokadnie 32 lub 64 cyfry szesnastkowe. Poszczeglne bajty mog by opcjonalnie oddzielone dwukropkami. Opcja dziaa wycznie w trybie serwera. Opcja ticketMacSecret jest dostpna poczwszy od OpenSSL 1.0.0. TIMEOUTbusy = LICZBA_SEKUND czas oczekiwania na spodziewane dane TIMEOUTclose = LICZBA_SEKUND czas oczekiwania na close_notify (ustaw na 0, jeeli klientem jest MSIE) TIMEOUTconnect = LICZBA_SEKUND czas oczekiwania na nawizanie poczenia TIMEOUTidle = LICZBA_SEKUND maksymalny czas utrzymywania bezczynnego poczenia TIMEOUTocsp = LICZBA_SEKUND czas oczekiwania na nawizanie poczenia z serwerem OCSP transparent = none | source | destination | both (tylko Unix) tryb przezroczystego proxy na wspieranych platformach Wspierane wartoci: none Zablokuj wsparcie dla przezroczystego proxy. Jest to warto domylna. source Przepisz adres, aby nawizywane poczenie wydawao si pochodzi bezporednio od klienta, a nie od programu stunnel. Opcja jest aktualnie obsugiwana w: Trybie zdalnym (opcja connect) w systemie Linux >=2.6.28 Konfiguracja wymaga nastpujcych ustawie iptables oraz routingu (na przykad 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 by wykonywany jako root i bez opcji setuid. Trybie zdalnym (opcja connect) w systemie Linux 2.2.x Konfiguracja ta wymaga skompilowania jdra z opcj transparent proxy. Docelowa usuga musi by umieszczona na osobnej maszynie, do ktrej routing kierowany jest poprzez serwer stunnela. Dodatkowo stunnel powinien by wykonywany jako root i bez opcji setuid. Trybie zdalnym (opcja connect) w systemie FreeBSD >=8.0 Konfiguracja ta wymaga skonfigurowania firewalla i routingu. stunnel musi by wykonywany jako root i bez opcji setuid. Trybie lokalnym (opcja exec) Konfiguracja ta jest realizowana przy pomocy biblioteki libstunnel.so. Do zaadowania biblioteki wykorzystywana jest zmienna rodowiskowa _RLD_LIST na platformie Tru64 lub LD_PRELOAD na innych platformach. destination Oryginalny adres docelowy jest uywany zamiast opcji connect. Przykadowa konfiguracja przezroczystego adresu docelowego: [transparent] client = yes accept = <port_stunnela> transparent = destination Konfiguracja wymaga ustawie iptables, na przykad w pliku /etc/rc.local lub analogicznym. W przypadku docelowej usugi umieszczonej na tej samej maszynie: /sbin/iptables -t nat -I OUTPUT -p tcp --dport <port_przekierowany> \ -m ! --uid-owner <identyfikator_uytkownika_stunnela> \ -j DNAT --to-destination <lokalne_ip>:<lokalny_port> W przypadku docelowej usugi 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 wycznie w systemie Linux. both Uyj przezroczystego proxy zarwno dla adresu rdowego jak i docelowego. Dla zapewnienia kompatybilnoci z wczeniejszymi wersjami wspierane s dwie dodatkowe opcje: yes Opcja zostaa przemianowana na source. no Opcja zostaa przemianowana na none. verify = POZIOM weryfikuj certyfikat drugiej strony poczenia Opcja ta jest przestarzaa i naley j zastpi przez opcje verifyChain i verifyPeer. poziom 0 zarzdaj certyfikatu i zignoruj go poziom 1 weryfikuj, jeeli zosta 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 ignorujc acuch CA domylnie nie weryfikuj verifyChain = yes | no weryfikuj acuch certyfikatw drugiej strony Do weryfikacji certyfikatu serwera kluczowe jest, aby wymaga rwnie konkretnego certyfikatu przy pomocy checkHost lub checkIP. Samopodpisany certyfikat gwnego CA naley umieci albo w pliku podanym w opcji CAfile, albo w katalogu podanym w opcji CApath. domylnie: no verifyPeer = yes | no weryfikuj certyfikat drugiej strony Certyfikat drugiej strony naley umieci albo w pliku podanym w opcji CAfile, albo w katalogu podanym w opcji CApath. domylnie: no ZWRACANA WARTO stunnel zwraca zero w przypadku sukcesu, lub warto niezerow w przypadku bdu. SIGNAY Nastpujce sygnay mog by uyte do sterowania programem w systemie Unix: SIGHUP Zaaduj ponownie plik konfiguracyjny. Niektre globalne opcje nie bd przeadowane: • chroot • foreground • pid • setgid • setuid Jeeli wykorzystywana jest opcja 'setuid' stunnel nie bdzie mg zaadowa ponownie konfiguracji wykorzystujcej uprzywilejowane (<1024) porty. Jeeli wykorzystywana jest opcja 'chroot' stunnel bdzie szuka wszystkich potrzebnych plikw (cznie z plikiem konfiguracyjnym, certyfikatami, logiem i plikiem pid) wewntrz katalogu wskazanego przez 'chroot'. SIGUSR1 Zamknij i otwrz ponownie log. Funkcja ta moe zosta uyta w skrypcie rotujcym log programu stunnel. SIGUSR2 Zapisz w logu list aktywnych pocze. SIGTERM, SIGQUIT, SIGINT Zakocz dziaanie programu. Skutek wysania innych sygnaw jest niezdefiniowany. PRZYKADY Szyfrowanie pocze do lokalnego serwera imapd mona uy: [imapd] accept = 993 exec = /usr/sbin/imapd execArgs = imapd albo w trybie zdalnym: [imapd] accept = 993 connect = 143 Aby umoliwi lokalnemu klientowi poczty elektronicznej korzystanie z serwera imapd przez TLS naley skonfigurowa pobieranie poczty z adresu localhost i portu 119, oraz uy nastpujcej konfiguracji: [imap] client = yes accept = 143 connect = serwer:993 W poczeniu z programem pppd stunnel pozwala zestawi prosty VPN. Po stronie serwera nasuchujcego na porcie 2020 jego konfiguracja moe wyglda nastpujco: [vpn] accept = 2020 exec = /usr/sbin/pppd execArgs = pppd local pty = yes Poniszy plik konfiguracyjny moe by wykorzystany do uruchomienia programu stunnel w trybie inetd. Warto zauway, e w pliku konfiguracyjnym nie ma sekcji [nazwa_usugi]. exec = /usr/sbin/imapd execArgs = imapd Aby skonfigurowa VPN mona uy nastpujcej konfiguracji klienta: [socks_client] client = yes accept = 127.0.0.1:1080 connect = vpn_server:9080 verifyPeer = yes CAfile = stunnel.pem Odpowiadajca jej konfiguracja serwera vpn_server: [socks_server] protocol = socks accept = 9080 cert = stunnel.pem key = stunnel.key Do przetestowania konfiguracji mona wyda na maszynie klienckiej komend: curl --socks4a localhost http://www.example.com/ Przykadowa konfiguracja serwera SNI: [virtual] ; usuga nadrzdna accept = 443 cert = default.pem connect = default.internal.mydomain.com:8080 [sni1] ; usuga podrzdna 1 sni = virtual:server1.mydomain.com cert = server1.pem connect = server1.internal.mydomain.com:8081 [sni2] ; usuga podrzdna 2 sni = virtual:server2.mydomain.com cert = server2.pem connect = server2.internal.mydomain.com:8082 verifyPeer = yes CAfile = server2-allowed-clients.pem Przykadowa konfiguracja umoliwiajca uwierzytelnienie z uyciem klucza prywatnego przechowywanego w Windows Certificate Store (tylko Windows): engine = capi [service] engineId = capi client = yes accept = 127.0.0.1:8080 connect = example.com:8443 W przypadku uycia silnika CAPI, nie naley ustawia opcji cert, gdy klucz klienta zostanie automatycznie pobrany z Certificate Store na podstawie zaufanych certyfikatw CA przedstawionych przez serwer. Przykadowa konfiguracja umoliwiajca uycie certyfikatu i klucza prywatnego z urzdzenia obsugiwanego 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 Przykadowa konfiguracja umoliwiajca uycie 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 NOTKI OGRANICZENIA stunnel nie moe by uywany do szyfrowania protokou FTP, poniewa do przesyania poszczeglnych plikw uywa on dodatkowych pocze otwieranych na portach o dynamicznie przydzielanych numerach. Istniej jednak specjalne wersje klientw i serwerw FTP pozwalajce na szyfrowanie przesyanych danych przy pomocy protokou TLS. TRYB INETD (tylko Unix) W wikszoci zastosowa stunnel samodzielnie nasuchuje na porcie podanym w pliku konfiguracyjnym i tworzy poczenie z innym portem podanym w opcji connect lub nowym programem podanym w opcji exec. Niektrzy wol jednak wykorzystywa oddzielny program, ktry odbiera poczenia, po czym uruchamia program stunnel. Przykadami takich programw s inetd, xinetd i tcpserver. Przykadowa linia pliku /etc/inetd.conf moe wyglda tak: imaps stream tcp nowait root /usr/local/bin/stunnel stunnel /usr/local/etc/stunnel/imaps.conf Poniewa w takich przypadkach poczenie na zdefiniowanym porcie (tutaj imaps) nawizuje osobny program (tutaj inetd), stunnel nie moe uywa opcji accept. W pliku konfiguracyjnym nie moe by rwnie zdefiniowana adna usuga ([nazwa_usugi]), poniewa konfiguracja taka pozwala na nawizanie tylko jednego poczenia. Wszystkie OPCJE USUG powinny by umieszczone razem z opcjami globalnymi. Przykad takiej konfiguracji znajduje si w sekcji PRZYKADY. CERTYFIKATY Protok TLS wymaga, aby kady serwer przedstawia si nawizujcemu poczenie klientowi prawidowym certyfikatem X.509. Potwierdzenie tosamoci serwera polega na wykazaniu, e posiada on odpowiadajcy certyfikatowi klucz prywatny. Najprostsz metod uzyskania certyfikatu jest wygenerowanie go przy pomocy wolnego pakietu OpenSSL. Wicej informacji na temat generowania certyfikatw mona znale na umieszczonych poniej stronach. Plik .pem powinien zawiera klucz prywatny oraz podpisany certyfikat (nie danie certyfikatu). Otrzymany plik powinien mie nastpujc posta: -----BEGIN RSA PRIVATE KEY----- [zakodowany klucz] -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- [zakodowany certyfikat] -----END CERTIFICATE----- LOSOWO stunnel potrzebuje zainicjowa PRNG (generator liczb pseudolosowych), gdy protok TLS wymaga do bezpieczestwa kryptograficznego rda dobrej losowoci. Nastpujce rda s kolejno odczytywane a do uzyskania wystarczajcej iloci entropii: • Zawarto pliku podanego w opcji RNDfile. • Zawarto pliku o nazwie okrelonej przez zmienn rodowiskow RANDFILE, o ile jest ona ustawiona. • Plik .rnd umieszczony w katalogu domowym uytkownika, jeeli zmienna RANDFILE nie jest ustawiona. • Plik podany w opcji '--with-random' w czasie konfiguracji programu. • Zawarto ekranu w systemie Windows. • Gniazdo egd, jeeli uyta zostaa opcja EGD. • Gniazdo egd podane w opcji '--with-egd-socket' w czasie konfiguracji programu. • Urzdzenie /dev/urandom. Warto zwrci uwag, e na maszynach z systemem Windows, na ktrych konsoli nie pracuje uytkownik, zawarto ekranu nie jest wystarczajco zmienna, aby zainicjowa PRNG. W takim przypadku do zainicjowania generatora naley uy opcji RNDfile. Plik RNDfile powinien zawiera dane losowe -- rwnie w tym sensie, e powinny by one inne przy kadym uruchomieniu programu stunnel. O ile nie uyta zostaa opcja RNDoverwrite jest to robione automatycznie. Do rcznego uzyskania takiego pliku uyteczna moe by komenda openssl rand dostarczana ze wspczesnymi wersjami pakietu OpenSSL. Jeszcze jedna istotna informacja -- jeeli dostpne jest urzdzenie /dev/urandom biblioteka OpenSSL ma zwyczaj zasilania nim PRNG w trakcie sprawdzania stanu generatora. W systemach z /dev/urandom urzdzenie to bdzie najprawdopodobniej uyte, pomimo e znajduje si na samym kocu powyszej listy. Jest to waciwo biblioteki OpenSSL, a nie programu stunnel. PARAMETRY DH Poczwszy od wersji 4.40 stunnel zawiera w kodzie programu 2048-bitowe parametry DH. Od wersji 5.18 te pocztkowe wartoci parametrw DH s wymieniane na automatycznie generowane parametry tymczasowe. Wygenerowanie parametrw DH moe zaj nawet wiele minut. Alternatywnie parametry DH mona umieci w pliku razem z certyfikatem, co wycza generowanie parametrw tymczasowych: openssl dhparam 2048 >> stunnel.pem PLIKI @sysconfdir@/stunnel/stunnel.conf plik konfiguracyjny programu BDY Opcja execArgs oraz linia komend Win32 nie obsuguje cytowania. ZOBACZ RWNIE tcpd(8) biblioteka kontroli dostpu do usug internetowych inetd(8) 'super-serwer' internetowy http://www.stunnel.org/ strona domowa programu stunnel http://www.openssl.org/ strona projektu OpenSSL AUTOR Micha Trojnara <Michal.Trojnara@stunnel.org> 5.74 2024.10.09 stunnel(8)
NAZWA | SKADNIA | OPIS | OPCJE | PLIK KONFIGURACYJNY | ZWRACANA WARTO | SIGNAY | PRZYKADY | NOTKI | PLIKI | BDY | ZOBACZ RWNIE | 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+14.3.quarterly>
