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


Использование датчика на основе 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
Мягкая фетровая шляпа 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. Если вы хотите добавить дополнительные исключения, обратитесь в корпорацию Майкрософт, чтобы применить необходимые исключения.

См. также