Metody uwierzytelniania nadawców e-mail, czyli o SPF, DKIM, Sender-ID. KAROL SZCZEPANOWSKI
SPF sender policy framework Żródło http://www.openspf.org/ Wpis w DNS domeny nadawcy RFC 4408 Sugerowane działania dla odbiorcy poczty:
SPF - mechanizmy ALL Matches always; used for a default result like -all for all IPs not matched by prior mechanisms. A If the domain name has an address record (A or AAAA) that can be resolved to the sender's address, it will match. IP4 If the sender is in a given IPv4 address range, match. IP6 If the sender is in a given IPv6 address range, match. MX If the domain name has an MX record resolving to the sender's address, it will match (i.e. the mail comes from one of the domain's incoming mail servers).
SPF mechanizmy (cont.) PTR If the domain name (PTR record) for the client's address is in the given domain and that domain name resolves to the client's address (forward-confirmed reverse DNS), match. This mechanism is deprecated and should no longer be used.[2] EXISTS If the given domain name resolves to any address, match (no matter the address it resolves to). This is rarely used. Along with the SPF macro language it offers more complex matches like DNSBLqueries. INCLUDE If the included (a misnomer) policy passes the test this mechanism matches. This is typically used to include policies of more than one ISP. (nie zawsze zaimplementowane!)
SPF sugerowane działania + for a PASS result. This can be omitted; e.g., +mx is the same as mx.? for a NEUTRAL result interpreted like NONE (no policy). ~ (tilde) for SOFTFAIL, a debugging aid between NEUTRAL and FAIL. Typically, messages that return a SOFTFAIL are accepted but tagged. - (minus) for FAIL, the mail should be rejected Domyślnie + (PASS)
SPF - przykład C:\Users\Karol>nslookup Serwer domyslny: google-public-dns-a.google.com Address: 8.8.8.8 > set type=txt > karolszczepanowski.pl Serwer: google-public-dns-a.google.com Address: 8.8.8.8 Nieautorytatywna odpowiedź: karolszczepanowski.pl text = "v=spf1 a mx a:mx1.koszyk.org a:mx2.koszyk.org a:mail.koszyk.org - all"
SPF Pełny opis: http://www.openspf.org/spf_record_syntax http://www.kitterman.com/spf/validate.html http://mxtoolbox.com/spf.aspx Zalety: - Male obciążenie serwera - Możliwość odrzucenia na etapie połączenia Wady: - możliwe problemy z forwardowaniem wiadomości - obciążenie łącza u odbiorcy
Sender-ID DEPRECATED! The tag for Sender ID records can be "spf2.0/pra", "spf2.0/mfrom", or "spf2.0/mfrom,pra", depending on which identities the policy applies to. Nevertheless, Sender ID is not the latest version of SPF it is a obsolete and independent protocol. RFC 4406
DKIM RFC6376 DKIM Service Overview, RFC 5585 RFC 6376 DomainKeys Identified Mail (DKIM) Development, Deployment and Operations, RFC 5863 DKIM Author Domain Signing Practices (ADSP) RFC 5617 Podpisywany nagłówek wiadomości (wybrane pola) Sugestie dotyczące działań w przypadku negatywnej weryfikacji Klucze publiczne dostępne w DNS http://www.dkim.org/
DKIM - przykład Return-Path: <ja@karolszczepanowski.pl> Received: by o2.pl (o2.pl mailsystem) with LMTP; Thu, 12 Jun 2014 17:18:31 +0200 Received: from 89-71-127-189.dynamic.chello.pl [89.71.127.189] by mx5.o2.pl with ESMTP id QCArhx; Thu, 12 Jun 2014 17:18:08 +0200 Received-SPF: temperror (mx5.o2.pl: error in processing during lookup for ja@karolszczepanowski.pl: DNS timeout ) Received: from www2.local (unknown [192.168.0.2]) by mail.koszyk.org (Postfix) with ESMTP id B309D12DF7 for <karol_sz@tlen.pl>; Thu, 12 Jun 2014 17:17:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=karolszczepanowski.pl; s=default; t=1402586271; bh=p3zwqf+r+oukqyyhbscxeixaubur4vk+c2in3gkc774=; h=date:from:to:subject:reply-to:from; b=b0gxqy6vis+0ojuvthzsy85ziteu99dk7d69laxyryckivrhwhmznfvkqqqkalerw zrybgowtuk1mhlabwkifgusf54s2duk3k9e93rv4afjrz4nbd+6gxquyhk96hxsip7 Z35dO++8Hi0jCznNn/Twjkjo2+5p4XI4z3l+WTvU=
DKIM - przykład X-Spam-Status: No, score=-1.1 required=77.0 tests=all_trusted,dkim_signed, DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE autolearn=unavailable version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on hermes.local X-O2-Trust: 3, 84 X-O2-SPF: temperror
DKIM w DNS > _domainkey.karolszczepanowski.pl Serwer: google-public-dns-a.google.com Address: 8.8.8.8 Nieautorytatywna odpowiedź: _domainkey.karolszczepanowski.pl text = "t=y; o=~" >
DKIM w DNS > default._domainkey.karolszczepanowski.pl Serwer: google-public-dns-a.google.com Address: 8.8.8.8 Nieautorytatywna odpowiedź: default._domainkey.karolszczepanowski.pl text = "v=dkim1; k=rsa; p=migfma0gcsqgsib3dqebaquaa4gnadcbiqkbgqcxqwhzrvaqp2bon > s8/swsdmusju2dk5w06q3lyymqkxpxtyzcvdlo2bczitcspuxc9utl6fpryqsagw8uviq4bgly0t5nuf OGNl+R4GnMls8fm73851KQq351Iw/yZWpEdKidm1RapVLlPVh1ggjysxwx1v3nd6eP1ExmvqgXl5QIDA QAB"
DKIM w DNS Wymaga 2 wpisów w DNS: 1. policy record który wygląda tak: _domainkey.domain.tld IN TXT "t=y;o=~ gdzie: t=y oznacza, że domena jest w trybie testowym (kiedy testy się zakończą należy zmienić na t=n) o=~ oznacza, że część maili będzie podpisywana, o=- oznacza obligatoryjne podpisywanie wszystkich maili możliwe parametry to r (responsible e-mail) i n (notatki) Docelowym stanem jest oczywiście t=n i o=-
DKIM w DNS 2. selector record default._domainkey.domain.tld IN TXT "v=dkim1; g=*; k=rsa; p=abcdef...abc"gdzie: "default" selektor rekordu (np nazwa hosta podpisującego, lub rok) "_domainkey" słowo kluczowe "k=" typ klucza, parametr opcjonalny, domyślnie : rsa "p=" klucz publiczny, dane "g=" granularity, parametr opcjonalny. Domyślnie "*" "v=dkim1;" wersja
Selektory S= Pozwalają na rotację kluczy Możliwy delegację/outsourcing
DKIM- odwoływanie klucza Skasowanie zawartości pola p=
DKIM - klucze Zalecenia The Messaging, Malware and Mobile Anti-Abuse Working Group (http://www.maawg.org): Minimum 1024 bity Rotacja klucza 2 razy do roku Wygasanie - podpisy powinny mieć dłuższy czas zycia niż okres rotacji Stare klucze powinny być odwoływane W producji nie używać test mode Monitorowanie - wdrożenie DMARC (http://dmarc.org/) Domain Keys deprecated!
TLS zapewnienie poufności Szyfrowanie na czas tranzytu poczty pomiędzy serwerami 250-STARTTLS http://www.checktls.com/assuretls.html
Tools Automatyczny test: http://www.brandonchecketts.com/emailtest.php http://domainkeys.sourceforge.net/policycheck.html http://www.socketlabs.com/domainkey-dkim-generation-wizard/ Weryfikacja konfiguracji: Wystarczy wysłać e-mail na podane niżej adresy, w odpowiedzi otrzymamy wyniki testów (uwaga na ewentualne opóźnienia w propagacji DNS) check-auth AT verifier.port25.com sa-test AT sendmail.net Domain Signing Practices: http://en.wikipedia.org/wiki/author_domain_signing_practices Pakiety w Debianie : opendkim (tylko DKIM) albo dkimproxy (DKIM i DomainKeys) (opis u mnie na stronie już wkrótce)
Pytania?
Kontakt: karol(at)karolszczepanowski.pl www.karolszczepanowski.pl