Photo by Kelvin Ang on Unsplash

SPF, DKIM & DMARC — Nedir

İzel Akçay
Trendyol Tech
Published in
5 min readDec 27, 2020

--

E-mail güvenliği, Covid-19 salgını ile birlikte siber güvenlik dünyasında büyük ölçekli firmalardan son kullanıcıya kadar herkesin en büyük sorunlarından biri haline geldi. Bu konuda küçük değişiklerle büyük işler başarmak istiyorsanız vakit kaybetmeden yazımızı okumaya başlayın :)

SPF (Sender Policy Framework) kaydı nedir?

SPF kontrolünün açık olduğu mail sunucularında, gelen e-postanın header bilgisinde geçen gönderici IP adresi ile göndericinin DNS kayıtlarındaki SPF kaydında belirttiği IP’ler ile örtüşüp örtüşmediğini kontrol eden bir kayıt türüdür.

Alıcı pozisyonunda olduğunuzu düşünürsek mutlaka SPF kontrolünü aktif hale getirmelisiniz. Bu sayede; kurumsal firmalardan gelmiş gibi gözüken fakat saldırgan tarafından spoof edilmiş oltalama maillerine karşı kendinizi korunmuş olursunuz.

Gönderici olduğunuz durumlarda ise çalışanlarınız, müşteriniz ve partnerleriniz gibi ekosisteminizdeki paydaşlarınızı mail yoluyla gerçekleşebilecek saldırılara kurban gitmelerini önlemek adına SPF kaydınızı doğru ve eksiksiz olarak oluşturmalısınız.

Unutmamalıyız ki; her alan adı için yalnız 1 SPF kaydı olmalıdır. Birden fazla kayıt olması durumunda içlerinden sadece biri baskın gelecektir :)

Mevcut SPF kaydınızı mxtoolbox üzerinden kontrol edebilirsiniz.

SPF kaydı nasıl oluşturulur?

Öncelikle e-posta gönderimi sırasında kullandığınız tüm IP adreslerini, e-posta servis sağlayıcılarını ve 3rd party mail sunucularınızı tespit etmeniz gerekiyor. Büyük ölçekli organizasyonlarda bu konuda oldukça hassas davranmak gerekir. Dolayısıyla en çok vakit alacak operasyon bu diyebiliriz. Daha sonrasında manuel veya spf wizard yardımıyla kolaylıkla kaydınızı oluşturabilirsiniz.

Manuel SPF kaydı oluşturma

Adım 1: Versiyon Belirtme

Yaygılıkla versiyon 1 kullanılır ve “v=spf1” yazmak yeterli olur.

Adım 2: Verilerin yazılması

Hazırlık aşamasında elde edilen veriler syntax’a uygun şekilde yazılır.

Maximum 10 lookup eklenebilir aksi takdirde ISP (Internet Service Provider) tarafından yok sayılır.

Adım 3: Aksiyon belirleme

Bu aşamada, SPF kaydınız dışındaki bir IP adresinden mail iletimi söz konusu olursa alıcının mail sunucusunun ne yapması gerektiğini “-all, ~ all, +all, ?all” ifadelerinden biriyle belirtmelisiniz.

  • *-:* fail, alıcıya bu iletinin kesinlikle sizin tarafınızdan gönderilmediği ve söz konusu maili drop etmesini söylemiş oluyorsunuz. Eğer daha önceki aşamalarda hata yapmadığınızı düşünüyorsanız rahatlıkla “-“(fail) kullanabilirsiniz. Eksik girilen bir değer olması durumunda gerçek mailleriniz alıcıya hiç ulaşmayabilir.
  • *~:* soft fail ise aşama 2’de eksikleriniz olabileceğini düşünüyorsanız kullanımınızı kesinlikle önerdiğim ifadedir. Alıcının mail sunucusu maili iletip iletmeyeceğine kendisi karar verir ve iletiyi genellikle spam klasörüne yönlendirir.
  • *?:* neutral ise herhangi bir politika beyan edilmeyen durumlarda kullanılır.
  • *+:* pass anlamına gelir ve internet ortamındaki tüm IP’leri kapsar. Sender IP adresi her ne olursa olsun mail son kullanıcıya iletilir. Güvenlik bakış açısıyla kullanımı tavsiye edilmez.

Tüm aşamaları birleştirdiğimizde kaydınızı mutlaka SPF Record Checker ile kontrol etmenizi öneririm.

Tüm adımları tamamladığınızda çıktının aşağıdaki gibi olması beklenir.

“v=spf1 a mx IP4:1.1.1.1 include:_spf.google.com ~all”

“v=spf1 IP4:192.168.0.1/16 include:thirdparty.com ~all”

“v=spf1 mx mx:domain.com -all”

SPF kaydınızı artık DNS kayıtlarınıza bir TXT kaydı olarak kaydedebilirsiniz. Etkisini göstermesi tanımladığınız TTL değerine ve sunucudaki cache’e bağlı olarak değişkenlik gösterebilir.

DKIM kaydı nedir?

DKIM uzun haliyle Domain Keys Identified Mail, gönderenin yollamış olduğu iletiye elektronik imzasını eklemesi ve alıcının mail sunucusunun bu elektronik imzayı göndericinin DNS kaydındaki public key ile çözerek iletilinin taklit edilip edilmediğini doğrulama yöntemidir. Bir gmail kullanıcısıysanız gelen bir iletiyi açtıktan sonra “diğer > orjinali göster” yolunu takip edilerek DKIM imzasını okuyabilirsiniz.

DKIM kaydı nasıl oluşturulur?

Adım 1: Anahtar çifti oluşturma

Google, Microsoft gibi partneriniz varsa bu platformlar üzerinden anahtar çiftinizi oluşturabileceğiniz gibi SSH-keygen gibi uygulamalar aracılığıyla da kolaylıkla oluşturabilirsiniz.

Adım 2: Public key ekleme

DNS kayıtlarına TXT türünü seçerek public keyinizi eklemelisiniz.

Name: [selector._name]._domainkey

v=DKIM1; k=rsa; t=s; p=[Adım 1’de oluşturulan public key]

Adım 3: İletilere DKIM imzası ekleme

Gönderdiğiniz iletilere DKIM imzanızı eklemek için son olarak; kullanılan platform üzerinden DKIM’i etkinleştirmelisiniz.

Adım 4: Doğrulama

Bu işlemleri tamamladıktan sonra Dig/nslookup komutlarıyla ve ya online toolları kullanarak doğrulamasını yapmanızı mutlaka öneririm.

DMARC (Domain-Based Message Authentication, Reporting & Conformance) nedir?

DMARC, DKIM ve SPF kayıtlarınızı düzenledikten sonra aktif hale getirmeniz durumunda çok fayda sağlayacağını düşündüğüm bir diğer kontrol noktasıdır. DMARC ile kimliği doğrulanmayan iletilere uygulanacak politika belirlenir ve Google, Microsoft, Yahoo! gibi servis sağlayıcılar tarafından raporlanır.

Mevcut DMARC kaydınızı tablodaki yöntemlerden birini kullanarak görüntüleyebilirsiniz.

DMARC kaydı nasıl oluşturulur?

Versiyon bilgisi: spf kaydında olduğu kaydın en başında kullanımı zorunludur. Yaygın kullanımı “v=DMARC1” şeklindedir.

Politika bilgisi: SPF ve DKIM kaydının eşleşmediği durumda alıcının mail sunucusunun ne yapması gerektiği tanımlanır.

  • reject: E-posta alıcıya iletilmez.
  • quarantine: E-posta Spam klasörüne iletilir.
  • none: E-postanın iletimi ile alakalı herhangi bir aksiyon alınmaz, yalnızca ilgili kişilere rapor olarak iletilir.

Domaininiz için s parametresiyle bir politika oluşturduktan sonra subdomainleriniz için farklı bir politika belirlemek isterseniz sp parametresini kesinlikle kaydınıza eklemelisiniz.

Örnek: s=quarantine; sp=reject

Domain için karantina subdomainler için engelleyici politika tanımlanır.

Oran bilgisi: Aksi belirtilmediği sürece varsayılan değeri 100’dür ve kimliği doğrulanmayan e-postaların yüzde kaçına aksiyon almak istiyorsanız pct ifadesi yardımıyla tanımlayabilirsiniz. Politikanızı reject politikasına ayarlamak istiyorsanız ve e-postalarınızın iletilmeme riskini göze alamıyorsanız pct=10 ile başlayıp gözlem yaptıkça oranı yükseltmeniz tavsiye edilir.

Raporların iletileceği mail adresi bilgisi (rua): DMARC raporlarının hangi mail adresine iletileceği tanımlanır. rua=mailto:dmarc@example.com

Forensics raporlarının iletileceği mail adresi bilgisi (ruf): DMARC hata raporlarının hangi mail adresine iletileceği tanımlanır. ruf=mailto:dmarc@example.com

Forensics raporlarının format bilgisi (r): afrf ve iodef olmak üzere 2 tip bulunmaktadır.

Raporların geliş frekansı (ri): Normalde günlük şekilde gelen bu raporlar istenilen zaman sıklığına göre kişiselleştirilebilir.

Forensic rapor seçeneği (fo): Forensic raporlarının ne zaman oluşturulacağı belirlenebilir.

  • fo=0: Hem spf hem dkim fail olursa forensic raporu oluşturur.
  • fo=1: SPF veya DKIM’den sadece biri fail olursa forensic raporu oluşturur.
  • fo=d: sadece DKIM fail olursa forensic raporu oluşturur.
  • fo=s: sadece SPF fail olursa forensic raporu oluşturur.

Not: Birden fazla seçim yapmak isterseniz “fo=0:s;” gibi bir tanımlama da yapabilirsiniz.

SPF uyumluluk bilgisi (aspf): Varsayılan değeri “relaxed” dır. SPF kaydının nasıl eşleşmesi gerektiğini tanımlar.

  • s: Strict, tam eşleşme olmasını gerektirir.
  • r: Relaxed, kısmi eşleşmelere de müsade eder.

Yazılan Dmarc kaydı SPF ve DKIM de olduğu gibi DNS TXT kaydı olarak eklenmelidir.

Name: _dmarc.example.com

v=DMARC1; p=reject; pct=80; rua=mailto:dmarc@example.com; aspf=s

Online Tools

SPF & DKIM check via Mail-Tester

DKIM Record Checker via DMARC Analyzer

DMARC Record Checker via mxtoolbox

DMARC Record Checker via DMARC Analyzer

--

--