Hlavní navigace

Jak spammerům zabránit falšovat adresy? Je tu DKIM

9. 3. 2011
Doba čtení: 7 minut

Sdílet

Spam je velký internetový problém už mnoho let a doposud nikdo nenašel uspokojivé řešení. Existuje však několik zajímavých technologií, které pomáhají omezit některé dílčí problémy elektronické pošty a tím znesnadňují spammerům život. Jednou z nejnadějnějších je DKIM, kterou používá třeba Google.

Největším problémem elektronické pošty je fakt, že kdokoliv může při odesílání e-mailu použít libovolnou adresu, která mu nepatří. Existuje několik systémů, které pomáhají příjemcům pošty určit, zda je odesílatel oprávněn použít konkrétní adresu, nebo ne. Spammeři pak nemohou svobodně falšovat adresu odesílatele, jako je tomu teď, říká Tomáš Hála ze společnosti ACTIVE24. O technologii DKIM hovořil na letošní konferenci InstallFest.

DKIM není žádnou novinkou a někteří poskytovatelé jej už několik let používají. Jedná se o technologii podobnou známému SPF, o kterém jsme psali před dvěma lety. Proti staršímu systému má ale DKIM jednu zásadní výhodu. SPF má fatální problém. Pokud máte nastavené přeposílání mailů, pošta odchází z nového serveru, ale ten není uveden v SPF DNS záznamu, vysvětluje Hála. Přijímací server pak zjistí, že pošta přichází z nepovoleného serveru a obvykle ji označí za spam. Tímto problémem DKIM netrpí, protože pracuje na jiném principu.

Zatímco SPF svazuje doménu odesílatele s konkrétními IP adresami, ze které může pošta odcházet, DKIM používá elektronický podpis. Ten je také generován na serveru odesílatele, ale není pevně svázána s konkrétní IP adresou. Přeposílání jednou podepsané pošty tak nijak princip nenarušuje.

DKIM aneb klíče v DNS

DKIM vychází z technologií Yahoo a Cisco Systems a vytváří jednoduché rozšíření, které nijak nezasahuje do stávajícího mailového systému a je s ním plně kompatibilní. V poště se projevuje jen přidáním hlavičky DKIM-Signature. Ta obsahuje elektronický podpis generovaný SMTP serverem odesílatele.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:mime-version:in-reply-to:references:from:date
         :message-id:subject:to:content-type;
        bh=Tle/+yGwxhSwYWAmxEJO6PiqZCq/TgujwpNT1flGz5M=;
        b=a/1+exyHaGt+FiN9s5Ozo5hk/qIGr602ZFz0/02bZ80aSBnYjriq/2rsTmKfYXaR3V
         14yebnEmNWyw/sEI2P5IYlKWoOz33dtKo0rr01GCoC6R3LYZH7agg4SmAt5d4+Ew/wV3
         33t0zySoc68ULoh2NyPYawQ1V/jAEdsp92p/c=

DKIM tedy neklade žádné nároky na koncového uživatele. Na rozdíl od klasických elektronických podpisů nemusí koncový uživatel vůbec nic řešit, vysvětluje hlavní výhody Tomáš Hála. Klasický privátní certifikát je třeba nejprve získat, provést konfiguraci a udržovat vše v chodu. Navíc jeho práci musí podporovat klient odesílatele i klienta. V případě DKIM nemusí uživatel vůbec nic tušit a přesto systém využívá.

Veřejná část klíče serveru je uložena jako TXT DNS záznam v doméně, pro kterou je pošta odesílána. Každý příjemce tak může snadno klíč z DNS získat a ověřit pravost přijatého e-mailu. Klíč je uložen ve zvláštní subdoméně, která začíná jedinečným selektorem a pokračuje povinnou částí _domainkey. Selektor je vždy součástí hlavičky mailu a příjemce jej nalezne za parametrem s=. DNS dotaz je možné sestavit až ve chvíli, kdy nám přijde nějaký mail a my známe selektor, kterým se pak zeptáme DNS na příslušný záznam. Dotaz na konkrétní klíče pak vypadá následovně:

$ dig TXT gamma._domainkey.gmail.com
...
gamma._domainkey.gmail.com. 300 IN  TXT "k=rsa\; t=y\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIhyR3oItOy22ZOaBrIVe9m/iME3RqOJeasANSpg2YTHTYV+Xtp4xwf5gTjCmHQEMOs0qYu0FYiNQPQogJ2t0Mfx9zNu06rfRBDjiIU9tpx2T+NGlWZ8qhbiLo5By8apJavLyqTLavyPSrvsx0B3YzC63T4Age2CDqZYA+OwSMWQIDAQAB"
...

Pro příjemce tak stačí zaslat jeden DNS dotaz navíc a ověřit podpis v hlavičce mailu. Podle výsledku tak může rozhodnout, co s konkrétní zprávou udělá.

Nasazení je bez rizika

Podle Tomáš Hály je testování DKIM na ostrém serveru bezpečnější než se zmíněným SPF. Pokud do DNS zadáte špatně SPF záznam, nebudou vám maily chodit. U DKIM nic takového nehrozí. Ověření může provádět server nebo klient, předpokládá se ale, že vše zařídí servery. Pokud strana příjemce DKIM vůbec nezná, může ho ignorovat a vůbec nic se nestane, vysvětluje zpětnou kompatibilitu Hála.

DKIM standard obsahuje také podporu pro testovací režim, který umožní bezpečně vše vyzkoušet. Při použití parametru t=y se podle specifikace musí s mailem na straně příjemce nakládat stejně, jako by podpis vůbec neobsahoval.

Jak server s ověřenou či neověřenou zprávou naloží, je na jeho administrátorovi. Pevná pravidla v tomto směru neexistují. To, jak se s e-mailem naloží, není součástí standardu. Protokol řeší jen samotné ověření. Obvykle správný DKIM podpis znamená například zvýhodnění na spamfiltru, bonusové body na SpamAssassinu a podobně. Klienti příjemců pak mohou uživateli zvýraznit ověřený e-mail. Je to podobné jako u HTTPS, dáte uživateli jasně najevo, že konkrétní mail je ověřený a pochází od správného uživatele, říká Hála.

Z hlediska uživatele by mělo s nasazením DKIM dojít vždy ke zlepšení situace nebo by měl být výsledek neutrální. Nikdy by výsledek neměl být pro poštu negativní. Uživatel obvykle pozná jen to, že mu regulérní pošta nepadá do spamu, pokud se to dříve stávalo, shrnul hlavní výhodu DKIM pro uživatele Tomáš Hála.

Existuje také nepovinné rozšíření DKIM zvané ADSP a to v DNS záznamu říká příjemci, jak by se měl k poště z naší domény chovat. Je možné nastavit tři různé politiky:

  1. unknown dává stejný výsledek, jako by ADSP nebylo použito
  2. all říká, že veškerá pošta je podepisována
  3. discardable je nejrestriktivnější; pokud podpis chybí, poštu zahazuj

Tomáš Hála také upozorňuje na to, že je dobré kombinovat DKIM s DNSSEC, aby nebylo možné podvrhnout falešné DNS záznamy. Celé podepisování by bylo k ničemu, pokud byste byli schopni DNS záznam podvrhnout a vyměnit tak klíče odesílatele za své, varuje Hála.

Kdo to umí

Tomáš Hála samozřejmě nezapomněl zmínit, že společnost ACTIVE24 je velkým podporovatelem DKIM. Jako jediná webhostingová společnost v ČR provozujeme DKIM na zákaznických doménách a to zcela zdarma, pochlubil se na InstallFestu. V případě příjmu podepsaných mailů je výrazně zvýhodňujeme na spamfiltru.

I řada dalších poskytovatelů e-mailových schránek automaticky pomocí DKIM podepisuje. DKIM není žádná novinka, existuje několik let a najdete ji i na některých free mailech, říká Hála. Na freemailech je implementace snadná, stačí nastavit DNS záznam pro jednu doménu. Na webhostingových službách je třeba, aby majitelé domén provedli patřičné změny ručně nebo musí webhoster provést úpravy všech domén za ně.

Hála samozřejmě také popsal, jak probíhá nasazení u velkého webhostera. My máme vlastní sadu skriptů, které kontrolují domény a provádějí příslušnou údržbu. Příjemné je, že výsledek neznamenal pro uživatele žádný problém. Nasazení nijak negativně neovlivnilo odchozí poštu a zákazníci ani nezaznamenali změ­nu.

Ze známých poskytovatelů freemailů DKIM podporuje například Seznam.cz či už zmíněný Gmail od Google. Gmail dokonce zvýrazňuje graficky přijaté maily, které byly prověřeny, vyzdvihl příkladnou práci Gmailu Tomáš Hála. Pro firmy je zajímavé, že Google umí DKIM nasadit i na Google Apps na vlastní doméně. Ve světě je DKIM velmi rozšířené, u nás tomu tak zatím bohužel není. Určitě je dobré tuto technologii dále rozšiřovat.

DKIM není antispam, ale pomáhá

Přestože není DKIM míněn primárně jako nástroj proti spamu, je využíván především jako nástroj pro boj s nevyžádanou poštou. DKIM není z principu antispamová technika. Jen umožňuje ověřit pravost odesílatele, říká Hála. Použití při filtraci spamu je podle něj jen bonus. Varuje, že i spamy by mohly být podepsány DKIM, ale byly by pak pevně svázané s konkrétní doménou a tu by bylo možné snadno třeba filtrovat. V praxi jsme zatím takový případ nezaznamenali.

Pokud by k něčemu takovému došlo, přibyla by i možnost, jak dohledat odesílatele nějakého spamu. Je možné dohledat zodpovědnou osobu a právně ji potrestat, vysvětluje Hála, ale zároveň dodává, že dnes často viry získávají přihlašovací údaje uživatelů a poštu odesílají skrze standardní servery. Přesto je díky DKIM pak možné uživatele dohledat a upozornit jej na problém.

Jak to nasadit v Linuxu

Pro nasazení na straně odesílatele i příjemce budete potřebovat balíček dkim-filter, který pod tímto názvem naleznete v Debianu a Ubuntu. Je možné, že v jiných distribucích se bude jmenovat jinak.

Poté si vygenerujete klíč se selektorem pro příslušnou doménu:

dkim-genkey -d domena.cz -s selektor

Tento příkaz vygeneruje dva soubory: selektor.txt obsahuje veřejný klíč přímo ve formátu pro DNS a je možné jej nakopírovat do zónového souboru BIND. Druhý soubor selektor.private pak obsahuje privátní klíč, který je používán podepisovacím serverem. Tento soubor zkopírujte do /etc/dkim. Poté editujte soubor /etc/dkim-filter.conf, aby obsahoval především následující informace:

Domain domena.cz
KeyFile /etc/dkim/selektor.private
Selector selektor

Poté ještě musíte editovat soubor /etc/default/dkim-filter a zadat do něj informaci o tom, kde má filtr poslouchat:

SOCKET="local:/var/run/dkim-filter/dkim-filter.sock"

Jako poslední nastavte Postfix tak, aby filtr začal používat. Do souboru /etc/postfix/main.cf vložte tyto řádky:

smtpd_milters = unix:/var/run/dkim-milter/dkim-filter.sock
non_smtpd_milters = unix:/var/run/dkim-milter/dkim-filter.sock

Ověření funkčnosti

Pokud máte vše spuštěné, měl by váš server automaticky pro danou doménu maily podepisovat pomocí privátního klíče. Výsledek byste měli vidět v hlavičce. Při přijmu pošty podepsané pomocí DKIM naleznete v hlavičce ověření dkim=pass, které značí, že se vše povedlo.

root_podpora

Pokud používáte na svém serveru SpamAssassin, můžete použít modul Mail::SpamAssassin::Plugin::DKIM, který provádí ověřování DKIM a vrací pravidla DKIM_SIGNED (podepsáno) a DKIM_VERIFIED (validní). Těmi můžete ovlivňovat příchozí poštu a přidělovat jí kladné body.

DKIM je technologie zajímavá především svou jednoduchostí a bezproblémovým nasazením. Výsledkem jejího nasazení je ověřování odeslaných mailů bez vedlejších účinků. I tento článek by měl pomoci v rozšíření DKIM na další české servery.

Odkazy

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.