Portál AbcLinuxu, 5. května 2024 22:50

DKIM – zavádíme podpisovou politiku (ADSP)

5. 10. 2010 | František Kučera
Články - DKIM – zavádíme podpisovou politiku (ADSP)  

Dnes volně navážeme na článek o DKIMu, ve kterém jsme naučili náš poštovní server podepisovat e-maily, a povíme si něco o ADSP (Author Domain Signing Practices), pomocí kterého říkáme ostatním serverům, jaká je podpisová politika naší domény.

Co je ADSP a co nám přinese

Samotné podepisování odchozích e-mailů a jejich ověřování serverem příjemce (DKIM) je sice hezké, ale nemá skoro žádné praktické přínosy – snad jen to, že ve webovém rozhraní GMailu se příjemci zobrazí: podepsáno od naše-doména.cz nebo že si pokročilý uživatel může zobrazit zdrojový kód zprávy a v něm zkontrolovat hlavičku Authentication-Results.

Praktických přínosů se dočkáme až po nasazení technologie ADSP, která na DKIM navazuje. ADSP je způsob, kterým vlastník domény může sdělit světu, jak je to s podepisováním jeho e-mailů. Na výběr má tři možnosti:

K čemu je tedy zavedení ADSP dobré?

Jako příjemce e-mailů se můžeme zbavit části spamu – nevyžádané pošty. Nepodepsané e-maily tvářící se být z domény, která má discardable politiku můžeme klidně zahodit/odmítnout a nemusíme jimi zatěžovat své uživatele. Bohužel se zbavíme jen části spamu, protože spameři často využívají zavirovaných klientských počítačů (typicky s Windows), ze kterých uživatelům ukradnou jejich jméno a heslo – a spam odesílají pomocí nich, takže může mít platný DKIM podpis. Přínos je ale každopádně v tom, že víme, z jakého serveru spam pochází a vlastník tohoto serveru ví, přes který uživatelský účet byl odeslán – je tak možné danému uživateli zablokovat SMTP, nastavit mu kvótu na odchozí e-maily nebo ho vyzvat k nápravě (odvšivení počítače).

Nastavením discardable politiky se jako vlastník domény budeme bránit rhybaření resp. podvodným dopisům. Nikdo pak nebude moci posílat e-maily, které se tváří, jako že jsou z naší domény. Alespoň ne na servery, které respektují ADSP politiku ostatních domén. Toho využívá např. platební systém PayPal.com. Nasazením ADSP na straně serveru příjemce ochráníte své uživatele před těmito podvodnými e-maily.

Nasazení v praxi

Podepisování e-mailů máme zprovozněné už od minule, teď se proto budeme soustředit jen na změny související s nasazením ADSP, nikoli samotného DKIMu.

DNS – na straně odesílatele

Jako vlastník internetové domény si definujeme ADSP politiku – to je velice jednoduché, stačí vytvořit příslušný DNS TXT záznam pro naši doménu:

_adsp._domainkey.example.com. IN TXT "dkim=discardable"

Místo discardable můžeme použít mírnější all (viz význam politik výše). Politiku unknown nemá moc smysl nastavovat, protože stejně se interpretuje, i když ADSP záznam úplně chybí.

DKIM Milter – na straně příjemce

Pro ověřování podpisů a souladu s ADSP politikou použijeme stejný software jako pro podepisování odchozích zpráv: DKIM Milter (viz předchozí článek). Jediné, co musíme udělat, je upravit konfigurační soubor /etc/dkim-filter.conf – přidáme do něj řádek:

ADSPDiscardyes

A restartujeme filtr:

/etc/init.d/dkim-filter restart

Po této úpravě bude náš server respektovat ADSP politiky ostatních domén a pokud se někdo pokusí odeslat nepodepsaný e-mail z domény, která o sobě tvrdí, že všechny její e-maily mají být podepsané, bude naším serverem odmítnut.

Poznámka: někdy můžeme narazit na výchozí konfigurační soubor dkim-filter.conf, který obsahuje chybný řádek #ASPDiscardno místo správného #ADSPDiscard no – dáváme tedy pozor na překlepy.

DKIM/ADSP vs. SPF

DKIM/ADSP a SPF (Sender Policy Framework) jsou svým způsobem konkurenční technologie – obě mají podobné cíle a obě používají DNS.

Pro DKIM a ADSP v DNS nastavíme:

default._domainkey.example.com. IN TXT "v=DKIM1; g=*; k=rsa; p=MIGf...wIDAQAB"
_adsp._domainkey.example.com. IN TXT "dkim=discardable"

A pro SPF:

example.com. IN TXT "v=spf1 mx ip4:146.102.….… ~all"

V obou případech definujeme v DNS záznamech jednak podmínky (u DKIM je to veřejný klíč, kterým mají být zprávy podepsané, u SPF jsou to IP adresy, ze kterých mohou e-maily odcházet) a jednak politiku, která říká, co se má dělat se zprávami, které podmínky nesplňují.

SPF je sice jednodušší (není potřeba pracovat s kryptografií – stačí zkontrolovat IP adresu), ale trpí docela zásadním problémem při přeposílání zpráv. Když si uživatel nechá přeposílat e-maily z jednoho účtu na druhý, zprávy z domény odesílatele najednou odcházejí z jiné IP adresy a cílový server nemůže poznat, zda se jedná o přeposílání nebo třeba o spam. DKIM/ADSP tímto problémem netrpí, protože elektronický podpis lze ověřit i u přeposlané zprávy – je jedno, odkud přišla, pokud je podpis platný. SPF navrhuje, aby se u přeposílaných zpráv měnila adresa odesílatele (použít tzv. remailing a ne forwarding), nebo aby si příjemci přidali přeposílající servery na bílou listinu. To ovšem vyžaduje provést změny na všech přeposílajících nebo cílových serverech, což činí ze SPF politiky -all (e-maily mohou odcházet jen z vyjmenovaných IP adres a žádných jiných) prakticky nepoužitelnou záležitost. Tuto politiku má nastavanou např. Česká národní banka (cnb.cz). Takže pokud vám bude psát někdo z ČNB a vy si necháváte e-maily přeposílat na server, který respektuje SPF politiku, zpráva k vám nedorazí. Když vám naopak bude psát PayPal (který má nastavenou DKIM politiku discardable), e-mail k vám dorazí, i když si ho přepošlete třeba desetkrát.

Modelová situace

Mějme tři poštovní servery resp. domény:

První případ – podvrh

Uživatel s adresou uzivatel@a.tld se pokusí odeslat e-mail ze své adresy pomocí nikoli svého domácího serveru (a.tld), ale pomocí jiného serveru (c.tld – např. server v práci nebo ve škole). Server c.tld nemá soukromý klíč domény a.tld a odchozí e-maily samozřejmě nepodepisuje.

  1. Uživatel se pokusí poslat e-mail z adresy uzivatel@a.tld pomocí serveru c.tld na adresu uzivatel@b.tld. SMTP server c.tld jeho požadavek přijme – zařadí zprávu do fronty a ukončí SMTP spojení.
  2. Server c.tld se pokusí předat zprávu serveru b.tld, ten si ale pomocí DNS dotazu zjistí ADSP politiku domény odesílatele (a.tld), která říká, že nepodepsané e-maily z této domény se mají odmítat. Server b.tld tedy odmítne přijetí zprávy ještě v rámci dané SMTP relace – zprávu vůbec nepřijme a v logu serveru c.tld najdeme záznam podobný tomuto:

    Sep 24 13:31:13 vse postfix/smtp[22720]: [ID 197553 mail.info] 8DC611802: to=<uzivatel@b.tld>, relay=b.tld[2a01:430:...::...]:25, delay=1.3, delays=0.01/0/0.63/0.65, dsn=5.7.1, status=bounced (host b.tld[2a01:430:...::...] said: 550 5.7.1 rejected due to DKIM ADSP evaluation (in reply to end of DATA command))

  3. Server c.tld odesílání zprávy vzdá, zabalí ji do obálky a pošle jako nedoručitelnou na adresu odesílatele – uzivatel@a.tld dostane typický e-mail s předmětem Undelivered Mail Returned to Sender. Zpráva se tedy neztratí, nezahodí – odesílatel okamžitě zjistí, že nebyla doručena a proč – může ji tedy odeslat znovu, tentokrát pomocí správného SMTP serveru. Pokud by se jednalo o podvrh – útočník by se snažil odeslat zprávu z adresy uzivatel@a.tld – uživatel by na to díky této chybové zprávě přišel (v ní by byl přiložen i přímo ten e-mail, který se útočník jeho jménem pokoušel odeslat).

Druhý případ – přeposílání

Uživatel má dvě adresy: uzivatel@c.tld a uzivatel@b.tld. Poštu z c.tld si nečte na tomto serveru, ale nechá si ji přeposílat na server b.tld.

  1. Odesílatel uzivatel@a.tld pošle zprávu pomocí serveru a.tld na adresu uzivatel@c.tld. Server a.tld podepíše zprávu.
  2. Server c.tld zprávu přijme a včetně podpisu ji předá serveru b.tld
  3. Server b.tld ověří podpis a ADSP politiku a zprávu přijme – nezajímá ho, z jakého serveru k němu zpráva fyzicky dorazila (c.tld místo a.tld), důležité je, že zpráva má správný DKIM podpis.

Při použití technologie DKIM/ADSP tedy nemáme problémy s přeposíláním, jako je tomu u SPF.

Na co nezapomenout

Možná se teď chystáte nadšeně nastavit ADSP politiku pro svoji doménu, před tím je ale dobré se ještě zamyslet nad následujícími případy:

Jakou politiku zvolit?

V případě firem lze doporučit discardable politiku. Zřejmě nestojíte o to, aby zaměstnanci posílali firemní (důvěrnou) poštu přes nějaké pochybné cizí SMTP sevrery – když už mají mít přístup k e-mailu i mimo firmu, tak jim poskytnete přístup na svůj SMTP server, webové rozhraní k poště nebo třeba VPN. Díky ADSP snížíte pravděpodobnost, že bude někdo vaším jménem (z vaší domény) posílat např. falešné faktury nebo nějaké poplašné zprávy.

Pokud naopak spravujete školní nebo nějaký komunitní server nebo jste poskytovatelem e-mailových služeb, není discardable politika moc dobrou volbou. Těžko donutíte uživatele, aby posílali e-maily výhradně přes váš SMTP server – a ani to není žádoucí – uživatelé by pak asi danou e-mailovou adresu přestali používat. Přesto je dobré nasadit DKIM a podepisovat e-maily – v případě nějakých incidentů půjde např. dohledat, zda daný e-mail odešel z vašeho serveru. Také tím zvýšíte důvěryhodnost odchozích e-mailů – zde záleží na podpoře klientského softwaru – ten může uživateli signalizovat, že e-mail obsahuje platný DKIM podpis (jako to dělá např. GMail).

Je SPF na nic?

SPF není na nic, jen jeho politika -all je takřka nepoužitelná. Klidně ale můžete nastavit ~all politiku, která říká, že e-maily odeslané z jiných IP adres mají být přijaty, jen mohou být podrobeny důkladnější kontrole. Naopak zprávy přijaté z vyjmenovaných IP adres budou důvěryhodnější.

Ještě jedno dobré využití má SPF: existuje poměrně dost domén, které se používají jen pro web nebo jiné služby, ale nikdy z nich žádné e-maily neodcházejí. U takových domén nastavíme -all SPF politiku a tím zabráníme spamerům, aby naši doménu zneužívali jako odchozí. Totéž můžeme udělat s ADSP – nastavíme discardable politiku (pro případ, že server příjemce podporuje ADSP, ale nepodporuje SPF).

Jak se chovat na straně příjemce

Jako správci serveru přijímajícího poštu bychom měli respektovat politiky (jak ADSP, tak SPF), které si nastavili vlastníci jiných domén. Pokud někdo tvrdí: „všechny naše e-maily jsou podepsané tím a tím klíčem“, tak to berme jako fakt – a to i v případě, že by se nám jeho politika mohla zdát příliš přísná nebo špatná – jsou to jeho e-maily a jeho případná odpovědnost a chyba – ne naše. Navíc pokud si poštovní systém nastavíme tak, jak je uvedeno v návodu výše, nevyhovující e-maily budou odmítnuty ještě v rámci SMTP spojení (ne až následně), takže se žádné zprávy neztratí – e-mail se jednoduše vrátí ke svému odesílateli jako nedoručitelný.

Závěr

DKIM a ADSP je přínosná technologie, která pomáhá v boji se spamem a podvodnými e-maily – i když samozřejmě nedokáže tyto problémy vyřešit zcela. Ideální by bylo, kdyby e-maily podepisovali sami uživatelé (ať už pomocí OpenPGP/GPG nebo S/MIME) a také je šifrovali, ovšem vzhledem k neschopnosti běžných uživatelů tyto technologie používat je fajn podepisovat zprávy alespoň na úrovni domény. Ruku na srdce: kolik už jste zaplatili faktur, které k vám dorazily nešifrovaným a nepodepsaným e-mailem nebo dokonce papírovou poštou?

Odkazy

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

V sobotu se uskuteční konference CryptoFest
Pozor na androidové aplikace
Silent Circle představil bezpečný smartphone Blackphone 2
Android je bezpečnější, řada hrozeb však stále přetrvává
Avast varuje před nebezpečnými aplikacemi v Google Play

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