Windows Subsystem for Linux (WSL) 用 Microsoft Defender for Endpoint プラグイン

適用対象:

概要

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

既知の問題と制限事項

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

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

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

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

  4. OS ディストリビューションは、Microsoft Defender ポータルの WSL デバイスの [デバイスの概要] ページに [なし] と表示されます。

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

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

ソフトウェアの前提条件

  • WSL バージョン 2.0.7.0 以降は、少なくとも 1 つのアクティブなディストリビューションで実行されている必要があります。

    wsl --updateを実行して、最新バージョンであることを確認します。 2.0.7.0より古いバージョンwsl -–version表示される場合は、wsl -–update –pre-releaseを実行して最新の更新プログラムを取得します。

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

  • Windows クライアント デバイスは、プラグインで動作する WSL バージョンをサポートするために、Windows 10 バージョン 2004 以降 (ビルド 19044 以降) または Windows 11 を実行している必要があります。

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

インストーラー: 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で見つけることができます。

インストールの手順

Windows Subsystem for Linux がまだインストールされていない場合は、次の手順に従います。

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

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

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

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

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

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

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

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

    Microsoft Intune を使用してパッケージを展開できます。

注:

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

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

  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 の接続テスト

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

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

注:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 名前: GROUP
    • 型: REG_SZ またはレジストリ文字列
    • 値: Custom tag
    • パス: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Advanced Threat Protection\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 という新しい属性があります。 いくつかのサンプル ハンティング クエリを次に示します。

現在の組織/テナントのすべての 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

トラブルシューティング

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

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

  2. 前述のエラーが発生した場合は、次の手順を実行します。

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

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

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

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

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

  4. Microsoft Defender ポータルにデバイスが表示されない場合、またはタイムラインにイベントが表示されない場合は、次のことを確認します。

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

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

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

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

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

    • 接続テストで正常性チェックで "無効" と報告された場合は、%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 出力の状態を示すスクリーンショット。

  2. MICROSOFT Defender Endpoint for WSL では、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
      
  3. プラグインでは、既定で 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
  4. WSL の起動時にエラーが表示された場合 ("プラグイン 'DefenderforEndpointPlug-in' によって致命的なエラーが返されました) エラー コード:Wsl/Service/CreateInstance/CreateVm/Plugin/ERROR_FILE_NOT_FOUND」は、WSL インストールの Defender for Endpoint プラグインに問題が発生したことを意味します。 修復するには、次の手順に従います。

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

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

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