Metode zaštite od spama i virusa za servise elektroničke pošte - 2. dio

DKIM, SPF I DMARC

DKIM – Domain Keys Identified Mail metoda je korištenja enkripcije i potpisivanja e-pošte uz dodatno korištenje zapisa u DNS-u za domenu s koje se e-pošta šalje. Za potpisivanje i provjeru može se koristiti AMaViS, a može se koristiti i program OpenDKIM, koji se također integrira u Postfix. Potrebno je kreirati par ključeva za domenu, privatni i javni.

Privatni ključ koristi se za potpisivanje i enkriptiranje e-pošte, dok se javni ključ objavljuje u DNS zapisu u zoni za domenu s koje se šalje mail. Na taj način odredišni mail-poslužitelj koji zaprima e-poštu može provjeriti jesu li zaglavlje i tijelo (engl. header i body) e-pošte koja je pristigla modificirani ili su ostali netaknuti, u originalnom obliku. Sve se obavlja automatski i nakon što se pokrene DKIM verifikacija nije potrebna nikakva interakcija. DKIM privatni ključ izgleda ovako:

v=1; a=rsa-sha256; c=relaxed/simple; d=srce.hr;

s=mail; t=1425776684;

bh=g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=;

h=Date:From:To:Subject:From;

b=MIICXQIBAAKBgQCqU7BjfkCWLL/ej6UCVPRlRUvr8lZRhXi3a80MP5FWZZB79dElIg0Wec4nDL2gMYvsvoutRjr9pnr8Mrv5Ur+m4lRJfYjs0I7Kr3xJTVd+Q+s/JkFneAbZ8HojAH4mImnIsjZ6y+P/hyVZNz2h5XcHoXJs3WplTpuiRHOXcmBUZQIDAQABAoGAWMhQzDu2DNF8ndVATMvdrKAHaBCkv8+T0gAmHLlR17gPLR5AC1wJeGq7c41nloXdCuVzxzkxbKAHwUfsxZRFgyxlYyMtLO1TphpV49
  • v: DKIM verzija
  • a: korištena enkripcija i algoritam
  • c: (engl. canonicalization algorithm) algoritam koji se koristi za zaglavlje i tijelo e-poruke
  • d: domena na koju se odnosi i koja je izdala potpis
  • s: definira koji zapis sadrži javni ključ – u ovom slučaju pitat će se mail._domainkey.srce.hr
  • t: vrijeme kada je potpis generiran
  • bh: enkriptirani hash tijela e-poruke
  • h: popis polja u zaglavlju koji će biti potpisani
  • b: enkriptirani potpis.

A sam zapis u DNS-u:

mail._domainkey.srce.hr. 3600 TXT "v=DKIM1; p=“MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqU7BjfkCWLL/ej6UCVPRlRUvr8lZRhXi3a80MP5FWZZB79dElIg0Wec4nDL2gMYvsvoutRjr9pnr8Mrv5Ur+m4lRJfYjs0I7Kr3xJTVd+Q+s/JkFneAbZ8HojAH4mImnIsjZ6y+P/hyVZNz2h5XcHoXJs3WplTpuiRHOXcmBUZQIDAQAB"

Sender Policy Framework ili skraćeno SPF, tip je DNS zapisa u kojem se definira i javno objavljuje koji mail-poslužitelji smiju slati mail za određenu domenu. Na taj način se upozoravaju drugi mail-poslužitelje da mailovi koji nisu pristigli s mail-poslužitelja koji su navedeni, postupaju prema akciji koja je također navedena u SPF zapisu. Npr. za domenu srce.hr može se postaviti SPF zapis u DNS-u:

srce.hr.   3600    IN    TXT  "v=spf1 +mx a:test.srce.hr ipv4:161.53.x.x +include:_spf.google.com -all"
  • mx: definira mail-poslužitelj koji je naveden u DNS zoni srce.hr da smije slati e-poštu
  • a: označava puno ime nekog poslužitelja koji smije slati e-poštu
  • IPv4: IP adresa poslužitelja (ako nedostaje znak + podrazumijeva se sam po sebi)
  • IPv6: IPv6 adresa poslužitelja
  • include: uključi SPF zapise od _spf.google.com. Ovdje treba biti oprezan koji će se zapisi uključiti, odnosno kojim mail-poslužiteljima će se dozvoliti da šalju e-poštu za domenu. Za primjer je naveden Google ako se želi slati e-poštu preko njihovih SMTP poslužitelja
  • redirect: domus.hr – SPF zapis za domus.hr postaje jedini aktivan kao SPF zapis za određenu domenu
  • all: odnosi se na sve poslužitelje koji nisu navedeni u SPF zapisu
  • Fail: odnosno znak “-“, govori mail-poslužiteljima da odbace e-poruku koja nije pristigla s mail-poslužitelja koji nisu navedeni u SPF zapisu ili imaju naveden znak “-“. U našem slučaju to su svi ostali “-all“. Fail se koristi u praksi jer se želi kontrolirati tko smije slati e-poštu za domenu
  • SoftFail: znak “~“, govori da niste sigurni što napraviti s mail-poslužiteljima koji šalju e-poštu za vašu domenu, ali da ipak označe takvu e- poštu  i isporuče je korisniku. Korisno u svrhu testiranja ili kad niste 100 % sigurni da će sva legitimna e-pošta biti isporučena.
  • Neutral: znak “?”, govori da nemate definiranu politiku. Ovo nema neku upotrebu, osim kada želite testirati nove SPF zapise koje ste dodali.
  • Pass: znak “+”, ako nije ništa drugo navedeno, ovo se podrazumijeva. Označava da poslužitelji koji imaju naveden znak “+” smiju poslati e-poštu za domenu. Ako znak “+“ nije naveden u SPF zapisu ispred npr. MX ili A, podrazumijeva se.

Više detalja od SPF-u i samoj sintaksi može se pronaći na http://www.openspf.org/SPF_Record_Syntax.

Alati koji se mogu integrirati u Postfix i koji mogu provjeravati SPF zapise su:

  • postfix-policyd-spf-perl – pisan u programskom jeziku Perl, na poslužitelju zahtijeva programsku podršku Perl
  • postfix-policyd-spf-python – pisan u programskom jeziku Python, na poslužitelju zahtijeva instaliranu programsku podršku Python (peporuča se u odnosu na Perl verziju jer je noviji i ima više opcija s upotrebljivim početnim vrijednostima)
  • SpamAssassin
  • PolicyD v2 cluebringer.

Domain based Message Authentication, Reporting and Conformance ili skraćeno DMARC danas je najnovija tehnologija koja se oslanja na prethodno spomenute. DMARC zapisom u DNS-u definira se uputa, odnosno politika, što će se dogoditi s e-poštom kada ne prođe provjeru DKIM i/ili SPF testa. Omogućava i definiranje adrese e-pošte na koju će biti poslani izvještaji o e-pošti koja je poslana, a nije prošla testove. Na taj način može se dobiti uvid u količinu i tip lažnih poruka, phishinga i spama koji su poslani, odnosno izgleda kao da su poslani s domene. DMARC zapis u DNS-u za domenu srce.hr izgledao bi ovako:

v=DMARC1; p=quarantine; rua=mailto:webmaster@srce.hr; ruf=mailto:webmaster@srce.hr; fo=0; adkim=r; aspf=r; pct=100; rf=afrf; ri=86400
  • v: DMARC verzija, trenutno je to DMARC1
  • p: pravilo
    • quarantine: tretiraj e-poštu kao sumnjivu
    • reject: e-poštu treba odbaciti
    • none: ne treba učiniti išta, koristi se za testiranje
  • rua: mail-adresa na koju se šalje agregirani izvještaj, opcionalna postavka
  • ruf: mail-adresa na koju se šalje detaljan forenzički izvještaj
  • fo: opcionalna postavka
    • 0: generiraj izvještaj ako e-pošta ne zadovolji DKIM i SPF provjere
    • 1: generiraj izvještaj ako e-pošta ne zadovolji DKIM ili SPF provjeru
    • s: generiraj izvještaj ako e-pošta ne zadovolji SPF provjeru
    • d: generiraj izvještaj ako e-pošta ne zadovolji DKIM provjeru
  • adkim: opcionalna postavka, može biti strict ili relaxed, ako nije definirana, podrazumijeva se relaxed. Označava koliko će striktni biti rezultati DKIM provjere. Strict će rezultirati neprolaznošću testa u slučaju da domena ne odgovara punom imenu poslužitelja koji šalje npr. srce.hr je domena, a šalje poslužitelj test.srce.hr.
  • aspf: isto kao i za adkim, samo se provjerava SPF
  • pst: opcionalna postavka, označava postotak e-pošte nad kojom želimo DMARC provjeru. Ako nije definirana, vrijednost joj je 100 % (svi).
  • rf: opcionala postavka, može biti afrf ili aodef i označava željeni format izvještaja. Ako nije definirana, vrijednost joj je afrf
  • ri: opcionalna postavka u sekundama, definira period za koji stižu DMARC izvještaji, ako nije postavljena, vrijednost joj je 86400 s (1 dan)
  • sp: opcionalna postavka kojom se postavlja posebno pravilo za poddomenu. Ako nije postavljena, poddomena ima isto pravilo kao i domena. Vrijede iste vrijednosti kao i za “p“.

Više o DMARC-u može se pronaći na https://dmarc.org/.

Za DMARC podršku i integraciju u Postfix potrebno je instalirati program OpenDMARC.

PolicyD v2 cluebringer

PolicyD v2 cluebringer novija je verzija PolicyD koja nudi neke od mogućnosti koje su već prethodno spomenute kod drugih programa. Lako se integrira u Postfix, a ima i web-sučelje u kojem se mogu definirati pravila za domene i ostalo. Podržava 7 modula:

  • Access Control – nudi mogućnost zadržavanja, odbijanja, zanemarivanja, filtriranja i preusmjeravanja e-pošte (engl. HOLD, REJECT, DISCARD, FILTER, REDIRECT)
  • AMaViS – podrška za AMaViS
  • CheckHelo – razne HELO/EHLO provjere
  • CheckSPF – SPF provjere
  • Greylisting – podrška za greylisting
  • Quotas – podešavanje limita broja i veličine poruka u definiranom vremenu
  • Accounting – isto kao i za Quotas.

Više o programu može se pronaći na http://wiki.policyd.org.

Zaključak

Danas postoji niz alata koji pomažu zaštiti korisničke mail-sandučiće kao i sam mail-poslužitelj od spama, virusa i ostalog mailcioznog koda. Kako niti jedan sustav nije 100 % učinkovit, postoji mogućnost da se i uz sve ove zaštite pokoja spam-poruka provuče, ali u praksi to će se događati rijetko. Isti alati omogućavaju da i e-pošta koja se šalje bude autenticirana od strane drugih mail-poslužitelja i omogućavaju jasnu kontrolu nad time koji mail-poslužitelj smije slati e-poštu za koju domenu. U sljedećoj tablici prikazan je pregled alata i područja zaštite koje pokrivaju:

zastita-od-spama-2.png

Minimalni set alata koji bi trebalo obavezno instalirati na poslužitelj elektroničke pošte Postfix kako bi se što bolje zaštitio od spama, virusa i ostalih malicioznih datoteka bio bi:

  • Postgrey
  • Kombinacija AMaViS + SpamAssassin + ClamAV
  • OpenDKIM
  • postfix-policyd-spf-python
  • OpenDMARC.

Ako vam treba podešavanje kvota te finije podešavanje zabrana i limita prema mail- adresama i računima, rješenje je koristiti PolicyD v2 cluebringer. Tada nije potrebno koristiti Postgrey i postfix-policyd-spf-python jer PolicyD v2 cluebringer njihove funkcionalnosti već ima integrirane.