Linux 上のMicrosoft Defender for Endpointに eBPF ベースのセンサーを使用する
適用対象:
- Linux 用 Microsoft Defender for Endpoint
- Microsoft Defender for Endpoint Plan 1
- Microsoft Defender for Endpoint Plan 2
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更新します。
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 の状態 (有効または無効) をチェックすることもできます。 手順は次のとおりです。
Microsoft Defender ポータルに移動し、サインインします。
ナビゲーション ウィンドウで、[ハンティングの高度なハンティング>] に移動します。
[ 高度なハンティング] で、[ Defender 脆弱性管理] に移動します。
次のクエリを実行します。
DeviceTvmInfoGathering
出力の [ その他のフィールド ] 列で [ 詳細を表示] を選択し、 EBPF STATUS: true を探します。
Auditd の不変モード
不変モードで監査を使用しているお客様の場合、Microsoft Defender for Endpointによって追加された監査規則をクリアするには、eBPF の有効化後に再起動が必要です。 これは、ルール ファイルを固定し、編集/上書きを禁止する監査の不変モードの制限です。 この問題は再起動時に解決されます。 再起動後、次のコマンドを実行して、監査規則がクリアされた場合にチェックします。
% sudo auditctl -l
上記のコマンドの出力には、ルールまたはユーザーが追加したルールは表示されません。 ルールが削除されなかった場合は、次の手順を実行して監査ルール ファイルをクリアします。
- ebpf モードに切り替える
- ファイル /etc/audit/rules.d/mdatp.rules を削除する
- マシンを再起動する
トラブルシューティングと診断
正常性コマンドを実行して、エージェントの正常性状態をmdatp
チェックできます。 次のコマンド ラインを使用して、Linux 上の Defender for Endpoint の eBPF センサーが現在のカーネル バージョンを確認してサポートされていることを確認します。
uname -a
既知の問題
SAP で RHEL 8.1 バージョンで eBPF を有効にすると、カーネル パニックが発生する可能性があります。 この問題を軽減するには、次のいずれかの手順を実行します。
- RHEL 8.1 より高いディストリビューション バージョンを使用します。
- RHEL 8.1 バージョンを使用する必要がある場合は、監査モードに切り替えます。
カーネル バージョン 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 つのデータ セットは、潜在的な問題を分析し、最も効果的な解決オプションを決定するのに役立ちます。
次の手順に従って、クライアント アナライザー ツールから診断パッケージを収集します。Linux でのMicrosoft Defender for Endpointのパフォーマンスの問題のトラブルシューティングを行います。
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 に連絡して、必要な除外を適用します。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示