SPF i DKIM – zabezpieczenia przed spamem

Istnieją różne sposoby zabezpieczenia przed spamem i phishingem m.in. najpopularniejsze SPF i DKIM. Czym tak naprawdę są te mechanizmy? Tego dowiesz się z poniższego wpisu.

Zanim jednak zacznę opisywać poszczególne mechanizmy warto zaznaczyć, że żadna metoda nie daje 100% bezpieczeństwa. Ważny jest przede wszystkim zdrowy rozsądek.

Sender Policy Framework

Znane pod skrótem SPF zabezpieczenie serwerów SMTP, które ma chronić przed przyjmowaniem poczty z nieautoryzowanych źródeł. Serwer korzystający z SPF, do którego wysłana jest wiadomość sprawdza w DNSach czy e-mail pochodzi z serwera uprawnionego do wysyłania poczty dla adresu w danej domenie. SPF umożliwia właścicielom domen wskazanie, które serwery pocztowe są uprawnione do wysyłania e-maili w ich imieniu za pomocą specjalnego rekordu dns domeny. Jeżeli serwer, z którego pochodzi wiadomość nie jest uprawniony do wysyłania poczty to skutkuje to odrzuceniem poczty. Zabezpieczenie to chroni nas przed wiadomościami od spamerów, którzy podszywają się pod cudze adresy e-mail (tzw. spoofing). SPF nie wymaga konfiguracji po stronie klienta pocztowego, jest domyślnie dodany dla każdej domeny podpiętej u nas do konta hostingowego.

Jak działa SPF?

  1. Definicja rekordu SPF: Właściciel domeny definiuje politykę SPF, tworząc specjalny rekord tekstowy (TXT) w konfiguracji DNS swojej domeny. Rekord ten zawiera listę serwerów pocztowych, które są autoryzowane do wysyłania e-maili z tej domeny.
  2. Wysyłanie wiadomości: Gdy serwer pocztowy próbuje wysłać wiadomość e-mail, odbiorca sprawdza, z jakiej domeny pochodzi e-mail (np. @domenaklienta.pl).
  3. Sprawdzanie rekordu SPF: Odbiorca następnie odwołuje się do DNS, aby sprawdzić rekord SPF dla tej domeny. Serwer odbierający e-mail pobiera informacje o tym, które serwery są autoryzowane do wysyłania wiadomości z tej domeny.
  4. Weryfikacja: Jeśli serwer, z którego została wysłana wiadomość, jest wymieniony w rekordzie SPF, e-mail jest uznawany za prawdziwy i może być dostarczony. Jeśli serwer nie znajduje się na liście, wiadomość może zostać odrzucona, oznaczona jako spam lub poddana dalszej analizie.

Jak wygląda przykładowy rekord SPF w DNS?

v=spf1 +a +mx +ip4:91.211.220.105 include:example.com -all

  • v=spf1: Określa wersję SPF
  • +a: Oznacza, że każdy serwer pocztowy, którego adres IP jest przypisany do rekordu A domeny, jest autoryzowany do wysyłania e-maili z tej domeny.
  • +mx: Oznacza, że każdy serwer pocztowy, który jest zdefiniowany w rekordzie MX domeny, jest uprawniony do wysyłania e-maili z tej domeny.
  • ip4:91.211.220.105: Oznacza, że adres IP 91.211.220.105 jest autoryzowany do wysyłania e-maili.
  • include: example.com: Wskazuje, że domena example.com 1także posiada uprawnienia do wysyłania e-maili. Zewnętrzne usługi poczty e-mail innych firm (np. outlook, gmail ) często wymagają dodania tego elementu aby zidentyfikować usługę jako prawidłowe źródło wiadomości e-mail z oryginalnej domeny. Przykładowo większość organizacji platformy Microsoft 365 wymaga dodania include:spf.protection.outlook.com
  • -all: Oznacza, że wszystkie inne serwery, które nie są wymienione, powinny zostać odrzucone. Parametr ten występuje w dwóch wersjach: ~all (mniej restrykcyjny) lub -all (bardziej restrykcyjny). Szczegółowe omówienie różnicy między nimi omawiamy w osobnym artykule: https://www.smarthost.pl/blog/spf-czym-rozni-sie-all-od-all

Domain Keys Identified Mail

Jest to rozwiązanie, które pozwala na powiązanie wiadomości e-mail z domeną. Polega to na dodaniu do nagłówka wiadomości sygnatury DKIM. Gdy serwer otrzyma pocztę pobiera z DNSów (dokładniej z rekordu TXT) dane, które umożliwiają zweryfikowanie sygnatury. Klucz domeny pozwala na zweryfikowanie czy wiadomość faktycznie pochodzi od domeny, z której została ona wysłana. Nie mniej jednak DKIM nie daje 100% możliwości, gdyż istnieje możliwość rozszyfrowania klucza. Najczęściej zdarza się to gdy klucz jest po prostu zbyt krótki.

Jak działa DKIM?

  1. Generowanie pary kluczy: Właściciel domeny generuje parę kluczy kryptograficznych: klucz prywatny i klucz publiczny. Klucz prywatny jest przechowywany na serwerze pocztowym, a klucz publiczny jest publikowany w DNS w postaci rekordu TXT.
  2. Podpisywanie wiadomości: Gdy wiadomość e-mail jest wysyłana z serwera pocztowego, serwer ten używa klucza prywatnego do wygenerowania podpisu cyfrowego dla wiadomości. Podpis ten jest dodawany do nagłówka wiadomości e-mail jako specjalny nagłówek DKIM.
  3. Wysyłanie wiadomości: Wiadomość e-mail z dodanym nagłówkiem DKIM jest wysyłana do odbiorcy.
  4. Weryfikacja przez odbiorcę: Odbiorca wiadomości (lub jego serwer pocztowy) pobiera klucz publiczny z DNS nadawcy i używa go do zweryfikowania podpisu DKIM. Jeśli podpis jest prawidłowy, wiadomość uznaje się za autentyczną, co oznacza, że:
    • Wiadomość pochodzi od autoryzowanego nadawcy (który ma dostęp do klucza prywatnego).
    • Wiadomość nie została zmodyfikowana podczas przesyłania.

Co zawiera nagłówek DKIM?

Nagłówek DKIM zawiera szereg informacji, m.in.:

  • d=example.com: Domena, która wygenerowała podpis.
  • s=selector: Identyfikator selektora użyty do pobrania odpowiedniego klucza publicznego z DNS.
  • b=podpis: Właściwy podpis cyfrowy.
  • h=lista_nagłówków: Lista nagłówków e-maila, które zostały uwzględnione w podpisie.

Jak wygląda przykładowy rekord DKIM w DNS?

default._domainkey.domenaklienta.pl. IN TXT „v=DKIM1; k=rsa; p=MIIBIjANBgkqh[…]”

  • default: Jest to selektor, który identyfikuje konkretny klucz DKIM w ramach danej domeny. Można mieć wiele selektorów dla różnych kluczy DKIM w tej samej domenie, co pozwala na rotację kluczy lub używanie różnych kluczy dla różnych serwisów.
  • _domainkey: Jest to standardowa poddomena używana do przechowywania rekordów DKIM w DNS. Każdy rekord DKIM jest przechowywany w poddomenie zakończonej na _domainkey.
  • domenaklienta.pl: To główna domena, dla której rekord DKIM został skonfigurowany.
  • v=DKIM1: Wersja DKIM.
  • k=rsa: Algorytm kryptograficzny (zazwyczaj RSA).
  • p=…: Klucz publiczny.

Oba te zabezpieczenia (wpisy) są domyślnie ustawiane podczas dodawania domeny do cPanelu i nie wymagają żadnej konfiguracji od strony użytkownika.

Jakie są jeszcze możliwości zabezpieczenia przed spamem?

Na naszych serwerach działa spamassasin, który jest zestawem skryptów analizujących wiadomości pod kątem spamu. Dodatkowo zalecamy ustawić mechanizm DMARC, który dodatkowo zwiększa ochronę przed spamem i phishingiem. Informacje czym jest DMARC i jak go wdrożyć znajdziesz we wpisie: Co to jest DMARC i dlaczego warto go mieć?.

Wojciech Babicz

Dodaj komentarz