Share via


Linux 上のMicrosoft Defender for Endpointに eBPF ベースのセンサーを使用する

適用対象:

Linux 上のMicrosoft Defender for Endpoint用の拡張されたバークレイ パケット フィルター (eBPF) は、Linux オペレーティング システム用の補足イベント データを提供します。 eBPF は、監査されたイベント プロバイダーで見られるいくつかのクラスの問題に対処するのに役立ち、パフォーマンスとシステムの安定性の分野で有益であるため、eBPF を監査する代替テクノロジとして使用できます。

主な利点を以下に示します。

  • システム全体の監査関連のログ ノイズの削減
  • 最適化されたシステム全体のイベント ルールが、それ以外の場合はアプリケーション間の競合を引き起こします
  • ファイル イベント (ファイルの読み取り/開く) 監視のオーバーヘッドが削減されました
  • イベント レートのスループットの向上とメモリ占有領域の削減
  • 特定の構成のパフォーマンスの最適化

eBPF のしくみ

eBPF では、監査済みイベント プロバイダーから以前に取得したイベントが eBPF センサーからフローするようになりました。 これにより、システムの安定性が向上し、CPU とメモリの使用率が向上し、ディスク使用量が削減されます。 また、eBPF を有効にすると、監査関連のカスタム規則がすべて排除されるため、アプリケーション間の競合の可能性を減らすことができます。 eBPF に関連するデータは、/var/log/microsoft/mdatp/microsoft_defender_core.log ファイルにログインします。

さらに、eBPF センサーは Linux カーネルの機能を使用します。システムの安定性を高めるのに役立つカーネル モジュールを使用する必要はありません。

注:

eBPF は auditd と組み合わせて使用されますが、auditd はユーザー ログイン イベントにのみ使用され、カスタム ルールなしでこれらのイベントをキャプチャし、自動的にフローします。 監査は今後のバージョンで徐々に削除されることに注意してください。

システムの前提条件

Linux 上のMicrosoft Defender for Endpointの eBPF センサーは、次の最小ディストリビューションとカーネル バージョンでサポートされています。

Linux ディストリビューション 配布バージョン カーネル バージョン
Ubuntu 16.04 4.15.0
Fedora 33 5.8.15
CentOS 7.6 3.10.0-957.10
SLES 15 5.3.18-18.47
RHEL 7.6 3.10.0-957.10
Debian 9.0 4.19.0
Oracle Linux RHCK 7.9 3.10.0-1160
Oracle Linux UEK 7.9 5.4
Amazon Linux 2 2 5.4.261-174.360

注:

カーネル バージョン 5.15.0-0.30.20.el8uek.x86_64 の Oracle Linux 8.8、5.15.0-0.30.20.1.el8uek.x86_64 では、eBPF が補助サブシステム プロバイダーとして有効になっている場合、カーネルがハングします。 このカーネル バージョンは eBPF モードには使用しないでください。 軽減策の手順については、「トラブルシューティングと診断」セクションを参照してください。

eBPF を使用する

eBPF センサーは、エージェント バージョン "101.23082.0006" 以降では、既定ですべての顧客に対して自動的に有効になります。 お客様は、上記のサポートされているバージョンに更新して、この機能を体験する必要があります。 エンドポイントで eBPF センサーが有効になっている場合、Defender for Endpoint on Linux は ebpf にsupplementary_events_subsystem更新します。

mdatp 正常性コマンドの ebpf サブシステムの強調表示

eBPF を手動で無効にする場合は、次のコマンドを実行できます。

sudo mdatp config ebpf-supplementary-event-provider --value [enabled/disabled]

mdatp_managed.json ファイルを更新することもできます。

{
    "features": {
        "ebpfSupplementaryEventProvider": "disabled"
    }
}

詳細なサンプル json ファイル - Linux でのMicrosoft Defender for Endpointの基本設定の設定については、リンクを参照してください。

重要

eBPF を無効にした場合、補助イベント・プロバイダーは auditd に戻ります。 eBPF が有効になっていないか、特定のカーネルでサポートされていない場合は、自動的に監査済みに戻り、監査されたすべてのカスタム 規則が保持されます。

また、Microsoft Defender ポータルで高度なハンティングを使用して、linux エンドポイントで eBPF の状態 (有効または無効) をチェックすることもできます。 手順は次のとおりです。

  1. Microsoft Defender ポータルに移動し、サインインします。

  2. ナビゲーション ウィンドウで、[ハンティングの高度なハンティング>] に移動します。

  3. [ 高度なハンティング] で、[ Defender 脆弱性管理] に移動します。

  4. 次のクエリを実行します。 DeviceTvmInfoGathering

  5. 出力の [ その他のフィールド ] 列で [ 詳細を表示] を選択し、 EBPF STATUS: true を探します。

Auditd の不変モード

不変モードで監査を使用しているお客様の場合、Microsoft Defender for Endpointによって追加された監査規則をクリアするには、eBPF の有効化後に再起動が必要です。 これは、ルール ファイルを固定し、編集/上書きを禁止する監査の不変モードの制限です。 この問題は再起動時に解決されます。 再起動後、次のコマンドを実行して、監査規則がクリアされた場合にチェックします。

% sudo auditctl -l

上記のコマンドの出力には、ルールまたはユーザーが追加したルールは表示されません。 ルールが削除されなかった場合は、次の手順を実行して監査ルール ファイルをクリアします。

  1. ebpf モードに切り替える
  2. ファイル /etc/audit/rules.d/mdatp.rules を削除する
  3. マシンを再起動する

トラブルシューティングと診断

正常性コマンドを実行して、エージェントの正常性状態をmdatpチェックできます。 次のコマンド ラインを使用して、Linux 上の Defender for Endpoint の eBPF センサーが現在のカーネル バージョンを確認してサポートされていることを確認します。

uname -a

既知の問題

  1. SAP で RHEL 8.1 バージョンで eBPF を有効にすると、カーネル パニックが発生する可能性があります。 この問題を軽減するには、次のいずれかの手順を実行します。

    • RHEL 8.1 より高いディストリビューション バージョンを使用します。
    • RHEL 8.1 バージョンを使用する必要がある場合は、監査モードに切り替えます。
  2. カーネル バージョン 5.15.0-0.30.20.el8uek.x86_64 で Oracle Linux 8.8 を使用すると、5.15.0-0.30.20.1.el8uek.x86_64 カーネル パニックが発生する可能性があります。 この問題を軽減するには、次のいずれかの手順を実行します。

    • 補足サブシステム プロバイダーとして eBPF を使用する場合は、Oracle Linux 8.8 で 5.15.0-0.30.20.el8uek.x86_64、5.15.0-0.30.20.1.el8uek.x86_64 より高いまたはそれより低いカーネル バージョンを使用します。 Oracle Linux の最小カーネル バージョンは RHCK 3.10.0 で、Oracle Linux UEK は 5.4 であることに注意してください。
    • 同じカーネル バージョンを使用する必要がある場合は、監査モードに切り替えます
sudo mdatp config  ebpf-supplementary-event-provider  --value disabled

次の 2 つのデータ セットは、潜在的な問題を分析し、最も効果的な解決オプションを決定するのに役立ちます。

  1. 次の手順に従って、クライアント アナライザー ツールから診断パッケージを収集します。Linux でのMicrosoft Defender for Endpointのパフォーマンスの問題のトラブルシューティングを行います。

  2. Defender for Endpoint が高いリソースを利用している場合は、Linux リソースのMicrosoft Defender for Endpointに関する手順に従って、デバッグ診断パッケージを収集します。

パフォーマンスの問題のトラブルシューティング

エンドポイントでMicrosoft Defenderによってリソース消費量が増える場合は、ほとんどの CPU/メモリ使用率を消費しているプロセス/マウント ポイント/ファイルを特定し、必要な除外を適用することが重要です。 可能な AV 除外を適用した後で、wdavdaemon (親プロセス) がまだリソースを使用している場合は、ebpf-statistics コマンドを使用して上位のシステム呼び出し数を取得します。

sudo mdatp diagnostic  ebpf-statistics
Output
Monitor 20 seconds
Top file paths:
/var/log/microsoft/mdatp/microsoft_defender.log : 10
/var/log/microsoft/mdatp/rotated/microsoft_defender.log00001 : 2
/var/log/microsoft/mdatp/rotated/microsoft_defender.log : 1
/home/gargank/tmp-stress-ng-rename-13550-31/stress-ng-rename-13550-31-374993 : 1
/home/gargank/tmp-stress-ng-rename-13550-31/stress-ng-rename-13550-31-374991 : 1
/home/gargank/tmp-stress-ng-rename-13550-31/stress-ng-rename-13550-31-374989 : 1
/home/gargank/tmp-stress-ng-rename-13550-31/stress-ng-rename-13550-31-374987 : 1
/home/gargank/tmp-stress-ng-rename-13550-31/stress-ng-rename-13550-31-374985 : 1
/home/gargank/tmp-stress-ng-rename-13550-31/stress-ng-rename-13550-31-374983 : 1
/home/gargank/tmp-stress-ng-rename-13550-31/stress-ng-rename-13550-31-374981 : 1

Top initiator paths:
/usr/bin/stress-ng : 50000
/opt/microsoft/mdatp/sbin/wdavdaemon : 13

Top syscall ids:
82 : 1699333
90 : 10
87 : 3

上記の出力では、stress-ng が多数のイベントを生成する上位プロセスであり、パフォーマンスの問題につながる可能性があることを確認できます。 ほとんどの場合、stress-ng は ID 82 でシステム呼び出しを生成しています。 Microsoft でチケットを作成して、このプロセスを除外できます。 今後の機能強化の一環として、このような除外を最後に適用するための制御が強化されます。

監査対象に適用された除外を eBPF に移行またはコピーすることはできません。 ノイズの多いログ、カーネル パニック、ノイズの多い syscall などの一般的な懸念事項は、eBPF によって内部的に既に処理されています。 さらに除外を追加する場合は、Microsoft に連絡して、必要な除外を適用します。

関連項目