次の方法で共有


Linux でのMicrosoft Defender for Endpointのパフォーマンスに関する問題のトラブルシューティング

適用対象:

Defender for Endpoint を試す場合は、 無料試用版にサインアップしてください。

このドキュメントでは、利用可能な診断ツールを使用して、Defender for Endpoint on Linux に関連するパフォーマンスの問題を絞り込み、既存のリソース不足とシステムをそのような状況に陥れるプロセスを理解して軽減する方法について説明します。 パフォーマンスの問題は、主に、システム上のリソース使用率のプロファイルに応じて、1 つ以上のハードウェア サブシステムのボトルネックによって発生します。 場合によっては、アプリケーションがディスク I/O リソースに敏感であり、CPU 容量が増える必要がある場合や、一部の構成が持続可能でなく、新しいプロセスが多すぎるトリガーやファイル記述子の開き方が多すぎる場合があります。

実行しているアプリケーションとデバイスの特性によっては、Linux 上で Defender for Endpoint を実行するときに最適でないパフォーマンスが発生する可能性があります。 特に、CPU、ディスク、メモリなどの多くのリソースに短時間でアクセスするアプリケーションまたはシステム プロセスは、Linux 上の Defender for Endpoint のパフォーマンスの問題につながる可能性があります。

警告

開始する前に、 他のセキュリティ製品が現在デバイス上で実行されていないことを確認してください。 複数のセキュリティ製品が競合し、ホストのパフォーマンスに影響を与える可能性があります。

リアルタイム保護統計を使用したパフォーマンスの問題のトラブルシューティング

適用対象:

  • AV に関連するパフォーマンスの問題のみ

リアルタイム保護 (RTP) は、脅威からデバイスを継続的に監視および保護する Defender for Endpoint on Linux の機能です。 ファイルとプロセスの監視とその他のヒューリスティックで構成されます。

次の手順を使用して、これらの問題のトラブルシューティングと軽減を行うことができます。

  1. 次のいずれかの方法を使用してリアルタイム保護を無効にし、パフォーマンスが向上するかどうかを確認します。 この方法は、Defender for Endpoint on Linux がパフォーマンスの問題に貢献しているかどうかを絞り込むのに役立ちます。

    デバイスがorganizationによって管理されていない場合は、コマンド ラインからリアルタイム保護を無効にすることができます。

    mdatp config real-time-protection --value disabled
    
    Configuration property updated
    

    デバイスがorganizationによって管理されている場合は、「Linux 上の Defender for Endpoint の基本設定を設定する」の手順を使用して、管理者がリアルタイム保護を無効にすることができます。

    注:

    リアルタイム保護がオフになっている間にパフォーマンスの問題が解決しない場合、問題の原因はエンドポイント検出と応答 (EDR) コンポーネントである可能性があります。 この場合は、この記事の「Microsoft Defender for Endpoint Client Analyzer を使用したパフォーマンスの問題のトラブルシューティング」セクションの手順に従ってください。

  2. 最も多くのスキャンをトリガーしているアプリケーションを見つけるには、Linux 上の Defender for Endpoint によって収集されたリアルタイム統計を使用できます。

    注:

    この機能は、バージョン 100.90.70 以降で使用できます。

    この機能は、 チャネルと InsiderFast チャネルで既定でDogfood有効になっています。 別の更新チャネルを使用している場合は、コマンド ラインからこの機能を有効にすることができます。

    mdatp config real-time-protection-statistics --value enabled
    

    この機能では、リアルタイム保護を有効にする必要があります。 リアルタイム保護の状態をチェックするには、次のコマンドを実行します。

    mdatp health --field real_time_protection_enabled
    

    エントリが real_time_protection_enabled であることを確認します true。 それ以外の場合は、次のコマンドを実行して有効にします。

    mdatp config real-time-protection --value enabled
    
    Configuration property updated
    

    現在の統計を収集するには、次を実行します。

    mdatp diagnostic real-time-protection-statistics --output json
    

    注:

    (二重ダッシュに注意してください) を使用すると --output json 、出力形式を解析する準備が整います。

    このコマンドの出力には、すべてのプロセスとそれに関連するスキャン アクティビティが表示されます。

  3. Linux システムで、 コマンドを使用してサンプル Python パーサー high_cpu_parser.py をダウンロードします。

    wget -c https://raw.githubusercontent.com/microsoft/mdatp-xplat/master/linux/diagnostic/high_cpu_parser.py
    

    このコマンドの出力は、次のようになります。

    --2020-11-14 11:27:27-- https://raw.githubusercontent.com/microsoft.mdatp-xplat/master/linus/diagnostic/high_cpu_parser.py
    Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.xxx.xxx
    Connecting to raw.githubusercontent.com (raw.githubusercontent.com)| 151.101.xxx.xxx| :443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1020 [text/plain]
    Saving to: 'high_cpu_parser.py'
    100%[===========================================>] 1,020    --.-K/s   in 0s
    
  4. 次に、次のコマンドを入力します。

    mdatp diagnostic real-time-protection-statistics --output json | python high_cpu_parser.py
    

    上記の出力は、パフォーマンスの問題に対する上位のコントリビューターの一覧です。 最初の列はプロセス識別子 (PID)、2 番目の列はプロセス名、最後の列はスキャンされたファイルの数で、影響で並べ替えられます。 たとえば、コマンドの出力は次のようになります。

    ... > mdatp diagnostic real-time-protection-statistics --output json | python high_cpu_parser.py | head
    27432 None 76703
    73467 actool    1249
    73914 xcodebuild 1081
    73873 bash 1050
    27475 None 836
    1    launchd     407
    73468 ibtool     344
    549  telemetryd_v1   325
    4764 None 228
    125  CrashPlanService 164
    

    Linux 上の Defender for Endpoint のパフォーマンスを向上させるには、行の下に数値が最も多いものを Total files scanned 見つけて、除外を追加します。 詳細については、「 Linux 上の Defender for Endpoint の除外を構成して検証する」を参照してください。

    注:

    アプリケーションは、統計をメモリに格納し、ファイル アクティビティが開始され、リアルタイム保護が有効になってからのみ追跡します。 リアルタイム保護がオフだった前または期間中に起動されたプロセスはカウントされません。 さらに、スキャンをトリガーしたイベントのみがカウントされます。

  5. パフォーマンスの問題に影響するプロセスまたはディスクの場所を除外して Linux 上のMicrosoft Defender for Endpointを構成し、リアルタイム保護を再度有効にします。

    詳細については、「Linux 用の Microsoft Defender for Endpoint の除外を構成および検証する」 を参照してください。

Microsoft Defender for Endpoint Client Analyzer を使用したパフォーマンスの問題のトラブルシューティング

適用対象:

  • AV や EDR などの使用可能なすべての Defender for Endpoint コンポーネントのパフォーマンスの問題

Microsoft Defender for Endpoint クライアント アナライザー (MDECA) は、Linux 上のオンボード デバイスのパフォーマンスの問題をトラブルシューティングするために、トレース、ログ、診断情報を収集できます。

注:

  • Microsoft Defender for Endpoint クライアント アナライザー ツールは、(ただしこれに限定されません) IP アドレス、Microsoft Defender for Endpointで発生する可能性がある問題のトラブルシューティングに役立つ PC 名などの情報を収集するために、Microsoft カスタマー サポート サービス (CSS) によって定期的に使用されます。 プライバシーに関する声明の詳細については、「 Microsoft のプライバシーに関する声明」を参照してください。
  • 一般的なベスト プラクティスとして、Microsoft Defender for Endpoint エージェントを最新の使用可能なバージョンに更新し、さらに調査する前に問題がまだ解決することを確認することをお勧めします。

パフォーマンスの問題のトラブルシューティングのためにクライアント アナライザーを実行するには、「 macOS と Linux でクライアント アナライザーを実行する」を参照してください。

注:

上記の手順に従った後もパフォーマンスの問題が解決しない場合は、カスタマー サポートにお問い合わせください。詳細な手順と軽減策については、カスタマー サポートにお問い合わせください。

AuditD のパフォーマンスに関する問題のトラブルシューティング

背景:

  • Linux OS ディストリビューションのMicrosoft Defender for Endpointは、AuditD フレームワークを使用して特定の種類のテレメトリ イベントを収集します。

  • /etc/audit/rules.d/ 追加されたルールによってキャプチャされたシステム イベントは、audit.logに追加され、ホストの監査とアップストリームコレクションに影響する可能性があります。

  • Linux 上のMicrosoft Defender for Endpointによって追加されたイベントには、キーでタグが付mdatpけられます。

  • AuditD サービスが正しく構成されていないか、オフラインになっている場合は、一部のイベントが見つからない可能性があります。 このような問題をトラブルシューティングするには、「Linux 上のMicrosoft Defender for Endpointに関するイベントまたはアラートの問題のトラブルシューティング」を参照してください。

特定のサーバー ワークロードでは、次の 2 つの問題が発生する可能性があります。

  • mdatp_audisp_plugin プロセスからの CPU リソースの消費量が多い

  • /var/log/audit/audit.log が大きくなるか、頻繁に回転します。

これらの問題は、多数のイベントが AuditD にあふれるサーバーで発生する可能性があります。

注:

ベスト プラクティスとして、ファイル サイズの上限に達したときにローテーションするように AuditD ログを構成することをお勧めします。

これにより、AuditD ログが 1 つのファイルに蓄積されるのを防ぎ、ローテーションされたログ ファイルを移動してディスク領域を節約できます。

これを実現するには、auditd.conf ファイルで回転するmax_log_file_actionの値を設定できます。

これは、AuditD のコンシューマーが複数存在する場合や、Microsoft Defender for Endpointとサード パーティのコンシューマーの組み合わせでルールが多すぎる場合や、大量のイベントを生成する高いワークロードが存在する場合に発生する可能性があります。

このような問題をトラブルシューティングするには、まず、影響を受けるサーバーのサンプルで MDEClientAnalyzer ログを収集 します。

注:

一般的なベスト プラクティスとして、Microsoft Defender for Endpoint エージェントを最新の使用可能なバージョンに更新し、さらに調査する前に問題が引き続き発生することを確認することをお勧めします。

AuditD サブシステムの CPU 負荷に影響を与える可能性のある追加の構成があること。

具体的には、 auditd.conf では、 disp_qos の値を "lossy" に設定して、高い CPU 消費量を削減できます。

ただし、これは、CPU のピーク時に一部のイベントが削除される可能性があることを意味します。

XMDEClientAnalyzer

XMDEClientAnalyzer を使用すると、次のファイルに、問題のトラブルシューティングに役立つ分析情報を提供する出力が表示されます。

  • auditd_info.txt
  • auditd_log_analysis.txt

auditd_info.txt

一般的な AuditD 構成が含まれており、次のものが表示されます。

  • AuditD コンシューマーとして登録されるプロセス。

  • Auditctl -s output with enabled=2

    • auditd が不変モードであることを示します (構成の変更を有効にするには再起動が必要です)。
  • Auditctl -l 出力

    • カーネルに現在読み込まれているルールが表示されます (これは、ディスク上に "/etc/auditd/rules.d/mdatp.rules" に存在するものが異なる場合があります)。

    • Microsoft Defender for Endpointに関連するルールが表示されます。

auditd_log_analysis.txt

AuditD パフォーマンスの問題を調査するときに役立つ重要な集計情報が含まれています。

  • 最も報告されたイベントを所有するコンポーネント (Microsoft Defender for Endpointイベントには でタグが付key=mdatpきます)。

  • 上位のレポート イニシエーター。

  • 最も一般的なシステム呼び出し (ネットワークまたはファイルシステム イベントなど)。

  • どのファイル システム パスが最も大きいものか。

ほとんどの AuditD パフォーマンスの問題を軽減するには、AuditD の除外を実装します。 指定された除外によってパフォーマンスが向上しない場合は、レート リミッタ オプションを使用できます。 これにより、AuditD によって生成されるイベントの数が完全に減ります。

注:

除外は、低脅威および高ノイズのイニシエーターまたはパスに対してのみ行う必要があります。 たとえば、大きな死角を作成するリスクがある /bin/bash は除外しないでください。 除外を定義するときに回避する一般的な間違い

除外の種類

XMDEClientAnalyzer サポート ツールには、AuditD 除外構成規則を追加するために使用できる構文が含まれています。

AuditD の除外 – サポート ツールの構文ヘルプ:

AuditD 除外構成規則を追加するために使用できる構文

イニシエーター別

  • -e/ -exe 完全バイナリ パス > このイニシエーターによってすべてのイベントが削除されます

パス別

  • -d / -dir ディレクトリへの完全パス このディレクトリ > を対象とするファイルシステム イベントを削除します

例:

"/opt/app/bin/app" が "/opt/app/cfg/logs/1234.log" に書き込まれる場合は、サポート ツールを使用して、さまざまなオプションで除外できます。

-e /opt/app/bin/app

-d /opt/app/cfg

-x /usr/bin/python /etc/usercfg

-d /usr/app/bin/

その他の例:

./mde_support_tool.sh exclude -p <process id>

./mde_support_tool.sh exclude -e <process name>

複数の項目を除外するには、除外を 1 行に連結します。

./mde_support_tool.sh exclude -e <process name> -e <process name 2> -e <process name3>

-x フラグは、次のように、特定のイニシエーターによるサブディレクトリへのアクセスを除外するために使用されます。

./mde_support_tool.sh exclude -x /usr/sbin/mv /tmp

上記では、mv プロセスによってアクセスされた場合、/tmp サブフォルダーの監視は除外されます。

レートリミッター

XMDEClientAnalyzer サポート ツールには、auditD プラグインによって報告されるイベントの数を制限するために使用できる構文が含まれています。 このオプションでは、AuditD のレート制限がグローバルに設定され、すべての監査イベントが低下します。

注:

この機能は、監査されたサブシステム全体によって報告されるイベントの数を制限するために慎重に使用する必要があります。 これにより、他のサブスクライバーのイベントの数も減る可能性があります。

ratelimit オプションを使用して、このレート制限を有効または無効にすることができます。

有効: ./mde_support_tool.sh ratelimit -e true

無効: ./mde_support_tool.sh ratelimit -e false

ratelimit が有効になっている場合、2500 イベント/秒を処理するルールが AuditD に追加されます。

注:

AuditD 関連のパフォーマンスの問題の分析と軽減、または大規模な AuditD 除外の展開に関するサポートが必要な場合は、Microsoft サポートにお問い合わせください。

関連項目

ヒント

さらに多くの情報を得るには、 Tech Community 内の Microsoft Security コミュニティ (Microsoft Defender for Endpoint Tech Community) にご参加ください。