次の方法で共有


Linux 用 Windows サブシステム用のMicrosoft Defender for Endpoint プラグイン (WSL)

概要

Linux 用 Windows サブシステム (WSL) 2 は、以前のバージョンの WSL (プラグインなしでMicrosoft Defender for Endpointでサポート) を置き換え、Windows とシームレスに統合されたLinux環境を提供しますが、仮想化テクノロジを使用して分離されています。 Defender for Endpoint for WSL プラグインを使用すると、Defender for Endpoint は、分離されたサブシステムに接続することで、実行中のすべての WSL コンテナーをより詳細に表示できます。

前提条件

  • WSL バージョン 2.0.7.0 以降は、少なくとも 1 つのアクティブディストリビューションで実行されている必要があります。 wsl --updateを実行して、最新バージョンであることを確認します。 2.0.7.0より古いバージョンwsl -–version表示される場合は、wsl --update --pre-releaseを実行して最新の更新プログラムを取得します。

  • Windows クライアント デバイスを Defender for Endpoint にオンボードする必要があります。

サポートされるオペレーティング システム

  • Windows 10 バージョン 2004 以降 (ビルド 19044 以降)
  • Windows 11、プラグインで動作する WSL バージョンをサポートします。

既知の問題と制限事項

開始する前に、次の考慮事項に注意してください。

  • このプラグインでは、 1.24.522.2より前のバージョンの自動更新はサポートされていません。 バージョン 1.24.522.2 以降。 Updatesは、すべてのリングでWindows Updateを通じてサポートされます。 Windows Server Update Services (WSUS)、System Center Configuration Manager (SCCM)、および Microsoft Update カタログを使用したUpdatesは、パッケージの安定性を確保するために、運用リングでのみサポートされます。

  • プラグインが完全にインスタンス化されるまで数分、WSL2 インスタンスがオンボードされるまでに最大 30 分かかります。 有効期間の短い WSL コンテナー インスタンスでは、WSL2 インスタンスがMicrosoft Defender ポータル (https://security.microsoft.com) に表示されない可能性があります。 ディストリビューションが十分に長く実行されている場合 (少なくとも 30 分)、表示されます。

  • カスタム カーネルとカスタム カーネル コマンド ラインの実行はサポートされていません。 プラグインは、その構成での実行をブロックしませんが、カスタム カーネルとカスタム カーネル コマンド ラインを実行している場合、WSL 内での可視性を保証するものではありません。 このような構成は、Microsoft Intune wsl 設定でブロックすることをお勧めします。

  • このプラグインは、ARM64 プロセッサを搭載したマシンではサポートされていません。

  • プラグインは、Windows 10 と 11 のマルチセッションバリアントではサポートされていません。

  • このプラグインは WSL からのイベントを可視化しますが、マルウェア対策、脅威と脆弱性の管理、応答コマンドなどの他の機能は WSL 論理デバイスでは使用できません。

ソフトウェア コンポーネントとインストーラー ファイル名

インストーラー: DefenderPlugin-x64-0.24.426.1.msiMicrosoft Defender ポータルのオンボード ページからダウンロードできます。 ([設定] に移動します>エンドポイント>オンボーディング)。)

インストール ディレクトリ:

  • %ProgramFiles%

  • %ProgramData%

インストールされているコンポーネント:

  • DefenderforEndpointPlug-in.dll. この DLL は、WSL 内で動作するように Defender for Endpoint を読み込むライブラリです。 %ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\plug-inで見つけることができます。

  • healthcheck.exe. このプログラムでは、Defender for Endpoint の正常性状態を確認し、インストールされているバージョンの WSL、プラグイン、Defender for Endpoint を確認できます。 %ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\toolsで見つけることができます。

インストールの手順

Linux 用 Windows サブシステムがまだインストールされていない場合は、次の手順に従います。

  1. ターミナルまたはコマンド プロンプトを開きます。 (Windows では、[スタート] に移動します>コマンド プロンプト。または、スタート ボタンを右クリックし、[ターミナル] を選択します)。

  2. コマンドwsl -–installを実行します。

  3. WSL がインストールされ、実行されていることを確認します。

    1. ターミナルまたはコマンド プロンプトを使用して、 wsl –-update を実行して、最新バージョンがあることを確認します。

    2. wsl コマンドを実行して、テストの前に WSL が実行されていることを確認します。

  4. 次の手順に従って、プラグインをインストールします。

    1. Microsoft Defender ポータルのオンボード セクションからダウンロードした MSI ファイルをインストールします (設定>Endpoints>Onboarding>Linux 用 Windows サブシステム 2 (プラグイン))。

    2. コマンド プロンプト/ターミナルを開き、 wslを実行します。

    Microsoft Intuneを使用してパッケージをデプロイできます。

注:

WslServiceが実行されている場合、インストール プロセス中に停止します。 サブシステムを個別にオンボードする必要はありません。 代わりに、プラグインは、Windows ホストがオンボードされているテナントに自動的にオンボードされます。 WSL KB Update のプラグインの更新プログラムをMicrosoft Defender for Endpointします。

インストール検証チェックリスト

  1. 更新またはインストール後、プラグインが完全に初期化され、ログ出力が書き込まれるまで少なくとも 5 分間待ちます。

  2. ターミナルまたはコマンド プロンプトを開きます。 (Windows では、[スタート] に移動します>コマンド プロンプト。または、スタート ボタンを右クリックし、[ターミナル] を選択します)。

  3. コマンドを実行します: cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools"

  4. コマンド.\healthcheck.exeを実行します。

  5. Defender と WSL の詳細を確認し、それらが次の要件と一致するか超えているかを確認します。

    • プラグインのバージョン: 1.24.522.2
    • WSL バージョン: 2.0.7.0 以降
    • Defender アプリのバージョン: 101.24032.0007
    • Defender の正常性状態: Healthy

WSL で実行されている Defender のプロキシの設定

このセクションでは、Defender for Endpoint プラグインのプロキシ接続を構成する方法について説明します。 企業がプロキシを使用して Windows ホストで実行されている Defender for Endpoint への接続を提供する場合は、引き続き読み取りを行い、プラグイン用に構成する必要があるかどうかを判断します。

WSL プラグインのMDEにホスト ウィンドウ EDR テレメトリ プロキシ構成を使用する場合は、それ以上必要ありません。 この構成は、プラグインによって自動的に採用されます。

WSL プラグインのMDEにホスト winhttp プロキシ構成を使用する場合は、それ以上何も必要ありません。 この構成は、プラグインによって自動的に採用されます。

WSL プラグインのMDEにホスト ネットワークとネットワーク プロキシ設定を使用する場合は、それ以上何も必要ありません。 この構成は、プラグインによって自動的に採用されます。

注:

WSL Defender では、 http プロキシのみがサポートされます。

プラグイン プロキシの選択

ホスト コンピューターに複数のプロキシ設定が含まれている場合、プラグインは次の階層を持つプロキシ構成を選択します。

  1. Defender for Endpoint 静的プロキシ設定 (TelemetryProxyServer)。

  2. Winhttp プロキシ ( netsh コマンドを使用して構成)。

  3. ネットワーク & インターネット プロキシ設定。

    たとえば、ホスト コンピューターに Winhttp proxyNetwork & Internet proxyの両方がある場合、プラグインはプロキシ構成として Winhttp proxy を選択します。

注:

DefenderProxyServer レジストリ キーはサポートされなくなりました。 この記事で前述した手順に従って、プラグインでプロキシを構成します。

WSL で実行されている Defender for Endpoint の接続テスト

Defender for Endpoint 接続テストは、デバイスにプロキシの変更があり、1 時間ごとに実行されるようにスケジュールされるたびにトリガーされます。

wsl マシンを起動したら、5 分間待ってから healthcheck.exe を実行します (接続テストの結果は %ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools にあります)。 成功した場合は、接続テストが成功したことがわかります。 失敗した場合は、WSL 用プラグインから Defender for Endpoint サービス URL へのクライアント接続MDE示す接続テストがinvalidされていることがわかります。

注:

ConnectivityTest レジストリ キーはサポートされなくなりました。 WSL コンテナー (サブシステムで実行されているディストリビューション) で使用するプロキシを設定するには、「 WSL の詳細設定の構成」を参照してください。

機能と SOC アナリスト エクスペリエンスの検証

プラグインをインストールすると、サブシステムとその実行中のすべてのコンテナーがMicrosoft Defender ポータルにオンボードされます。

  1. Microsoft Defender ポータルにサインインし、[デバイス] ビューを開きます。

  2. タグ WSL2 を使用してフィルター処理します。

    デバイス インベントリ フィルターを示すスクリーンショット

    WSL 用のアクティブな Defender for Endpoint プラグインを使用すると、環境内のすべての WSL インスタンスを確認できます。 これらのインスタンスは、特定のホスト上の WSL 内で実行されているすべてのディストリビューションを表します。 デバイスのホスト名は、Windows ホストのホスト名と一致します。 ただし、Linux デバイスとして表されます。

  3. デバイス ページを開きます。 [ 概要 ] ウィンドウには、デバイスがホストされている場所のリンクがあります。 リンクを使用すると、デバイスが Windows ホストで実行されていることを理解できます。 その後、ホストにピボットして、さらに調査や応答を行うことができます。

    デバイスの概要を示すスクリーンショット。

タイムラインは、Linux上の Defender for Endpoint と同様に設定され、サブシステム内からのイベント (ファイル、プロセス、ネットワーク) が設定されます。 アクティビティと検出は、タイムライン ビューで確認できます。 アラートとインシデントは、必要に応じて生成されます。

WSL マシンのカスタム タグの設定

このプラグインは、タグ WSL2を使用して WSL マシンをオンボードします。 カスタム タグが必要な場合organizationは、次の手順に従ってください。

  1. レジストリ エディターを管理者として開きます。

  2. 次の詳細を含むレジストリ キーを作成します。

    • 名前: GROUP
    • 型: REG_SZ またはレジストリ文字列
    • 値: Custom tag
    • パス: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows 高度な脅威保護\DeviceTagging
  3. レジストリが設定されたら、次の手順に従って wsl を再起動します。

    1. コマンド プロンプトを開き、 wsl --shutdownコマンドを実行します。

    2. wsl コマンドを実行します。

  4. ポータルが変更を反映するまで 5 ~ 10 分待ちます。

注:

レジストリで設定されたカスタム タグの後に、 _WSL2が続きます。 たとえば、レジストリ値セットが Microsoftされている場合、カスタム タグは Microsoft_WSL2 され、同じタグがポータルに表示されます。

プラグインをテストする

インストール後にプラグインをテストするには、次の手順に従います。

  1. ターミナルまたはコマンド プロンプトを開きます。 (Windows では、[スタート] に移動します>コマンド プロンプト。または、スタート ボタンを右クリックし、[ターミナル] を選択します)。

  2. コマンドwslを実行します。

  3. https://aka.ms/MDE-Linux-EDR-DIYからスクリプト ファイルをダウンロードして抽出します。

  4. Linux プロンプトで、コマンド ./mde_linux_edr_diy.shを実行します。 WSL2 インスタンスで検出された場合、数分後にアラートがポータルに表示されます。

    注:

    Microsoft Defender ポータルにイベントが表示されるまでに約 5 分かかります。

マシンは、テストを実行する環境内の通常のLinux ホストであるかのように扱います。 特に、新しいプラグインを使用して悪意のある可能性のある動作を表示する機能に関するフィードバックをお寄せください。

高度な追及

Advanced Hunting スキーマの DeviceInfo テーブルの下に、WSL インスタンスを Windows ホスト デバイスにマップするために使用できる HostDeviceId という新しい属性があります。 いくつかのサンプル ハンティング クエリを次に示します。

現在のorganization/テナントのすべての WSL デバイス ID を取得する

//Get all WSL device ids for the current organization/tenant 
let wsl_endpoints = DeviceInfo  
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct DeviceId; 

wsl_endpoints

WSL デバイス ID とそれに対応するホスト デバイス ID を取得する

//Get WSL device ids and their corresponding host device ids 
DeviceInfo  
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct WSLDeviceId=DeviceId, HostDeviceId

curl または wget が実行された WSL デバイス ID の一覧を取得する

//Get a list of WSL device ids where curl or wget was run
let wsl_endpoints = DeviceInfo  
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct DeviceId; 

DeviceProcessEvents   
| where FileName == "curl" or FileName == "wget" 
| where DeviceId in (wsl_endpoints) 
| sort by Timestamp desc

トラブルシューティング

インストールエラー

A fatal error was returned by plugin 'DefenderforEndpointPlug-in' Error code: Wsl/Service/CreateInstance/CreateVm/Plugin/ERROR_FILE_NOT_FOUNDなど、WSL の起動時にエラーが発生した場合は、WSL インストール用の Defender for Endpoint プラグインに問題があります。 修復するには、次の手順に従います。

  1. コントロール パネルで、[プログラム>プログラムと機能] に移動します。

  2. WSL のプラグインMicrosoft Defender for Endpoint検索して選択します。 次に、[修復] を選択 します。 このアクションでは、適切なファイルを予期されるディレクトリに配置することで、問題を解決する必要があります。

    コントロール パネルMDE WSL 修復オプションのプラグインを示すスクリーンショット。

コマンド healthcheck.exe には、"'bash' コマンドを使用して WSL ディストリビューションを起動し、5 分で再試行する" という出力が表示されます。

PowerShell の出力を示すスクリーンショット。

  1. ターミナル インスタンスを開き、コマンド wslを実行します。

  2. 正常性チェックを再実行する前に、少なくとも 5 分間待ちます。

healthcheck.exe コマンドには、"テレメトリの待機中" という出力が表示される場合があります。 5 分後に再試行してください。

正常性テレメトリの状態を示すスクリーンショット。

そのエラーが発生した場合は、5 分間待ってから healthcheck.exe再実行します。

Microsoft Defender ポータルにデバイスが表示されないか、タイムラインにイベントが表示されない

次のことを確認します。

  • マシン オブジェクトが表示されない場合は、オンボードが完了するまでに十分な時間が経過していることを確認します (通常は最大 10 分)。

  • 適切なフィルターを使用し、すべてのデバイス オブジェクトを表示するための適切なアクセス許可が割り当てられていることを確認します。 (たとえば、アカウント/グループは特定のグループに制限されていますか?

  • 正常性チェックツールを使用して、プラグインの全体的な正常性の概要を提供します。 ターミナルを開き、%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\toolsからhealthcheck.exe ツールを実行します。

    PowerShell の状態を示すスクリーンショット。

  • WSL で Defender for Endpoint 接続の接続テストとチェックを有効にします。 接続テストが失敗した場合は、正常性チェックツールの出力をサポート チームに提供します。

接続テストでは、正常性チェックで "無効" と報告されます

  • コンピューターにプロキシ セットアップがある場合は、コマンド healthCheck --extendedProxyを実行します。 これにより、コンピューターに設定されているプロキシと、これらの構成が WSL Defender に対して無効であるかどうかに関する情報が提供されます。

    HealthCheck プロキシ ドキュメントを拡張する

  • 上記の手順で問題が解決しない場合は、%UserProfile%にある.wslconfigに次の構成設定を含め、WSL を再起動します。 設定の詳細については、「 WSL 設定」を参照してください

    Windows 11

    
    # Settings apply across all Linux distros running on WSL 2
    [wsl2]
    
    dnsTunneling=true
    
    networkingMode=mirrored  
    

    Windows 10

    # Settings apply across all Linux distros running on WSL 2
    [wsl2]
    
    dnsProxy=false
    
    

接続の問題が解決しない

次の手順に従って、ネットワーク ログを収集します。

  1. 管理者特権 (管理者) PowerShell プロンプトを開きます。

  2. ダウンロードして実行します。 .\collect-networking-logs.ps1

    
    Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-networking-logs.ps1" -OutFile collect-networking-logs.ps1
    Set-ExecutionPolicy Bypass -Scope Process -Force
    .\collect-networking-logs.ps1
    
    
  3. 新しいコマンド プロンプトを開き、次のコマンドを実行します: wsl

  4. 管理者特権 (admin) コマンド プロンプトを開き、次のコマンドを実行します: wsl --debug-shell

  5. デバッグ シェルで、 mdatp connectivity testを実行します。

  6. 接続テストの完了を許可します。

  7. 手順 2 で実行 .ps1 を停止します。

  8. 生成された .zip ファイルを、手順で説明されているように収集できるサポート バンドルと共に共有 します

サポート バンドルを収集する

  1. その他の問題が発生した場合は、ターミナルを開き、次のコマンドを実行してサポート バンドルを生成します。

    cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools"
    
    .\healthcheck.exe --supportBundle 
    

    サポート バンドルは、前のコマンドによって提供されたパスにあります。

    PowerShell 出力の状態を示すスクリーンショット。

WSL1 と WSL2

WSL Microsoft Defender エンドポイント プラグインは、WSL 2 で実行されているLinuxディストリビューションをサポートします。 WSL 1 に関連付けられている場合は、問題が発生する可能性があります。 そのため、WSL 1 を無効にすることをお勧めします。 Intune ポリシーでこれを行うには、次の手順を実行します。

  1. Microsoft Intune管理センターに移動します。

  2. [デバイス>構成プロファイル>作成>新しいポリシー] に移動します。

  3. [Windows 10 以降>設定カタログ] を選択します。

  4. 新しいプロファイルの名前を作成し、Linux 用 Windows サブシステムを検索して、使用可能な設定の完全な一覧を表示して追加します。

  5. WSL 2 ディストリビューションのみを使用できるようにするには、[ WSL1 を許可する ] 設定を [無効] に設定します。

    または、WSL 1 を引き続き使用する場合、または Intune ポリシーを使用しない場合は、PowerShell でコマンドを実行して、インストールされているディストリビューションを WSL 2 で実行するように選択的に関連付けることができます。

    wsl --set-version <YourDistroName> 2
    

    新しいディストリビューションをシステムにインストールするための WSL 2 を既定の WSL バージョンにするには、PowerShell で次のコマンドを実行します。

    wsl --set-default-version 2
    

リリース リングをオーバーライドする

  • プラグインでは、既定で Windows EDR リングが使用されます。 以前のリングに切り替える場合は、レジストリで次のいずれかに OverrideReleaseRing を設定し、WSL を再起動します。

    • 名前: OverrideReleaseRing
    • : REG_SZ
    • : Dogfood or External or InsiderFast or Production
    • パス: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Defender for Endpoint plug-in for WSL