Linux 上のMicrosoft Defender for Endpointに eBPF ベースのセンサーを使用する
注:
Defender for Endpoint on Linux バージョン 101.2408.0000
以降、AuditD は補助イベント プロバイダーとしてサポートされなくなりました。 詳細については、この記事の最後にある FAQ を参照してください。
Linux 上のMicrosoft Defender for Endpoint用の拡張されたバークレイ パケット フィルター (eBPF) は、Linux オペレーティング システム用の補足イベント データを提供します。 eBPF は、AuditD イベント プロバイダーで見られるいくつかの種類の問題に対処するのに役立ち、パフォーマンスとシステムの安定性の分野で有益です。
主な利点を以下に示します。
- システム全体の AuditD 関連のログ ノイズの削減
- 最適化されたシステム全体のイベント ルールが、それ以外の場合はアプリケーション間の競合を引き起こします
- ファイル イベント (ファイルの読み取り/開く) 監視のオーバーヘッドが削減されました
- イベント レートのスループットの向上とメモリ占有領域の削減
- 特定の構成のパフォーマンスの最適化
eBPF のしくみ
eBPF では、AuditD イベント プロバイダーから以前に取得したイベントが eBPF センサーからフローするようになりました。 これにより、システムの安定性が向上し、CPU とメモリの使用率が向上し、ディスク使用量が削減されます。 eBPF は、カスタム規則が不要なアプリケーション間の競合の可能性を減らすのに役立ちます。 eBPF に関連するデータは、/var/log/microsoft/mdatp/microsoft_defender_core.log ファイルにログインします。
さらに、eBPF センサーは Linux カーネルの機能を使用します。システムの安定性を高めるのに役立つカーネル モジュールを使用する必要はありません。
システムの前提条件
Linux 上のMicrosoft Defender for Endpointの eBPF センサーは、次の最小ディストリビューションとカーネル バージョンでサポートされています。
Linux ディストリビューション | 配布バージョン | カーネル バージョン |
---|---|---|
Ubuntu | 16.04 | 4.15.0 |
中折れ帽子 | 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 |
ロッキー Linux 8 | 8.7 | 4.18.0-425 |
ロッキー Linux 9 | 9.2 | 5.14.0-284 |
アルマ Linux 8 | 8.4 | 4.18.0-305 |
アルマ Linux 9 | 9.2 | 5.14.0-284 |
注:
カーネル バージョン 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 を無効にした場合、または特定のカーネルで eBPF がサポートされていない場合は、補助イベント プロバイダーが Netlink に切り替えられます。 すべてのプロセス操作は引き続きシームレスにフローしますが、eBPF がキャプチャする特定のファイルおよびソケット関連のイベントを見逃す可能性があります。
また、Microsoft Defender ポータルで高度なハンティングを使用して、linux エンドポイントで eBPF の状態 (有効または無効) をチェックすることもできます。 手順は次のとおりです。
Microsoft Defender ポータルに移動し、サインインします。
ナビゲーション ウィンドウで、[ ハンティング>Advanced ハンティング] に移動します。
[高度なハンティング] で、[Defender 脆弱性の管理] に移動します。
次のクエリを実行します:
DeviceTvmInfoGathering
。出力の [ その他のフィールド ] 列で [ 詳細を表示] を選択し、 EBPF STATUS: true を探します。
AuditD の不変モード
不変モードで AuditD を使用しているお客様の場合、Microsoft Defender for Endpointによって追加された監査規則をクリアするには、eBPF の有効化後に再起動が必要です。 この要件は、AuditD の不変モードの制限であり、ルール ファイルが固定され、編集/上書きが禁止されます。 この問題は再起動時に解決されます。
再起動後、次のコマンドを実行して、監査規則がクリアされたかどうかをチェックします。
% 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 バージョンを使用する必要がある場合は、AuditD モードに切り替えます。
カーネル バージョン 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 です。
- 同じカーネル バージョンを使用する必要がある場合は、AuditD モードに切り替えます
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/メモリ使用率の大部分を引き起こしているプロセス/マウント ポイント/ファイルを特定することが重要です。 その後、必要な除外を適用できます。 可能なウイルス対策の除外を適用した後、 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 でチケットを作成して、このプロセスを除外できます。 今後の機能強化の一環として、このような除外を最後に適用するための制御が強化されます。
AuditD に適用された除外を eBPF に移行またはコピーすることはできません。 ノイズの多いログ、カーネル パニック、ノイズの多い syscall などの一般的な懸念事項は、eBPF によって内部的に既に処理されています。 さらに除外を追加する場合は、Microsoft に連絡して、必要な除外を適用します。
FAQ - eBPF への移行
1. eBPF への移行を検討する必要があるのはなぜですか?
Linux 上のMicrosoft Defender for Endpoint用の拡張されたバークレイ パケット フィルター (eBPF) は、AuditD の効率的な代替手段として機能し、AuditD イベント プロバイダーに関連するさまざまな課題に対処すると同時に、パフォーマンスとシステムの安定性の面で大きな利点を提供します。 主な利点の一部は次のとおりです。
パフォーマンス: eBPF は、AuditD と比較してシステム リソースのオーバーヘッドを削減することで、パフォーマンスを大幅に向上させます。
リソース効率: eBPF では使用するリソースが少ないため、負荷の高い条件下でもシステムの安定性を維持できます。
スケーラビリティ: eBPF のアーキテクチャはスケーラビリティが高く、ワークロードが増加または複雑な環境に適しています。
最新のテクノロジ: eBPF は、将来の Linux カーネル開発に合わせて最新の将来を見据えたテクノロジを表し、長期的なサポートを向上させます。
2. AuditD を引き続き使用する方法
AuditD を引き続き使用する場合:
サポートされているバージョン: Defender for Endpoint on Linux バージョン 101.24072.0000 に残ることができます。これは、ビルドの有効期間中に AuditD をサポートします(約 9 か月)。 これにより、eBPF への移行を計画するのに十分な移行期間が提供されます。 有効期限は、Linux サーバーでコマンド
mdatp health
を実行することで確認できます。Long-Term 計画:
101.24072.0000
ビルドを維持することがオプションですが、最新のセキュリティとパフォーマンスの向上の恩恵を受け、継続的なサポートを受けるために、この期間内に eBPF への移行を計画することをお勧めします。
つまり、eBPF をプライマリ イベント プロバイダーとして使用する移行を計画することをお勧めします。
3. 一部のシナリオで eBPF がサポートされていない場合はどうなりますか?
eBPF がサポートされていない場合:
Netlink フォールバック: システムは Netlink イベント プロバイダーの使用にフォールバックします。 Netlink は引き続きプロセス イベント (
exec
、exit
、fork
、gid
、またはtid
) をキャプチャしますが、ファイル システム関連のイベント (rename
、unlink
など) やソケット イベントはサポートされません。影響: ワークロードは中断されませんが、eBPF がキャプチャする特定のファイルおよびソケット関連のイベントを見逃す可能性があります。
4. 更新されたバージョンで除外を管理するにはどうすればよいですか?
AuditD の除外を配置する一般的な理由を次に示します。
一部の syscall またはプロセスが大量のノイズを生成している場合のパフォーマンス
カーネルパニック、特にネットワーク/ファイルシステム呼び出しの多くがカーネルパニックを起こした場合があります。
監査ログがディスク領域を使い切っているノイズの多いログ。 お客様は、ログ サイズを小さくするために、ノイズの多いプロセスの除外を行いました。
eBPF では、最初の 2 つのユース ケースが移行の候補です。 ログは eBPF の問題ではなくなりました。 最初の 2 つのユース ケースでは、次のオプションから選択できます。
サポートに問い合わせる: Microsoft に問い合わせて、バックエンドからの除外を適用します。
グローバル除外: Linux 上の Defender for Endpoint の更新バージョンでは、除外をグローバル除外で管理できます。 グローバル除外はウイルス対策と EDR の両方に適用され、現在マネージド json を使用して構成できます。 詳細については、「Linux 用の Microsoft Defender for Endpoint の除外を構成および検証する」 を参照してください。
5. 問題が発生した場合はどうすればよいですか?
サポートに問い合わせる: eBPF への移行中または移行後に問題が発生した場合は、テクニカル サポートにお問い合わせください。 Microsoft はスムーズな移行を確保することに取り組んでおり、お客様が直面する可能性のある課題の解決に役立ちます。
サポート チャネル: Microsoft Defender ポータルからサポートにお問い合わせください。 さらに、サポート情報およびコミュニティ フォーラムは、一般的な問題のトラブルシューティングに役立つ貴重なリソースです。