Exchange Online: Domain-Spoofing mit DKIM erschweren
Exchange Online bietet im Vergleich zu seinem OnPremises-Gegenstück die Möglichkeit, seine akzeptierten Domänen neben einem SPF-Record auch mittels DKIM (DomainKeys Identified Mail) zu schützen.
Dadurch wird es Angreifern erschwert Phishing- oder Spam-Mails im Namen von Domains (und damit Unternehmen) zu versenden, welche diesen nicht gehören.
DKIM ist eine Erweiterung, die beim Versenden einer E-Mail von einem autorisierten Absender, in diesem Fall aus Exchange Online (Microsoft 365), der Mail ein spezielles Attribut im Mail-Header beifügt.
Das Verfahren basiert auf asymmetrischer Verschlüsselung (Public- und Private-Key). Der sendende Mail-Server signiert die Mail mit einem Hash-Wert (generiert durch den privaten Schlüssel) und die empfangende Gegenstelle (Empfänger-Server) prüft mittels des zugehörigen frei verfügbaren Public-Keys den Hash-Wert im Header ab.
Stimmt der Hash-Wert im Header mit dem durch den Empfänger-Server generierten Hash-Werts, welcher anhand des Public-Keys generiert wurde, überein, wird die E-Mail in der Regel zugestellt, da der Absender als valide gilt.
Stimmen die Werte nicht überein, liegt es an der Konfiguration des empfangenden Mail-Systems was mit der Mail passiert – zum Beispiel verwerfen, zur Prüfung in Quarantäne, in den Spam-Ordner des Benutzers oder zurückweisen der Mail an den Absender.
Um DKIM in Exchange Online zu aktivieren, sind folgende Schritte nötig:
1. Setzen der nötigen CNAME-Einträge im öffentlichen DNS-Verzeichnis
2. Erzeugen der DKIM-Keys in Exchange Online
3. Aktivieren von DKIM in Exchange Online
Im DNS müssen CNAME Einträge gemäß der folgenden Syntax angelegt werden:
Hostname: selector1._domainkey Ziel: selector1-domain-tld._domainkey.tenant.onmicrosoft.com TTL: 3600 Hostname: selector2._domainkey Ziel: selector2-domain-tld._domainkey.tenant.onmicrosoft.com TTL: 3600
Mit Werten befüllt, könnte es dann so aussehen:
Hostname: selector1._domainkey Ziel: selector1-meinefirma-de._domainkey.meinefirma.onmicrosoft.com TTL: 3600 Hostname: selector2._domainkey Ziel: selector2-meinefirma-de._domainkey.meinefirma.onmicrosoft.com TTL: 3600
Ein Hinweis, der die Erstellung der Einträge erleichtert ist, das die Punkte der Domain im Ziel-Wert für den CNAME immer durch Bindestriche ersetzt werden.
Aus der Domain meinefirma.de wird im CNAME Eintrag also meinefirma-de.
Genauso auch für Subdomains: Aus mail.meinefirma.de wird mail-meinefirma-de.
Sind die DNS Einträge gesetzt und veröffentlicht, muss im Exchange Online nun noch die DKIM-Konfiguration angelegt werden.
Dazu wird das ExchangeOnlineManagement PowerShell-Modul benötigt.
Mit den folgenden PowerShell-Cmdlets wird DKIM letztendlich aktiviert:
#sign in to Exchange Online Connect-ExchangeOnline -ShowBanner:$false #create and enable DKIM config with more secure 2048 bit encryption keys New-DkimSigningConfig -DomainName meinefirma.de -KeySize 2048 -Enabled $true #remove active PowerShell session Disconnect-ExchangeOnline
Anschließend ist DKIM für diese Domain aktiv und alle gesendeten Mails werden mit diesem Mechanismus zusätzlich abgesichert.
Zu erkennen ist es zum Beispiel im Mail-Header anhand folgender Werte:
dkim=pass (signature was verified) header.d=senderdomain.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=senderdomain.com] dkim=[1,1,header.d=senderdomain.com] dmarc=[1,1,header.from=senderdomain.com]) ... DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=senderdomain.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/O9b+/4FCGiuPLbNWFW7dhg8/koNv10LLB+vHg4Zw1I=; b=PPomU/kCR74JOUiAzKryl5BIag6ceftDWB2KTIl/NW6X1F9TKWT9LWVduM4fe8fWgDR4RzxDjUHMeVzmTK948pS8OdAcob+aV1XfRp4gqV6HrtgoltEG9ZHnR/hgKGR04MkHCZ9RWjPafMDe0hefDPI1Fd/IUXmHam0UxS+8i3g=
DKIM kann für mehrere Domains bzw. alle Domains die im Exchange Online zugeordnet sind aktiviert werden, die o.g. Schritte müssen dabei für jede Domain wiederholt werden.