Sandro Reiter

vCard und IT-Blog

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.

Teams: E-Mail-Kommunikation in Kanälen anzeigen

Microsoft Teams ist in seinem Segment als “eierlegende Wollmilchsau” wohl einer der größten und gelungensten Würfe der IT-Branche in den letzten Jahren!

MS Teams hat sich so stark in meinen Arbeitsalltag integriert, das ich es nicht mehr missen möchte und vermutlich auch gar nicht kann. Ich bin bereits in Q4 2018 den Weg gegangen und habe mich als ersten User in unserem Tenant auf “teams-only”-Benutzung umgestellt.

Mein Skype for Business Client sagt mir beim Start nur noch freundlich:
Geh doch bitte zu Teams 😉
Meine letzte verbliebene S4B Funktionalität: An S4B-Meetings teilnehmen.

 

Teams auf Office 365 Gruppen aufzusetzen ist eine gelungene Entscheidung, mit einem großen Nachteil: Gruppenunterhaltungen – also E-Mails – tauchen nicht im jeweiligen Team auf. Ich muss zur Diskussion einer E-Mail diese immer erst an den Kanal weiterleiten.

 

Natürlich gibt es aber einen Workaround:

Jeder Teams-Kanal hat eine eigene E-Mail-Adresse welche auf @emea.teams.ms endet. Dieses Feature machen wir uns zu Nutze.

Als erstes empfiehlt es sich einen eigenen Kanal, beispielsweise namens “E-Mails”, im Team anzulegen.

Anschließend kann über das Kanal-Kontextmenü (•••) mit einem Klick auf “E-Mail-Adresse abrufen” die Kanal-E-Mail-Adresse ausgelesen werden.

Mit dieser E-Mail-Adresse wird im Azure AD ein Gast-Nutzer angelegt.

Der angelegte Gastnutzer muss anschließend nur noch als Mitglied zur Office 365 Gruppe hinzugefügt werden. Das erledigt am besten die PowerShell um zu garantieren das der Gastnutzer auch ein Abonnent der Gruppe wird:

#add guest user as member to o365 group
Add-UnifiedGroupLinks -LinkType Members -Identity "myO365Group" -Links "myTeamsChannelGuestUser"
#add guest user as subscriber to o365 group to receive emails
Add-UnifiedGroupLinks -LinkType Subscribers -Identity "myO365Group" -Links "myTeamsChannelGuestUser"

Ab diesem Moment werden E-Mails an die O365 Gruppe auch in dem jeweiligen Teams-Kanal zugestellt.

Exchange Online: Auf welche Shared Mailboxes hat ein User Zugriff?

Erst kürzlich erhielt ich einen Anruf mit der Frage: “Sehe ich eigentlich irgendwo auf welche Shared Mailboxes ich Zugriff habe?”

Beunruhigende Stille machte sich auf meiner Seite der Leitung breit…

“Da muss ich nachsehen”, sagte ich und sicherte zu mich zeitnah zu melden.

Mir waren die Möglichkeiten bewusst die ein Nutzer hat um die Mitgliedschaft in O365 Gruppen und Verteilerlisten einzusehen, aber die geteilten Postfächer anzeigen auf die man selbst Zugriff hat, suchte ich vergeblich.

 

Lange Rede, kurzer Sinn: Der Kunde wartet – let’s script it!

Das nachfolgende Skript muss der Exchange-Admin ausführen, aber es geht allemal schneller als sich durch alle Shared Mailboxes zu klicken und nachzusehen wo der User berechtigt ist.

$usertosearch = "max@muster.de"
$sharedMailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox

foreach ($box in $sharedMailboxes) 
{ 
    $perms = Get-MailboxPermission -Identity $box.Alias

    foreach ($perm in $perms)
    { 
        if(
            $perm.User -like $usertosearch) 
            { 
                write-host $box.PrimarySmtpAddress 
            } 
    }
}