Mengotorisasi host yang dilindungi menggunakan pengesahan berbasis TPM

Berlaku untuk: Windows Server 2022, Windows Server 2019, Windows Server 2016

Mode TPM menggunakan pengidentifikasi TPM (juga disebut pengidentifikasi platform atau kunci dukungan [EKpub]) untuk mulai menentukan apakah host tertentu diotorisasi sebagai "dijaga." Mode pengesahan ini menggunakan Boot Aman dan pengukuran integritas kode untuk memastikan bahwa host Hyper-V tertentu dalam keadaan sehat dan hanya menjalankan kode tepercaya. Agar pengesahan memahami apa itu dan tidak sehat, Anda harus menangkap artefak berikut:

  1. Pengidentifikasi TPM (EKpub)

    • Informasi ini unik untuk setiap host Hyper-V
  2. Garis besar TPM (pengukuran boot)

    • Ini berlaku untuk semua host Hyper-V yang berjalan pada kelas perangkat keras yang sama
  3. Kebijakan integritas kode (daftar izin biner yang diizinkan)

    • Ini berlaku untuk semua host Hyper-V yang berbagi perangkat keras dan perangkat lunak umum

Sebaiknya Anda mengambil kebijakan garis besar dan CI dari "host referensi" yang mewakili setiap kelas unik konfigurasi perangkat keras Hyper-V dalam pusat data Anda. Dimulai dengan Windows Server versi 1709, sampel kebijakan CI disertakan di C:\Windows\schemas\CodeIntegrity\ExamplePolicies.

Kebijakan pengesahan versi

Windows Server 2019 memperkenalkan metode baru untuk pengesahan, yang disebut pengesahan v2, di mana sertifikat TPM harus ada untuk menambahkan EKPub ke HGS. Metode pengesahan v1 yang digunakan di Windows Server 2016 memungkinkan Anda mengambil alih pemeriksaan keamanan ini dengan menentukan bendera -Force saat Anda menjalankan Add-HgsAttestationTpmHost atau cmdlet pengesahan TPM lainnya untuk menangkap artefak. Dimulai dengan Windows Server 2019, pengesahan v2 digunakan secara default dan Anda perlu menentukan bendera -PolicyVersion v1 saat Anda menjalankan Add-HgsAttestationTpmHost jika Anda perlu mendaftarkan TPM tanpa sertifikat. Bendera -Force tidak berfungsi dengan pengesahan v2.

Host hanya dapat membuktikan jika semua artefak (garis besar EKPub + TPM + Kebijakan CI) menggunakan versi pengesahan yang sama. Pengesahan V2 dicoba terlebih dahulu, dan jika gagal, pengesahan v1 digunakan. Ini berarti jika Anda perlu mendaftarkan pengidentifikasi TPM dengan menggunakan pengesahan v1, Anda juga perlu menentukan bendera -PolicyVersion v1 untuk menggunakan pengesahan v1 saat Anda mengambil garis besar TPM dan membuat kebijakan CI. Jika garis besar TPM dan kebijakan CI dibuat dengan menggunakan pengesahan v2 dan kemudian Anda perlu menambahkan host yang dijaga tanpa sertifikat TPM, Anda perlu membuat ulang setiap artefak dengan bendera -PolicyVersion v1.

Ambil pengidentifikasi TPM (pengidentifikasi platform atau EKpub) untuk setiap host

  1. Di domain fabric, pastikan TPM pada setiap host siap digunakan - yaitu, TPM diinisialisasi dan kepemilikan diperoleh. Anda dapat memeriksa status TPM dengan membuka TPM Management Console (tpm.msc) atau dengan menjalankan Get-Tpm di jendela Windows PowerShell yang ditingkatkan. Jika TPM Anda tidak dalam status Siap , Anda harus menginisialisasinya dan mengatur kepemilikannya. Ini dapat dilakukan di Konsol Manajemen TPM atau dengan menjalankan Initialize-Tpm.

  2. Pada setiap host yang dijaga, jalankan perintah berikut di konsol Windows PowerShell yang ditinggikan untuk mendapatkan EKpub-nya. Untuk <HostName>, ganti nama host unik dengan sesuatu yang cocok untuk mengidentifikasi host ini - ini bisa menjadi nama host-nya atau nama yang digunakan oleh layanan inventori fabric (jika tersedia). Untuk kenyamanan, beri nama file output menggunakan nama host.

    (Get-PlatformIdentifier -Name '<HostName>').InnerXml | Out-file <Path><HostName>.xml -Encoding UTF8
    
  3. Ulangi langkah-langkah sebelumnya untuk setiap host yang akan menjadi host yang dijaga, pastikan untuk memberi nama unik pada setiap file XML.

  4. Berikan file XML yang dihasilkan kepada administrator HGS.

  5. Di domain HGS, buka konsol Windows PowerShell yang ditinggikan di server HGS dan jalankan perintah berikut. Ulangi perintah untuk setiap file XML.

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

    Catatan

    Jika Anda mengalami kesalahan saat menambahkan pengidentifikasi TPM mengenai Sertifikat Kunci Dukungan (EKCert) yang tidak tepercaya, pastikan bahwa sertifikat akar TPM tepercaya telah ditambahkan ke simpul HGS. Selain itu, beberapa vendor TPM tidak menggunakan EKCerts. Anda dapat memeriksa apakah EKCert hilang dengan membuka file XML di editor seperti Notepad dan memeriksa pesan kesalahan yang menunjukkan tidak ada EKCert yang ditemukan. Jika demikian, dan Anda percaya bahwa TPM di komputer Anda autentik, Anda dapat menggunakan -Force parameter untuk menambahkan pengidentifikasi host ke HGS. Di Windows Server 2019, Anda juga perlu menggunakan -PolicyVersion v1 parameter saat menggunakan -Force. Ini membuat kebijakan yang konsisten dengan perilaku Windows Server 2016 dan akan mengharuskan Anda untuk menggunakan -PolicyVersion v1 saat mendaftarkan kebijakan CI dan garis besar TPM juga.

Membuat dan menerapkan kebijakan integritas kode

Kebijakan integritas kode membantu memastikan bahwa hanya executable yang Anda percayai untuk dijalankan pada host yang diizinkan untuk dijalankan. Malware dan executable lain di luar executable tepercaya dicegah untuk berjalan.

Setiap host yang dijaga harus memiliki kebijakan integritas kode yang diterapkan untuk menjalankan VM terlindungi dalam mode TPM. Anda menentukan kebijakan integritas kode yang tepat yang Anda percayai dengan menambahkannya ke HGS. Kebijakan integritas kode dapat dikonfigurasi untuk memberlakukan kebijakan, memblokir perangkat lunak apa pun yang tidak mematuhi kebijakan, atau hanya mengaudit (mencatat peristiwa ketika perangkat lunak yang tidak ditentukan dalam kebijakan dijalankan).

Dimulai dengan Windows Server versi 1709, contoh kebijakan integritas kode disertakan dengan Windows di C:\Windows\schemas\CodeIntegrity\ExamplePolicies. Dua kebijakan disarankan untuk Windows Server:

  • AllowMicrosoft: Memungkinkan semua file yang ditandatangani oleh Microsoft. Kebijakan ini direkomendasikan untuk aplikasi server seperti SQL atau Exchange, atau jika server dipantau oleh agen yang diterbitkan oleh Microsoft.
  • DefaultWindows_Enforced: Hanya mengizinkan file yang dikirim di Windows dan tidak mengizinkan aplikasi lain yang dirilis oleh Microsoft, seperti Office. Kebijakan ini direkomendasikan untuk server yang hanya menjalankan peran dan fitur server bawaan seperti Hyper-V.

Disarankan agar Anda terlebih dahulu membuat kebijakan CI dalam mode audit (pengelogan) untuk melihat apakah kebijakan tersebut kehilangan apa pun, lalu menerapkan kebijakan untuk beban kerja produksi host.

Jika Anda menggunakan cmdlet New-CIPolicy untuk menghasilkan kebijakan integritas kode Anda sendiri, Anda harus memutuskan tingkat aturan yang akan digunakan. Kami merekomendasikan tingkat utama Publisher dengan fallback ke Hash, yang memungkinkan sebagian besar perangkat lunak yang ditandatangani secara digital diperbarui tanpa mengubah kebijakan CI. Perangkat lunak baru yang ditulis oleh penerbit yang sama juga dapat diinstal di server tanpa mengubah kebijakan CI. Executable yang tidak ditandatangani secara digital akan di-hash. Pembaruan pada file-file ini akan mengharuskan Anda membuat kebijakan CI baru. Untuk informasi selengkapnya tentang tingkat aturan kebijakan CI yang tersedia, lihat Menyebarkan kebijakan integritas kode: aturan kebijakan dan aturan file dan bantuan cmdlet.

  1. Pada host referensi, buat kebijakan integritas kode baru. Perintah berikut membuat kebijakan di tingkat Penerbit dengan fallback ke Hash. Kemudian mengonversi file XML ke format file biner Windows dan HGS masing-masing perlu menerapkan dan mengukur kebijakan CI.

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

    Catatan

    Perintah di atas hanya membuat kebijakan CI dalam mode audit. Ini tidak akan memblokir biner yang tidak sah untuk berjalan pada host. Anda hanya boleh menggunakan kebijakan yang diberlakukan dalam produksi.

  2. Simpan file kebijakan Integritas Kode (file XML) tempat Anda dapat dengan mudah menemukannya. Anda perlu mengedit file ini nanti untuk memberlakukan kebijakan CI atau menggabungkan perubahan dari pembaruan mendatang yang dibuat ke sistem.

  3. Terapkan kebijakan CI ke host referensi Anda:

    1. Jalankan perintah berikut untuk mengonfigurasi komputer untuk menggunakan kebijakan CI Anda. Anda juga dapat menyebarkan kebijakan CI dengan Kebijakan Grup atau Manajer Komputer Virtual Pusat Sistem.

      Invoke-CimMethod -Namespace root/Microsoft/Windows/CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{ FilePath = "C:\temp\HW1CodeIntegrity.p7b" }
      
    2. Mulai ulang host untuk menerapkan kebijakan.

  4. Uji kebijakan integritas kode dengan menjalankan beban kerja umum. Ini mungkin termasuk menjalankan VM, agen manajemen fabric, agen cadangan, atau alat pemecahan masalah pada komputer. Periksa apakah ada pelanggaran integritas kode dan perbarui kebijakan CI Anda jika perlu.

  5. Ubah kebijakan CI Anda ke mode yang diberlakukan dengan menjalankan perintah berikut terhadap file XML kebijakan CI yang diperbarui.

    Set-RuleOption -FilePath 'C:\temp\HW1CodeIntegrity.xml' -Option 3 -Delete
    
    ConvertFrom-CIPolicy -XmlFilePath 'C:\temp\HW1CodeIntegrity.xml' -BinaryFilePath 'C:\temp\HW1CodeIntegrity_enforced.p7b'
    
  6. Terapkan kebijakan CI ke semua host Anda (dengan konfigurasi perangkat keras dan perangkat lunak yang identik) menggunakan perintah berikut:

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

    Catatan

    Berhati-hatilah saat menerapkan kebijakan CI ke host dan saat memperbarui perangkat lunak apa pun di komputer ini. Setiap driver mode kernel yang tidak mematuhi Kebijakan CI dapat mencegah mesin memulai.

  7. Berikan file biner (dalam contoh ini, HW1CodeIntegrity_enforced.p7b) kepada administrator HGS.

  8. Di domain HGS, salin kebijakan integritas kode ke server HGS dan jalankan perintah berikut.

    Untuk <PolicyName>, tentukan nama untuk kebijakan CI yang menjelaskan jenis host yang berlaku untuknya. Praktik terbaik adalah menamainya setelah membuat/memodelkan mesin Anda dan konfigurasi perangkat lunak khusus apa pun yang berjalan di atasnya. Untuk <Path>, tentukan jalur dan nama file kebijakan integritas kode.

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

    Catatan

    Jika Anda menggunakan kebijakan integritas kode yang ditandatangani, daftarkan salinan kebijakan yang sama yang tidak ditandatangani dengan HGS. Tanda tangan pada kebijakan integritas kode digunakan untuk mengontrol pembaruan kebijakan, tetapi tidak diukur ke dalam TPM host dan oleh karena itu tidak dapat dibuktikan oleh HGS.

Ambil garis besar TPM untuk setiap kelas perangkat keras yang unik

Garis besar TPM diperlukan untuk setiap kelas perangkat keras unik di fabric pusat data Anda. Gunakan "host referensi" lagi.

  1. Pada host referensi, pastikan peran Hyper-V dan fitur Host Guardian Hyper-V Support diinstal.

    Peringatan

    Fitur Dukungan Hyper-V Host Guardian memungkinkan perlindungan integritas kode berbasis Virtualisasi yang mungkin tidak kompatibel dengan beberapa perangkat. Sebaiknya uji konfigurasi ini di lab Anda sebelum mengaktifkan fitur ini. Kegagalan untuk melakukannya dapat mengakibatkan kegagalan tak terduga hingga dan termasuk kehilangan data atau kesalahan layar biru (juga disebut kesalahan berhenti).

    Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart
    
  2. Untuk mengambil kebijakan garis besar, jalankan perintah berikut di konsol Windows PowerShell yang ditingkatkan.

    Get-HgsAttestationBaselinePolicy -Path 'HWConfig1.tcglog'
    

    Catatan

    Anda harus menggunakan bendera -SkipValidation jika host referensi tidak mengaktifkan Boot Aman, ada IOMMU, Keamanan Berbasis Virtualisasi diaktifkan dan berjalan, atau kebijakan integritas kode diterapkan. Validasi ini dirancang untuk membuat Anda mengetahui persyaratan minimum menjalankan VM terlindungi pada host. Menggunakan bendera -SkipValidation tidak mengubah output cmdlet; itu hanya membungkam kesalahan.

  3. Berikan garis besar TPM (file TCGlog) kepada administrator HGS.

  4. Di domain HGS, salin file TCGlog ke server HGS dan jalankan perintah berikut. Biasanya, Anda akan memberi nama kebijakan setelah kelas perangkat keras yang diwakilinya (misalnya, "Revisi Model Produsen").

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

Langkah selanjutnya