FK~

Moje odkazy

Ostatní odkazy

Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
There Is No Cloud …just other people's computers.
Sane software manifesto / Manifest příčetného softwaru

DKIM – podepisujeme e-maily na serveru

vydáno: 18. 5. 2009 21:15, aktualizováno: 18. 7. 2020 13:15

Na českém serveru zaměřeném na GNU/Linux a svobodný software ABC Linuxu.cz mi vyšel článek DKIM – podepisujeme e-maily na serveru.

DKIM – podepisujeme e-maily na serveru

Elektronická pošta stojí na SMTP protokolu, který pochází z osmdesátých let, a její uživatelé dnes často trpí spamem. Jedním z největších problémů je praktická nemožnost dohledat, kdo daný e-mail odeslal. Proto vznikl standard DomainKeys Identified Mail (DKIM), díky kterému můžeme ověřit původce zprávy a další informace z hlaviček e-mailu.

Princip fungování

DKIM využívá elektronického podpisu s dvojicí soukromý a veřejný klíč. K podpisu soukromým klíčem dochází na SMTP serveru (např. firemní server nebo server poskytovatele připojení) a není potřeba žádná součinnost ze strany uživatele. Předmětem podpisu je hash těla zprávy, některé hlavičky a hlavně doména, ze které e-mail pochází.

Pro distribuci veřejných klíčů se využívá DNS a předpokládá se, že DNS záznamy pro danou doménu může nastavovat jen její vlastník.

Server příjemce si tedy veřejný klíč pro danou doménu stáhne z DNS a ověří pomocí něj elektronický podpis zprávy.

DKIM – princip fungování

Srovnání s S/MIME a GPG podepisováním

Jedná se o dvě různé úrovně podepisování e-mailů. V případě S/MIME nebo GPG podepisuje zprávu její autor (osoba) a tento podpis je vázán na danou e-mailovou adresu. Zatímco DKIM podpis pouze dokazuje, že e-mail pochází z dané domény.

Podepisování na serveru a podepisování odesílatelem se vzájemně nevylučují. Je možné obě metody kombinovat – každý podpis slouží k jinému účelu.

Nasazení v praxi

Na příkladu Postfixu si ukážeme, jak do svého poštovního serveru můžeme podporu DKIM přidat. K zapojení DKIM do procesu zpracování pošty použijeme technologii milter, takže postup v případě, že používáme místo Postfixu Sendmail, bude velice podobný.

Nainstalujeme si potřebný balíček – v debianu/ubuntu:

# aptitude install dkim-filter

Vytvoříme si podpisový klíč:

                              
# mkdir /etc/mail                  
# cd /etc/mail                     
# dkim-genkey -d naše-doména.cz    

Program nám vygeneroval dva soubory: default.private (soukromý klíč) a default.txt (soubor obsahující veřejný klíč a informace pro nastavení DNS). Soubor se soukromým klíčem by měl patřit rootovi a neměl by být čitelný jinými uživateli.

Poznámka: při generování klíče můžeme zadat i tzv. selektor (parametr -s) – pro jednoduchost použijeme výchozí: default.

Teď potřebujeme nastavit správně DNS, aby ostatní servery mohly zjistit, jaký je náš veřejný klíč. Vytvoříme si DNS záznam podle vzoru uvedeného v souboru default.txt. Např.:

default._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQPmhgFl/Zj6f7ciMCyMYBk8oeSAJOOxBrgqarIyjkmeTNOr3oMeneP/uLOT9zP5VGYLUtepalxDsbs2WypjDa6MOm7mPHOrsW8WSSKTDTQsGyGekMgPu2QhV5I7BjTzIpYyOOJNoqMYKoqckQBno7CLaXuwI7lIvcc3Jdo7f+MwIDAQAB" ; ----- DKIM default for veverka.ch

Pokud zadáváme záznam do webového rozhraní našeho správce DNS, zadáme default._domainkeyv=DKIM1; g=*; k=rsa; p=MIGfMA0G … wIDAQAB (bez uvozovek) a zvolíme typ záznamu TXT.

Nastavíme si DKIM milter: v souboru /etc/dkim-filter.conf zadáme tyto hodnoty:

Domain                  naše-doména.cz
KeyFile                 /etc/mail/default.private
Selector                default

A do souboru /etc/default/dkim-filter přidáme řádek:

SOCKET="inet:8891@localhost"

DKIM teď bude naslouchat na místním portu 8891. Místo síťového portu můžeme použít i UNIXový socket.

Zbývá už jen nastavit Postfix – do souboru /etc/postfix/main.cf přidáme tyto řádky:

# DKIM podpis SMTP serveru
smtpd_milters = inet:localhost:8891 
non_smtpd_milters = inet:localhost:8891

A výsledek…

E-maily odeslané z naší domény teď budou obsahovat elektronický podpis. Jedná se o podpis serveru, nikoli odesílatele (osoby). Podpis je realizován formou hlavičky ve zprávě – např.:

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=veverka.ch;    
        s=default; t=1241265143; bh=opC+T+DvWgIbxfSLcsOLnAcFxNGJTZfSK4iWmZj
        Vwic=; h=Message-Id:Date:From:To; b=DOhq7UkgV0xHaVrrOEP17cv/iwDo9Dw
        tqgxOeI2q5ei4ab/Io5TWCDFS9M9RxbHnBNGHXbAUYjz83R+bFbPVIwRwQAzuanNNjS
        SVd4cEw6ClLnPLi3AMeDdaYXm2GhY96sFBKzoXCtVolv04nF+O0811T8NRIbz0+F6zz
        317QSM=

DKIM-filter podpisy zpráv nejen vytváří, ale i ověřuje. Pokud máme dva servery s podporou DKIM, můžeme si to snadno vyzkoušet. Výsledek pak vypadá takto:

Authentication-Results: veverka.ch; dkim=pass (1024-bit key)
        header.i=@frantovo.cz; dkim-asp=none

Cílový server ověřil elektronický podpis (veřejný klíč zjistil z DNS záznamu) a vložil hlavičku o úspěšném ověření. Pokud zkusíme podpis podvrhnout, např. tak, že na odesílacím serveru nastavíme jiný klíč a neaktualizujeme DNS záznam, výsledek bude tento:

Authentication-Results: veverka.ch; dkim=hardfail (verification failed)
        header.i=@frantovo.cz; dkim-asp=none

Jestliže nemáme dva e-mailové servery s DKIM, můžeme si jeho funkčnost ověřit např. tak, že pošleme e-mail na adresu firmy Eland Systems. Za chvíli nám přijde odpověď s výsledkem, zda se náš podpis podařilo ověřit. Nebo si můžete poslat zprávu do schránky na GMailu a ve webovém rozhraní se vám u přijaté zprávy ukáže: podepsáno od naše-doména.cz.

Závěr

DKIM je jedna z technologií, která může pomoci v boji proti tolik nenáviděnému spamu. Nepodepsané (nebo špatně podepsané) e-maily sice nebudeme zahazovat jako spam, ale ty správě podepsané za spam považovat nemusíme. Pokud by se přesto o spamjednalo, víme alespoň, kdo je za něj zodpovědný.

Zároveň může DKIM podpořit důvěryhodnost e-mailů pocházejících z vaší organizace u jejich adresátů. Tedy alespoň u těch, kteří tyto podpisy dokáží interpretovat a ověřovat (např. uživatelé GMailu). I přes absenci elektronického podpisu, jako je S/MIME či GPG, je příjemce schopný ověřit původ zprávy – alespoň na úrovni domény, např. firma.cz. Což může teoreticky fungovat jako opratření proti podvodným e-mailům – rhybaření (phishing) – a to především při nasazení Author Domain Signing Practices.

Odkazy a zdroje:

Témata: [GNU/Linux] [e-mail] [počítačová bezpečnost]

Komentáře čtenářů


Miroslav Geisselreiter, 21. 10. 2009 14:27, DKIM Author Domain Signing Practices [odpovědět]

Díky za pěkný popis. Narazil jsem na něj na abclinuxu a podařilo se mi rozjet podepisování i kontrolu pro firemní doménu intar.cz. (musel jsem ale pro podepisování navíc vytvořit soubor pro InternalHosts).

Bohužel se mi jeví používání DKIM ostatními jako velice řídké. Za den dojte z řádově stovek mailů pouze kolem pěti používajících DKIM.

Zajímalo by mě ještě používání DKIM Author Domain Signing Practices. Díval jsem se zběžně na draft i na záznam u Vaší domény frantovo.cz, ale moc moudrý z toho nejsem. Neškodilo by, kdybyste to trochu podrobněji zmínil (jednat praktické použití, jednat strukturu / parametry. Děkuji.


xkucf03, 10. 11. 2011 10:47, ADSP [odpovědět]

Můj článek o ADSP na Ábíčku: DKIM – zavádíme podpisovou politiku (ADSP).

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a špatným trollům

Náhled komentáře