追加の LSA の保護の構成
適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016
IT プロフェッショナル向けのこの記事では、資格情報に損害を与える可能性があるコード インジェクションを防止する、ローカル セキュリティ機関 (LSA) のプロセスに対して、追加の保護を構成する方法について説明します。
LSA には、Local Security Authority Server Service (LSASS) プロセスが含まれており、ローカルおよびリモート サインインでユーザーを検証し、ローカル セキュリティ ポリシーを適用します。 Windows 8.1 以降のオペレーティング システムは、保護されていないプロセスによるメモリの読み取りやコード インジェクションを LSA が防止できるように追加の保護を提供します。 この機能により、LSA が格納して管理する資格情報のセキュリティが強化されます。 LSA の保護されたプロセス設定は、Windows 8.1 以降で構成できます。 この設定を UEFI ロックおよびセキュア ブートと組み合わせて使用した場合、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa レジストリ キーを無効にしても効果がなくなるため、さらに保護が強化されます。
プラグインまたはドライバーの保護されたプロセスの要件
LSA のプラグインまたはドライバーが保護されたプロセスとして正常に読み込まれるには、次の要件を満たしている必要があります。
署名の検証
保護モードでは、LSA に読み込まれるすべてのプラグインが、Microsoft 署名を使ってデジタル署名されている必要があります。 そのため、未署名のプラグインや Microsoft 署名を使って署名されていないプラグインは、LSA に読み込まれません。 このようなプラグインの例として、スマート カードのドライバー、暗号化のプラグイン、およびパスワード フィルターがあります。
スマート カードのドライバーなど、ドライバーである LSA プラグインは、WHQL 認定を使って署名されている必要があります。 詳しくは、「WHQL リリース署名」を参照してください。
WHQL 認定プロセスがない LSA プラグインは、LSA のファイル署名サービスを使用して署名する必要があります。
Microsoft セキュリティ開発ライフサイクル (SDL) のプロセス ガイダンスへの準拠
プラグインはすべて、該当する SDL のプロセス ガイダンスに準拠している必要があります。 詳細については、「 Microsoft セキュリティ開発ライフサイクル (SDL) の付録」を参照してください。
プラグインが Microsoft 署名を使って適切に署名されている場合でも、SDL のプロセスに準拠していない場合、プラグインを読み込むことができない可能性があります。
推奨プラクティス
次の一覧を使用して、機能を広く展開する前に、LSA の保護が有効になっていることを幅広くテストします。
- 組織内で使用されているすべての LSA プラグインおよびドライバーを確認します。 これには、スマート カードのドライバーや暗号化のプラグインなどの Microsoft 以外のドライバーやプラグイン、およびパスワード フィルターやパスワードの変更通知を適用するために内部で開発されたソフトウェアが含まれます。
- プラグインの読み込みが失敗しないように、すべての LSA プラグインが Microsoft 証明書でデジタル署名されていることを確認します。
- 正しく署名されたすべてのプラグインが、LSA に正常に読み込むことができ、意図したとおりに動作することを確認します。
- 監査ログを使用して、保護されたプロセスとして実行できない LSA プラグインおよびドライバーを識別します。
LSA の保護を有効にした場合に適用される制限事項
追加の LSA の保護が有効になっている場合、カスタム LSA プラグインはデバッグできません。 LSASS が保護されたプロセスである場合、LSASS にデバッガーはアタッチできません。 一般に、実行中の保護されたプロセスをデバッグする方法はサポートされていません。
保護されたプロセスとして実行できない LSA プラグインおよびドライバーを監査で識別する
監査モードを使用して、LSA の保護モードで読み込むことができない LSA プラグインおよびドライバーを識別できます。 監査モードでは、システムによってイベント ログが生成され、LSA の保護が有効である場合に、LSA の下で読み込みに失敗するすべてのプラグインとドライバーを識別できます。 メッセージは、プラグインやドライバーをブロックすることなく、ログに記録されます。
ここで説明するイベントは、アプリケーションとサービス ログ\Microsoft\Windows\CodeIntegrity の下にある Operational ログに記録されます。 これらは、署名が原因で読み込まれていない LSA プラグインおよびドライバーを識別するのに役立ちます。 これらのイベントを管理するには、wevtutil コマンド ライン ツールを使用できます。 このツールの詳細については、Wevtutil に関するページを参照してください。
重要
デバイスで [スマート アプリ コントロール] が有効になっていると、監査イベントが生成されません。 スマート アプリ コントロールの有効状態を確認または変更するには、Windows セキュリティ アプリケーションを開き、[アプリとブラウザーの制御] ページに移動します。 追加の LSA の保護を監査するには、[Smart App Control settings] (スマート アプリ コントロールの設定) リンクを選択して有効状態を確認し、構成をオフに変更してください。
監査モードの自動有効化
Windows 11 22H2 を実行しているデバイスでは、追加の LSA の保護の監査モードが既定で有効になっています。 お使いのデバイスがこのビルドを実行している場合、追加の LSA の保護を監査するために別途アクションは必要ありません。
レジストリを編集して単一のコンピューターで Lsass.exe の監査モード有効にするには
レジストリ エディター (RegEdit.exe) を開き、次の場所にあるレジストリ キーに移動します。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe
レジストリ キーの値を AuditLevel=dword:00000008 に設定します。
コンピューターを再起動します。
イベント 3065 およびイベント 3066 の結果を解析します。
これらの手順の後、[アプリケーションとサービス ログ]/[Microsoft]/[Windows]/[CodeIntegrity] のイベント ビューアーでこれらのイベントを確認できます。
イベント 3065: このイベントは、プロセス (通常は lsass.exe) が共有セクションのセキュリティ要件を満たしていない特定のドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。 ただし、設定されたシステム ポリシーのために、イメージの読み込みは許可されました。
イベント 3066: このイベントは、プロセス (通常は lsass.exe) が Microsoft 署名のレベル要件を満たしていない特定のドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。 ただし、設定されたシステム ポリシーのために、イメージの読み込みは許可されました。
重要
これらの操作イベントは、カーネル デバッガーがシステムにアタッチされ、有効になっている場合は生成されません。
プラグインまたはドライバーに共有セクションが含まれている場合、イベント 3066 はイベント 3065 と共に記録されます。 プラグインが Microsoft 署名のレベル要件を満たしていない場合を除き、共有セクションを削除すると、どちらのイベントも発生しなくなります。
ドメイン内の複数のコンピューターについて監査モードを有効にするには、グループ ポリシーのレジストリに関するクライアント側拡張機能を使用して、Lsass.exe の監査レベルのレジストリ値を展開できます。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe レジストリ キーを変更する必要があります。
GPO で AuditLevel 値を作成する方法
グループ ポリシー管理コンソール (GPMC) を開きます。
ドメイン レベルでリンクされるか、または使用するコンピューター アカウントが含まれている組織単位にリンクされる新しいグループ ポリシー オブジェクト (GPO) を作成します。 あるいは、展開済み GPO を選択できます。
GPO を右クリックし、[編集] を選択してグループ ポリシー管理エディターを開きます。
[コンピューターの構成]、[基本設定]、[Windows の設定] の順に展開します。
[レジストリ] を右クリックし、[新規] をポイントして、[レジストリ項目] を選択します。 [新しいレジストリのプロパティ] ダイアログ ボックスが表示されます。
[ハイブ] の一覧で、HKEY_LOCAL_MACHINE を選択します。
[キー パス] の一覧で、SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe に移動します。
[値の名前] ボックスに「AuditLevel」と入力します。
[値の種類] ボックスで、[REG_DWORD] を選択します。
[値のデータ] ボックスに「00000008」と入力します。
[OK] を選択します。
注意
GPO を有効にするには、GPO の変更をドメイン内のすべてのドメイン コントローラーに対してレプリケートする必要があります。
複数のコンピューターで追加の LSA の保護をオプトインするには、グループ ポリシーのレジストリに関するクライアント側拡張機能を使用して、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa を変更します。 手順については、この記事の「資格情報に対する追加の LSA の保護を構成する方法」を参照してください。
オプトインの後で:lsass.exe によって読み込まれるプラグインとドライバーを識別する方法
イベント ログを使用して、LSA の保護モードで読み込むことができなかった LSA プラグインおよびドライバーを識別できます。 LSA の保護されたプロセスが有効である場合、LSA の下で読み込みに失敗したすべてのプラグインとドライバーを識別できます。
イベント ビューアー ([Microsoft] - [Windows] - [Codeintegrity]/[Operational]) でこれらのイベントを確認できます。
イベント 3033: このイベントは、プロセス (通常は lsass.exe) が Microsoft 署名のレベル要件を満たしていないドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。
イベント 3063: このイベントは、プロセス (通常は lsass.exe) が共有セクションのセキュリティ要件を満たしていないドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。
共有セクションは、通常、インスタンス データが同じセキュリティ コンテキストを使用するその他のプロセスを操作するためのプログラミング手法の結果です。 これによりセキュリティの脆弱性が高くなる場合があります。
資格情報に対する追加の LSA の保護を構成する方法
Windows 8.1 以降が実行されているデバイスでは、このセクションで説明する手順を実行することで構成が可能です。
x86 ベースまたは x64 ベースのデバイスでセキュア ブートや UEFI を使用するかどうか
セキュア ブートまたは UEFI を使用する x86 ベースまたは x64 ベースのデバイスで、レジストリ キーまたはポリシーを使用して LSA の保護が有効になっている場合、UEFI 変数は UEFI ファームウェアで設定できます。 設定がファームウェアに格納されているときは、レジストリの編集や、追加の LSA の保護を有効にする際に使用したポリシーによって、UEFI 変数を削除したり変更を加えたりすることはできません。 LSA の保護を無効にする方法については、以下の手順に従って UEFI 変数をリセットする必要があります。
UEFI をサポートしていない、またはセキュア ブートが無効になっている x86 ベースまたは x64 ベースのデバイスは、LSA の保護の構成をファームウェアに格納することはできません。 これらのデバイスは、レジストリ キーの存在のみに依存します。 このシナリオでは、デバイスへのリモート アクセスを使って LSA の保護を無効にできます。 LSA 保護の無効化は、デバイスを再起動して初めて反映されます。
自動有効化
Windows RT 8.1 が実行されているデバイスでは、追加の LSA の保護は常に有効になっており、無効にすることはできません。
Windows 11 22H2 を実行しているクライアント デバイスの場合、次の条件が満たされている場合、追加の LSA の保護が既定で有効になります。
- デバイスが Windows 11 22H2 の新規インストールであること (以前のリリースからのアップグレードではないこと)。
- デバイスがエンタープライズ参加済み (Active Directory ドメイン参加済み、Azure AD ドメイン参加済み、またはハイブリッド Azure AD ドメイン参加済み) であること。
- デバイスが HVCI (ハイパーバイザーで保護されたコード整合性) に対応していること
Windows 11 22H2 に対する追加の LSA の保護の自動有効化で、この機能の UEFI 変数は設定されません。 UEFI 変数を設定する場合は、レジストリ構成またはポリシーを使用してください。
1 台のコンピューターで LSA の保護を有効にする方法
レジストリを使用する
レジストリ エディター (RegEdit.exe) を開き、次の場所にあるレジストリ キーに移動します。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
レジストリ キーに次の値を設定します。
- UEFI 変数を使って機能を構成する場合: "RunAsPPL"=dword:00000001
- UEFI 変数を使わずに機能を構成する場合 (Windows 11 22H2 のみ): "RunAsPPL"=dword:00000002
コンピューターを再起動します。
Windows 11 22H2 のローカル グループ ポリシーを使用する
ローカル グループ ポリシー エディター (gpedit.msc) を開きます。
[コンピューターの構成]、[管理用テンプレート]、[システム]、[ローカル セキュリティ機関] の順に展開します。
[Configure LSASS to run as a protected process] (保護されたプロセスとして実行するように LSASS を構成する) ポリシーを開きます。
このポリシーを 有効に設定します。
[オプション] の [Configure LSA to run as a protected process] (保護されたプロセスとして実行するように LSA を構成する) を次のように設定します。
- UEFI 変数を使って機能を構成する場合: [UEFI ロックで有効化]
- UEFI 変数を使わずに機能を構成する場合: [Enabled without UEFI Lock] (UEFI ロックなしで有効化)
コンピューターを再起動します。
グループ ポリシーを使用して LSA の保護を有効にする方法
グループ ポリシー管理コンソール (GPMC) を開きます。
ドメイン レベルでリンクされるか、または使用するコンピューター アカウントが含まれている組織単位にリンクされる新しい GPO を作成します。 あるいは、展開済み GPO を選択できます。
GPO を右クリックし、[編集] を選択してグループ ポリシー管理エディターを開きます。
[コンピューターの構成]、[基本設定]、[Windows の設定] の順に展開します。
[レジストリ] を右クリックし、[新規] をポイントして、[レジストリ項目] を選択します。 [新しいレジストリのプロパティ] ダイアログ ボックスが表示されます。
[ハイブ] の一覧で、HKEY_LOCAL_MACHINE を選択します。
キー パス 一覧の SYSTEM\CurrentControlSet\Control\Lsaを参照してください。
[値の名前] ボックスに「RunAsPPL」と入力します。
[値の種類] ボックスで、[REG_DWORD] を選択します。
[値のデータ] ボックスに次のように入力します。
- UEFI 変数を使って LSA の保護を有効にする場合: 00000001
- UEFI 変数を使わずに LSA の保護を有効にする場合: 00000002 (Windows 11 22H2 にのみ適用されます)
[OK] を選択します。
LSA の保護を無効にする方法
レジストリを使用して無効にする方法
レジストリ エディター (RegEdit.exe) を開き、次の場所にあるレジストリ キーに移動します。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
"RunAsPPL" を「dword:00000000」に設定するか、DWORD を削除します。
UEFI 変数を使って PPL が有効化されている場合、ローカル セキュリティ機関で保護されたプロセスのオプトアウト ツールを使用して UEFI 変数を削除します。
コンピューターを再起動します。
Windows 11 22H2 のローカル ポリシーを使用して無効にする方法
ローカル グループ ポリシー エディター (gpedit.msc) を開きます。
[コンピューターの構成]、[管理用テンプレート]、[システム]、[ローカル セキュリティ機関] の順に展開します。
[Configure LSASS to run as a protected process] (保護されたプロセスとして実行するように LSASS を構成する) ポリシーを開きます。
このポリシーを 有効に設定します。
[オプション] の [Configure LSA] (LSA の構成) を [Disabled] (無効) に設定します。
コンピューターを再起動します。
このポリシーを [未構成] に設定しても、ポリシーが過去に有効になっていた場合は、以前の設定がクリーンアップされず、引き続き適用されてしまいます。 この機能を無効にするには、[Configure LSA to run as a protected process] (保護されたプロセスとして実行するように LSA を構成する) ドロップダウンでポリシーを [無効] に設定する必要があります。
LSA の保護の UEFI 変数を削除する方法
デバイスがセキュア ブートを使用している場合、UEFI 変数を削除するには、ローカル セキュリティ機関 (LSA) で保護されたプロセスのオプトアウト ツールを使います。
オプトアウト ツールの詳細については、 正式な Microsoft ダウンロード センターからローカル セキュリティ機関の (LSA) で保護されたプロセスのオプトアウトをダウンロードしてください。
セキュア ブートの管理の詳細については、「 UEFI ファームウェア」を参照してください。
警告
セキュア ブートが無効になると、セキュア ブートおよび UEFI に関連するすべての構成がリセットされます。 LSA の保護を無効にする他の方法がすべて失敗した場合にのみ、セキュア ブートを無効にしてください。
LSA の保護の確認
Windows が起動したときに LSA が保護モードで起動されたかどうかを検出するには、[Windows ログ] の下にある [System] ログで次の WinInit イベントを検索します。
- 12:LSASS.exe がレベル4