In früheren Artikeln haben wir mehrere effektive Tipps zum Blockieren von E-Mail-Spam besprochen. Dieses Tutorial zeigt Ihnen, wie Sie OpenDMARC mit Postfix-SMTP-Server auf CentOS/RHEL einrichten, um E-Mail-Spoofing und Spam zu blockieren. OpenDMARC ist ein Open-Source-DMARC-E-Mail-Richtlinienfilter für MTAs (Message Transport Agent, auch bekannt als SMTP-Server).
Was ist DMARC
DMARC (Domain-based Message Authentication, Reporting and Conformance) ist ein Internetstandard (RFC 7489), der es Domainbesitzern ermöglicht, zu verhindern, dass ihre Domainnamen von E-Mail-Spoofern verwendet werden. Bevor DMARC erfunden wurde, war es für Angreifer sehr einfach, den Domainnamen anderer Personen in der Absenderadresse zu verwenden.
Wenn ein Domaininhaber einen DMARC-DNS-Eintrag für seinen Domainnamen erstellt hat und ein empfangender E-Mail-Server die DMARC-Verifizierung implementiert hat, müssen Angreifer die SPF- oder DKIM-Ausrichtung bestehen, um die DMARC-Verifizierung zu bestehen. Wenn die DMARC-Prüfung fehlschlägt, könnte die gefälschte E-Mail abgelehnt werden. Niemals von Endbenutzern gesehen werden. Es ist für den Angreifer schwierig, SPF oder DKIM zu bestehen, es sei denn, der E-Mail-Server des Domaininhabers ist kompromittiert.
Beispiel für E-Mail-Spoofing
Ein Spammer hat mir mit winsaaluminyumankara.com
eine Lösegeld-E-Mail geschickt in der Von-Adresse. Die Whois-Informationen von winsaaluminyumankara.com
ist öffentlich. Der Spammer ist eindeutig nicht für diesen Domainnamen verantwortlich.
winsaaluminyumankara.com
hat einen DMARC-Eintrag.
Dann habe ich die E-Mail-Header überprüft, die zeigen, dass SPF fehlgeschlagen ist. Es gibt keine DKIM-Signatur. Die DMARC-Prüfung schlägt also fehl. Dies ist eine gefälschte E-Mail.
Dies zeigt, dass nicht nur große Marken von E-Mail-Spoofern verwendet werden, sondern auch alle Domainnamen im Internet von Angreifern imitiert werden können. Leider lautet die DMARC-Richtlinie für diesen Domainnamen p=none
, der den empfangenden E-Mail-Server anweist, nichts Besonderes zu tun, wenn die DMARC-Prüfung fehlschlägt. Wenn die Richtlinie p=reject
ist , dann würde mein Postfix-SMTP-Server diese E-Mail mit OpenDMARC ablehnen.
Paypal und Facebook haben eine reject
erstellt DMARC-Richtlinie für ihren Domainnamen.
Wenn also ein Angreifer versucht, Paypal oder Facebook zu fälschen, kann mein E-Mail-Server die gefälschte E-Mail mit OpenDMARC ablehnen. Es gibt viele andere bekannte Domainnamen, die einen reject
bereitgestellt haben DMARC-Richtlinie, wie in der Tabelle unten zu sehen ist.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Der sichere Postfachanbieter Protonmail verwendet Postfix und OpenDMARC, um DMARC-Prüfungen für eingehende E-Mails durchzuführen, und ich werde Ihnen zeigen, wie Sie dasselbe auf Ihrem eigenen Postfix-SMTP-Server tun können.
Voraussetzungen
Dieses Tutorial richtet sich an Postfachanbieter und alle, die einen eigenen Mailserver betreiben, um ihre Benutzer vor Betrug durch E-Mail-Spoofing zu schützen. Wenn Sie Inhaber eines Domainnamens sind und verhindern möchten, dass Ihr Domainname von E-Mail-Spoofern verwendet wird, lesen Sie bitte diesen Artikel, um einen DMARC-Eintrag zu erstellen und den DMARC-Bericht zu analysieren. Ich empfehle Ihnen auch, diesen Artikel zu lesen, wenn Sie DMARC nicht vollständig verstehen.
Sie sollten einen DKIM-Verifizierungsdienst auf Ihrem Mailserver ausführen, bevor Sie OpenDMARC einrichten. OpenDMARC sollte in Verbindung mit OpenDKIM verwendet werden. Wenn Sie Amavis zum Signieren und Verifizieren von DKIM verwenden, empfehle ich den Wechsel von Amavis zu OpenDKIM. Das liegt daran, dass OpenDMARC die DKIM-Verifizierungsergebnisse von Amavis nicht lesen kann. Sie müssen Amavis nicht vollständig deinstallieren. Deaktivieren Sie einfach DKIM in Amavis, installieren und konfigurieren Sie dann OpenDKIM.
Wenn Sie nicht auf OpenDKIM umsteigen möchten, müssen Sie Amavis mit Postfix über die Milter-Schnittstelle integrieren, was am Ende dieses Artikels erklärt wird.
Schritt 1:OpenDMARC auf CentOS/RHEL installieren und konfigurieren
OpenDMARC ist eine Open-Source-Software, die DMARC-Prüfungen und -Berichte durchführen kann. Sie können es auf CentOS/RHEL aus dem EPEL-Repository installieren.
sudo dnf install epel-release sudo dnf install opendmarc
Starten Sie OpenDMARC.
sudo systemctl start opendmarc
Autostart beim Booten aktivieren.
sudo systemctl enable opendmarc
OpenDMARC lauscht auf 127.0.0.1:8893
. Führen Sie den folgenden Befehl aus, um seinen Status zu überprüfen.
systemctl status opendmarc
Ausgabe:
● 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 Sun 2020-03-08 23:52:59 EDT; 1min 4s ago Docs: man:opendmarc(8) man:opendmarc.conf(5) man:opendmarc-import(8) man:opendmarc-reports(8) http://www.trusteddomain.org/opendmarc/ Main PID: 19987 (opendmarc) Tasks: 3 (limit: 5047) Memory: 1.1M CGroup: /system.slice/opendmarc.service └─19987 /usr/sbin/opendmarc -c /etc/opendmarc.conf -P /var/run/opendmarc/opendmarc.pid
Bearbeiten Sie dann die Hauptkonfigurationsdatei mit Ihrem Texteditor.
sudo nano /etc/opendmarc.conf
Suchen Sie die folgende Zeile:
# AuthservID name
Standardmäßig verwendet OpenDMARC den MTA-Hostnamen als AuthserveID, aber es ist besser, einen anderen Namen für den Authentifizierungsdienst zu verwenden, da Amavisd-new den von OpenDMARC hinzugefügten Authentifizierungsergebnis-Header überschreibt. Sie können es wie folgt ändern, wodurch Sie sehr einfach sehen können, welches Programm welchen Authentifizierungsergebnis-Header hinzufügt.
AuthservID OpenDMARC
Fügen Sie als Nächstes die folgende Zeile hinzu. Ersetzen Sie den Hostnamen durch Ihren echten Postfix-Hostnamen. Dies weist OpenDMARC an, dem Authentifizierungsergebnis mail.yourdomain.com
zu vertrauen im Ausweis. Dies ist erforderlich, wenn OpenDKIM ausgeführt wird, um die DKIM-Verifizierung durchzuführen. Wenn der Postfix-Hostname nicht in den TrustedAuthservIDs
enthalten ist , dann ignoriert OpenDMARC den von OpenDKIM generierten Authentication-Results-Header.
TrustedAuthservIDs mail.yourdomain.com
Suchen Sie dann die folgende Zeile.
# IgnoreAuthenticatedClients false
Ändern Sie den Wert in true
zum Ignorieren von SMTP-Clients, die erfolgreich über SMTP AUTH authentifiziert wurden, einschließlich Desktop-/mobilen E-Mail-Clients, die ausgehende E-Mails über Port 587 senden.
IgnoreAuthenticatedClients true
Suchen Sie dann diese Zeile:
# RejectFailures false
Standardmäßig lehnt OpenDMARC keine E-Mails ab, die die DMARC-Prüfung nicht bestehen, selbst wenn die Richtlinie der Domain auf p=reject
gesetzt ist . Wenn Sie es vorziehen, E-Mails abzulehnen, die DMARC nicht bestehen, prüfen Sie, ob die Richtlinie der Domain auf p=reject
gesetzt ist , kommentieren Sie diese Zeile dann aus und ändern Sie false
auf true
.
RejectFailures true
Suchen Sie die folgende Zeile.
# RequiredHeaders false
Ändern Sie es in:
RequiredHeaders true
Dadurch werden E-Mails abgelehnt, die nicht den E-Mail-Header-Standards entsprechen, wie in RFC5322 beschrieben. Zum Beispiel, wenn eine eingehende E-Mail nicht From:
hat Kopfzeile oder date:
Kopfzeile, wird sie zurückgewiesen. Ein From:-Feld, aus dem kein Domainname extrahiert werden konnte, wird ebenfalls abgelehnt.
Standardmäßig ignoriert OpenDMARC unter CentOS/RHEL alle SPF-Ergebnisse in den E-Mail-Headern und führt selbst SPF-Prüfungen durch. Dies wird durch die folgenden zwei Parameter gesteuert.
SPFIgnoreResults true SPFSelfValidate true
Wenn Sie es vorziehen, einen anderen SPF-Prüfdienst auf Ihrem Mailserver zu verwenden, dann weisen Sie OpenDMARC an, SPF-Ergebnissen in den E-Mail-Kopfzeilen zu vertrauen und SPF-Prüfungen nur durchzuführen, wenn es keine SPF-Ergebnisse in den Kopfzeilen finden kann.
SPFIgnoreResults false SPFSelfValidate true
Speichern und schließen Sie die Datei. Starten Sie dann OpenDMARC neu, damit die Änderungen wirksam werden.
sudo systemctl restart opendmarc
Schritt 2:OpenDMARC mit Postfix-SMTP-Server integrieren
Wenn Sie OpenDKIM verwenden
Bearbeiten Sie die Hauptkonfigurationsdatei von Postfix.
sudo nano /etc/postfix/main.cf
Wenn Sie meinem DKIM-Tutorial unter CentOS 8/RHEL 8 gefolgt sind, sollten Sie Zeilen in dieser Datei wie unten haben. OpenDKIM lauscht auf 127.0.0.1:8891
.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters
Jetzt müssen Sie nur noch den OpenDMARC-Socket hinzufügen, damit Postfix mit OpenDMARC kommunizieren kann. (Stellen Sie sicher, dass es nach dem OpenDKIM-Socket ist.) OpenDMARC lauscht auf 127.0.0.1:8893
.
# 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
Speichern und schließen Sie die Datei. Starten Sie dann Postfix neu, damit die Änderung wirksam wird.
sudo systemctl restart postfix
Wenn Sie Amavis verwenden
Wenn Sie Amavis für DKIM-Signaturen und -Verifizierungen wie in iRedMail verwenden , dann kann OpenDMARC die DKIM-Verifizierungsergebnisse von Amavis nicht lesen. Sie können OpenDKIM installieren, um die DKIM-Signatur zu überprüfen.
Installieren Sie OpenDKIM aus dem EPEL-Repository (Extra Packages for Enterprise Linux).
sudo dnf install epel-release sudo dnf install opendkim
Standardmäßig ist das opendkim
-Paket auf CentOS/RHEL wird nur im Überprüfungsmodus ausgeführt. Ausgehenden E-Mails werden keine DKIM-Signaturen hinzugefügt. Das wollen wir, weil Amavis DKIM-Signaturen hinzufügen wird. OpenDKIM-Konfigurationsdatei bearbeiten.
sudo nano /etc/opendkim.conf
Suchen Sie die folgende Zeile.
KeyFile /etc/opendkim/keys/default.private
Da wir nicht möchten, dass OpenDKIM ausgehende E-Mails signiert, müssen wir diese Zeile auskommentieren und dann die Datei speichern und schließen.
Postfix-Hauptkonfigurationsdatei bearbeiten.
sudo nano /etc/postfix/main.cf
Fügen Sie am Ende dieser Datei die folgenden Zeilen hinzu, damit Postfix OpenDKIM über das Milter-Protokoll aufrufen kann. Beachten Sie, dass Sie 127.0.0.1
verwenden sollten als Adresse. Verwenden Sie nicht localhost
.
# 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
Speichern und schließen Sie die Datei. Fügen Sie dann postfix
hinzu Benutzer zu opendkim
Gruppe.
sudo gpasswd -a postfix opendkim
Starten Sie postfix
neu Dienst.
sudo systemctl restart postfix
Jetzt können wir den opendkim-Dienst starten.
sudo systemctl start opendkim
Und aktivieren Sie den automatischen Start beim Booten.
sudo systemctl enable opendkim
Schritt 3:OpenDMARC-Verifizierung testen
Senden Sie nun eine E-Mail von Ihrer anderen E-Mail-Adresse an Ihre Domain-Adresse. Überprüfen Sie danach die E-Mail-Kopfzeilen. Wenn OpenDMARC korrekt funktioniert, können Sie die DMARC-Verifizierungsergebnisse wie unten sehen.
Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header.from=gmail.com
Ich habe eine E-Mail von meinem Google Mail-Konto an meine Domain-E-Mail-Adresse gesendet und sie hat die DMARC-Verifizierung bestanden. Wenn Sie diesen E-Mail-Header nicht sehen, überprüfen Sie Ihre E-Mail-Protokolle.
sudo nano /var/log/maillog
Sie werden etwas wie unten sehen, was bedeutet, dass OpenDMARC funktioniert.
opendmarc[26495]: 61DAA3EA44: gmail.com pass
Wenn Sie die folgende Meldung sehen.
ignoring Authentication-Results at 1 from mail.linuxbabe.com
Dies bedeutet, dass OpenDMARC die SPF- und DKIM-Verifizierungsergebnisse ignoriert, sodass OpenDMARC nicht funktioniert. Sie müssen die folgende Zeile in /etc/opendmarc.conf
hinzufügen Datei, und starte dann OpenDMARC neu.
TrustedAuthservIDs mail.yourdomain.com
Wenn Sie den Postfix myhostname
ändern Denken Sie daran, den neuen Hostnamen zu TrustedAuthservIDs hinzuzufügen. Sie können mehrere Hostnamen durch Komma getrennt hinzufügen.
TrustedAuthservIDs mail.yourdomain.com,mail2.yourdomain.com
Testen von OpenDMARC mit Telnet
Sie können Telnet verwenden, um einen anderen Domänennamen wie paypal.com vorzutäuschen. Führen Sie zunächst den folgenden Befehl aus, um eine Verbindung zu Port 25 Ihres Mailservers herzustellen.
telnet mail.yourdomain.com 25
Verwenden Sie dann die folgenden Schritte, um eine gefälschte E-Mail zu senden. (Sie geben die fettgedruckten Texte ein.)
HELO mail.paypal.com 250 mail.yourdomain.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: Please update your password. Click this link to update your password. . 550 5.7.1 rejected by DMARC policy for paypal.com quit
Wie Sie sehen können, hat mein Mailserver diese E-Mail abgelehnt, weil sie die DMARC-Prüfung nicht bestanden hat und Paypal einen p=reject
bereitgestellt hat Richtlinie.
Hinweis: Wenn die DMARC-Richtlinie einer Domain auf p=quarantine
gesetzt ist , dann wird OpenDMARC Milter die gefälschte E-Mail in die Postifx Hold Queue stellen unbegrenzt. Der Postmaster kann mit postqueue -p
alle Nachrichten in der Warteschlange auflisten Befehl und verwenden Sie den postsuper
Befehlszeilenprogramm zum Freigeben von Nachrichten in der Warteschleife.
(Optional) Integrieren Sie Amavis mit Postfix über Milter
Wie im Abschnitt Voraussetzungen erklärt, empfehle ich den Wechsel von Amavis zu OpenDKIM, aber wenn Sie nicht wechseln möchten, müssen Sie Amavis mit Postfix über die Milter-Schnittstelle integrieren, damit OpenDMARC das DKIM-Verifizierungsergebnis von Amavis lesen kann.
Installieren Sie den amavisd-milter
Paket auf CentOS/RHEL.
sudo dnf install amavisd-milter
Starten Sie den Dienst.
sudo systemctl start amavisd-milter
Autostart beim Booten aktivieren.
sudo systemctl enable amavisd-milter
Amavisd-milter lauscht auf dem Unix-Socket unter /run/amavisd/amavisd-milter.sock
. Postfix-Hauptkonfigurationsdatei bearbeiten.
sudo nano /etc/postfix/main.cf
Fügen Sie die folgenden Zeilen am Ende der Datei hinzu. Beachten Sie, dass Sie den amavisd-milter Unix-Socket vor dem OpenDMARC-TCP-Socket platzieren sollten.
# 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
Kommentieren Sie auch die folgende Zeile aus, damit Postfix eingehende E-Mails nicht zweimal an Amavis weiterleitet.
content_filter = smtp-amavis:[127.0.0.1]:10024
Speichern und schließen Sie die Datei. Fügen Sie dann postfix
hinzu zu den amavis
Gruppe, damit Postfix auf den Amavis-Unix-Socket zugreifen kann.
sudo gpasswd -a postfix amavis
Ausgehende E-Mails von authentifizierten Benutzern sollten nicht über die Milter-Schnittstelle an Amavis weitergeleitet werden, da Amavis keine DKIM-Signatur hinzufügt. Sie sollten 127.0.0.1:10026
verwenden wie gewohnt, sodass die DKIM-Signatur hinzugefügt wird. Bearbeiten Sie die Postfix-Datei master.cf.
sudo nano /etc/postfix/master.cf
Suchen Sie die submission
Komponente. Es sollte wie folgt aussehen, wenn Sie meinem Amavis-Tutorial zu CentOS/RHEL gefolgt sind.
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
Fügen Sie nun am Ende die folgende Option hinzu.
-o smtpd_milters=
So:
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 -o smtpd_milters=
Dadurch verwendet der Postfix-Übermittlungsdienst überhaupt keinen Milter, sodass von authentifizierten Benutzern übermittelte E-Mails nicht über die Milter-Schnittstelle an Amavis weitergeleitet werden. Beachten Sie, dass vor dem Gleichheitszeichen (=) kein Leerzeichen eingefügt werden darf.
Sie sollten diese Zeile auch zum smtps
hinzufügen Komponente.
smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -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 -o smtpd_milters=
Speichern und schließen Sie die Datei. Starten Sie Postfix neu, damit die Änderungen wirksam werden.
sudo systemctl restart postfix
Jetzt kann OpenDMARC das DKIM-Verifizierungsergebnis von Amavis lesen, und Amavis wird weiterhin DKIM-Signaturen für authentifizierte Benutzer hinzufügen.