Implementasi SPF, DKIM, DMARC dan Reverse DNS Sebagai Standard Protection dan Meningkatkan Email Integrity

Wednesday, April 04, 2018
Ketika kita membangun sebuah email server sering kita lupa bahwa ada konfigurasi tambahan yang harus kita lakukan. Konfigurasi ini termasuk kategori penting loh sebab ini terkait integritas email system yang telah kita bangun, pertanyaannya itu seberapa penting sih? 
Banyak Email System saat ini terutama seperti Gmail, Yahoo, AOL, sampe Email System Perbankan (Bank-Bank) biasanya sangat memperhatikan paramater-parameter seperti SPF, DKIM, DMARC, dan Resolve DNS yang digunakan oleh si pengirim email. Kenapa sih kok ribet amat yah? Itu karna mereka mengeluarkan banyak tenaga untuk bertarung melawan spam dan email spoofing. Inilah kenapa sebabnya biasanya paket email yang tidak terdapat SPF, DKIM, DMARC bahkan yang Resolve DNS nya kurang baik konfigurasinya sering dianggap spam dan lebih parahnya lagi bahkan di DROP oleh email system penerima.
By the way untuk tulisan ini best practicenya menggunakan platform zimbra. Namun, kudu diinget meskipun saya sebelumnya pernah berguru sama salah satu jagoan email server dgn platform zimbra di Indonesia, bukan berarti bahwa standard yang saya tulis ini hanya untuk platform zimbra saja, namun sebenernya juga untuk semua platform. Artinya ketika selesai mendeploy sebuah email system jangan cuma intinya bisa kirim dan terima email saja, sebaiknya jangan lupa juga tambahkan konfigurasi lainnya untuk meningkatkan proteksi dan juga email integrity, antara lain yaitu sebagai berikut ini :
  • Sender Policy Framework (SPF).
  • Domain Keys Identified Mail (DKIM).
  • Domain-Based Message Authentication, Reporting & Conformance (DMARC).
  • Reverse DNS.

Berikut beberapa penjelasan singkat termasuk best practice untuk membangun standard proteksi dan memperbaiki reputasi serta email integrity di email system yang kita bangun. Nah best practicenya baru mengacu pada platform zimbra nih hehe...
Sender Policy Framework (SPF)
Sender policy framework adalah sebuah email validation system yang sebenernya di desain untuk mencegah spoofing. Cara kerja SPF cukup sederhana yaitu SPF akan melakukan verifikasi Source IP dari email yang dikirim lalu mencocokannya dengan DNS TXT record menggunakan SPF content.
Dibawah ini kira-kira merupakan flow gimana kira-kira SPF bekerja.
Penjelasan :
Nah kalo dari flow diatas terlihat bahwa email system yang menerima email akan mengecek Sender-ID Framework dari tiap-tiap email yang mereka terima dengan cara menanyakan SPF record si pengirim email ke DNS.  Nah hasilnya hanya ada dua yaitu Pass atau Fail, apabila pass maka email biasanya akan di redirect ke folder inbox penerima dan apabila fail maka email akan diredirect ke folder Junk/Quarantine bahkan yang lebih parahnya lagi bisa saja di drop.
Sebenernya ada juga status selain Pass dan Fail yaitu neutral. Kalo statusnya neutral ada beberapa kemungkinan bisa saja masih menunggu propagasi DNS atau memang sudah di konfigurasi namun namun memang si admin menginginkan implementasi SPF tanpa policy.
Apa dampaknya kalo kita enggak buat SPF di email system kita? Biasanya kalo si penerima memang agak strict ya email kita di anggap spam bahkan bisa aja di drop karna dianggap tidak trusted.

Konfigurasi SPF?
Setelah saya ceritain dulu konsep SPF biar paham jadi gak cuma bisa konfig doang hehe, maka selanjutnya kita masuk ke proses konfigurasi SPF. Konfigurasinya standardnya sih sebenernya mudah kok, mungkin untuk beberapa kasus yang custom baru sedikit lebih rumit cuma saya coba share yang standard yah..
Format
"v=spf1 a mx include:servermta.domain.com ~all"

Contoh
"v=spf1 a mx include:mail.example.com ~all"

Kalo agan pake WHM contohnya seperti dibawah ini.

Notes :
  • Saya merahin karna pake domain orang, yang saya merahin seharusnya adalah nama domain agan. Nah yang saya kasih tanda panah isi dengan server mta yang sudah di isi dengan A Record di DNS agan.
  • Sebagai catatan tambahan aja kalo masih gak ngerti ~all, -all, ?all, +all bisa liat tabel dibawah ini.

Nah kalo sudah selesai agan tinggal nunggu propagasi DNS paling lama 1-2 hari. 
Pengecekan SPF
Kalo propagasi DNS sudah selesai agan bisa test SPF internet seperti mxtoolbox.com disini. Setelah itu cari box yang SPF lalu masukan domain agan. Kalo sudah selesai seharusnya hasil testing akan seperti dibawah ini.
Dan apabila agan coba ngirim email ke google dan show original code maka SPF akan terlihat pass.


Domain Keys Identified Mail (DKIM)
Domain keys adalah salah satu metode security pada email untuk mengasosiasikan domain name dengan email yang dikirim. Dengan adanya DKIM maka ini memungkinkan adanya proses signature pada masing-masing email yang dikirim oleh si pengirim dengan metode enkripsi asymetric dengan saling berbagi informasi mengenai public keys dan private keys yang digunakan.

Coba agan perhatikan gambar dibawah ini :

Penjelasan :
Nah dari gambar diatas terlihat bahwa MTA si pengirim mempublish public keys di DNS public lalu ketika proses pengiriman email terjadi, maka si penerima akan menggunakan public keys yang ada di DNS untuk mencocokan apakah match atau tidak, apabila match maka akan tertera bahwa email yang dikirim signed-by domain si pengirim.
Konfigurasi DKIM?
Konfigurasi DKIM lebih sedikit rumit daripada SPF namun enggak susah kok. Langkah-langkahnya itu adalah sebagai berikut ini, saya contohkan generate dengan zimbra yah.
  • Masuk ke server lalu masuk lagi ke user zimbra setelah itu cek dengan command ini "/opt/zimbra/libexec/zmdkimkeyutil -q -d contoh.com"
  • Kalau belum ada saatnya buat dengan format seperti dibawah ini :
    /opt/zimbra/libexec/zmdkimkeyutil -a -d example.com -s namadkim
  • Setelah selesai di generate maka akan muncul public key yang bisa di publish di DNS, agan bisa copas public key tersebut lalu buat lagi TXT record di DNS agan. Sebagai contoh hasil generate public key seperti dibawah ini :

    "v=DKIM1; k=rsa; "  "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2c4zVBYQtUsoeEGiqYKEZ7JLU3cbuQCOYvr+IDQJPOQjVlsSTapsu+4yUZ6OJ41RmzYQooneL+We1MMYDmGMAQmHNQAAfhoudLN/+aSC7ggo+rTAd4ipwMujgySB8SsKzKBeAFLth/WteAOrVMIfMrmNgKj0pLUfQp1sVpa1WGQIDAQAB"

    Hapus tanda-tanda petik diatas lalu coba copas ke website tools checker dkim di disini.
    Kalo hasilnya sudah seperti pada screenshot dibawah ini maka berarti DKIM untuk domain agan sudah berjalan.

  • Setelah selesai di cek copas key record yang sudah valid tsb ke WHM atau manajemen tools yang agan gunakan, buat TXT record yah. Sebagai contoh seperti dibawah ini :

Pengecekan DKIM
Untuk mengecek DKIM agan sudah berjalan atau belum agan bisa cek di link yang sama di dkimcore disini. Lalu masukan nama dkim yang agan generete tadi lalu domain seperti dikotak merah ini.
Kalo hasilnya sudah valid seperti gambar dibawah berarti DKIM anda sudah terecord di DNS.

Tinggal lanjutkan coba kirim email dari email agan ke google lalu cek parameter ini dan show original code, apabila sudah sesuai seperti dibawah ini harusnya DKIM sudah berjalan.
Show Original Code

Show Arrow Details


 
 

Keliatan kalo di original code bahwa dkim agan statusnya PASS dan di arrow details bisa dilihat signed-by nah yg garis merah seharusnya nama domain agan.
Kalo seperti ini lebih reliable dan trusted kan? hehe

Domain-Based Message Authentication, Reporting & Conformance (DMARC)
Selanjutnya kita membahas DMARC, sebenernya cara kerjanya hampir sama seperti dengan SPF namun metodenya dan fungsinya sedikit berbeda. Meskipun begitu nampaknya saat ini DMARC merupakan salah satu komponen penting juga yang kudu dikonfigurasi pada email system kita yang sudah established untuk meningkatkan email integrity.
DMARC sendiri adalah sebuah spesifikasi teknis yang dibuat oleh sekelompok organisasi yang ingin membantu mengurangi potensi penyalahgunaan email dengan metode email authentication protocol. Coba perhatikan cara kerjanya pada gambar dibawah ini.
Penjelasan :
DMARC melakukan standarisasi dengan mendeteksi bagaimana penerima email menjalankan autentikasi menggunakan mekanisme well-known SPF & DKIM yang telah ada di record DNS. Hal ini biasanya akan berdampak pada user experience pengirim email tersebut karna email yg dikirim akan menerima "Consistent Authentication Results" dari setiap penerima email mereka yg juga menjalankan mekanisme DMARC, yang jelas dengan menggunakan mekanisme ini komunikasi email yang terjadi antara pengirim dan penerima akan menjadi lebih reliable.
Konfigurasi DMARC?
Untuk melakukan konfigurasi DMARC sebaiknya lakukan dulu konfigurasi SPF dan DKIM di email system agan. Setelah itu agan bisa generate record untuk DMARC disini.
Nah coba isi parameter seperti contoh dibawah ini, lalu kalo sudah selesai tekan tombol "Get DMARC Record". Nama domain example.com ganti dengan nama domain masing-masing yah.
Dari policy diatas itu saya tentukan apabila status email paket fail maka akan di redirect ke quaratine. Sebenernya agan bisa juga pilih policy yang reject kalo mau lebih strict sih, cuma kekurangannya kita jadi gak bisa analisa aja itu email spam ato bukan karna langsung di drop emailnya. #CMIIW
Setelah dapet DMARC Record seperti gambar dibawah ini agan bisa masukan record yang ada di kotak merah dari gambar dibawah ini ke DNS agan, seperti biasa buat TXT record.
Copas record yang sudah di generate dari link diatas yg ada di kotak merah tsb lalu buat TXT Record di WHM ato cPanel ato DNS managemen agan lah pokoke seperti contoh gambar dibawah ini.
Kalo sudah selesai ketik OK/Apply Modification.
Pengecekan DMARC
Kamu bisa cek dari mxtoolbox.com disini lalu cari kotak box DMARC dan masukan domain agan, atau bisa juga di dmarcian.com disini dengan cara yang sama tinggal masukan domain agan. Sebagai contoh saya masukan domain google.com di mxtoolbox kalo domain agan yang dimasukan hasilnya sudah sesuai sama seperti gambar dibawah ini maka seharusnya mekanisme DMARC sudah berjalan di email system agan.
Agan bisa cek juga dengan kirim email ke gmail misalnya lalu di "Show Original Code" cari parameter DMARC, apabila sudah PASS seperti gambar dibawah ini artinya sudah berjalan nih mekanisme DMARC di email system agan.
Reverse & Resolve DNS
Sepertinya banyak engineer dan sysadmin yang kurang aware juga untuk hal yang satu ini, di beberapa email system yang sudah strict banged ada loh biasanya yang mereject pengirim email yang tidak memiliki Reverse DNS yang konsisten.
Gambaran proses untuk Resolve DNS bisa dilihat dari gambar dibawah ini.
Setelah liat gambar diatas harusnya dapet yah gambarannya? Kalo Resolution DNS itu menentukan IP Address yang diasosiasikan ke domain name, sedangkan kalo Reverse DNS itu sebaliknya Domain yang diasosiasikan ke IP Address.

Konfigurasi Reverse DNS?
Cara satu-satunya itu cuma bisa minta tolong ISP di tempat dimana agan berlangganan. Bilang aja ke mereka kalo kita punya IP Public pengen bikin PTR Record yang dipointing ke domain A dengan IP Public yang digunakan B, sesimple itu kok hehe.
Setelah itu jangan lupa edit SMTP Helo agan, kalo di zimbra bisa menggunakan command dibawah ini.

Perhatikan bahwa mail.example.com ganti dengan nama mx record yg digunakan di DNS agan yah.
Version 8.0.X
zmlocalconfig -e postfix_smtpd_banner="mail.example.com"
zmcontrol restart
Version 8.5 keatas
zmprov ms  `zmhostname` zimbraMtaSmtpdBanner mail.example.com
zmcontrol restart
Pengecekan Reverse DNS
Caranya gampang gan, tinggal pake mxtoolbox.com aja menggunakan link disini. Lalu agan tinggal masukan IP Address yang agan gunakan sebagai mail server agan yg juga digunakan sebagai MX Record. Kalo sudah sesuai artinya sudah tidak ada issue lagi dan dengan cara ini pastinya email integrity dari email system kita akan naik di pihak penerima email.

No comments:

@Denis_AT. Powered by Blogger.