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.
* facebook.com | * google.com | * youtube.com | * twitter.com |
---|---|---|---|
* reddit.com | * instagram.com | * linkedin.com | * medium.com |
* pinterest.com | * dropbox.com | * microsoft.com | * whatsapp.com |
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:<help@microsoft.com>
250 2.1.0 Ok
RCPT TO:<merhaba@sizinalanadiniz.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: help@microsoft.com
To: merhaba@sizinalanadiniz.com
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.
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çinpostsuper
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