Exchange Online - TLS Report für SMTP-Verbindungen PowerShell

- 15.02.2019
von Thomas Windscheif / Microlinc



PowerShell
Exchange Online
SMTP TLS Report

getestet unter:
Windows 7,10
Windows Server 2012 R2
ab PowerShell V3

Zum Download

Da im Security & Compliance-Portal derzeit nur ein rudimentärer TLS-Report für Compliance-Reports zur Verfügung steht, habe ich ein Skript entwickelt, welches mittels der Exchange Online PowerShell Cmdlets Get-MessageTrace und Get-MessageTraceDetail die erweiterten SMTP-Informationen parst, anschließend in einem HTML-Report zusammenfasst und via E-Mail an einen definierbaren Empfänger sendet.

Der Report liefert eine einfache Übersicht über sichere und unsichere SMTP-Verbindungen von und nach Exchange Online Protection, aufgeschlüsselt nach E-Mail-Domänen.

Getestet wurde es sowohl mit Exchange Online EU und in der Exchange Online Treuhand-Umgebung der Deutschen Telekom.

Hierbei wird die Übertragungsrichtung, Quell- bzw. Zieldomain sowie das Verschlüsselungsprotokoll und der Verschlüsselungstyp dargestellt. Unverschlüsselte Übertragungen werden als erstes und in rot dargestellt, weniger starke Verschlüsselung in oranger Farbe aufgelistet.




Detaildaten können durch einen Schalter als CSV-Report ebenfalls gespeichert werden:




Über Microsoft Excel lassen sich dann mittels der Filterfunktion die entsprechenden Nachrichten herausfiltern.

Der O365-Benutzer benötigt nur das Recht die Cmdlets Get-MessageTrace und Get-MessageTraceDetail auszuführen.

Im Param-Block des Skripts können die Parameter entsprechend vordefiniert werden, natürlich können Sie die Parameter auch an das Skript übergeben:

Param(
[array]$InternalDomains = @("yourdomain.onmicrosoft.com","yourdomain.de"),
[int]$AmountofDaysToCheck = 14,
$MailServer = "mail.yourdomain.de",
[int]$MailServerPort = 25,
[string]$MailServerUsername = "",
[string]$MailServerPassword = "",
[bool]$MailServerUseTLS = $true,
[bool]$MailServerIgnoreTLSValidation = $false,
[string]$MessageSender = "tlsreport@yourdomain.de",
[string]$MessageRecipient = "compliance@yourdomain.de",
[string]$MessageSubject = "Exchange Online TLS-Report",
[bool]$SendMail = $true,
[bool]$CreateDetailCSV = $true,
[string]$FileNamePrefix = "TLSReportMessageTrace",
[string]$LogFilePath = "$(Split-Path $MyInvocation.MyCommand.Path)",
[string]$LogFileFileNamePrefix = "TLSReport",
[string]$ExchangeOnlineURL = "https://outlook.office365.com/powershell-liveid",
[string]$ExOUsername = "svc-messagetrace@yourdomain.onmicrosoft.com",
[string]$ExOPassword = 'YourPassword',
[bool]$DisableDisplayLog = $true,
[int]$DeleteItemsOlderThanDays = 7
)

Der Office365-Benutzer muss nicht Mitglied der "Globalen Administratoren" oder "Organization Management " sein.
Eine entsprechend abgestufte RBAC-Rolle kann über die Exchange Online PowerShell wie folgt angelegt werden:

Der nachfolgende Befehl legt eine neue RBAC-Rolle auf Basis der vorhandenen "Security Reader"-Rolle mit dem Namen "microlinc-MessageTrace" an:
New-ManagementRole -Parent "Security Reader" -Name "microlinc-MessageTrace"

Die nicht notwendigen Cmdlets werden als Rolleneintrag der neu erstellten Rolle entfernt:
Get-ManagementRoleEntry microlinc-messagetrace\* | ? {$_.Name -notmatch "Get-MessageTrace|Get-MessageTraceDetail"} | % {Remove-ManagementRoleEntry $_.Identity}

Zur Verknüpfung der Rolle an den zuvor im Office365-Portal angelegten Benutzer "svc-messagetrace" wird eine Rollengruppe im Azure AD erstellt und der Benutzer als Mitglied hinzugefügt:
New-RoleGroup RG-microlinc-MessageTrace -Roles microlinc-MessageTrace -Members svc-messagetrace

Weitere Anforderungen an den Office 365-Benutzer:
  • Der Benutzer benötigt keinen Office 365-Plan

  • Es ist sicherzustellen, dass der Benutzer bei Verwendung des "bedingten Zugriffs" von Azure nicht blockiert wird

  • Es ist sicherzustellen, dass dem Benutzer der Zugriff auf die RemotePowerShell für Exchange erlaubt ist:
    • Exchange Online PowerShell:
    • Get-User svc-messagetrace | Format-List RemotePowerShellEnabled
      Erlauben Sie ggf. den Zugriff über folgenden Befehl:
      Get-User svc-messagetrace | Set-User -RemotePowerShellEnabled $true


Lassen Sie in Ihrem Unternehmen prüfen, ob Sie die Verkehrsdaten erheben dürfen (Stichwort: DSGVO).
Den erweiterten Bericht mit den Quell- und Ziel-E-Mail-Adressen können Sie über den Schalter CreateDetailCSV ein- und ausschalten.

Im Gegensatz zum Erweiterten Bericht der Nachrichtenverfolgung im Security & Compliance-Portal sind die Daten nahezu direkt verarbeitet. In den Tests habe ich maximal 10 Minuten Verzögerung zwischen dem Empfang/Versand der E-Mail und dem Erscheinen der Nachricht über das Cmdlet Get-MessageTrace festgestellt.

Das Skript lässt sich über einen geplanten Task beispielsweise täglich nachts ausführen.

Ich freue mich über Ihr Feedback.

UPDATE:
Version 1.1:
+ Es werden nun mehr als 1000 Message-Trace-Ereignisse unterstützt

aktuelle Downloads

Download
-> Get-ExOTLSReportV1.1.zip (Version 1.1) ~ 5,6 KB
-> Get-ExOTLSReport.zip (Version 1.0) ~ 5,4 KB
MICROL!NC - URL zum Artikel: http://microlinc.homeip.net/index.php?lev1=25&lev2=24&id=411 - Ausdruck vom 29.03.2024