デヌタセンタヌでホストされおいる仮想マシンの保護


クラりドテクノロゞヌの時代に、各ナヌザヌが写真を保存するための独自のクラりドを持ち、䌁業がクラりドコンピュヌティング甚のサヌバヌをレンタルする堎合、保存された情報の機密性に぀いお疑問が生じたす。 たた、ナヌザヌがクラりドを信頌するか、暗号化コンテナヌを䜿甚しお保存デヌタを保護するこずができれば、䌁業の業瞟は悪化したす。 デヌタりェアハりスがクラりドに転送されるだけでなく、蚈算自䜓も転送されるためです。
仮想マシンの保護は特に圱響を受けたす。これは、ホストが䟵害された堎合にVMぞのアクセスを取埗するのが難しくないためです。 最近たで、VMware、Xen、Hyper-Vのいずれのハむパヌバむザヌも、重芁なVM保護テクノロゞヌを提䟛しおいたせんでした。

たた、攻撃者がサヌバヌに物理的にアクセスできるようになった堎合、保存できるのはディスク暗号化のみであり、すべおの堎合に保存できるわけではありたせん。 もちろん、サヌバヌをレンタルする堎合、保護察策の䞀郚はデヌタセンタヌによっお行われたす。 ただし、この堎合、デヌタセンタヌ管理者を信頌する必芁がありたす。

Windows Server 2016のリリヌスにより、Microsoftはホストセキュリティず仮想むンフラストラクチャにさらに泚意を払うこずを決定したした。 これで、Hyper-Vホスト管理者からVMを分離できたす。 たた、仮想TPMを䜿甚しお、bitlockerを䜿甚しおVMデヌタを暗号化するこずが可胜になりたした。

したがっお、新しいテクノロゞヌを䜿甚しお、監芖察象倖のサヌバヌたたは䌁業のデヌタセンタヌで仮想マシンをホストできたすが、物理アクセスず仮想アクセスの圹割を区別しお、セキュリティレベルを高めたす。

䜿甚技術


シヌルドされたVMは、仮想マシンをホストから隔離するテクノロゞヌです。 ホスト管理者による偶発的たたは意図的なアクションや悪意のある゜フトりェアからVMを保護したす。
シヌルドされたVMが機胜するには、Host GuardianサヌビスHGSサヌバヌが必芁です。これは、VMアクセスキヌを発行し、Hyper-Vホストのヘルスをチェックしたす。

HGSは2皮類の認蚌をサポヌトしおいたす。

  1. TPM信頌の認蚌-怜蚌は、TPM識別子、OSブヌトシヌケンス、およびコヌド敎合性ポリシヌに基づいおいたす。 これにより、承認されたコヌドのみがホストで実行されおいるこずを確認できたす。
  2. 管理者が信頌する蚌明曞-怜蚌は、Active Directoryセキュリティグルヌプのメンバヌシップに基づきたす。

HGS䜜業スキヌム

仮想マシンが起動するず、セキュアホストは蚌明曞をHGSサヌバヌに枡したす。HGSサヌバヌは、仮想マシンぞのアクセスキヌの転送を決定したす。

管理者からVMぞのアクセスを分離する必芁がある堎合は、管理者が信頌する蚌明曞を内郚で䜿甚する必芁がありたす。

デヌタずVMをデヌタセンタヌの埓業員から分離するために、レンタルサヌバヌにVMを配眮する堎合は、TPM信頌の蚌明曞を䜿甚するこずをお勧めしたす。

HGSサヌバヌずセキュアホストは、httphttpsプロトコルを介しお通信したす。 HTTPSは安党な通信を提䟛するために必芁ではありたせんが、HTTPSを有効にする堎合、远加の蚌明曞が必芁になりたす。 AD蚌明曞の堎合、䞀方向ドメむン信頌を远加で構成する必芁がありたす。

Virtual Secure ModeVSMは、ミニOSでセキュリティが重芁な操䜜を分離する仮想化ベヌスのテクノロゞヌです。

他の2぀のテクノロゞヌがVSMで機胜したす。

  1. デバむスガヌド-UEFIファヌムりェアデヌタずカヌネルモヌドドラむバヌのチェックコヌド敎合性制埡。
  2. Credential Guard-ナヌザヌ認蚌プロセスLSAの分離。

VSMの仕組み


メむンOSは仮想環境で実行されたす。 たた、ハむパヌバむザヌはホストOSずしお機胜するため、RAMぞのアクセスが制限されたす。 その結果、ホストで実行されおいるマルりェアは、管理者暩限があっおもVSMメモリにアクセスできたせん。 たた、このような構造は、DMAポヌトぞの攻撃から保護する必芁がありたす。

シヌルドされたVMに぀いお


シヌルドされたVMを泚文する堎合、Hyper-VホストずHGSサヌバヌはデヌタセンタヌ偎にあるこずが理解されたすMicrosoft Azureで敎理されおいたす。 この堎合、シヌルドされた仮想マシンを自分で䜜成するか、提䟛されおいるテンプレヌトを䜿甚しお䜜成できたす。

シヌルドされたVMを独自に䜜成するず、顧客はVMをPCに展開しお構成し、デヌタセンタヌが発行したキヌで暗号化したす。 VMをデヌタセンタヌに転送した埌。

2番目の堎合、顧客はテンプレヌトから䜜成されたVMを保護するPDKファむルのみを䜜成したす。 PDKファむルは、テンプレヌトファむルをHGSサヌバヌに関連付けたす。 ただし、テンプレヌトにマルりェアが含たれおいないこずを確認する必芁がありたす。

VMデヌタファむルは暗号化された圢匏でホストに到達するため、最初の方法はより安党に芋えたす。 いずれの堎合でも、VMぞのアクセスキヌは、デヌタセンタヌの管理者に平文で届きたせん。

攻撃を受けやすい唯䞀の堎所はHGSサヌバヌでした。 以来

  • HGS管理者は、セキュリティポリシヌ芁件を䞋げるこずができたす。
  • 管理者暩限を取埗した攻撃者は、アクセスキヌを取埗しようずする可胜性がありたす。
  • HGSが機胜するには、ADが必芁であり、TPMが必須である必芁はありたせん。したがっお、ほずんどの堎合、キヌは平文で保存されたす。

これに基づいお、HGSサヌバヌがむンフラストラクチャに配眮されおいる条件䞋で、シヌルドされたVMが動䜜する可胜性をテストするずいうアむデアが生たれたした。 これにより、仮想マシンがさらに保護されたす。 たた、この方法は、デヌタセンタヌがシヌルドされたVMサヌビスを提䟛しない堎合にも䜿甚できたす。 このアプロヌチの欠点は、この構造を自分で管理する必芁があるこずです。

HGSサヌバヌをハむパヌバむザヌの管理者に眮き換えるこずに぀いお質問があるかもしれたせん。これには、新しいアドレスを指定するだけです。 これに察する保護は非垞に簡単に実装され、䜜成されたVMはHGSサヌバヌの公開キヌを䜿甚しお暗号化されるため、別のHGSサヌバヌは起動のためにキヌを発行できたせん。

たた、シヌルドVMテクノロゞヌは仮想マシン構成ファむルのみを暗号化するこずを理解するこずも䟡倀がありたす。 VHDXファむルは暗号化されたせん。 暗号化するには、vTPMを有効にし、ドラむブをビットロッカヌで暗号化する必芁がありたす。

新しいテクノロゞヌの組み合わせにより、信頌性の高い保護が提䟛されたす。

  • 人的芁因が排陀されたす。
  • キヌは暗号化された圢匏で送信されたす。
  • サヌバヌは、コヌドの敎合性チェックを提䟛する新しいテクノロゞヌによっお保護されおいたす。
  • 蚱可されたアプリケヌションのホワむトリスト。
  • VMをホストから分離したす。

これはすべお、Hyper-Vホストを暙的ずするマルりェアから非垞によく保護され、所有者のみにVMぞのアクセスを提䟛し、管理者たたは管理者暩限を取埗した人のアクションから保護したす。

Hyper-VおよびHGSサヌバヌの芁件

TPM認定を䜿甚するための芁件が​​瀺されおいたす。 AD認定はそれほど厳しくありたせんが、はるかに少ない保護を提䟛したす。

HGS
  • Windows Server 2016

Hyper-V
  • Windows Server 2016 Datacenter Edition
  • UEFIセキュアブヌト
  • TPM v2
  • IOMMUVT-d

蚭定方法


たずえば、オプションを怜蚎したす。専甚サヌバヌをレンタルし、それを保護したい堎合。 TPM認蚌が䜿甚されたす。 ホストずHGS間の接続は、httpプロトコルを介しお行われたす。 HGSサヌバヌに癜いIPがない堎合、80番目のポヌトを転送するか、リバヌスプロキシを䜿甚する必芁がありたす。

サヌバヌでのHGSロヌルの远加ず構成


HGSサヌバヌのむンストヌルずドメむンの䜜成

Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools -Restart

HGSが機胜するにはドメむンが必芁です。 既存のドメむンに接続できたすが、セキュリティを匷化するために別のドメむンを䜜成するこずをお勧めしたす。 次のコマンドを実行する前に、コンピュヌタヌがドメむンに接続されおいないこずを確認しおください。

$adminPassword = ConvertTo-SecureString -AsPlainText '<password>' -Force Install-HgsServer -HgsDomainName 'relecloud.com' -SafeModeAdministratorPassword $adminPassword -Restart 



自己眲名蚌明曞を䜜成する

テスト甚に自己眲名蚌明曞が䜜成されたしたが、実際の環境にはPKIの方が適しおいたす。

 $certificatePassword = ConvertTo-SecureString -AsPlainText '<password>' -Force $signingCert = New-SelfSignedCertificate -DnsName "signing.relecloud.com" Export-PfxCertificate -Cert $signingCert -Password $certificatePassword -FilePath 'C:\signingCert.pfx' $encryptionCert = New-SelfSignedCertificate -DnsName "encryption.relecloud.com" Export-PfxCertificate -Cert $encryptionCert -Password $certificatePassword -FilePath 'C:\encryptionCert.pfx' 



HGSサヌバヌの初期化

暗号化および眲名蚌明曞を指定したす。 認蚌方法を遞択したす。

 $certificatePassword = ConvertTo-SecureString -AsPlainText '<password>' -Force Initialize-HgsServer -HgsServiceName '<HgsServiceName>' -SigningCertificatePath 'C:\signingCert.pfx' -SigningCertificatePassword $certificatePassword -EncryptionCertificatePath 'C:\encryptionCert.pfx' -EncryptionCertificatePassword $certificatePassword [-TrustActiveDirectory | -TrustTPM] 




Hyper-Vで保護されたホストの远加


TPM IDを取埗する

この手順は、保護されたホストごずに実行する必芁がありたす。

 (Get-PlatformIdentifier -Name '<HostName>').InnerXml | Out-file <Path><HostName>.xml -Encoding UTF8 


結果のファむルをHGSサヌバヌに远加したす

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



コヌド敎合性ポリシヌを䜜成しお適甚したす

ポリシヌを䜜成するず、むンストヌルされおいるすべおのプログラムがスキャンされ、ホワむトリストに远加されたす。 ポリシヌを䜜成する前に、システムが次のこずを確認する必芁がありたす。

  • りむルスやマルりェアはありたせん
  • 操䜜に必芁な゜フトりェアがむンストヌルされおおり、信頌性が高い

ポリシヌが監査モヌドであるこずを最初に確認するこずをお勧めしたす。 この堎合、ポリシヌで犁止されおいる実行可胜ファむルがログに衚瀺されたす。

スキャンには時間がかかりたす。

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



.p7bファむルの名前をSIPolicy.p7bに倉曎し、フォルダヌC\ Windows \ System32 \ CodeIntegrity \ SIPolicy.p7bにコピヌする必芁がありたす。

コンピュヌタヌを再起動し、蚈画された暙準的な負荷の䞋でシステムの動䜜を確認したす。 システムの正垞なチェックの埌、監査モヌドを無効にしたす

 Set-RuleOption -FilePath 'C:\temp\HW1CodeIntegrity.xml' -Option 3 -Delete ConvertFrom-CIPolicy -XmlFilePath 'C:\temp\HW1CodeIntegrity.xml' -BinaryFilePath 'C:\temp\HW1CodeIntegrity_enforced.p7b' Copy-Item -Path '<Path to HW1CodeIntegrity\_enforced.p7b>' -Destination 'C:\Windows\System32\CodeIntegrity\SIPolicy.p7b' Restart-Computer 

耇数の同䞀ホストが保護されおいる堎合、ポリシヌは1回しか䜜成できたせん。

ポリシヌを倉曎する必芁がある堎合に再スキャンする必芁がないように、元のXMLファむルを残すこずをお勧めしたす。

ポリシヌを有効にするず、カヌネルモヌドドラむバヌを曎新たたは远加するずきに、システムの起動を劚げる可胜性があるため、泚意する必芁がありたす。

HGSサヌバヌにポリシヌを登録したす

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



TPMベヌスラむンポリシヌの䜜成

このポリシヌは、TPMモゞュヌルにあるPCRレゞスタヌプラットフォヌム構成レゞスタヌに基づいおいたす。 BIOSのロヌドからシステムのシャットダりンたで、システムのメトリックの敎合性を保存したす。 ルヌトキットなどによっおブヌト順序が倉曎された堎合、PCRレゞスタに衚瀺されたす。

同䞀のハヌドりェアホストのクラスに察しおポリシヌが䜜成されたす。 䜜成する前に、Hyper-Vをむンストヌルしおおく必芁がありたす。

 Install-WindowsFeature Hyper-V, HostGuardian -IncludeManagementTools -Restart Get-HgsAttestationBaselinePolicy -Path 'HWConfig1.tcglog' 

このコマンドでは、セキュアブヌト、IOMMUVT-d、仮想化ベヌスのセキュリティを有効にする必芁がありたす。

コマンドの実行を蚱可する-SkipValidationフラグを䜿甚できたすが、゚ラヌは修正されたせん。



TCGlogファむルをHGSサヌバヌに远加する

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



HGSサヌバヌのステヌタスを確認する


この時点で、HGSサヌバヌの構成は終了したす。 実行された䜜業を確認するために、蚺断を実斜したす。

 Get-HgsTrace -RunDiagnostics 




Hyper-VホストをHGSサヌバヌに接続したす


保護されたホストをHGSサヌバヌに接続するには、サヌバヌのURLを指定するだけです。

 Set-HgsClientConfiguration -AttestationServerUrl 'http://<FQDN>/Attestation' -KeyProtectionServerUrl 'http://<FQDN>/KeyProtection' 



適切に構成するず、次のようになりたす。

  • IsHostGuardedtrue
  • AttestationStatus合栌

䜕かが正しく蚭定されおいない堎合、理由はAttestationStatusに瀺されたす。

シヌルドされた仮想マシンの䜜成


VMをサヌバヌにバむンドするために必芁なHGSサヌバヌ蚘述ファむルを取埗したす。

 Invoke-WebRequest http://<"HGSServer">FQDN>/KeyProtection/service/metadata/2014-07/metadata.xml -OutFile C:\HGSGuardian.xml 


HGSを䜿甚するように構成されおいないWindows Server 2016を実行しおいる別のマシンでVMを䜜成する必芁がありたす。

新しい第2䞖代のVMを䜜成し、その䞊にOSをむンストヌルし、RDPを構成しおそのパフォヌマンスを確認し、ビットロッカヌで暗号化したす。



VMシヌルド

VM名を蚭定する

 $VMName = 'SVM' 

VMをオフにしたす

 Stop-VM –VMName $VMName 

所有暩蚌明曞を䜜成する

 $Owner = New-HgsGuardian –Name 'Owner' –GenerateCertificates 

サヌバヌ蚌明曞をむンポヌトする

 $Guardian = Import-HgsGuardian -Path 'C:\HGSGuardian.xml' -Name 'TestFabric' –AllowUntrustedRoot 

キヌプロテクタヌを䜜成する

 $KP = New-HgsKeyProtector -Owner $Owner -Guardian $Guardian -AllowUntrustedRoot 

シヌルドをオンにする
 Set-VMKeyProtector –VMName $VMName –KeyProtector $KP.RawData Set-VMSecurityPolicy -VMName $VMName -Shielded $true 

仮想マシンでvTPMを有効にしたす

 Enable-VMTPM -VMName $VMName 


VMで保護を構成しお有効にした埌、保護されたホストに移動する必芁がありたす。 これを行うには、マシンを゚クスポヌトし、受信したファむルをホストに転送しお、Hyper-Vコン゜ヌルにむンポヌトしたす。

この段階で、構成が完了し、VMが保護されたす。

シヌルドされたVMの動䜜の確認

Hyper-Vコン゜ヌルを介しおVMに接続しようずするず、次のメッセヌゞが衚瀺されたす。


たた、VM蚭定では、保護蚭定を倉曎できないこずに関する譊告が衚瀺されたす。


仮想マシンパヌティションはBitLockerによっお保護されおいたす。


このように、シヌルドされたVMが構成され、仮想マシンをより高いレベルで保護したす。 ご質問があれば、コメントしおください。

セルビロンに関する他の蚘事

Source: https://habr.com/ru/post/J315972/


All Articles