Erhalten Sie gefälschte E-Mails von Ihrem Chef, in denen er Sie zu einem Geldtransfer auffordert? Und dies obwohl die implementierte Anti-Spam Lösung grundsätzlich funktioniert? Willkommen beim Thema Anti-Spoofing.
SMTP Protokoll
Um die Problematik zu verstehen, müssen wir uns den Aufbau des SMTP-Protokolls etwas genauer anschauen. Als Analogie dient hier der klassische Brief.
Sowohl beim Brief als auch beim Mail haben wir einen Umschlag (Envelope) und darin verpackt den Inhalt:
Der Briefträger (Mail Transfer Agent) kennt für die Zustellung nur den Empfänger (RCPT TO) auf dem Briefumschlag; der Absender ist beim Brief optional. Der Empfänger wiederum kann den Ursprung meist nur durch die Angaben im Briefkopf (Header From) verifizieren. Und da Papier bekanntlich vieles annimmt, kann man auch beim klassischen Brief einen fremden Briefkopf verwenden (Spoofing).
Nun aber zurück zum Mail: Im Gegensatz zum Brief ist hier der Absender (MAIL FROM) meistens bekannt. Dadurch könnte der Empfänger diesen mit den Angaben im Briefkopf vergleichen. Könnte, weil die meisten Mail Clients diese Information in der Standardansicht schlicht nicht anzeigen.
Und somit ist es ein einfaches, ein Mail von der Mailbox chef@spam.com (MAIL FROM) zu versenden, welches beim Benutzer als chef@boll.ch (Header From) erscheint.
Natürlich kann man auch den gesamten Umschlag fälschen, aber in diesem Beitrag konzentriere ich mich auf den Header.
Header Spoofing
Nachfolgend zeige ich verschiedene Möglichkeiten, wie wir auf der FortiMail Anti-Spoofing einrichten können. Bei allen Varianten empfehle ich, diese zuerst mit der Action «None» zu aktivieren. Dadurch erhält man Log-Einträge, ohne dass der Mailflow gestört wird.
Eigene Maildomain schützen
Klassisch steht die eigene Domain nur dann im Header From, wenn es sich um ein ausgehendes E-Mail handelt. Diese Tatsache nutzen wir bei folgenden Konfigurationen.
Enable sender block list checking (Session Profile)
Falls noch nicht vorhanden, muss für ausgehende Sessions eine separate IP-Policy erstellt werden:
Anschliessend wird die Sender Block List im Inbound Session Profile konfiguriert. Diese Black-/Whitelisten werden sowohl mit dem MAIL FROM als auch dem Header From verglichen. Erstellt man eine Blacklist für seine eigene Domain, kann niemand mehr eine interne Mailadresse für die eingehende Kommunikation verwenden. Beim Einsatz von Cloud-Services müssen allerdings entsprechende Ausnahmen konfiguriert werden.
Stand FortiMail 6.0.4: Leider lässt sich dieser Check mit einem modifizierten Header relativ einfach umgehen. Als Workaround bietet sich nachfolgende Variante an.
Dictionary (Anti-Spam Profile)
Mit einem Dictionary Eintrag im Anti-Spam Profil lässt sich die eigene ebenfalls Domain schützen. Hier wird die erfasste Zeichenfolge mit dem Mail Header verglichen.
Folgendes RegEx Beispiel wird inzwischen von Fortinet empfohlen:
“[EHeAdEr]^From:.*\b@example.ch\b” (no quotes in the dictionary)
Die FortiMail wendet Regular Expressions ohne Berücksichtigung der Gross-/Kleinschreibung an.
Hier ist noch eine Erklärung von Fortinet für den etwas speziellen [EHeAdEr] Teil im RegEx:
The [EHeAdEr] part is FML specific and will specify to only check the original headers rather than the attachment headers also.
Inbound Disclaimer
Der Vollständigkeit halber noch eine Variante von Fortinet. Dabei werden gleich sämtliche eingehende Mails als extern gekennzeichnet:
https://kb.fortinet.com/kb/documentLink.do?externalID=FD47726
Fremde Absender verifizieren
<Fortsetzung folgt>