Autorisieren von überwachten Hosts über TPM-basierten NachweisAuthorize guarded hosts using TPM-based attestation

Gilt für: WindowsServer 2019, WindowsServer (Halbjährlicher Kanal), WindowsServer 2016Applies to: Windows Server 2019, Windows Server (Semi-Annual Channel), Windows Server 2016

TPM-Modus verwendet, eine TPM-ID (auch als eine Plattform Bezeichner oder ein Endorsement Key bezeichnet [EKpub]) zu beginnen, ermitteln, ob es sich bei ein bestimmter Host autorisiert ist, als "geschützt".TPM mode uses a TPM identifier (also called a platform identifier or endorsement key [EKpub]) to begin determining whether a particular host is authorized as "guarded." In diesem Modus Nachweis verwendet Messwerte für die Integrität von Sicherer Start "und" Code, um sicherzustellen, dass der angegebener Hyper-V-Host befindet sich in einem ordnungsgemäßen Zustand, und nur vertrauenswürdigen Code ausgeführt wird.This mode of attestation uses Secure Boot and code integrity measurements to ensure that a given Hyper-V host is in a healthy state and is running only trusted code. In der Reihenfolge für den Nachweis zu verstehen, was ist, und ist nicht fehlerfrei müssen Sie die folgenden Elemente erfasst:In order for attestation to understand what is and is not healthy, you must capture the following artifacts:

  1. TPM-Bezeichner (EKpub)TPM identifier (EKpub)

    • Diese Informationen sind nur für jeden Hyper-V-hostThis information is unique to each Hyper-V host
  2. TPM-Baseline (startmessungen)TPM baseline (boot measurements)

    • Dies gilt für alle Hyper-V-Hosts, die für die gleiche Klasse der Hardware ausgeführt werden soll.This is applicable to all Hyper-V hosts that run on the same class of hardware
  3. Codeintegritätsrichtlinie (einer Positivliste der zulässigen Binärdateien)Code integrity policy (a whitelist of allowed binaries)

    • Dies gilt für alle Hyper-V-Hosts, die allgemeine Hardware- und Softwarekonfiguration aufweisenThis is applicable to all Hyper-V hosts that share common hardware and software

Es wird empfohlen, dass Sie den geplanten und CI-Richtlinie von einem Host"Verweis" erfassen, die repräsentativ für jede eindeutige Klasse von Hyper-V-Hardware-Konfiguration in Ihrem Rechenzentrum.We recommend that you capture the baseline and CI policy from a "reference host" that is representative of each unique class of Hyper-V hardware configuration within your datacenter. Ab Windows Server-Version 1709, sind CI-Beispielrichtlinien am C:\Windows\schemas\CodeIntegrity\ExamplePolicies enthalten.Beginning with Windows Server version 1709, sample CI policies are included at C:\Windows\schemas\CodeIntegrity\ExamplePolicies.

Mit versionsverwaltung durch das Attestation-RichtlinienVersioned attestation policies

Windows Server-2019 führt eine neue Methode für den Nachweis, dem Namen v2-Nachweis, wobei ein TPM-Zertifikat vorhanden, damit die EKPub-Host-Überwachungsdienst hinzufügen sein muss.Windows Server 2019 introduces a new method for attestation, called v2 attestation, where a TPM certificate must be present in order to add the EKPub to HGS. Die v1-Nachweis-Methode, die in Windows Server 2016 verwendet konnten Sie überschreiben diese sicherheitsprüfung durch Angabe des - Force-Flag beim Ausführen der hinzufügen-HgsAttestationTpmHost oder andere TPM-Nachweis-Cmdlets, um die Artefakte zu erfassen.The v1 attestation method used in Windows Server 2016 allowed you to override this safety check by specifying the -Force flag when you run Add-HgsAttestationTpmHost or other TPM attestation cmdlets to capture the artifacts. Ab Windows Server-2019, v2-Nachweis wird standardmäßig verwendet, und Sie müssen das PolicyVersion - v1-Flag angeben, wenn Add-HgsAttestationTpmHost ausführen, müssen Sie ein TPM ohne Zertifikat zu registrieren.Beginning with Windows Server 2019, v2 attestation is used by default and you need to specify the -PolicyVersion v1 flag when you run Add-HgsAttestationTpmHost if you need to register a TPM without a certificate. Die - Force Flag nicht mit v2-Nachweis funktioniert.The -Force flag does not work with v2 attestation.

Ein Host kann nur bestätigen lassen, ob alle Elemente (EKPub + TPM Baseline + Codeintegritätsrichtlinie) die gleiche Version von nachweisen.A host can only attest if all artifacts (EKPub + TPM baseline + CI Policy) use the same version of attestation. V2-Nachweis zuerst versucht wird, und schlägt dies fehl, wird die v1-Nachweis verwendet.V2 attestation is tried first, and if that fails, v1 attestation is used. Dies bedeutet, wenn Sie eine TPM-ID zu registrieren, indem Sie die v1-Nachweis verwenden möchten, müssen Sie auch das PolicyVersion - v1-Flag, um die v1-Nachweis verwenden, wenn Sie die TPM-Baseline zu erfassen, und erstellen Sie die CI-Richtlinie angeben.This means if you need to register a TPM identifier by using v1 attestation, you need to also specify the -PolicyVersion v1 flag to use v1 attestation when you capture the TPM baseline and create the CI policy. Wenn der TPM-Baseline und der codeintegritätsrichtlinie mithilfe von v2-Nachweis erstellt wurden, und klicken Sie dann später Sie einen überwachten Host ohne ein TPM-Zertifikat hinzufügen müssen, müssen Sie jedes Artefakt mit dem Flag für die v1 - Spezifikation neu zu erstellen.If the TPM baseline and CI policy were created by using v2 attestation and then later you need to add a guarded host without a TPM certificate, you need to re-create each artifact with the -PolicyVersion v1 flag.

Erfassen Sie den TPM-Bezeichner (Plattformbezeichner oder EKpub) für jeden hostCapture the TPM identifier (platform identifier or EKpub) for each host

  1. Die Fabric-Domäne Vergewissern Sie sich das TPM auf jedem Host ist zur Verwendung bereit – das heißt, das TPM initialisiert wird und des Besitzes abgerufen.In the fabric domain, make sure the TPM on each host is ready for use - that is, the TPM is initialized and ownership obtained. Sie können den Status des TPM überprüfen, öffnen die TPM-Verwaltungskonsole (tpm.msc) oder durch Ausführen Get-Tpm in einer Windows PowerShell-Fenster mit erhöhten Rechten.You can check the status of the TPM by opening the TPM Management Console (tpm.msc) or by running Get-Tpm in an elevated Windows PowerShell window. Wenn Ihr TPM nicht in der bereit aufweist, müssen Sie initialisiert, und legen Sie den Besitz.If your TPM is not in the Ready state, you will need to initialize it and set its ownership. Dies kann erfolgen in der TPM-Verwaltungskonsole oder durch Ausführen Initialize Tpm.This can be done in the TPM Management Console or by running Initialize-Tpm.

  2. Führen Sie für jeden überwachten Host den folgenden Befehl in einer mit erhöhten Rechten Windows PowerShell-Konsole, um seine EKpub zu erhalten.On each guarded host, run the following command in an elevated Windows PowerShell console to obtain its EKpub. Für <HostName>, ersetzen Sie den eindeutigen Hostnamen mit etwas gut geeignet, um das Identifizieren von diesem Host – kann es sich seinem Hostnamen oder den Namen von einem Fabric Inventory-Dienst (falls verfügbar).For <HostName>, substitute the unique host name with something suitable to identify this host - this can be its hostname or the name used by a fabric inventory service (if available). Der Einfachheit halber benennen Sie die Datei mithilfe der Name des Hosts.For convenience, name the output file using the host's name.

    (Get-PlatformIdentifier -Name '<HostName>').InnerXml | Out-file <Path><HostName>.xml -Encoding UTF8
    
  3. Wiederholen Sie die vorherigen Schritte für jeden Host, der einem bewachten Host, wird Sie sicher, dass jede XML-Datei einen eindeutigen Namen geben werden soll.Repeat the preceding steps for each host that will become a guarded host, being sure to give each XML file a unique name.

  4. Geben Sie die resultierenden XML-Dateien für dem HGS-Administrator.Provide the resulting XML files to the HGS administrator.

  5. Öffnen Sie in der Domäne des Host-Überwachungsdienst eine mit erhöhten Rechten aus Windows PowerShell-Konsole auf einem Host-Überwachungsdienst-Server, und führen Sie den folgenden Befehl aus.In the HGS domain, open an elevated Windows PowerShell console on an HGS server and run the following command. Wiederholen Sie den Befehl für jede XML-Dateien.Repeat the command for each of the XML files.

    Add-HgsAttestationTpmHost -Path <Path><Filename>.xml -Name <HostName>
    

    Hinweis

    Wenn Sie ein Fehler auftritt, wenn Sie eine TPM-ID in Bezug auf ein nicht vertrauenswürdiges Endorsement Key-Zertifikat (EKCert) hinzufügen, stellen Sie sicher, dass die vertrauenswürdige Stammzertifikate TPM wurden hinzugefügt, auf den Host-Überwachungsdienst-Knoten.If you encounter an error when adding a TPM identifier regarding an untrusted Endorsement Key Certificate (EKCert), ensure that the trusted TPM root certificates have been added to the HGS node. Darüber hinaus verwenden einige TPM-Hersteller EKCerts nicht.Additionally, some TPM vendors do not use EKCerts. Sie können überprüfen, ob ein EKCert nicht vorhanden, ist durch die XML-Datei in einem Editor wie Editor öffnen und eine Fehlermeldung, die keine EKCert gesucht wurde gefunden.You can check if an EKCert is missing by opening the XML file in an editor such as Notepad and checking for an error message indicating no EKCert was found. Wenn dies der Fall ist, und Sie vertrauen, dass das TPM auf Ihrem Computer authentifiziert ist, können Sie die -Force Parameter Host-Überwachungsdienst die Host-ID hinzu.If this is the case, and you trust that the TPM in your machine is authentic, you can use the -Force parameter to add the host identifier to HGS. In Windows Server-2019, müssen Sie auch die -PolicyVersion v1 Parameter bei Verwendung -Force.In Windows Server 2019, you need to also use the -PolicyVersion v1 parameter when using -Force. Dies erstellt eine Richtlinie auf dem Verhalten von Windows Server 2016 und erfordert, dass Sie mit -PolicyVersion v1 beim Registrieren der codeintegritätsrichtlinie und auch die TPM-Baseline.This creates a policy consistent with the Windows Server 2016 behavior and will require you to use -PolicyVersion v1 when registering the CI policy and the TPM baseline as well.

Erstellen und Anwenden einer codeintegritätsrichtlinieCreate and apply a code integrity policy

Eine codeintegritätsrichtlinie trägt dazu bei, dass nur die ausführbaren Dateien, denen, die Sie vertrauen für die Ausführung auf einem Host, ausgeführt werden dürfen.A code integrity policy helps ensure that only the executables you trust to run on a host are allowed to run. Die Ausführung sind Malware und andere ausführbare Dateien außerhalb der vertrauenswürdigen ausführbarer Dateien verhindert.Malware and other executables outside the trusted executables are prevented from running.

Einzelnen überwachten Hosts müssen eine codeintegritätsrichtlinie angewendet, um abgeschirmte VMs im TPM-Modus ausführen.Each guarded host must have a code integrity policy applied in order to run shielded VMs in TPM mode. Sie geben die genaue anwendungssteuerungscode-Integritätsrichtlinien, denen, die Sie vertrauen, indem sie Host-Überwachungsdienst hinzugefügt.You specify the exact code integrity policies you trust by adding them to HGS. Anwendungssteuerungscode-Integritätsrichtlinien können konfiguriert werden, um die Richtlinie blockiert jegliche Software, die nicht mit der Richtlinie entsprechen, oder einfach prüfen (Protokoll ein Ereignis, wenn die Software nicht in der Richtlinie definierte ausgeführt wird) zu erzwingen.Code integrity policies can be configured to enforce the policy, blocking any software that does not comply with the policy, or simply audit (log an event when software not defined in the policy is executed).

Ab Windows Server-Version 1709, sind die anwendungssteuerungscode-Integritätsrichtlinien Beispiel in Windows auf C:\Windows\schemas\CodeIntegrity\ExamplePolicies enthalten.Starting with Windows Server version 1709, sample code integrity policies are included with Windows at C:\Windows\schemas\CodeIntegrity\ExamplePolicies. Es werden zwei Richtlinien für Windows Server empfohlen:Two policies are recommended for Windows Server:

  • AllowMicrosoft: Können alle Dateien, die von Microsoft signiert.AllowMicrosoft: Allows all files signed by Microsoft. Diese Richtlinie wird empfohlen, für serveranwendungen wie SQL oder Exchange, oder wenn der Server von Agents von Microsoft veröffentlichten überwacht wird.This policy is recommended for server applications such as SQL or Exchange, or if the server is monitored by agents published by Microsoft.
  • DefaultWindows_Enforced: Ermöglicht nur die Dateien, die im Lieferumfang von Windows und gestattet keine anderen Anwendungen, die von Microsoft, wie z. B. Office veröffentlicht.DefaultWindows_Enforced: Allows only files that shipped in Windows and doesn't permit other applications released by Microsoft, such as Office. Diese Richtlinie empfiehlt sich für Server, der nur integrierte Serverrollen und Features wie z. B. Hyper-V ausgeführt werden.This policy is recommended for servers that run only built-in server roles and features such as Hyper-V.

Es wird empfohlen, dass Sie zuerst erstellen die codeintegritätsrichtlinie in im Überwachungsmodus (Protokollierung), um festzustellen, ob etwas fehlt, und die Richtlinie für produktionsworkloads Host erzwingt.It is recommended that you first create the CI policy in audit (logging) mode to see if it's missing anything, then enforce the policy for host production workloads.

Bei Verwendung der New-CIPolicy Cmdlet, um Ihre eigenen generieren codeintegritätsrichtlinie an, Sie müssen entscheiden, die regelebenen verwenden.If you use the New-CIPolicy cmdlet to generate your own code integrity policy, you will need to decide the rule levels to use. Es wird empfohlen, eine primäre Maß Verleger mit Fallback zu Hash, wodurch die meisten digital signierte Software aktualisiert werden, ohne die CI-Richtlinie zu ändern.We recommend a primary level of Publisher with fallback to Hash, which allows most digitally signed software to be updated without changing the CI policy. Neuer Software, die von demselben Herausgeber geschrieben kann auch auf dem Server installiert werden, ohne die CI-Richtlinie zu ändern.New software written by the same publisher can also be installed on the server without changing the CI policy. Ausführbare Dateien, die nicht digital signiert sind werden hashcodiert – Updates für diese Dateien erfordert, dass Sie eine neue CI-Richtlinie erstellen.Executables that are not digitally signed will be hashed -- updates to these files will require you to create a new CI policy. Weitere Informationen zu den verfügbaren Richtlinienebenen Regel CI, finden Sie unter bereitstellen anwendungssteuerungscode-Integritätsrichtlinien: Richtlinien und Dateiregeln und Cmdlet-Hilfe.For more information about the available CI policy rule levels, see Deploy code integrity policies: policy rules and file rules and cmdlet help.

  1. Generieren Sie eine neue codeintegritätsrichtlinie, auf dem Host Verweis.On the reference host, generate a new code integrity policy. Die folgenden Befehle erstellen eine Richtlinie auf die Verleger Ebene mit Fallback auf Hash.The following commands create a policy at the Publisher level with fallback to Hash. Klicken Sie dann konvertiert die XML-Datei in das Binärdateiformat ein, die Windows-Host-Überwachungsdienst müssen angewendet und messen die codeintegritätsrichtlinie bzw.It then converts the XML file to the binary file format Windows and HGS need to apply and measure the CI policy, respectively.

    New-CIPolicy -Level Publisher -Fallback Hash -FilePath 'C:\temp\HW1CodeIntegrity.xml' -UserPEs
    
    ConvertFrom-CIPolicy -XmlFilePath 'C:\temp\HW1CodeIntegrity.xml' -BinaryFilePath 'C:\temp\HW1CodeIntegrity.p7b'
    

    Hinweis

    Der obige Befehl erstellt eine CI-Richtlinie nur Überwachungsmodus aktiviert.The above command creates a CI policy in audit mode only. Nicht autorisierte Binärdateien aus, die auf dem Host ausgeführt wird nicht blockiert.It will not block unauthorized binaries from running on the host. Sie sollten nur erzwungene Richtlinien in der Produktion verwenden.You should only use enforced policies in production.

  2. Halten Sie Ihre Code Integrity-Richtliniendatei (XML-Datei), in dem Sie diese leicht finden können.Keep your Code Integrity policy file (XML file) where you can easily find it. Sie benötigen zum Bearbeiten dieser Datei später, um die codeintegritätsrichtlinie oder der Merge in zukünftigen Updates, die am System vorgenommenen Änderungen zu erzwingen.You will need to edit this file later to enforce the CI policy or merge in changes from future updates made to the system.

  3. Die CI-Richtlinie auf Ihrem Host Verweis anwenden:Apply the CI policy to your reference host:

    1. Führen Sie den folgenden Befehl zum Konfigurieren des Computers, um die CI-Richtlinie zu verwenden.Run the following command to configure the machine to use your CI policy. Sie können auch die CI-Richtlinie mit bereitstellen Gruppenrichtlinien oder System Center Virtual Machine Manager-.You can also deploy the CI policy with Group Policy or System Center Virtual Machine Manager.

      Invoke-CimMethod -Namespace root/Microsoft/Windows/CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{ FilePath = "C:\temp\HW1CodeIntegrity.p7b" }
      
    2. Starten Sie den Host aus, um die Richtlinie anzuwenden.Restart the host to apply the policy.

  4. Testen Sie die codeintegritätsrichtlinie, durch Ausführen einer typischen arbeitsauslastung.Test the code integrity policy by running a typical workload. Dazu kann beispielsweise ausgeführte virtuelle Computer, alle Fabric-Verwaltungs-Agents, die backup-Agents oder Tools auf dem Computer zur Problembehandlung.This may include running VMs, any fabric management agents, backup agents, or troubleshooting tools on the machine. Überprüfen Sie, ob Code Integrity Verstöße und aktualisieren Sie Ihrer CI-Richtlinie bei Bedarf zu.Check if there are any code integrity violations and update your CI policy if necessary.

  5. Ändern Sie die CI-Richtlinie erzwungenen Modus, indem Sie die folgenden Befehle ausführen, für die aktualisierten XML-Datei für die CI-Richtlinie.Change your CI policy to enforced mode by running the following commands against your updated CI policy XML file.

    Set-RuleOption -FilePath 'C:\temp\HW1CodeIntegrity.xml' -Option 3 -Delete
    
    ConvertFrom-CIPolicy -XmlFilePath 'C:\temp\HW1CodeIntegrity.xml' -BinaryFilePath 'C:\temp\HW1CodeIntegrity_enforced.p7b'
    
  6. Wenden Sie die CI-Richtlinie auf alle Hosts (mit identischer Hardware und Software-Konfiguration) mit den folgenden Befehlen:Apply the CI policy to all of your hosts (with identical hardware and software configuration) using the following commands:

    Invoke-CimMethod -Namespace root/Microsoft/Windows/CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{ FilePath = "C:\temp\HW1CodeIntegrity.p7b" }
    
    Restart-Computer
    

    Hinweis

    Seien Sie vorsichtig beim Anwenden von CI-Richtlinien auf Hosts und beim Aktualisieren von Software auf diesen Computern.Be careful when applying CI policies to hosts and when updating any software on these machines. Alle Kernelmodus-Treiber, die mit der CI-Richtlinie nicht konform sind können verhindern, dass den Computer gestartet wurde.Any kernel mode drivers that are non-compliant with the CI Policy may prevent the machine from starting up.

  7. Geben Sie die binäre Datei (in diesem Beispiel HW1CodeIntegrity_enforced.p7b) für den HGS-Administrator.Provide the binary file (in this example, HW1CodeIntegrity_enforced.p7b) to the HGS administrator.

  8. Kopieren Sie in der Domäne des Host-Überwachungsdienst die codeintegritätsrichtlinie in ein HGS-Server, und führen Sie den folgenden Befehl aus.In the HGS domain, copy the code integrity policy to an HGS server and run the following command.

    Für <PolicyName>, geben Sie einen Namen für die CI-Richtlinie, die den Typ des Hosts beschreibt es gilt.For <PolicyName>, specify a name for the CI policy that describes the type of host it applies to. Eine bewährte Methode ist, um den Namen nach dem Hersteller/Modell des Computers und keine spezielle Software-Konfiguration, die darauf ausgeführt.A best practice is to name it after the make/model of your machine and any special software configuration running on it.
    Für <Path>, geben Sie den Pfad und Dateinamen, der die codeintegritätsrichtlinie.For <Path>, specify the path and filename of the code integrity policy.

    Add-HgsAttestationCIPolicy -Path <Path> -Name '<PolicyName>'
    

Erfassen Sie die TPM-Baseline für jede eindeutige Gruppe von hardwareCapture the TPM baseline for each unique class of hardware

Eine TPM-Baseline ist erforderlich für jede eindeutige Hardware in Ihrem Datencenter-Fabric.A TPM baseline is required for each unique class of hardware in your datacenter fabric. Verwenden Sie einen "Verweis-Host" erneut aus.Use a "reference host" again.

  1. Auf dem Host Verweis sicher, dass die Hyper-V-Rolle und das Feature Hyper-V-Unterstützung für Host-Überwachungsdiensts installiert sind.On the reference host, make sure that the Hyper-V role and the Host Guardian Hyper-V Support feature are installed.

    Warnung

    Das Feature Hyper-V-Unterstützung für Host-Überwachungsdiensts ermöglicht die Virtualisierung basierende Schutz der Integrität des Codes, die möglicherweise bei einigen Geräten nicht kompatibel sind.The Host Guardian Hyper-V Support feature enables Virtualization-based protection of code integrity that may be incompatible with some devices. Es wird dringend empfohlen, diese Konfiguration in Ihrem Lab testen, bevor Sie dieses Feature aktivieren.We strongly recommend testing this configuration in your lab before enabling this feature. Andernfalls kann es zu unerwarteten Fehlern und sogar zu Datenverlusten oder zu einem Bluescreen (STOP-Fehler) kommen.Failure to do so may result in unexpected failures up to and including data loss or a blue screen error (also called a stop error).

    Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart
    
  2. Wenn die Basisrichtlinie erfassen möchten, führen Sie den folgenden Befehl in einer Windows PowerShell-Konsole mit erhöhten Rechten.To capture the baseline policy, run the following command in an elevated Windows PowerShell console.

    Get-HgsAttestationBaselinePolicy -Path 'HWConfig1.tcglog'
    

    Hinweis

    Sie benötigen, verwenden Sie die - SkipValidation Flag, wenn der Verweis-Host keinen sicheren Start aktiviert, ein IOMMU vorhanden, aktivierter Virtualisierungsbasierter Sicherheit und ausgeführt wird oder eine codeintegritätsrichtlinie angewendet.You will need to use the -SkipValidation flag if the reference host does not have Secure Boot enabled, an IOMMU present, Virtualization Based Security enabled and running, or a code integrity policy applied. Diese Überprüfungen sollen Sie die Mindestanforderungen für eine abgeschirmte VM auf dem Host ausgeführten aufmerksam zu machen.These validations are designed to make you aware of the minimum requirements of running a shielded VM on the host. Mit dem Flag - SkipValidation ändert sich nicht auf die Ausgabe des Cmdlets aus. Es werbetour lediglich die Fehler.Using the -SkipValidation flag does not change the output of the cmdlet; it merely silences the errors.

  3. Geben Sie die TPM-Baseline (TCGlog-Datei) für dem HGS-Administrator.Provide the TPM baseline (TCGlog file) to the HGS administrator.

  4. Kopieren Sie in der Domäne des Host-Überwachungsdienst die TCGlog-Datei auf einem Host-Überwachungsdienst-Server, und führen Sie den folgenden Befehl aus.In the HGS domain, copy the TCGlog file to an HGS server and run the following command. In der Regel werden Sie benennen Sie die Richtlinie nach dem die Klasse der Hardware, den sie darstellt (z. B. "Hersteller-Modell-Revision").Typically, you will name the policy after the class of hardware it represents (for example, "Manufacturer Model Revision").

    Add-HgsAttestationTpmPolicy -Path <Filename>.tcglog -Name '<PolicyName>'
    

Nächster SchrittNext step