在 Linux 上使用 eBPF 型感測器 適用於端點的 Microsoft Defender

適用於:

Linux 上適用於 適用於端點的 Microsoft Defender 的擴充的擴充的Packet Filter (eBPF) 提供Linux作業系統的補充事件數據。 eBPF 可用來作為要稽核的替代技術,因為 eBPF 有助於解決稽核事件提供者所見的數種問題,而且有助於效能和系統穩定性的領域。

主要優點包括:

  • 減少全系統的稽核相關記錄雜訊
  • 優化的全系統事件規則,否則會導致應用程式之間的衝突
  • 減少檔案事件 (檔案讀取/開啟) 監視的額外負荷
  • 改善事件速率輸送量和減少記憶體使用量
  • 針對特定組態優化效能

eBPF 的運作方式

透過 eBPF,先前從稽核事件提供者取得的事件現在會從 eBPF 感測器流動。 這有助於系統穩定性、改善CPU和記憶體使用率,並減少磁碟使用量。 此外,啟用 eBPF 時,會排除所有與稽核相關的自定義規則,這有助於降低應用程式之間發生衝突的可能性。 與 eBPF 相關的數據會登入 /var/log/microsoft/mdatp/microsoft_defender_core.log 檔案。

此外,eBPF 感測器會使用 Linux 核心的功能,而不需要使用有助於提高系統穩定性的核心模組。

注意事項

eBPF 會與稽核搭配使用,而 auditd 則僅用於使用者登入事件,並擷取這些事件,而不需要任何自定義規則,並自動進行流程。 請注意,稽核將在未來的版本中逐漸移除。

系統必要條件

下列最低散發和核心版本支援適用於Linux上 適用於端點的 Microsoft Defender的 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、5.15.0-0.30.20.1.el8uek.x86_64 的 Oracle Linux 8.8,將會在 eBPF 啟用為增補子系統提供者時造成核心停止回應。 此核心版本不應用於 eBPF 模式。 如需風險降低步驟,請參閱疑難解答和診斷一節。

使用 eBPF

代理程式版本 「101.23082.0006」 和更新版本預設會自動為所有客戶啟用 eBPF 感測器。 客戶必須更新為上述支援的版本,才能體驗此功能。 在端點上啟用 eBPF 感測器時,適用於 Linux 上的適用於端點的 Defender 會supplementary_events_subsystem更新為 ebpf。

mdatp health 命令中的 ebpf 子系統醒目提示

如果您要手動停用 eBPF,則可以執行下列命令:

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

您也可以更新mdatp_managed.json檔案:

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

請參閱連結以取得詳細的範例 json 檔案 - 設定 Linux 上 適用於端點的 Microsoft Defender 的喜好設定。

重要事項

如果您停用 eBPF,補充事件提供者會切換回稽核。 如果 eBPF 未啟用或不支援任何特定核心,則會自動切換回已稽核,並保留所有稽核的自定義規則。

您也可以使用 Microsoft Defender 入口網站中的進階搜捕,檢查 linux 端點上已啟用/停用) 的 eBPF (狀態。 步驟如下:

  1. 移至 Microsoft Defender 入口網站並登入。

  2. 在瀏覽窗格中,移至 [搜捕進階搜捕>]。

  3. 在 [ 進階搜捕] 下,移至 [Defender 弱點管理]

  4. 執行下列查詢: DeviceTvmInfoGathering

  5. 在輸出的 [ 其他欄位] 資料行中,選取 [ 顯示更多],然後尋找 [EBPF 狀態:true]

稽核的不可變模式

對於在不可變模式中使用稽核的客戶,需要在 eBPF 啟用后重新啟動,才能清除 適用於端點的 Microsoft Defender 所新增的稽核規則。 這是不可變的稽核模式限制,這會凍結規則檔案並禁止編輯/覆寫。 此問題已透過重新啟動來解決。 重新啟動之後,請執行下列命令來檢查是否已清除稽核規則。

% sudo auditctl -l

上述命令的輸出應該不會顯示任何規則或任何使用者新增的規則。 如果未移除規則,請執行下列步驟來清除稽核規則檔案。

  1. 切換至 ebpf 模式
  2. 移除 /etc/audit/rules.d/mdatp.rules 檔案
  3. 重新啟動電腦

疑難解答和診斷

您可以執行 health 命令來檢查代理程式健康情況狀態 mdatp 。 使用下列命令行檢查目前的核心版本,以確定 Linux 上適用於端點的 Defender 的 eBPF 感測器受到支援:

uname -a

已知問題

  1. 使用 SAP 在 RHEL 8.1 版本上啟用 eBPF 可能會導致核心異常。 若要減輕此問題,您可以採取下列其中一個步驟:

    • 使用高於 RHEL 8.1 的散發版本。
    • 如果您需要使用 RHEL 8.1 版本,請切換至稽核模式。
  2. 使用 Oracle Linux 8.8 與核心版本 5.15.0-0.30.20.el8uek.x86_64,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

下列兩組數據有助於分析潛在問題,並判斷最有效的解決選項。

  1. 使用下列指示從用戶端分析器工具收集診斷套件:針對 Linux 上的 適用於端點的 Microsoft Defender 效能問題進行疑難解答

  2. 當適用於端點的 Defender 使用高資源時,請使用下列指示收集偵錯診斷套件:在 Linux 資源上 適用於端點的 Microsoft Defender

針對效能問題進行疑難解答

如果您在端點上看到 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 會產生標識碼為 82 的系統呼叫。 您可以向 Microsoft 建立票證,以排除此程式。 在未來的增強功能中,您會有更多控制權可在結尾套用這類排除專案。

套用至稽核的排除項目無法移轉或複製到 eBPF。 eBPF 已在內部處理常見問題,例如雜訊記錄、核心異常、雜訊 Syscalls。 如果您想要新增任何進一步的排除專案,請連絡 Microsoft 以套用必要的排除專案。

另請參閱