Linux에서 엔드포인트용 Microsoft Defender eBPF 기반 센서 사용

적용 대상:

linux의 엔드포인트용 Microsoft Defender 대한 확장된 버클리 패킷 필터(eBPF)는 Linux 운영 체제에 대한 추가 이벤트 데이터를 제공합니다. eBPF는 감사된 이벤트 공급자와 관련된 여러 종류의 문제를 해결하는 데 도움이 되며 성능 및 시스템 안정성 영역에서 유용하기 때문에 eBPF를 감사할 대체 기술로 사용할 수 있습니다.

주요 이점은 다음과 같습니다.

  • 시스템 전체 감사 관련 로그 노이즈 감소
  • 애플리케이션 간에 충돌을 일으키는 최적화된 시스템 전체 이벤트 규칙
  • 파일 이벤트(파일 읽기/열기) 모니터링에 대한 오버헤드 감소
  • 향상된 이벤트 속도 처리량 및 메모리 공간 감소
  • 특정 구성에 최적화된 성능

eBPF 작동 방식

eBPF를 사용하면 감사된 이벤트 공급자에서 이전에 가져온 이벤트가 이제 eBPF 센서에서 흐릅니다. 이는 시스템 안정성에 도움이 되며, CPU 및 메모리 사용률을 개선하고, 디스크 사용량을 줄입니다. 또한 eBPF를 사용하도록 설정하면 모든 감사 관련 사용자 지정 규칙이 제거되므로 애플리케이션 간의 충돌 가능성을 줄일 수 있습니다. eBPF와 관련된 데이터는 /var/log/microsoft/mdatp/microsoft_defender_core.log 파일에 로그인됩니다.

또한 eBPF 센서는 시스템 안정성을 높이는 데 도움이 되는 커널 모듈을 사용할 필요 없이 Linux 커널의 기능을 사용합니다.

참고

eBPF는 감사와 함께 사용되지만 감사는 사용자 로그인 이벤트에만 사용되며 사용자 지정 규칙 없이 이러한 이벤트를 캡처하고 자동으로 전달합니다. 감사는 이후 버전에서 점진적으로 제거됩니다.

시스템 필수 구성 요소

Linux의 엔드포인트용 Microsoft Defender 위한 eBPF 센서는 다음과 같은 최소 배포 및 커널 버전에서 지원됩니다.

Linux 배포 배포 버전 커널 버전
우분투 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
데비안 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 사용

eBPF 센서는 에이전트 버전 "101.23082.0006" 이상에 대해 기본적으로 모든 고객에 대해 자동으로 사용하도록 설정됩니다. 고객은 이 기능을 경험하려면 위에서 언급한 지원되는 버전으로 업데이트해야 합니다. 엔드포인트에서 eBPF 센서를 사용하도록 설정하면 Linux의 엔드포인트용 Defender가 supplementary_events_subsystem ebpf로 업데이트됩니다.

mdatp 상태 명령의 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 Portal에서 고급 헌팅을 사용하여 linux 엔드포인트에서 eBPF(사용/사용 안 함)의 상태 검사 수 있습니다. 단계는 다음과 같습니다.

  1. Microsoft Defender 포털로 이동하여 로그인합니다.

  2. 탐색 창에서 헌팅고급 헌팅>으로 이동합니다.

  3. 고급 헌팅에서 Defender 취약성 관리로 이동합니다.

  4. 다음 쿼리를 실행합니다 DeviceTvmInfoGathering.

  5. 출력의 추가 필드 열에서 자세히 표시를 선택한 다음 , EBPF 상태: true를 찾습니다.

감사의 변경할 수 없는 모드

변경할 수 없는 모드에서 감사를 사용하는 고객의 경우 엔드포인트용 Microsoft Defender 추가한 감사 규칙을 지우려면 eBPF를 사용하도록 설정한 후 다시 부팅해야 합니다. 이는 변경 불가능한 감사 모드의 제한 사항으로, 규칙 파일을 중지하고 편집/덮어쓰기를 금지합니다. 이 문제는 다시 부팅으로 해결됩니다. 다시 부팅 후 아래 명령을 실행하여 감사 규칙이 지워지면 검사.

% sudo auditctl -l

위 명령의 출력에는 규칙이나 사용자가 추가한 규칙이 표시되지 않아야 합니다. 규칙이 제거되지 않은 경우 다음 단계를 수행하여 감사 규칙 파일을 지웁 수 있습니다.

  1. ebpf 모드로 전환
  2. /etc/audit/rules.d/mdatp.rules 파일을 제거합니다.
  3. 컴퓨터 다시 부팅

문제 해결 및 진단

상태 명령을 실행 mdatp 하여 에이전트 상태 상태 검사 수 있습니다. 다음 명령줄을 사용하여 현재 커널 버전을 확인하여 Linux의 엔드포인트용 Defender용 eBPF 센서가 지원되는지 확인합니다.

uname -a

알려진 문제

  1. SAP를 사용하여 RHEL 8.1 버전에서 eBPF를 사용하도록 설정하면 커널 패닉이 발생할 수 있습니다. 이 문제를 완화하려면 다음 단계 중 하나를 수행할 수 있습니다.

    • RHEL 8.1보다 높은 배포판을 사용합니다.
    • RHEL 8.1 버전을 사용해야 하는 경우 감사 모드로 전환합니다.
  2. 커널 버전 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

다음 두 데이터 집합은 잠재적인 문제를 분석하고 가장 효과적인 해결 옵션을 결정하는 데 도움이 될 수 있습니다.

  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는 ID가 82인 시스템 호출을 생성합니다. Microsoft에서 티켓을 만들어 이 프로세스를 제외할 수 있습니다. 향후 개선 사항의 일환으로 이러한 제외를 적용할 수 있는 더 많은 제어 권한이 있습니다.

감사에 적용된 제외는 eBPF로 마이그레이션하거나 복사할 수 없습니다. 시끄러운 로그, 커널 패닉, 시끄러운 syscall과 같은 일반적인 문제는 이미 내부적으로 eBPF에 의해 처리됩니다. 추가 제외를 추가하려는 경우 Microsoft에 연락하여 필요한 제외를 적용합니다.

참고 항목