CentOS/RHEL'de Postfix ile OpenDMARC Kullanarak E-posta Kimlik Sahtekarlığını Engelleyin

Bu eğitimde, e-posta sahteciliğini ve SPAM’ı engellemek için CentOS / RHEL’de Postfix SMTP sunucusu ile OpenDMARC kullanılarak nasıl ayarlanacağını öğreneceğiz. OpenDMARC, MTA’lar için açık kaynaklı bir DMARC e-posta politikası filtresidir (Message Transport Agent, diğer adıyla SMTP sunucusu).

DMARC nedir?

DMARC (Etki Alanı Tabanlı İleti Kimlik Doğrulaması, Raporlama ve Uyumluluk), etki alanı sahiplerinin etki alanı adlarının e-posta sahtekarları tarafından kullanılmasını engellemelerine olanak veren bir Internet standardıdır (RFC 7489). DMARC icat edilmeden önce, kötü aktörlerin posta göndericisi adresinde başkalarının alan adlarını kullanmaları çok kolaydı. Bir etki alanı sahibi, etki alanı adı için DMARC DNS kaydı oluşturduysa ve alıcı e-posta sunucusu DMARC doğrulaması uyguladıysa, kötü aktörlerin DMARC doğrulamasını geçmek için SPF hizalamasını veya DKIM hizalamasını geçmesi gerekir. DMARC denetimi başarısız olursa, sahte e-posta reddedilir. Bu detaylar asla son kullanıcılar tarafından görülmez. Etki alanı sahibi e-posta sunucusundan ödün verilmedikçe, kötü aktörün SPF veya DKIM’i geçmesi zordur.

Kötü bir aktör Paypal veya Facebook’u taklit etmeye çalışırsa, e-posta sunucumuz sahte e-postayı OpenDMARC ile reddedebilir. Aşağıdaki tabloda görülebileceği gibi, reddetme DMARC ilkesini uygulayan iyi bilinen bir çok alan adı, kuruluş var.

Güvenli posta kutusu sağlayıcısı Protonmail, gelen e-postalarda DMARC denetimleri gerçekleştirmek için Postfix ve OpenDMARC kullanıyor ve ben size bu öğreticide kendi Postfix SMTP sunucunuzda bunun nasıl yapılacağını göstereceğim.

Ön gereksinimler
Bu öğretici, kullanıcılarını e-posta sahtekarlığı ile dolandırılmaktan korumak için posta sunucusu sağlayıcıları ve kendi posta sunucularını çalıştıran herkes içindir. Bir alan adının sahibiyseniz ve alan adınızın e-posta sahtekarları tarafından kullanılmasını önlemek istiyorsanız, lütfen DMARC kaydı oluşturmak ve DMARC raporunu analiz etmek için bu makaleyi okuyun. OpenDMARC kurmadan önce posta sunucunuzda çalışan bir DKIM doğrulama hizmetiniz olmalıdır. OpenDMARC, OpenDKIM ile birlikte kullanılmalıdır. DKIM imzalama ve doğrulama için Amavis kullanıyorsanız, Amavis’ten OpenDKIM’e geçmenizi öneririm. Çünkü OpenDMARC, Amavis’ten DKIM doğrulama sonuçlarını okuyamıyor. Amavis’i tamamen kaldırmanız gerekmez. Amavis’te DKIM’i devre dışı bırakmanız, ardından OpenDKIM’i kurmanız ve yapılandırmanız yeterlidir. OpenDKIM’e geçmek istemiyorsanız, Amavis’i Postfix ile bu makalenin sonunda açıklanacak olan milter arabirimi aracılığıyla entegre etmeniz gerekir.

CentOS / RHEL üzerinde Postfix SMTP Sunucusu ile OpenDMARC kurulumu

OpenDMARC, DMARC kontrolü ve raporlaması yapabilen açık kaynaklı bir yazılımdır. EPEL deposundan CentOS / RHEL üzerine kurabilirsiniz:

sudo dnf install epel-release
sudo dnf install opendmarc

OpenDMARC uygulamasını başlatın:

sudo systemctl start opendmarc

Sistem başlangıcında çalıştırılmasını sağlayalım:

sudo systemctl enable opendmarc

OpenDMARC 127.0.0.1:8893 bağlantısını dinler. Durumunu kontrol etmek için aşağıdaki komutu çalıştırın:

systemctl status opendmarc
Çıktı:
● opendmarc.service - Domain-based Message Authentication, Reporting & Conformance (DMARC) Milter
   Loaded: loaded (/usr/lib/systemd/system/opendmarc.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-04-25 04:51:35 CEST; 46s ago
     Docs: man:opendmarc(8)
           man:opendmarc.conf(5)
           man:opendmarc-import(8)
           man:opendmarc-reports(8)
           http://www.trusteddomain.org/opendmarc/
 Main PID: 3083 (opendmarc)
    Tasks: 3 (limit: 12224)
   Memory: 536.0K
   CGroup: /system.slice/opendmarc.service
           └─3083 /usr/sbin/opendmarc -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid

Apr 25 04:51:35 sizinalanadiniz.com systemd[1]: Starting Domain-based Message Authentication, Reporting & Conformance (DMARC) Milter...
Apr 25 04:51:35 sizinalanadiniz.com systemd[1]: opendmarc.service: Can't open PID file /var/run/opendmarc/opendmarc.pid (yet?) after start: No such file or directory
Apr 25 04:51:35 sizinalanadiniz.com opendmarc[3083]: OpenDMARC Filter v1.3.2 starting (args: -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid)
Apr 25 04:51:35 sizinalanadiniz.com opendmarc[3083]: additional trusted authentication services: (none)
Apr 25 04:51:35 sizinalanadiniz.com systemd[1]: Started Domain-based Message Authentication, Reporting & Conformance (DMARC) Milter.

Ardından ana yapılandırma dosyasını metin düzenleyicinizle düzenleyin:

sudo nano /etc/opendmarc.conf

Şu satırı bulun:

# AuthservID name

Varsayılan olarak OpenDMARC, AuthserveID olarak MTA ana bilgisayar adını kullanır, ancak kimlik doğrulama hizmeti için farklı bir ad kullanmak daha iyidir, çünkü Amavisd-new, OpenDMARC tarafından eklenen kimlik doğrulama sonuçları üst bilgisinin üzerine yazacaktır. Aşağıdaki gibi değiştirebilirsiniz, bu da hangi uygulamanın hangi kimlik doğrulama sonuçları başlığını eklediğini görmeniz için çok kolay olacaktır.

AuthservID OpenDMARC

Ardından, aşağıdaki satırı ekleyin. Ana bilgisayar adını gerçek Postfix ana bilgisayar adınızla değiştirin. Bu, OpenDMARC’a kimlikteki mail.sizinalanadiniz.com ile kimlik doğrulama sonucuna güvenmesini bildirir. DKIM doğrulaması yapmak için OpenDKIM çalıştığında bu gereklidir.

TrustedAuthservIDs mail.sizinalanadiniz.com

Sonra aşağıdaki satırı bulun:

# IgnoreAuthenticatedClients false

Bağlantı noktası 587 üzerinden giden e-postaları, gönderen masaüstü / mobil posta istemcilerini içeren SMTP AUTH aracılığıyla başarıyla doğrulanan SMTP istemcilerini yok saymak için değeri true olarak değiştirin.

IgnoreAuthenticatedClients true

Ardından şu satırı bulun:

# RejectFailures false

Varsayılan olarak, alanın politikası p=reject olarak ayarlanmış olsa bile, OpenDMARC DMARC kontrolünde başarısız olan e-postaları reddetmez. Alan adı politikası p=reject olarak ayarlandığında DMARC denetiminde başarısız olan e-postaları reddetmeyi tercih ediyorsanız, bu satırın hashtag işaretini kaldırın ve false değerini true olarak değiştirin.

RejectFailures true

Aşağıdaki satırı bulun:

# RequiredHeaders  false

Bunu şu şekilde değiştirin:

RequiredHeaders    true

Bu, RFC5322’de açıklandığı gibi e-posta başlığı standartlarına uymayan e-postaları reddeder. Örneğin, gelen bir e-postada Kimden: üst bilgisi veya tarih: üst bilgisi yoksa reddedilir. Alan adının çıkartılamadığı bir Kimden: alanı da reddedilecektir. Varsayılan olarak, CentOS / RHEL üzerindeki OpenDMARC e-posta başlıklarındaki SPF sonuçlarını yok sayar ve SPF kontrollerini kendisi yapar. Bu, aşağıdaki iki parametre tarafından kontrol edilir.

SPFIgnoreResults true
SPFSelfValidate true

Posta sunucunuzda başka bir SPF denetimi hizmeti kullanmayı tercih ediyorsanız, OpenDMARC’a e-posta başlıklarında SPF sonuçlarına güvenmesini ve yalnızca başlıklarda SPF sonuçları bulamadığında SPF denetimleri gerçekleştirmesini isteyin.

SPFIgnoreResults false
SPFSelfValidate true

Dosyayı kaydedip kapatın. Sonra değişikliklerin etkili olması için OpenDMARC’yi yeniden başlatın:

sudo systemctl restart opendmarc

OpenDMARC’ı Postfix SMTP Sunucusu ile entegre edin

Postfix ana yapılandırma dosyasını düzenleyin:

sudo nano /etc/postfix/main.cf

Şimdi Postfix’in OpenDMARC ile konuşabilmesi için OpenDMARC soket dosyasını eklemeniz yeterlidir. (OpenDKIM soketinin sonrasında olduğundan emin olun.) OpenDMARC 127.0.0.1:8893 adresini dinliyor.

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

Dosyayı kaydedip kapatın. Sonra değişikliğin etkili olması için Postfix’i yeniden başlatın.

sudo systemctl restart postfix

OpenDMARC doğrulamasını test edin

Şimdi diğer e-posta adresinizden alan adı adresinize bir e-posta gönderin. Bundan sonra, e-posta başlıklarını kontrol edin. OpenDMARC düzgün çalışıyorsa, aşağıdaki gibi DMARC doğrulama sonuçlarını görebilirsiniz.

sudo nano /var/log/maillog

Şunun gibi bir şey görmelisiniz:

opendmarc[26495]: 61DAA3EA44: sizinalanadiniz.com pass

Telnet ile OpenDMARC test edin

microsoft.com gibi başka bir etki alanı adını taklit etmek için telnet’i kullanabilirsiniz. İlk olarak, posta sunucunuzun 25 numaralı bağlantı noktasına bağlanmak için aşağıdaki komutu çalıştırın.

telnet mail.sizinalanadiniz.com 25

Sonra bir sahte e-posta göndermek için aşağıdaki adımları kullanın:

HELO mail.microsoft.com
250 mail.sizinalanadiniz.com
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From:     [email protected]
To:       [email protected]
Subject:  Lütfen şifrenizi güncelleyin.

Şifrenizi değiştirmek için bu bağlantıyı tıklayınız.
550 5.7.1 rejected by DMARC policy for microsoft.com
quit

Gördüğünüz gibi, posta sunucum DMARC kontrolünden geçmediği ve Microsoft bir p=reject politikası kullandığı için bu e-postayı reddetti.

:information_source: Bir alan adının DMARC politikası p=quarantine olarak ayarlanırsa, OpenDMARC sahte e-postayı süresiz olarak Postifx bekletme kuyruğuna koyar. Posta yöneticisi kuyruktaki tüm mesajları postqueue -p komutuyla listeleyebilir ve bekletme kuyruğundaki belirlediği mesajları serbest bırakmak için postsuper komut satırı yardımcı programını kullanabilir.

Amavis’i Postfix ile Milter üzerinden entegre edin

Ön gereksinimler bölümünde açıklandığı gibi, Amavis’ten OpenDKIM’e geçmenizi öneririm, ancak geçiş yapmak istemiyorsanız, Amavis’i milter ara birimi aracılığıyla Postfix ile entegre etmeniz gerekir, böylece OpenDMARC, DKIM doğrulama sonucunu Amavis’ten okuyabilir.

amavisd-milter paketini CentOS / RHEL üzerine kurun:

sudo dnf install amavisd-milter

Hizmeti başlatın:

sudo systemctl start amavisd-milter

Sistem başlangıcında çalışacak şekilde yapılandırın:

sudo systemctl enable amavisd-milter

Amavisd-milter, /run/amavisd/amavisd-milter.sock adresinde bir Unix soketini dinler.
Postfix ana yapılandırma dosyasını düzenleyin:

sudo nano /etc/postfix/main.cf

Dosyanın sonuna aşağıdaki satırları ekleyin. Amavisd-milter Unix soketini OpenDMARC TCP soketinin önüne yerleştirmeniz gerektiğini unutmayın.

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:/run/amavisd/amavisd-milter.sock,inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters

Ayrıca aşağıdaki satırı da düzenleyin, böylece Postfix gelen e-postaları Amavis’e iki kez aktarmaz:

content_filter = smtp-amavis:[127.0.0.1]:10024

Dosyayı kaydedip kapatın. Sonra amavis grubuna postfix ekleyin, böylece Postfix Amavis Unix soketine erişebilsin.

sudo gpasswd -a postfix amavis

Kimliği doğrulanmış kullanıcılardan gönderilen giden e-postalar milter arayüzü aracılığıyla Amavis’e iletilmemelidir, çünkü Amavis DKIM imzası eklemeyecektir. DKIM imzası eklenecek şekilde 127.0.0.1:10026 adresini her zamanki gibi kullanmalıdırlar.

Postfix master.cf dosyasını düzenleyin:

sudo nano /etc/postfix/master.cf

submission bileşenini bulun:

submission     inet     n    -    y   -    -    smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o smtpd_tls_wrappermode=no
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o content_filter=smtp-amavis:[127.0.0.1]:10026

Şimdi sonuna aşağıdaki seçeneği ekleyin:

-o smtpd_milters=

Bu, Postfix gönderim serisinin hiç milter kullanmamasını sağlayacak, böylece kimliği doğrulanmış kullanıcılardan gönderilen e-postalar milter arayüzü aracılığıyla Amavis’e aktarılmayacak. Eşittir işaretinden (=) önce boşluk eklememeniz gerektiğini unutmayın.

Dosyayı kaydedip kapatın. Değişikliklerin etkili olması için Postfix’i yeniden başlatın.

sudo systemctl restart postfix

Artık OpenDMARC, Amavis’ten DKIM doğrulama sonucunu okuyabilecek ve Amavis, kimliği doğrulanmış kullanıcılar için DKIM imzası eklemeye devam edecek.

Bu öğreticinin, e-posta sahteciliğini ve spam’ı engellemek için CentOS / RHEL’de Postfix SMTP sunucusuyla OpenDMARC kurmanıza yardımcı olduğunu umuyorum. Her zaman olduğu gibi, bu gönderiyi yararlı bulduysanız, beğenebilir ve fikirlerinizi aşağıdan bizlerle paylaşabilirsiniz. Kendinize iyi bakın :slight_smile: