Konfigurieren der Zertifikatsignierung von PowerShell-Serialisierungsnutzlasten in Exchange Server

Übersicht

Das zertifikatbasierte Signieren von PowerShell-Serialisierungsnutzlasten ist ein sicherheitsrelevantes Sicherheitsfeature, das die böswillige Manipulation serialisierter Daten verhindert, die über Exchange Management Shell (EMS)-Sitzungen ausgetauscht werden sollen. Sie ist am Exchange Server 2013, Exchange Server 2016 und Exchange Server 2019 verfügbar.

Das Feature wurde mit dem Sicherheitsupdate vom Januar 2023 Exchange Server eingeführt. Es wurde standardmäßig als deaktiviert (opt-in) ausgeliefert und muss vom Exchange Server-Administrator aktiviert werden. Sie kann über eine Einstellungsüberschreibung (Exchange Server 2016 und Exchange Server 2019) oder mithilfe eines Registrierungswerts (Exchange Server 2013) aktiviert werden.

Durch die Installation des Sicherheitsupdates vom November 2023 (oder höher) Exchange Server wird das Feature standardmäßig pro Server aktiviert (abmelden) und muss vom Exchange Server-Administrator deaktiviert werden, wenn Sie es nicht verwenden möchten. Stellen Sie sicher, dass die Voraussetzungen für die Aktivierung der Zertifikatsignatur serialisierter Daten erfüllt sind, bevor Sie das Sicherheitsupdate vom November 2023 (oder höher) Exchange Server installieren. Um das Feature zu deaktivieren, müssen Sie eine neue Einstellungsüberschreibung erstellen, die das Feature explizit deaktiviert.

Was ist Datenserialisierung?

Bei der Datenserialisierung wird der Zustand eines Objekts in ein Formular (Bytestream) konvertiert, das beibehalten oder an den Arbeitsspeicher, eine Datenbank oder eine Datei übertragen werden kann. PowerShell verwendet beispielsweise die Serialisierung, wenn .NET-Objekte zwischen Sitzungen übergeben werden. Nachdem ein Objekt übermittelt oder gespeichert wurde, kann es in sein vorheriges Format zurückkonstruiert werden. Dieser Prozess wird als Deserialisierung bezeichnet.

Wenn Sie mehr über die Datenserialisierung in PowerShell erfahren möchten, empfiehlt es sich, den Blogbeitrag How objects are sent to and from remote sessions (Senden von Objekten an und aus Remotesitzungen) zu lesen.

Voraussetzungen für die Aktivierung der Zertifikatsignatur serialisierter Daten

Es gibt einige Voraussetzungen, die erfüllt sein müssen, bevor die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten aktiviert werden kann, ohne die Konnektivität zwischen Exchange-Servern zu unterbrechen:

  • Auf allen Exchange-Servern in Ihrer Umgebung muss das Sicherheitsupdate vom Januar 2023 Exchange Server oder höher ausgeführt werden. Wenn das Feature in einer Umgebung mit Exchange-Servern aktiviert ist, die keine Serialisierungssignatur unterstützen, können Probleme bei der Server-zu-Server-Kommunikation oder bei Verwendung der Exchange-Verwaltungsshell auftreten.

  • Alle Exchange-Server (nur Server mit Edge-Transport und -Verwaltungstools) müssen Zugriff auf das Exchange Server Authentifizierungszertifikat haben, das gültig sein muss und nicht abgelaufen sein darf.

    Tipp

    Sie können das Skript MonitorExchangeAuthCertificate verwenden, um zu überprüfen, ob das Exchange Server Authentifizierungszertifikat gültig ist. Es kann auch verwendet werden, um das OAuth-Zertifikat automatisch zu verlängern oder es zu ersetzen, wenn es bereits abgelaufen ist.

Überprüfen, ob die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten verwendet wird

Sie können überprüfen, ob die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten aktiviert ist, indem Sie die DataSerialization Protokolldatei überprüfen, die von Exchange Server verwaltet wird. Sie finden die Protokolldatei im folgenden Verzeichnis: <ExchangeInstallPath>\V15\Logging\Data\Serialization.

Exchange verwaltet eine Protokolldatei pro Prozess. Wenn Sie eine Exchange-Verwaltungsshell (EMS) öffnen, wird eine neue Protokolldatei erstellt. Wenn Sie ein zweites EMS öffnen, wird eine weitere Protokolldatei geschrieben. Die Benennungssyntax für Protokolldateien lautet DataSerialization<yyyyMMdd>-<N>.LOG. Jede der Protokolldateien kann bis zu 10 MB einer größe sein. Die maximale Größe des Serialisierungsprotokollverzeichnisses ist standardmäßig auf 1 GB beschränkt. Protokolldateien werden gelöscht, wenn sie älter als 30 dayssind.

Die EventData Spalte enthält den Prozessnamen und den Indikator, der anzeigt, ob die Serialisierungssignatur verwendet wird oder nicht.

Beispiel für die Verwendung der Serialisierungssignatur:

"S:MSG=SerializationTypeConverter Initialized, Process Name = w3wp, SerializationSigningEnabled = True, IsCustomParserEnabled = True"

Beispiel für nicht verwendete Serialisierungssignatur:

"S:MSG=SerializationTypeConverter Initialized, Process Name = powershell, SerializationSigningEnabled = False, IsCustomParserEnabled = True"

Aktivieren der Zertifikatsignierung von PowerShell-Serialisierungsnutzlasten

Wichtig

Es ist nicht erforderlich, die Einstellungsüberschreibung zu erstellen, wenn das Sicherheitsupdate vom November 2023 (oder höher) Exchange Server ausgeführt wird. Die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten ist beim Ausführen dieses Builds standardmäßig aktiviert.

Aktivieren bei Ausführung von Exchange Server 2016 und Exchange Server 2019

Sie müssen eine neue Einstellungsüberschreibung erstellen, um die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten zu aktivieren.

  1. Führen Sie den folgenden Befehl in einer Exchange-Verwaltungsshell (EMS) mit erhöhten Rechten auf einem Server aus, auf dem Exchange Server in Ihrer Umgebung ausgeführt wird:

    New-SettingOverride -Name "EnableSigningVerification" -Component Data -Section EnableSerializationDataSigning -Parameters @("Enabled=true") -Reason "Enabling Signing Verification"
    

    Hinweis

    Dieser Befehl ermöglicht allen Servern, die Exchange Server 2016 und Exchange Server 2019 in Ihrer Umgebung ausgeführt werden, die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten. Sie müssen den Befehl nicht auf jedem Exchange-Server ausführen.

  2. Aktualisieren Sie das Argument VariantConfiguration, indem Sie den folgenden Befehl ausführen:

    Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh 
    
  3. Es ist erforderlich, die World Wide Web Publishing service und auf Windows Process Activation Service dem Exchange-Server neu zu starten, auf dem die Einstellungsüberschreibung erstellt wurde. Führen Sie den folgenden Befehl in einem PowerShell-Fenster mit erhöhten Rechten aus, oder starten Sie den Server neu:

    Restart-Service -Name W3SVC, WAS -Force 
    

Aktivieren beim Ausführen von Exchange Server 2013

Wenn Sie Exchange Server 2013 ausführen, muss die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten aktiviert werden, indem für jede Exchange Server 2013 ein Registrierungswert erstellt wird.

  1. Erstellen Sie den Registrierungswert für eine Exchange Server 2013, indem Sie den folgenden Befehl ausführen:

    New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\Diagnostics -Name "EnableSerializationDataSigning" -Value 1 -Type String
    
  2. Es ist erforderlich, die World Wide Web Publishing service und auf Windows Process Activation Service jedem Exchange 2013-Server neu zu starten, auf dem der Registrierungswert erstellt wurde. Führen Sie den folgenden Befehl in einem PowerShell-Fenster mit erhöhten Rechten aus, oder starten Sie den Server neu:

    Restart-Service -Name W3SVC, WAS -Force 
    

Deaktivieren der Zertifikatsignierung von PowerShell-Serialisierungsnutzlasten

Deaktivieren beim Ausführen von Exchange Server 2016 und Exchange Server 2019

Um das Feature auf Exchange Server 2016 oder Exchange Server 2019 zu deaktivieren, muss die Einstellungsüberschreibung gelöscht oder explizit auf deaktiviert festgelegt werden.

Warnung

Das Deaktivieren der Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten macht Ihren Server anfällig für bekannte Exchange-Sicherheitsrisiken und schwächt den Schutz vor unbekannten Bedrohungen. Es wird empfohlen, dieses Feature aktiviert zu lassen.

  1. Löschen Sie die Einstellung außer Kraft setzen, oder legen Sie sie explizit auf fest Enabled=false:

    Beim Ausführen der Exchange SU vom Januar 2023 bis Oktober 2023 muss die Einstellungsüberschreibung gelöscht werden, um das Feature zu deaktivieren.

    Führen Sie den folgenden Befehl in einer Exchange-Verwaltungsshell mit erhöhten Rechten aus:

    Get-SettingOverride -Identity "EnableSigningVerification" | Remove-SettingOverride
    

    oder

    Wenn Exchange SU vom November 2023 oder höher ausgeführt wird, muss eine Einstellungsüberschreibung erstellt werden, um das Feature explizit zu deaktivieren.

    Führen Sie den folgenden Befehl in einer Exchange-Verwaltungsshell mit erhöhten Rechten aus:

    New-SettingOverride -Name "DisableSigningVerification" -Component Data -Section EnableSerializationDataSigning -Parameters @("Enabled=false") -Reason "Disable Signing Verification"
    
  2. Aktualisieren Sie das Argument VariantConfiguration, indem Sie den folgenden Befehl ausführen:

    Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh 
    
  3. Es ist erforderlich, die World Wide Web Publishing service und auf Windows Process Activation Service dem Exchange-Server neu zu starten, auf dem die Einstellungsüberschreibung gelöscht oder aktualisiert wurde. Führen Sie den folgenden Befehl in einem PowerShell-Fenster mit erhöhten Rechten aus, oder starten Sie den Server neu:

    Restart-Service -Name W3SVC, WAS -Force 
    
  4. Schließen Sie die Exchange-Verwaltungsshell (EMS), die zum Ausführen der in den vorherigen Schritten erwähnten Befehle verwendet wurde. Dies ist wichtig, um die Konfiguration sofort anzuwenden.

Deaktivieren beim Ausführen von Exchange Server 2013

Um das Feature auf Exchange Server 2013 zu deaktivieren, muss der Registrierungswert gelöscht werden, um explizit auf 0festzulegen.

  1. Legen Sie den Registrierungswert am Exchange Server 2013 auf 0 fest, indem Sie den folgenden Befehl ausführen:

    Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\Diagnostics -Name "EnableSerializationDataSigning" -Value 0
    
  2. Es ist erforderlich, die World Wide Web Publishing service und auf Windows Process Activation Service jedem Exchange 2013-Server neu zu starten, auf dem der Registrierungswert geändert wurde. Führen Sie den folgenden Befehl in einem PowerShell-Fenster mit erhöhten Rechten aus, oder starten Sie den Server neu:

    Restart-Service -Name W3SVC, WAS -Force 
    

Bekannte Probleme bei der Zertifikatsignierung serialisierter Daten

Alle Builds von Exchange, die die Zertifikatsignatur von PowerShell-Serialisierungsnutzlasten unterstützen

  • Wenn die Möglichkeit zum Signieren von Serialisierungsdaten aktiviert ist, verhindert ein abgelaufenes Authentifizierungszertifikat, dass das Get-ExchangeCertificate Cmdlet Zertifikatdetails zurückgibt.

Januar 2023 SU bis Oktober 2023 SU

  • Wenn die Möglichkeit zum Signieren von Serialisierungsdaten aktiviert ist, gibt das Get-ExchangeCertificate Cmdlet keinen sichtbaren Wert zurück, wenn es auf einem Computer ausgeführt wird, auf dem die Exchange-Verwaltungstools installiert sind, aber keine andere Exchange Server Rolle hat. Dies geschieht unabhängig davon, ob das Authentifizierungszertifikat gültig ist oder nicht.

November 2023 SU

Die bekannten Probleme, die im SU-Abschnitt vom Januar 2023 bis Oktober 2023 erwähnt wurden, wurden mit der SU vom November 2023 behoben.

  • Einige der Skripts, die in Exchange Server enthalten sind (z. B. ), funktionieren nicht wie erwartet, RedistributeActiveDatabases.ps1wenn die folgenden Bedingungen zutreffen:
    • Das Feature Signieren von PowerShell-Serialisierungsnutzlasten ist aktiviert.
    • Sie verwenden nicht die Standardsicherheitsgruppen, die von Exchange RBAC bereitgestellt werden.
    • Der Benutzer, der das Skript ausführt, ist kein Mitglied der Rollengruppe Organisationsverwaltung.

Neueste Exchange Server Builds

Exchange Server 2016 CU23 / 2019 CU13 oder CU14 ohne März 2024 SU

  • Einige PowerShell-Cmdlets können nicht ausgeführt werden, wenn sie auf einem Computer ausgeführt werden, auf dem die Exchange-Verwaltungstools installiert sind, aber keine andere Exchange Server Rolle hat. Dies wirkt sich auf die folgenden Cmdlet-Kombinationen aus:

    • Get-MailboxDatabase | Get-MailboxStatistics

    • Get-MailboxDatabase | Get-Mailbox

    • Get-MailboxDatabase | Test-ExchangeSearch

    • Get-Mailbox | Get-CalendarDiagnosticLog

    • Get-PublicFolderClientPermission | Remove-PublicFolderClientPermission

      Tipp

      Um das Problem zu umgehen, verwenden Sie ForEach-Object wie in den Beispielen gezeigt.

      Get-MailboxDatabase | ForEach-Object { Get-MailboxStatistics -Database $_.Name }
      Get-MailboxDatabase | ForEach-Object { Get-Mailbox -Database $_.Name }
      Get-MailboxDatabase | ForEach-Object { Test-ExchangeSearch -MailboxDatabase $_.Name }
      Get-Mailbox | ForEach-Object { Get-CalendarDiagnosticLog -Identity $_.Name }
      Get-PublicFolderClientPermission \pf1 | ForEach-Object { Remove-PublicFolderClientPermission -Identity $_.Identity.ToString() -User $_.User.ToString() }
      
  • Die folgenden PowerShell-Skripts funktionieren nicht ordnungsgemäß, wenn sie auf einem Computer ausgeführt werden, auf dem die Exchange-Verwaltungstools installiert sind, aber keine andere Exchange Server Rolle haben:

    • RedistributeActiveDatabases.ps1

    • StartDagServerMaintenance.ps1

    • Move-PublicFolderBranch.ps1

      Tipp

      Um das Problem zu umgehen, müssen Skripts auf einem Exchange Server ausgeführt werden, der die Postfachrolle ausführt, über eine Exchange Management Shell (EMS) mit erhöhten Rechten.

Exchange Server 2016 CU23 / 2019 CU13 oder CU14 + März 2024 SU

Beim Ausführen dieser Exchange Server Builds sind keine Probleme mit der Zertifikatsignierung serialisierter Daten bekannt.