Portál AbcLinuxu, 11. prosinec 2017 14:03

Stavíme poštovní server – 12 (TLS)

25. 1. 2010 | Lukáš Jelínek
Články - Stavíme poštovní server – 12 (TLS)  

Mnoho lidí si zvyklo posílat e-mailem i velmi citlivá data. Přitom bezpečnost této technologie je srovnatelná s bezpečností pohlednice nebo korespondenčního lístku. Přestože pro skutečně bezpečnou komunikaci je třeba, aby byla každá zpráva zašifrována ještě před předáním do poštovního komunikačního řetězce (a naopak dešifrována až po výstupu z něj), mnohé zvědavé uši lze odstavit i šifrováním na úrovni komunikačních kanálů.

Obsah

O šifrování obecně

link

Proč šifrovat

link

Lidé se často obávají úniku citlivých informací. Přitom svěřují takové informace technologii, která již z principu nemůže být bezpečná. Ochranu proti neoprávněnému narušení důvěrnosti komunikace sice zajišťuje trestní zákoník a jeho poměrně tvrdé tresty (v extrémním případě až 8 let vězení), nicméně ani toto nedokáže odradit zvědavce (například z řad zaměstnanců poskytovatelů internetového připojení), kteří se rádi podívají, jaká data kolem nich tečou a co zajímavého obsahují. V extrémním případě může dokonce někdo nějaká data podvrhnout.

Kvalitní ochranu zajistí jen takové šifrování, které pokrývá celou cestu od odesílatele k příjemci. Pro takové účely jsou vhodné různé metody asymetrického šifrování, při kterém příjemce zveřejní svůj veřejný klíč, takže mu kdokoliv může poslat zašifrovanou zprávu – dešifrovat ji však může jen oprávněný příjemce svým tajným klíčem.

Takové šifrování je velmi bezpečné, nicméně není úplně nejjednodušší na používání. Obě komunikující strany musí používat stejnou technologii (např. PGP), je potřeba nějak zajistit její použití v rámci odesílání a příjmu zprávy (buď ručně, nebo integrací do poštovního klienta – to zatím není tak úplně samozřejmost) a v neposlední řadě se musí šifrovací klíč dostat od příjemce k odesílateli (samozřejmě tak, aby bylo zaručeno, že patří skutečně onomu příjemci).

Proto se v praxi takovéto řešení používá zatím poměrně zřídka. Přesto se lze ale pokusům o získání obsahu zpráv poměrně úspěšně bránit šifrováním alespoň části přenosového řetězce – tedy komunikací mezi klienty a servery, též samozřejmě mezi servery navzájem. Pro tyto účely se obvykle používá standardizovaná technologie TLS (příp. starší technologie SSL).

Při tomto řešení je pochopitelně potřeba považovat tuto e-mailovou komunikaci stále za nešifrovanou, protože „ucho“ může číhat přímo na některém ze serverů nebo v úseku, kde šifrování není podporováno (třeba i jen od cílového serveru do klienta příjemce).

Technologie TLS a SSL

link

Technologie TLS (Transport Layer Security) slouží, jak už anglický název napovídá, k bezpečnému přenosu dat na úrovni transportní vrstvy. To znamená, že se pro vyšší komunikační vrstvy (například relační nebo aplikační, jak je definuje model OSI) jeví transparentní a komunikace může probíhat v zásadě stejně, jako kdyby se komunikovalo jen pomocí „holé“ transportní vrstvy, tedy u Internetu typicky protokolu TCP. SSL je starší verzí této komunikační technologie – dnes se využívá TLS 1.0, což je mírně upravená a hlavně standardizovaná (RFC 2246) verze staršího protokolu SSL 3.0. Pokud se dnes hovoří o TLS/SSL, bere se obvykle v úvahu jen TLS 1.0 a novější verze, přestože se servery někdy konfigurují tak, aby kvůli kompatibilitě se starými programy podporovaly i staré protokoly.

„V zásadě stejně“ (bohužel i bohudík) neznamená „úplně stejně“. Například komunikace, která vyžaduje analýzu nebo dokonce modifikaci přenášených dat, nebude přes TLS fungovat nebo bude vyžadovat jiné chování. Typickými případy jsou využití NAT v kombinaci s protokolem FTP v aktivním režimu nebo využití protokolu HTTP s virtuálními servery (hlavička Host) – na tohle je potřeba si dát pozor.

TLS zajišťuje jednak samotné šifrování různými algoritmy (podle konfigurace a podle toho, co obě komunikující strany podporují), ale současně také ověření totožnosti jedné nebo obou stran – není totiž nic platné šifrování, když se komunikuje s podvodníkem, který se vydává za legitimní protistranu. Obvykle se používá jen ověření serveru, protože totožnost klienta není potřeba ověřovat (anonymní přístup k webu apod.) nebo je ověřována jiným způsobem (většinou jméno a heslo), nicméně možnost ověření klienta je v řadě případů užitečná.

Pro kontrolu totožnosti se používají certifikáty podle standardu X.509. Lze používat „samopodepsané“ certifikáty – s tím, že budou na protistraně certifikát nebo kořenový certifikát vlastní certifikační autority nainstalovány. Pro veřejné použití jsou ale vhodnější certifikáty podepsané certifikační autoritou, jejíž kořenový certifikát je poskytován v rámci používaných programů (používá se označení „důvěryhodné autority“, i když v některých případech to s tou důvěrou není až tak horké), protože pak není relativně bezpečná komunikace omezena na malou množinu komunikujících stran.

TLS pro poštovní komunikaci

link

V rámci poštovní komunikace lze TLS použít pro všechny komunikační protokoly, tedy SMTP, IMAP i POP3. Předpokladem je, aby komunikaci podporovaly příslušné programy (i když to úplně striktní podmínka není – existují řešení jako stunnel, která poskytnou TLS i programům bez podpory této technologie). Také je samozřejmě potřeba si připravit potřebný certifikát nebo více certifikátů.

Další důležitou věcí je, že TLS lze využívat ve dvou režimech – implicitně a explicitně. Implicitní režim znamená, že komunikace probíhá od počátku šifrovaně, resp. ihned po sestavení komunikačního kanálu proběhne sestavení TLS komunikace a jinak komunikovat nelze. Explicitní režim se naopak zapíná z nešifrovaně probíhající komunikace. Implicitní režim vyžaduje samostatný port (na kterém server naslouchá jen pro účely této komunikace), kdežto režim explicitní probíhá na běžném portu určeném původně pro nešifrovanou komunikaci.

Výhodou explicitního režimu (realizovaného pomocí rozšíření STARTTLS) je, že není třeba mít otevřen samostatný port. Po připojení klienta server deklaruje, že podporuje STARTTLS, načež klient může – pokud je tak nastaven – následně odeslat příkaz STARTTLS (nebo jeho jinou konkrétní reprezentaci) a zahájit tak sestavování šifrované komunikace. Nevýhodou je naopak nutnost podpory přímo v rámci příslušného aplikačního protokolu a také nemožnost tento režim používat s klienty bez podpory TLS (u kterých se u implicitního režimu použije stunnel).

Zprovoznění TLS na poštovním serveru

link

Pro používání TLS na e-mailovém serveru je nejprve potřeba splnit několik předpokladů. Především musí být programy zkompilovány a nainstalovány s podporou této technologie (např. přes knihovnu OpenSSL, případně GNU TLS), což může u některých distribucí znamenat instalaci dodatečných balíčků. Obecně ale jak Postfix, tak Dovecot bývají připraveny k takovému nasazení, takže víc než doinstalace příslušné komponenty nebývá potřeba.

Dalším předpokladem je příprava certifikátů. Pokud se bude certifikát používat jen pro ověřování totožnosti serveru, stačí mít pro daný stroj jediný certifikát. Ten si lze připravit například pomocí nástroje openssl (návodů, jak to udělat, je na Internetu plno, například přímo na webu OpenSSL). Pokud bude certifikát samopodepsaný, lze si všechno udělat přímo na serveru – má-li být ale certifikát podepsán důvěryhodnou autoritou, nezbývá, než si vygenerovat požadavek (CSR, Certificate Signing Request) a ten předat zvolené autoritě, která ho za určitý finanční obnos podepíše.

Pokud se nechává certifikát podepisovat důvěryhodnou autoritou, je třeba splnit požadavky autority, typicky například na dobu platnosti. Standardní doba platnosti je 1 rok, nicméně v některých případech může být tato doba jiná. U samopodepisovaných certifikátů je režim mnohem volnější.

Certifikát se na server nainstaluje tak, aby k němu měly přístup programy, které ho používají. Často se dává například do /etc/ssl/certs, kde bývají nainstalovány také kořenové certifikáty certifikačních autorit. Tajný klíč, který k certifikátu přísluší, se umísťuje na bezpečné místo (např. /etc/ssl/private), kam má přístup jen root. Tyto cesty se pak použijí v konfiguraci programů.

Certifikát musí být ve formátu PEM, klíč musí být nezašifrovaný (bez hesla). Lze použít klíč a certifikát RSA nebo DSA (u Postfixu 2.6 společně s OpenSSL 0.9.9 také ECDSA). Následující popis je určen pro RSA, nicméně přizpůsobení pro klíče a certifikáty s jinými algoritmy je snadné (v podstatě se jen v názvech parametrů _key_, resp. _cert_ nahradí _dkey_, či _eckey_ atd.). Certifikát a příslušný klíč mohou být každý ve svém souboru, jak je uvedeno výše, ale funguje i varianta ve společném souboru – pak ovšem musí být na tento soubor uplatněna přístupová práva jako pro klíč.

Konfigurace programu Postfix

link

Poslední nezbytnou podmínkou pro fungování TLS je samozřejmě správné nakonfigurování jednotlivých programů. Vždy je potřeba TLS zapnout (ať už jako explicitní, nebo implicitní), nastavit cesty k souborům a v neposlední řadě také definovat chování technologie.

Definicí chování se rozumí například míra povinnosti používat TLS, zapnutí/vypnutí ověřování klientů, volba šifrovacích algoritmů apod. Toto všechno se bude řídit účelem, za kterým se technologie nastavuje. Například lze povolit pouze silné šifry, čímž se však zabrání některým starším programům komunikovat. Ověřování klientů může mít zase smysl jako náhrada (nebo doplněk) autentizace při odesílání pošty z počítačů kdekoliv na světě.

Konfiguraci TLS je třeba rozdělit na dvě části – jednu pro Postfix v roli serveru (tedy pro komunikaci s klienty, příjem zpráv), druhou v roli klienta (tedy pro předávání zpráv jinam). Konfigurace může vypadat tak, že v jedné roli se TLS používat bude, kdežto v druhé nikoliv. V některých situacích to může mít smysl.

Následující kus souboru main.cf ukazuje obě části pohromadě. Nastavuje explicitní režim TLS s nepovinným používáním:

smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache
smtp_tls_loglevel = 1

smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/certs/moje.domena.crt
smtpd_tls_key_file = /etc/ssl/private/moje.domena.key
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_session_cache
smtpd_tls_loglevel = 1

Parametr smtp_tls_security_level říká, jak se bude přistupovat k používání TLS. Výchozí hodnota je none (vypnuto), may znamená dobrovolné používání TLS. Lze použít také povinné (encrypt), kdy je vyloučena nešifrovaná komunikace, případně ještě vyšší verze povinného šifrování, například verify (kontrola platnosti certifikátu, jeho důvěryhodnosti a názvu). Toto se zde týká klientské části, tedy předávání zpráv na jiný server. Podobný smysl má u serverové části parametr smtpd_tls_security_level.

smtp_tls_session_cache_database, resp. smtpd_tls_session_cache_database, je umístění a způsob uložení cache TLS relací. O ně se stará služba tlsmgr, která je ukládá nastaveným způsobem. Vhodné je uložení do stromu, vzhledem k poměrně velkému objemu dat. Využití cache není povinné, zvyšuje však výkon. Standardní životnost objektů je 1 hodina (lze změnit pomocí smtp_tls_session_cache_timeoutsmtpd_tls_session_cache_timeout).

smtp_tls_loglevelsmtpd_tls_loglevel určují úroveň záznamu souvisejícího s TLS. Běžně je vhodná úroveň 1, při které se zaznamenávají informace o sestavování relací a o certifikátech. Vyšší úrovně se hodí při ladění, úplné vypnutí (úroveň 0, je výchozí) je obvykle zbytečné.

V serverové části ještě zbývají dva okruhy parametrů. Jednak jsou to cesty k certifikátu a klíči (smtpd_tls_cert_filesmtpd_tls_key_file), které se nastaví samozřejmě podle umístění těchto souborů. Poslední je smtpd_tls_received_header, který při aktivaci způsobí, že se do každé zprávy vloží hlavička s informací o použití TLS, včetně údajů o verzi a použitých algoritmech.

Vyšší úroveň bezpečnosti

link

Uvedená konfigurace zajišťuje použití šifrování vždy, když je to možné. Pro příjem zpráv záleží na nastavení klienta, pro předávání jinam zase na možnostech cílového serveru. Toto nastavení nekontroluje totožnost protistran (proto nezaručuje, že se zprávy předávají správnému serveru nebo že se přebírají od správného klienta) ani nevynucuje použití šifrování.

Tyto nedostatky lze odstranit zvýšením úrovně bezpečnosti. Je však třeba si uvědomit, že toto zvýšení je na úkor kompatibility, protože odřízne část komunikujících protistran. Úplně nejjednodušší věc je nastavení přístupu ke kořenovým certifikátům certifikačních autorit. Tyto certifikáty je však potřeba mít nejdřív nainstalované; mohou být v samostatném balíčku, nezávisle na technologii TLS i na programech, které TLS používají.

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Toto se použije, pokud jsou certifikáty v jednom společném souboru. Pokud by se používaly samostatné soubory, definoval by se adresář pomocí smtp_tls_CApath (toto řešení má různá úskalí, například nutnost umístit certifikáty dovnitř prostředí chroot, pokud se toto prostředí používá). Nadefinuje-li se takto přístup ke kořenovým certifikátům, lze kontrolovat certifikáty serverů, na něž se konfigurovaný server připojuje. Samotná kontrola ovšem zatím nic neznamená, protože se její výsledky nevyužívají – pouze se zapisují do logu.

Skutečný smysl kontrola získává až s volbou přísnějšího režimu. Nestačí jen vynutit šifrování pomocí encrypt, nýbrž je potřeba zapnout i ověřování totožnosti:

smtp_tls_security_level = verify

Tím se dosáhne toho, že se při předávání zpráv bude ověřovat platnost certifikátu (časová, nepřítomnost na revokačním seznamu), jeho důvěryhodnost (musí být podepsán certifikační autoritou, jejíž kořenový certifikát je ve výše popsaném úložišti) a také shodu názvu serveru v certifikátu se skutečným názvem. Shoda se ve výchozím stavu testuje podle doménového názvu serveru, chování lze ale změnit pomocí smtp_tls_verify_cert_match (například nastavením na konkrétní názvy).

Úroveň verify není stále ještě dostatečně bezpečná. Právě proto, že se může název serveru zjišťovat z DNS nešifrovaným kanálem, hrozí podvržení odpovědi. Proto existuje ještě úroveň secure, která využívá pouze informací dostupných přímo z konfigurace pro servery, kam se pošta předává (tzv. next hop).

Pro funkci běžného internetového poštovního serveru nejsou vyšší úrovně než may vhodné (dokonce to RFC 2487 zakazuje), protože odříznou mnoho serverů nepodporujících šifrování nebo nepoužívajících důvěryhodné certifikáty.

Další možností zvýšení bezpečnosti – tentokrát v trochu jiném stylu – je zákaz autentizace bez použití TLS. O co jde? Pokud si vzpomenete na díl věnovaný autentizaci klientů, tak jedním ze zásadních problémů je uložení a přenos hesla. Pokud je heslo uloženo zašifrované, výrazně to omezuje použitelnost různých autentizačních metod – a naopak, pro plnou škálu je potřeba mít heslo uloženo nezašifrované. Pokud se používá TLS, lze posílat heslo klidně v otevřeném tvaru (plain), protože jde po šifrovaném kanálu. Čili může být uloženo nezašifrované bez negativních dopadů na bezpečnost ověřování.

smtpd_tls_auth_only = yes

Takto se zajistí, že ověřování uživatele bude fungovat jen v případě, že se komunikuje přes TLS. Při nešifrované komunikaci nelze uživatele ověřit, navíc server takovou možnost ani nebude nabízet.

Klientské certifikáty

link

Klientské certifikáty nejsou běžnou záležitostí, nicméně v některých případech je lze s výhodou použít. Jde v zásadě o to, že kromě obvyklého prokázání totožnosti ze strany serveru se totéž provádí i ze strany klienta. Může to být výhodné například v případě, že se pro odesílání zpráv využívá SMTP server nedisponující databází uživatelů a současně je potřeba odesílat zprávy z různých internetových adres. Pak je klientský certifikát zajímavou možností, jak snadno zajistit ověřování a současně neotevřít server spammerům.

smtpd_tls_ask_ccert = yes
smtpd_tls_req_ccert = yes

relay_clientcerts = hash:/etc/postfix/relay_clientcerts

smtpd_client_restrictions =
    permit_mynetworks,
    permit_tls_clientcerts,
    reject

Tato konfigurace způsobí, že bude server vyžadovat klientské certifikáty (smtpd_tls_ask_ccert je samotné zapnutí požadavku, smtpd_tls_req_ccert vynucení použití certifikátu) a povolí pouze připojení klientů z definované vlastní sítě (obvykle jen místního stroje) anebo klientů s certifikátem uvedeným v seznamu oprávněných certifikátů. Ten je definován přes parametr relay_clientcerts, v tomto případě se jedná o hešovou mapu obsahující dvojice fingerprintů certifikátů a jejich názvů (název se zde nekontroluje, má pouze procesní význam a může také sloužit pro informativní účely).

Jistě každého napadne, že lze klientské certifikáty kombinovat s ověřováním uživatelů, a to jak ve smyslu splnění obou podmínek (tj. certifikát + jméno a heslo), tak i kterékoli z nich. Použití výše uvedené definice smtpd_client_restrictions společně s smtpd_recipient_restrictions obsahujícím ověření uživatele je první varianta; pokud se permit_tls_clientcerts přesune do smtpd_recipient_restrictions před nebo za permit_sasl_authenticated, jde o variantu druhou.

Má-li naopak server klientský certifikát někam posílat (což je ještě méně běžný případ než ten předchozí), je potřeba nadefinovat patřičné parametry smtp_tls_cert_filesmtp_tls_key_file, kde budou uvedeny cesty k souborům s certifikátem a klíčem.

Implicitní TLS

link

Přestože běžně není důvod konfigurovat na poštovním serveru SMTP komunikaci pomocí implicitního TLS (na samostatném portu), protože i velmi staré programy (např. Outlook Express) zvládají TLS explicitní, někdy takový důvod nastat může – typicky u nějakých jednoduchých jednoúčelových „odesílátek“, kde se TLS řeší přes stunnel.

Řešení implicitního TLS spočívá v úpravě souboru master.cf, protože je potřeba přidat novou službu:

smtps      inet  n       –       n       –       –       smtpd
  -o smtpd_tls_wrappermode=yes

Tím se spustí nová instance služby smtpd na portu 465, která poběží ve „wrapperovém“ režimu a bude umožňovat implicitní TLS. V případě potřeby změnit číslo portu se smtps nahradí potřebným číslem (třeba 10465).

Konfigurace programu Dovecot

link

V případě programu Dovecot je konfigurace výrazně jednodušší než u Postfixu. Je jen jedna strana komunikace a také zde není tolik konfiguračních možností. Základní podoba může být například takováto:

ssl = yes
ssl_cert_file = /etc/ssl/certs/moje.domena.crt
ssl_key_file = /etc/ssl/private/moje.domena.key

První řádek je dokonce jen pro úplnost, protože je to výchozí volba (naopak ssl = no šifrování explicitně vypne). Další parametry pouze nastavují cestu k certifikátu a klíči. Nic dalšího už není potřeba. Na rozdíl od Postfixu zde lze použít zašifrovaný klíč a heslo poskytnout přes konfigurační parametr:

ssl_key_password = !include_try /etc/dovecot/moje.domena.kpass

Napsat heslo přímo do konfigurace není bezpečné, protože konfigurační soubor bývá přístupný všem uživatelům. Lepší je dát ho do samostatného souboru, ke kterému má přístup jen root – do parametru ho vloží direktiva !include_try. Další možnost je spouštět Dovecot s parametrem -p a vložit heslo v příkazové řádce. To je ale dost nepohodlné a hodí se to spíš pro testování než pro běžný provoz.

Implicitní TLS se u Dovecotu nastavuje velmi jednoduše – prostě se rozšíří seznam protokolů:

protocols = imap imaps pop3 pop3s

Toto zapne implicitní TLS pro oba komunikační protokoly. Běží na svých standardních portech (993, resp. 995), to lze případně změnit v sekci protokolu takto:

protocol imap {
    ssl_listen = *:10993
}

V případě potřeby používat klientské certifikáty se tato funkcionalita zapne a nastaví se také soubor s certifikáty certifikačních autorit (který bude obsahovat certifikáty těch autorit, jimiž podepsané certifikáty budou považovány za platné; součástí souboru může být revokační seznam):

ssl_verify_client_cert = yes
ssl_ca_file = /etc/ssl/certs/ca-certificates.crt

Tím se ale jen zapne ověřování, nicméně není vyžadováno. Pro povinné použití se musí ještě přidat další parametr, a to do sekce auth:

auth default {
    ssl_require_client_cert = yes
}

Záznam událostí okolo TLS má pouze dvě úrovně. Výchozí je stručná, v případě potřeby něco zkoušet a ladit lze použít verbose_ssl = yes pro zapnutí „ukecaného“ režimu. Další zajímavou věcí v souvislosti s TLS je možnost vypnout posílání hesel v otevřeném tvaru po nešifrovaných kanálech:

disable_plaintext_auth = yes

Možnost využívat taková hesla přes TLS kanál nebo z místní adresy zůstává zachována.

U obou programů lze pro TLS nastavovat ještě další vlastnosti – konkrétně například množinu povolených šifer. To je ale poměrně složitá problematika, která by si zasloužila samostatný článek (obecný, nesouvisející jen s poštou), proto zájemce odkazuji na informační zdroje zaměřené přímo na tuto problematiku.

Doručovací agent

link

Dovecot kromě komponent pro přístup k poště a pro autentizaci obsahuje ještě jednu velmi výkonnou součást, která se zatím v akci vůbec neobjevila. Je to tzv. doručovací agent, který vstoupí do hry jako poslední článek v řetězci při doručování pošty. Škála toho, co dokáže, je velmi široká – ale o tom až příště.

Seriál Stavíme poštovní server (dílů: 17)

První díl: Stavíme poštovní server – 1 (Postfix), poslední díl: Stavíme poštovní server – 17 (optimalizace výkonu).
Předchozí díl: Stavíme poštovní server – 11 (greylisting, MSA)
Následující díl: Stavíme poštovní server – 13 (doručovací agent)

Související články

SPAM – greylisting ve firmě
Mailserver s odvirováním pošty
DKIM – podepisujeme e-maily na serveru
Spam: naučte se bránit
MessageWall - kladivo nejen na spam
Jsme na dovolené - automatická odpověď

Další články z této rubriky

PowerDNS – přívětivý a jednoduchý DNS server
Bootování ze sítě: pxelinux a kořenový adresář na NFS
Těžký život Do Not Track
OpenAFS – servery
Architektura IPv6 – konfigurace adres a objevování sousedů (2)

Diskuse k tomuto článku

25.1.2010 01:06 dracul
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
Odpovědět | Sbalit | Link | Blokovat | Admin
mala reklamka: na cartifikat pro server doporucuju toto http://www.startssl.com/?app=1 je to zadarmo;)
25.1.2010 09:17 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Postfix jako implicitní TLS klient
Odpovědět | Sbalit | Link | Blokovat | Admin
Zajímalo by mě, jestli Postfix umí vystupovat jako implicitní TLS klient. Například Exim to neumí a next-hop relaye se musí honit přes stunnel. (Ano, odchozí servery Telecomu neumí explicitní TLS.)
Luk avatar 25.1.2010 18:30 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient
Zajímalo by mě, jestli Postfix umí vystupovat jako implicitní TLS klient.
Pokud vím, tak neumí.
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
26.1.2010 07:16 Lampa
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient
Co to je implicitni klient ?

STARTLS ?
Luk avatar 26.1.2010 17:31 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient
Právě naopak. Jak píšu v článku, STARTTLS je naopak explicitní. Implicitní je, pokud se od začátku komunikuje pomocí TLS (tj. začíná se hned sestavením TLS relace). Implitní TLS klient je takový klient, který se připojí k serveru hned pomocí TLS, obvykle na speciálním portu (u SMTP je to 465).
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
27.1.2010 07:32 Lampa
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient
smtpd_tls_wrappermode=yes neni to co potrebujete ?
Luk avatar 27.1.2010 14:57 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient
To řeší serverovou stranu, nikoli klientskou.
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
28.1.2010 08:44 Lampa
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient
sorry omlouvam se, http://www.postfix.org/postconf.5.html#smtp_tls_security_level
1.2.2010 22:30 juras
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient
Co exim a "tls_on_connect_ports = 465"?

viz. http://www.exim.org/exim-html-4.69/doc/html/spec_html/ch39.html#SECID284
2.2.2010 11:48 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Postfix jako implicitní TLS klient

Exim teď používám, takže vím, co neumí:

Exim supports these clients by means of the tls_on_connect_ports global option.
25.1.2010 09:35 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Autorizace klienta Dovecotu certifikátem
Odpovědět | Sbalit | Link | Blokovat | Admin

Vzhledem k tomu, že legislativa donutila úřady pořídit šifrovací zařízení, chtěl bych, aby je naši úředníci mohli použít pro přístup do poštovních schránek přes IMAP.

Díval jsem se do dokumentace Dovecotu, a nikde jsem nenašel, jak spárovat klientský certifikát a přihlašovací jméno uživatele. Vzpomínám si na hádání loginu z položek DN nebo SAN certifikátu, ale to obecně nefunguje.

I z toho, co jste napsal, mi vyšlo, že sice dokážu ověřit, že klient disponuje certifikátem vydaným autorizovaným vydavatelem (v našem státě to znamená, že byl vydán existující a správné osobě), ale už nezjistím, kdo se mi to přihlašuje.

Tudíž potřebuji namapovat otisk certifikátu na konkrétního uživatele.

Protože mám fyzické (nevirtuální) uživatele a používám PAM, napadlo mě použít některý z pokusných modulů, které autentizaci řeší porovnáním certifikátu (respektive ověřením podpisu nesmyslu) s certifikátem uloženým v domovském adresáři uživatele.

Jenže jsem nezjistil, jak a jestli umí Dovecot poskytnout certifikát klienta z TLS relace PAMu. Navíc dotyčné moduly často operují lokálním šifrovacím zařízením, nikoliv s certifikátem ze sítě. (Je celkem možné, že PAM na tohle nemá standardizované rozhraní.)

Zkoušel někdo něco takového?

25.1.2010 12:19 Lampa
Rozbalit Rozbalit vše Re: Autorizace klienta Dovecotu certifikátem
# Which field from certificate to use for username. commonName and # x500UniqueIdentifier are the usual choices. You'll also need to set # ssl_username_from_cert=yes. #ssl_cert_username_field = commonName

http://wiki.dovecot.org/SSL/DovecotConfiguration (na konci stranky)
25.1.2010 15:22 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Autorizace klienta Dovecotu certifikátem
Jenže v kanonickém jméně takového certifikátu nebývá novakf, ale František Novák.
25.1.2010 22:25 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
Rozbalit Rozbalit vše Re: Autorizace klienta Dovecotu certifikátem
No od toho se snad nechá měnit ta hodnota "ssl_cert_username_field", ne? Tak to prostě nenasměrujete na kanonické jméno, ale na jiné pole v certifikátu.

Školy nemám a v praxi to nepoužívám, ale přijde mi to logické... :-)
25.1.2010 23:00 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Autorizace klienta Dovecotu certifikátem

Jenže stejně nepoužitelné mohou být i ostatní hodnoty. Proto rozumné systémy se orientují podle otisku certifikátu. Navíc, když si certifikáty nevydáváte sám, tak se může stát, že přijde někdo, kdo bude mít zrovna v položce, kterou jsem si vybral kolizní hodnotu.

26.1.2010 07:16 Lampa
Rozbalit Rozbalit vše Re: Autorizace klienta Dovecotu certifikátem
http://wiki.dovecot.org/SSL/DovecotConfiguration

With v1.1.alpha5 and later you can change the field with ssl_cert_username_field = name setting (parsed using OpenSSL's OBJ_txt2nid() function). x500UniqueIdentifier is a common choice.

ssl_cert_username_field = subjectKeyIdentifier

resp se podivejte do souboru obj_mac.h z knihovny libssl a vyberte si udaje LN_XXXX ktery se vam hodi

to jsou pouze teoreticke poznatky na zaklade dostupnych informaci, neovereno v praxi
Luk avatar 25.1.2010 23:15 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Autorizace klienta Dovecotu certifikátem
To má ale dva problémy - jednak těch polí ve standardním zaručeném certifikátu moc není, hlavně ale je potřeba vytvořit vazbu mezí tím uživatelským jménem a tím polem (které s používaným uživatelským jménem není shodné). Nenapadá mě žádné čisté řešení.
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
26.1.2010 11:03 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Autorizace klienta Dovecotu certifikátem

Ještě mám jeden nápad:

Klient použije certifikát v TLS a do přihlašovacího dialogu vyplní uživatelské jméno.

PAM by vzal název účtu z přihlašovacího jména a nejprve jako heslo by použil certifikát. Vzor certifikátu by byl v domovském adresáři nebo v LDAPu. Teprve v druhém kole by jako heslo použil heslo z přihlašovacího dialogu.

Ale nevím, jak moc to znásilňuje PAM a otravuje uživatele.

oryctolagus avatar 26.1.2010 09:05 oryctolagus | skóre: 29 | blog: Untitled
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
Odpovědět | Sbalit | Link | Blokovat | Admin
Je to jen můj dojem, nebo článek omylem nebyl zařazen do seriálu Stavíme poštovní server?
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Luk avatar 26.1.2010 17:34 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
Stalo se to asi nedopatřením - už jsem napsal Robertovi.
LinuxMarket - linuxový e-shop | LinuxEXPRES - linuxový magazín | OpenOffice.cz - portál uživatelů OpenOffice/LibreOffice
26.1.2010 17:42 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
Opraveno.
27.1.2010 14:29 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
U šestého dílu se nezobrazuje rozcestník první/poslední/předchozí/další
Quando omni flunkus moritati
27.1.2010 15:42 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
Mně ano. Jaký máš prohlížeč?
27.1.2010 23:33 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
Opera 10.1. Akorát teda doma (stejný prohlížeč) se u šestého dílu zobrazuje. Tady se prozměnu nezobrazuje u pátého dílu poté, co jsem ze šestého přelezl na pátý kliknutím na ten rozcestník. (Totéž platí při přechodu ze čtvrtého na pátý)
Quando omni flunkus moritati
24.2.2010 20:07 travel21
Rozbalit Rozbalit vše Re: Stavíme poštovní server – 12 (TLS)
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobrý den, při používání TLS se mi na klientských stanicích zobrazuje po i instalaci certifikátu tato hláška:

Server, ke kterému jste připojeni, používá zabezpečovací certifikát, který nelze ověřit. Certifikát, který lze používat jako koncovou entity, je používán jako CA, nebo naopak. Chcete dále používat tento server?

Chápu, že nejde ověřit, když vystupuju jako vlastní CA - to mi je jasné ale nechápu tu entitu. Tedy nevím jaký vliv to má na funkci ale ta hlaška mě každou chvíli vyjede v outlooku když chci odeslat email přes svuj server z místa mimo mysubnet a docela mě to otravuje.

Můžete mi někdo říci zda je to chyba nebo vlastnost woken. V logu vidím že TLS spojení při přnosu funguje.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.