Zum Inhalt springen

SPF, DKIM, DMARC die drei großen Unbekannten

SPF, DKIM und DMARC sind drei Abkürzungen die selbst heute die wenigsten Admins kennen geschweige den wissen, was sie damit anfangen sollen.

Im großen und ganzen, sind es die drei wichtigsten Komponenten für sicheren Emailverkehr, die zudem auch noch völlig Kostenfrei und in wenigen Minuten eingerichtet sind.

Um die Welt ein kleines bisschen Sicherer zumachen, möchte ich euch hier eine kleine Anleitung dafür geben und euch erklären was diese drei Komponenten machen.

SPF

Das Sender Policy Framework, kurz SPF,. gibt an unter welchen Rahmenbedingungen eine Mail versendet werden darf, zum Beispiel, das nur bestimmte Server Emails versenden dürfen.
Einreichtet wird der SPF-Eintrag beim Domain Provider als TXT DNS-Eintrag.


Wenn man nur Emails von seinem Mailserver verschicken will reicht es folgenden Eintrag anzulegen:
v=spf1 mx -all

Man kann das ganze aber um weitere Server erweitern mit dem Syntax a, ipv4, ipv6, include
a ist für weitere Servernamen die man eintragen möchte (Bsp: webserver.domain.de)
ipv4 und ipv6 ist für weitere IPv4 und IPv6 Adressen die Emails über die Domain verschicken dürfen.
include kann weitere SPF-Einträge von einer anderen Domain ergänzen, für M365 Zum Besispiel wäre das: spf.protection.outlook.com

v=spf1 mx a:webserver.domain.de ip4:87.123.45.678 include:spf.protection.outlook.com -all

DKIM

DomainKeys Identified Mail gibt an wie quasi der „Poststempel” im Mailheader auszusehen hat und kann mit S/MIME gleichgestellt werden.

Hierfür wird ein PublicKey und ein PrivatKey benötigt.

Um ein DKIM (DomainKeys Identified Mail) Zertifikat unter Windows mit OpenSSL zu erstellen, folge diesen Schritten:

Schritt 1: OpenSSL Installation

  1. Lade OpenSSL für Windows herunter: https://slproweb.com/products/Win32OpenSSL.html
  2. Installiere OpenSSL, indem du den Anweisungen auf der Website folgst.

Schritt 2: Generiere private und öffentliche Schlüssel

  1. Öffne die Eingabeaufforderung (cmd) als Administrator.
  2. Navigiere zum Verzeichnis, in dem du die OpenSSL-Binärdateien installiert hast,
    unter 32bit "C:\Program Files (x86)\OpenSSL\bin" und unter 64bit "C:\Program Files\OpenSSL-Win64\bin"
  3. Führe den folgenden Befehl aus, um einen privaten Schlüssel zu generieren:
    openssl.exe genrsa -out Private_Key.key 2048
  4. Um den öffentlichen Schlüssel aus dem privaten Schlüssel zu extrahieren führe folgenden Befehl aus:
    openssl.exe rsa -in Private_Key.key -out Public_Key.public -pubout -outform PEM

Schritt 3: DKIM TXT-Eintrag erstellen

  1. Öffne die Datei Public_Key.public in einem Texteditor.
  2. Die Zeilen mit “—–BEGIN PUBLIC KEY—–“ und “—–END PUBLIC KEY—–“ werden entfernt, danach werden die Zeilenumbrüche entfernt, der komplette Schlüssel steht nun in einer Zeile
  3. Gehe zu deinem DNS-Verwaltungsbereich (z. B. bei deinem Domain-Registrar) und erstelle einen neuen TXT-Eintrag für DKIM. Verwende einen Subdomain-Namen, gefolgt von ._domainkey, z.B., dkim._domainkey.deinedomain.com.
  4. Füge nun v=DKIM1; k=rsa; p= gefolgt von deinem Public Key als Wert ein

Schritt 4: DKIM in E-Mail-Server integrieren

Integriere den privaten DKIM-Schlüssel in deinen E-Mail-Server. Die genaue Vorgehensweise hängt vom verwendeten E-Mail-Server ab (z.B., Postfix, Proxmox Mail Gateway, Sophos UTM/XG).
Für Microsoft Exchange server gibt es ein Tool auf GitHub welches den DKIM-Key und die nötigen Einträge erstellt: https://github.com/Pro/dkim-exchange

DMARC

Voraussetzungen für DMARC ist ein SPF-Eintrag und DKIM, DMARC selbst sagt nur wie mit einer Mail umgegangen werden soll, bei der die SPF oder DKIM Prüfung fehlschlägt. Und kann bei eventuellen Verstößen den Mail-Admin benachrichtigen.

Auch bei DMARC wird ein TXT-Eintrag beim Domain Provider angelegt.
v=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected]; rf=afrf

Richtlinen:

  • p=none
    Die DMARC-Richtlinie “none” weist die E-Mail Empfänger an, DMARC-Berichte an die Adresse zu senden, die in den Tags “rua” oder “ruf” des Datensatzes veröffentlicht ist. Es ist nur als Überwachungsrichtlinie bekannt, weil Sie damit Einblick in Ihren E-Mail Kanal gewinnen.
    Es wird den E-Mail Empfängern jedoch nicht mitgeteilt, wie Sie mit E-Mails umgehen sollen, die bei den DMARC-Prüfungen fehlschlagen. Sie können mit der “none”-Richtlinie mit DMARC beginnen und alle DMARC-Berichte sammeln und mit der Analyse dieser Daten beginnen.
  • p=quarantine
    Eine andere Art von Politik ist die “Quarantäne”. Diese DMARC-Richtlinie weist die E-Mail Empfänger dazu an E-Mails, die bei den DMARC-Check fehlschlagen, in den Spam-Ordner zu verschieben und den DMARC-Bericht zu versenden.
    Die Quarantäne-Richtlinie kontrolliert bereits die Auswirkungen von Spoofing, aber Spoof-E-Mails werden weiterhin an den Empfänger zugestellt.
  • p=reject
    Die dritte Richtlinie ist die “Ablehnung”. Neben dem Senden von DMARC-Berichten lehnt die DMARC-Richtlinie die E-Mails, die bei der DMARC-Prüfung fehlschlagen, vollständig ab. Alle anderen E-Mails, die die DMARC-Prüfungen bestehen, werden im primären Posteingang des Empfängers zugestellt. Diese Richtlinie mildert die Auswirkungen von Spoofing am besten.
  • rua=mailto:
    Hierdurch wird dem Server mitgeteilt, wohin er die Sammelberichte über DMARC-Fehler senden soll. Wir werden mehr über die Berichte im nächsten Abschnitt des Artikels eingehen: Sie können jede beliebige E-Mail Adresse hinzufügen oder sogar mehrere hinzufügen.
  • ruf=mailto:
    Dies ist für die forensischen Berichte von DMARC-Fehlern. Damit gibt es eine Anforderung an die E-Mail Adresse – sie muss aus der Domain stammen, für die der DMARC-Eintrag veröffentlicht wird.
  • rf=
    Sobald wir die E-Mail Adresse gewählt haben, an die die Berichte gesendet werden sollen, wählen wir aus, welche Art von Berichterstattung wir wünschen. In diesem Fall bedeutet rf=afrf das aggregierte Fehlerberichtsformat. In dem Fall ist es ideal, wenn Sie bereits über ein System verfügen, das diese Berichte überwacht.
  • pct=
    Dieser Teil des Datensatzes teilt dem Server mit, wie viele seiner E-Mails den Spezifikationen der DMARC-Richtlinie unterliegen sollen. In diesem Fall: wenn das p= (erinnern Sie sich an die drei oben genannten Richtlinien) auf Ablehnung gesetzt wurde, würden 100% der Mail, die DMARC nicht schafft, abgelehnt.

Weitere Schlüsselmechanismen:

Es gibt eine Reihe weiterer Mechanismen, die in einen DMARC-Datensatz aufgenommen werden können. Diese sehen aus wie folgt:

  • sp=
    Dieser Teil würde dem empfangenden Server mitteilen, ob die DMARC-Richtlinie auf Subdomains angewendet werden soll oder nicht. Die Werte sind die gleichen wie bei  “p=”.
  • adkim=
    Hiermit wird die DKIM-Ausrichtung eingestellt. Es kann entweder auf “s” für streng oder “r” für entspannt gesetzt werden. Streng bedeutet, dass der DKIM-Teil der DMARC-Authentifizierung nur dann durchlaufen wird, wenn das Feld d= in der DKIM-Signatur genau mit der Domain von übereinstimmt. Wenn er auf entspannt eingestellt ist, übergeben die Nachrichten den DKIM-Teil der DMARC-Authentifizierung, wenn das Feld DKIM d= mit der Root-Domain der Absenderadresse übereinstimmt
  • aspf=
    Zeigt eine strenge oder entspannte Ausrichtung des SPF-Identifikators an. Die Voreinstellung ist entspannt. Zeigt eine strenge oder entspannte Ausrichtung des SPF-Identifikators an
  • ri=
    Hiermit wird das Intervall festgelegt, in dem Sie aggregierte Berichte über DMARC-Fehler erhalten möchten. Der Standardwert ist 86400 Sekunden, was einem Tag entspricht.

Um zum Schluss das ganze auf Funktion zu prüfen, kann man bei https://easydmarc.com seine DNS-Einträge Auslesen und Prüfen.

Man kann jedoch auch einfach seiner Googlemail Adresse ein Mail schicken und den Header auslesen.
in diesem sollte folgend stehen:

dkim=pass [email protected] header.s=dkim header.b=QgcnsO9l;
spf=pass (google.com: domain of [email protected] designates 87.123.456.12 as permitted sender) [email protected];
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=domain.de
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=domain.de; s=dkim; h=MIME-Version:Content-Type:Message-ID:Date:Subject: To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=E5HdLy6...U=; b=Qgcn...ToU0Hw==;

Ein geübter Admin benötigt für die Einrichtung wenige Minuten, und auch mit weniger Erfahrung ist das ganze in ca. 30 Minuten eingerichtet und es bringt einen enormen Mehrwert in der Absicherung der Email Kommunikation.