Поделиться через


Использование датчика на основе eBPF для Microsoft Defender для конечной точки в Linux

Область применения:

Расширенный фильтр пакетов Беркли (eBPF) для Microsoft Defender для конечной точки в Linux предоставляет дополнительные данные о событиях для операционных систем Linux. eBPF можно использовать в качестве альтернативной технологии для аудита, так как eBPF помогает решать несколько классов проблем, наблюдаемых с поставщиком проверенных событий, и является полезным в областях производительности и стабильности системы.

В числе основных преимуществ можно назвать следующие:

  • Уменьшение шума журнала, связанного с аудитом всей системы
  • Оптимизированные правила событий для всей системы в противном случае вызывают конфликт между приложениями
  • Уменьшение накладных расходов на мониторинг событий файла (чтение и открытие файла)
  • Улучшена пропускная способность частоты событий и уменьшена занимаемая память
  • Оптимизированная производительность для определенных конфигураций

Как работает eBPF

В eBPF события, ранее полученные от проверяемого поставщика событий, теперь передаются из датчика eBPF. Это помогает обеспечить стабильность системы, повышает загрузку ЦП и памяти, а также снижает нагрузку на диск. Кроме того, если eBPF включен, все настраиваемые правила, связанные с аудитом, удаляются, что помогает снизить вероятность конфликтов между приложениями. Данные, связанные с eBPF, регистрируются в файле /var/log/microsoft/mdatp/microsoft_defender_core.log.

Кроме того, датчик eBPF использует возможности ядра Linux, не требуя использования модуля ядра, который помогает повысить стабильность системы.

Примечание.

eBPF используется в сочетании с auditd, в то время как auditd используется только для событий входа пользователей и записывает эти события без каких-либо настраиваемых правил и автоматически выполняет их поток. Имейте в виду, что аудит будет постепенно удаляться в будущих версиях.

Предварительные требования к системе

Датчик eBPF для Microsoft Defender для конечной точки в Linux поддерживается в следующих минимальных версиях дистрибутива и ядра:

Дистрибутив 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

Примечание.

Oracle Linux 8.8 с ядром версии 5.15.0-0.30.20.el8uek.x86_64, 5.15.0-0.30.20.1.el8uek.x86_64 приведет к зависаю ядра при включении eBPF в качестве дополнительного поставщика подсистемы. Эту версию ядра не следует использовать для режима eBPF. Инструкции по устранению неполадок см. в разделе Устранение неполадок и диагностика.

Использование eBPF

Датчик eBPF автоматически включается для всех клиентов по умолчанию для версий агента "101.23082.0006" и выше. Чтобы использовать эту функцию, клиентам необходимо обновиться до указанных выше поддерживаемых версий. Если датчик eBPF включен в конечной точке, Defender для конечной точки в Linux обновляет supplementary_events_subsystem на ebpf.

Выделение подсистемы ebpf в команде mdatp health

Если вы хотите вручную отключить eBPF, можно выполнить следующую команду:

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

Вы также можете обновить файл mdatp_managed.json:

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

Подробный пример json-файла — Настройка параметров для Microsoft Defender для конечной точки в Linux см. по ссылке.

Важно!

Если отключить eBPF, поставщик дополнительных событий переключается обратно на auditd. Если eBPF не включится или не поддерживается в каком-либо конкретном ядре, он автоматически вернется к аудиту и сохранит все настраиваемые правила аудита.

Вы также можете проверка состояние eBPF (включен или отключен) в конечных точках Linux с помощью расширенной охоты на портале Microsoft Defender. Ниже приведены шаги.

  1. Перейдите на портал Microsoft Defender и выполните вход.

  2. В области навигации перейдите в раздел Охота>Расширенная охота.

  3. В разделе Расширенная охота перейдите в раздел Управление уязвимостями Defender.

  4. Выполните следующий запрос: DeviceTvmInfoGathering.

  5. В выходных данных в столбце Дополнительные поля выберите Показать больше, а затем найдите состояние EBPF: true.

Неизменяемый режим auditd

Для клиентов, использующих аудит в неизменяемом режиме, перезагрузка требуется после включения eBPF, чтобы очистить правила аудита, добавленные Microsoft Defender для конечной точки. Это ограничение в неизменяемом режиме аудита, который замораживает файл правил и запрещает редактирование или перезапись. Эта проблема устранена с помощью перезагрузки. После перезагрузки выполните приведенную ниже команду, чтобы проверка, если правила аудита были очищены.

% sudo auditctl -l

В выходных данных приведенной выше команды не должно отображаться ни правил, ни добавленных пользователем правил. Если правила не были удалены, выполните следующие действия, чтобы очистить файл правил аудита.

  1. Переключение в режим ebpf
  2. Удалите файл /etc/audit/rules.d/mdatp.rules
  3. Перезагрузка компьютера

Устранение неполадок и диагностика

Состояние работоспособности агента можно проверка, выполнив команду работоспособностиmdatp. Убедитесь, что датчик eBPF для Defender для конечной точки в Linux поддерживается, проверив текущую версию ядра с помощью следующей командной строки:

uname -a

Известные проблемы

  1. Включение eBPF в версии RHEL 8.1 с SAP может привести к панике ядра. Чтобы устранить эту проблему, можно выполнить одно из следующих действий:

    • Используйте версию дистрибутива выше 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 может привести к панике ядра. Чтобы устранить эту проблему, можно выполнить одно из следующих действий:

    • Используйте версию ядра выше или ниже 5.15.0-0.30.20.el8uek.x86_64, 5.15.0-0.30.20.1.el8uek.x86_64 в Oracle Linux 8.8, если вы хотите использовать eBPF в качестве дополнительного поставщика подсистемы. Обратите внимание, что минимальная версия ядра для Oracle Linux — RHCK 3.10.0, а UEK Oracle Linux — 5.4.
    • Переключитесь в режим аудита, если вам нужно использовать одну и ту же версию ядра
sudo mdatp config  ebpf-supplementary-event-provider  --value disabled

Следующие два набора данных помогают проанализировать потенциальные проблемы и определить наиболее эффективные варианты их решения.

  1. Соберите диагностический пакет из средства клиентского анализатора с помощью следующих инструкций: Устранение проблем с производительностью для Microsoft Defender для конечной точки в Linux.

  2. Соберите пакет диагностики отладки, когда Defender для конечной точки использует большое значение ресурсов, используя следующие инструкции: Microsoft Defender для конечной точки в ресурсах Linux.

Устранение проблем с производительностью

Если вы видите увеличение потребления ресурсов Microsoft Defender в конечных точках, важно определить процесс, точку подключения и файлы, которые используют большую часть ресурсов ЦП или памяти, а затем применить необходимые исключения. После применения возможных исключений 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. Вы можете создать запрос в корпорации Майкрософт, чтобы исключить этот процесс. В будущем в рамках предстоящих улучшений у вас будет больше контроля за применением таких исключений в конце.

Исключения, примененные к аудиту, не могут быть перенесены или скопированы в eBPF. Распространенные проблемы, такие как шумные журналы, паника ядра, шумные системные вызовы, уже учитываются внутренне eBPF. Если вы хотите добавить дополнительные исключения, обратитесь в корпорацию Майкрософт, чтобы применить необходимые исключения.

См. также