2015/11/02

Device Guard (デバイス ガード) って何? 再び

Windows 10 のリリースにあわせて「UPGRADE TO WINDOWS 10: Device Guard (デバイス ガード) って何?」 (2015/07/28) という記事を書きましたが、デバイス ガード対応のハードウェアを持つ Windows 10 環境を触る機会があったので、ちょっと試してみました。


デバイス ガード (Device Guard)は、Windows 10 Enterprise、Education、Enterprise LTSB、Education (いずれも x64)、および開発中の Windows Server 2016 で利用できるセキュリティ機能。Hyper-V の仮想化を利用してOS と分離して、カーネルモードドライバーやアプリのコードの整合性を検証して許可されていないコードをブロックする機能などを提供します。ローカル セキュリティ機関 (LSA) を別パーティションで実行する資格情報ガード(Credential Guard)とともに、仮想化ベースのセキュリティ(Virtualization-based Security) で実現されるセキュリティ機能。


デバイス ガードを利用するには、少なくとも UEFI 2.3.1 以降の UEFI システムが必要で、セキュア ブートが有効になっている必要があります。また、Hyper-V を利用するため、Hyper-V のシステム要件 (ハードウェア仮想化支援、ハードウェア強制 DEP、SLAT) を満たしている必要があります。TPM と IOMMU (Intel VT-d とか) のサポートがあると、さらによし。DMA (Dyrect Memory Access) 保護機能を利用するには IOMMU のサポートが必須。TPM はデバイス ガードでは使用しないようですが、資格情報ガード(デバイス ガードとは別の機能ですが、デバイス ガードと同じく仮想化ベースのセキュリティのセキュリティ機能) と組み合わせて使うとき、資格情報の保存先のために TPM が最適 (TPM なしでも資格情報ガードは使えるけど)。

デバイス ガードを有効化するには、「Hyper-V」と「分離ユーザー モード」の機能をインストールして...



「コンピューターの構成\管理用テンプレート\システム\デバイス ガード\仮想化ベースのセキュリティを有効化する」ポリシーを有効にし、「セキュアブート」または「セキュアブートと DMA 保護」(IOMMU 対応ハードが必要) を選択して、「コードの整合性に対する仮想化ベースの保護を有効にする」をチェックしたら、コンピューターを再起動...

コードの整合性(Code Integrity)には、「Kernel Mode Code Integrity (KMCI)」と「User Mode Code Integrity (UMCI)」の 2 つがあって、KMCI のほうはデバイス ガードを有効化すると機能し始めます。例えば、署名の無い(あるいは署名の証明書の有効期限切れとか)デバイス ドライバーはロードされなくなります。私の環境では、KMCI によってオーディオ デバイスが使えなくなりました。

UMCI のほうは、リファレンス PC (企業標準の構成の PC) を用意して、C: ドライブにあるアプリのファイルのカタログを作成して、強制または監査用のコードの整合性ポリシーを準備し、「コンピューターの構成\管理用テンプレート\システム\デバイス ガード\コードの整合性ポリシーを展開する」ポリシーで対象の PC にコードの整合性ポリシーを展開する必要があります。このコードの整合性ポリシーの準備がかなり面倒でした。詳しくは...

Device Guard deployment guide
[URL] https://technet.microsoft.com/en-us/library/mt463091(v=vs.85).aspx

次の画面は、コードの整合性ポリシーを強制したときに、怪しいアプリがブロックされたところです。ユーザー えくすぺりえんすは AppLocker によるブロックとよく似ています。



このほか、デバイス カードが有効化された環境では、Hyper-V の仮想マシンに仮想 TPM 2.0 デバイスを割り当ててゲスト OS で利用することができます (Hyper-V ホスト側に本物の TPM は必要なし)。ただし、現在のバージョンの Windows 10 ではできません。Windows 10 Insider Preview の新しいビルドや、Windows Server 2016 Technical Preview 3 では可能です。

以下の画面は、Insider Preview ビルド 10565 の Hyper-V 環境で、仮想マシンに仮想 TPM を割り当て、ゲスト OS で仮想スマート カードを作成するという、楽しいことをしている様子です。