VMware vSphereでVirtualization-Based Security(VBS)とCredential Guardを有効化する設定手順

攻撃者にローカル管理者権限を奪取されたらどうなるのか?

Windows Serverをオフィスビルに例えるなら、Administratorアカウントはまさにマスターキーのような存在です。マルウェアが侵入し、SYSTEM権限や管理者権限への昇格を許してしまうと、従来の一般的なセキュリティ対策はほぼ無力化してしまいます。

攻撃者はMimikatzのおなじみのコマンドである sekurlsa::logonpasswords を実行するだけで十分です。瞬時にLSASS(Local Security Authority Subsystem Service)プロセスのメモリがすべてダンプされ、当該サーバーにログオンしたことのある全アカウントのNTLMハッシュやKerberosチケットが暴かれてしまいます。攻撃者はここから容易にPass-the-Hash攻撃を仕掛け、わずか数分でドメインコントローラーへと水平展開(ラテラルムーブメント)を完了させます。

この問題の根本原因を解決するため、MicrosoftとVMwareはハードウェアを活用したアプローチを採用しました。認証情報の格納場所を完全に独立した不可侵のメモリ領域へと隔離する手法です。これこそが、Virtualization-Based Security(VBS)およびCredential Guardの動作メカニズムです。

仮想マシン上で認証情報を保護する3つの手法の比較

仮想化基盤上でWindows Serverを運用管理する際、主に3つの選択肢が考えられます。

  • 手法1:従来のウイルス対策ソフトやEDRの導入。 OS上で直接セキュリティエージェントを実行し、LSASSメモリの読み取り動作を監視します。導入は容易ですが、APIフックの解除(Unhooking)や脆弱な正規ドライバの悪用(BYOVD)によって攻撃者に無効化されやすいという弱点があります。
  • 手法2:階層型管理(Tiering)アーキテクチャとWindows LAPSの併用。 ローカル管理者パスワードを定期的に自動ローテーションし、管理者がワークステーションやアプリサーバーにDomain Adminアカウントで不用意にログオンするのを防ぎます。1台が侵害された際の影響範囲を局所化できますが、侵害されたマシン上でのローカルRAM読み取り自体を阻止することはできません。
  • 手法3:vSphere上のVBSとCredential Guardによるハードウェア分離。 ハイパーバイザーが仮想マシンを「Normal World(通常のWindows実行環境)」と「Secure World(Virtual Secure Mode – VSM)」の2つの独立した領域に分割します。重要な認証プロセスである LsaIso.exe はSecure World内で実行されます。攻撃者がWindows上で最上位のSYSTEM権限を奪取したとしても、CPUレベルでこのVSM領域への不正アクセスが完全に遮断されます。

メリット・デメリットの詳細比較

以下の比較表は、セキュリティリスクと運用コストのバランスを検討するのに役立ちます。

評価項目 ウイルス対策ソフト / EDR LAPS & 階層型権限管理(Tiering) VBS + Credential Guard
LSASSダンプへの耐性 中程度。ゼロデイ脆弱性の悪用や、有効な署名付きドライバを悪用したカーネル介入(BYOVD)により、EDRが回避されるリスクがあります。 間接的。水平展開(ラテラルムーブメント)の範囲を抑えることはできますが、侵害されたマシン上でのRAM読み取り自体は防げません。 ほぼ完全。ハイパーバイザーレベルの分離機構により、Normal Worldで実行されるあらゆるプロセスからメモリを安全に保護します。
導入・運用の複雑さ 低。エージェントをインストールし、集中管理コンソールからポリシーを配布するだけで完了します。 中程度。Active Directoryの権限モデルの再設計や、IT部門の運用プロセスの見直しが必要になります。 やや高。CPUハードウェア機能の要件確認、vCenter Key Providerの設定、VM設定やグループポリシーの構成変更が必要です。
リソース消費 バックグラウンドスキャンプロセスにより、CPU負荷が2%~5%、RAMが300MB~800MB程度消費されます。 極めて軽微。定期的に新しいパスワードをADへ同期する際のわずかな処理負荷のみです。 ネストされた仮想化処理(Nested Paging / SLAT)のオーバーヘッドにより、CPU使用率が約1%~3%増加します。

導入戦略:多層防御(Defense-in-Depth)

筆者が運用管理している8台のESXiホスト環境においても、単一のツールだけで100%の安全性を担保できるものはありません。EDRだけに依存していると、カーネルレベルのゼロデイ脆弱性が発生した際にシステム全体が危険に晒されます。

最も効果的な防御モデルは「多層防御」です。LAPSを導入して水平展開の連鎖を断ち切り、EDRを維持してネットワーク上の異常を早期検知し、そして最終防衛ラインとしてVBSとCredential Guardを有効化します。この構成をとることで、攻撃者が仮想マシンの最上位管理者権限を奪取したとしても、VSMの堅固な扉を前にして手詰まりとなります。

vSphereにおけるハードウェアおよびソフトウェア要件

設定を開始する前に、VMwareインフラの仕様と要件を確認しておきましょう。

  • ESXiおよびvCenter: バージョン6.7以降(Native Key Providerを利用するため、vSphere 7.0 Update 2以降またはvSphere 8.0を強く推奨)。
  • 物理サーバーCPU: 仮想化支援機構(Intel VT-x + EPT、またはAMD-V + RVI)をサポートし、サーバーBIOSでIOMMU(Intel VT-dまたはAMD-Vi)が有効化されていること。
  • 仮想マシン(VM)の仕様: 仮想ハードウェアバージョン14以上、ファームウェアはEFIでSecure Bootが有効化されていること。
  • ゲストOS: Windows Server 2016以降(Windows Server 2022および2025を推奨・最適)。
  • Key Provider: 仮想マシンにvTPMを追加する場合は、vCenterでNative Key Providerを構成済みであるか、外部KMSと連携済みであること。

詳細な4ステップ導入手順

ステップ1:vCenterでvSphere Native Key Providerを構成する

vSphere 7.0 U2以降を使用している場合、高価なサードパーティ製KMSを別途購入する必要はありません。

  1. vSphere Clientにアクセスし、左側メニューのvCenter Server名をクリック > 設定(Configure)タブを選択します。
  2. セキュリティ(Security)グループを展開 > キープロバイダー(Key Providers)を選択 > 追加(Add) > ネイティブキープロバイダーの追加(Add Native Key Provider)をクリックします。
  3. プロバイダー名を入力します(例:NKP-Cluster-Prod)。物理クラスタのホストに外部TPM 2.0チップが搭載されていない場合は、Use key provider only for TPM hosts(TPMホストのみでキープロバイダーを使用)のチェックを外します。
  4. Add Key Provider(キープロバイダーの追加)をクリックします。追加直後、必ずBack up(バックアップ)ボタンをクリックして証明書ファイル(.p12)をローカルにダウンロードしてください。このバックアップを完了して初めて、キープロバイダーのステータスがActive(アクティブ)に切り替わります。

ステップ2:仮想マシンでVBSを有効化しvTPMを追加する

仮想ハードウェアのパラメータを変更する前に、対象のWindows Server仮想マシンをシャットダウン(パワーオフ)してください。

  1. 仮想マシンを右クリック > 設定の編集(Edit Settings)を選択します。
  2. 仮想マシンオプション(VM Options)タブに切り替え、起動オプション(Boot Options)を展開します。ファームウェアに EFI を選択し、セキュアブート(Secure Boot)のチェックボックスをオンにします。
  3. 引き続き仮想マシンオプションタブで、仮想化ベースのセキュリティ(Virtualization Based Security)セクションまでスクロールします。仮想化ベースのセキュリティの有効化(Turn On Virtualization Based Security)にチェックを入れます。vSphereが必要なハードウェア仮想化フラグを自動的に有効化します。
  4. 仮想ハードウェア(Virtual Hardware)タブに戻り、新規デバイスの追加(Add New Device) > トラステッドプラットフォームモジュール(Trusted Platform Module / vTPM)を選択します。この仮想デバイスにより、Windowsは証明書や暗号化キーをよりセキュアに管理できるようになります。
  5. OKをクリックして設定を保存し、仮想マシンの電源をオンにします。

クラスタ内の20〜30台の仮想マシンに一括適用する必要がある場合は、手動設定の代わりに以下のPowerCLIスクリプトを実行できます。

# vCenter Serverへの接続
Connect-VIServer -Server vcenter.company.local

$VMName = "SRV-FILE-01"
$vm = Get-VM -Name $VMName

# VBSを有効化する前に仮想マシンが停止していることを確認
if ($vm.PowerState -eq "PoweredOff") {
    $spec = New-Object VMware.Vim.VirtualMachineConfigSpec
    $spec.Flags = New-Object VMware.Vim.VirtualMachineFlagInfo
    $spec.Flags.VbsEnabled = $true
    
    $vm.ExtensionData.ReconfigVM($spec)
    Write-Host "[OK] $VMName でVBSの有効化に成功しました" -ForegroundColor Green
} else {
    Write-Warning "[!] 設定を変更する前に $VMName の電源をオフにしてください!"
}

ステップ3:ローカルグループポリシーでCredential Guardを有効化する

仮想マシンがWindows Serverとして起動したら、OS側でCredential Guardを有効化するよう構成します。

  1. Windows + R キーを押し、gpedit.msc と入力してEnterキーを押します(またはドメインコントローラーからGPOを編集してサーバーOU全体に適用します)。
  2. 次のパスに移動します:

    コンピューターの構成 > 管理用テンプレート > システム > Device Guard(英語OS環境の場合:Computer Configuration > Administrative Templates > System > Device Guard)。
  3. 仮想化ベースのセキュリティを有効にする(Turn On Virtualization Based Security)ポリシーをダブルクリックし、状態を有効(Enabled)に変更します。
  4. 下部のオプションパネルで以下の項目を設定します:
    • プラットフォームセキュリティレベルの選択(Select Platform Security Level): セキュアブートとDMA保護(Secure Boot and DMA Protection)を選択します(旧世代のハードウェアの場合はセキュアブート(Secure Boot))。
    • Credential Guardの構成(Credential Guard Configuration): 物理マシンの再起動を伴わずにレジストリ経由で攻撃者に無効化されるのを防ぐため、UEFIロックで有効(Enabled with UEFI lock)を選択します。
    • セキュア起動の構成(Secure Launch Configuration): CPUがDRTMブート保護をサポートしている場合は、有効(Enabled)を選択します。
  5. OKをクリックします。コマンドプロンプト(Command Prompt)を管理者権限で開き、ポリシーの更新コマンドを実行してからマシンを再起動します:
gpupdate /force
shutdown /r /t 0

ステップ4:状態の確認と検証

サーバーの再起動が完了したら、PowerShellを管理者権限で開き、次のコマンドを実行します。

Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | 
Select-Object SecurityServicesConfigured, SecurityServicesRunning, VirtualizationBasedSecurityStatus

正しく構成されている場合、以下のような値が返されます:

  • VirtualizationBasedSecurityStatus = 2:VBSが有効化され、正常に稼働しています。
  • SecurityServicesRunning:値に 1 が含まれていれば、Credential GuardサービスがLSASSを正常に保護していることを示します。

GUIで視覚的に確認したい場合は、「ファイル名を指定して実行」ダイアログを開き、msinfo32 と入力します。「システムの概要(System Summary)」画面の一番下までスクロールし、仮想化ベースのセキュリティ(Virtualization-based security)が実行中(Running)、Device Guard セキュリティ サービス実行中(Device Guard Security Services Running)にCredential Guardが表示されていることを確認してください。

インフラ運用における実践的なTips・注意点

実際のシステム運用の経験から、押さえておくべき3つの重要なポイントを紹介します。

  • vMotionの移行: vTPMが接続された仮想マシンでも、ホスト間での通常のvMotionが可能です。ただし、クラスタ内のすべてのESXiホストが同一のKey Providerに接続されている必要があります。キーが利用できない場合、移行処理は互換性チェックの段階で失敗します。
  • データベースアプリケーションのレイテンシ: Microsoft SQL ServerやOracle Databaseなどの高負荷なワークロードでは、ネストされた仮想化のオーバーヘッドによりメモリクエリのレイテンシが1%~2%程度増加する可能性があります。基幹データベースに適用する前に、ステージング環境で十分なパフォーマンス検証を実施してください。
  • バックアップソリューションの構成: Veeam Backup & Replication(v11以降)やCommvaultなどのエンタープライズバックアップソフトウェアはvTPM搭載仮想マシンに対応しています。ただし、仮想マシンのリストアを円滑に行うために、暗号化メタデータのバックアップオプションが有効になっていることを必ず確認してください。
Share: