Skip to content

Глава 9. EDR и непрерывная оценка

В Главе 8 мы определили что проверяем: шифрование диска, версию ОС, состояние firewall, наличие TPM. Но статичная проверка при подключении — это не Zero Trust. Тенет 5 NIST SP 800-207 требует непрерывного мониторинга. Устройство, чистое утром, может быть скомпрометировано к обеду. Именно здесь начинается роль EDR — как непрерывного источника сигналов для Механизма политик (PE).


Зачем нужна непрерывная оценка

NIST SP 800-207: непрерывный мониторинг в архитектуре

Четыре из семи тенетов NIST SP 800-207 (Section 2.1) напрямую связаны с непрерывной оценкой устройств:

  • Тенет 4: «Доступ к ресурсам определяется динамической политикой — включая наблюдаемое состояние идентичности клиента, приложения/сервиса и запрашивающего актива — и может включать другие поведенческие и средовые атрибуты»
  • Тенет 5: «Организация мониторит и измеряет целостность и состояние безопасности всех принадлежащих и ассоциированных активов. Ни один актив по умолчанию не является доверенным»
  • Тенет 6: «Аутентификация и авторизация — динамические и строго применяемые перед каждым доступом. Это постоянный цикл: получение доступа, сканирование, оценка угроз, адаптация и непрерывная переоценка доверия»
  • Тенет 7: «Организация собирает максимум информации о текущем состоянии активов, сетевой инфраструктуры и коммуникаций и использует её для улучшения безопасности»

Источник: NIST SP 800-207, Section 2.1

Алгоритм доверия (Trust Algorithm, Section 3.3) в PE принимает на вход asset database и observable status — это данные о состоянии устройства, версиях ПО, патчах — и threat intelligence. EDR поставляет данные для обоих входов.

CISA ZTMM v2.0: уровень Optimal

CISA Zero Trust Maturity Model v2.0 (апрель 2023) определяет четыре уровня зрелости для столпа Devices. Уровень Optimal — это целевое состояние:

«Непрерывный мониторинг безопасности устройств и валидация. Доступ к данным зависит от аналитики рисков в реальном времени. Агентства непрерывно выполняют оценку состояния устройств (EDR). Постоянная оценка в реальном времени.»

Функция Device Threat Protection (добавлена в v2.0) явно включает EDR как компонент зрелой архитектуры: от базовой автоматизации (Initial) через консолидированную защиту (Advanced) к единой XDR-платформе для всех активов (Optimal).

Источник: CISA ZTMM v2.0

Статичная проверка vs непрерывная оценка

ХарактеристикаCompliance check (Глава 8)Непрерывная оценка (EDR)
КогдаПри подключении / по расписанию (часы)В реальном времени (секунды)
ЧтоКонфигурация: ОС, шифрование, firewallПоведение: процессы, сетевой трафик, файлы
ОбнаруживаетНесоответствие политикеАктивные угрозы и аномалии
РеакцияБлокировка доступаИзоляция устройства + блокировка доступа
Пример«BitLocker отключен»«Процесс mimikatz.exe извлекает пароли»

Оба механизма необходимы. Compliance check (MDM/UEM) — это гигиенический минимум. EDR — это непрерывный мониторинг поведения. В архитектуре Zero Trust они дополняют друг друга и оба передают сигналы в PE.


EDR и XDR: определения

EDR (Endpoint Detection and Response) — термин, введённый аналитиком Gartner Антоном Чувакиным в 2013 году. EDR мониторит и реагирует на угрозы на конечных точках: рабочих станциях, серверах, мобильных устройствах. В отличие от традиционного антивируса (сигнатурный анализ), EDR анализирует поведение — паттерны процессов, файловых операций, сетевых соединений.

Источники: CrowdStrike — What is EDR, Palo Alto Networks — What is EDR

XDR (Extended Detection and Response) — расширение EDR за пределы endpoint. Gartner определяет XDR как «унифицированную платформу обнаружения и реагирования на инциденты, автоматически коррелирующую данные из нескольких компонентов безопасности».

Источник: Gartner Peer Insights — XDR

АспектEDRXDR
ОбластьТолько endpointEndpoint + сеть + облако + email + идентичность
КорреляцияВнутри одного endpointМежду всеми источниками
Пример«Подозрительный процесс на хосте A»«Фишинговое письмо → вход с нового устройства → lateral movement»

Рынок EDR/XDR (2025)

Gartner Magic Quadrant for Endpoint Protection Platforms (2025) выделяет четырёх лидеров:

  • CrowdStrike — лидер 6-й год подряд, высшая позиция по Ability to Execute (3-й год)
  • Microsoft — лидер 6-й год подряд (Defender for Endpoint + Defender XDR)
  • SentinelOne — лидер 5-й год подряд
  • Palo Alto Networks (Cortex XDR) — лидер 3-й год подряд

Источники: CrowdStrike — 2025 Gartner MQ, Microsoft — 2025 Gartner MQ, SentinelOne — 2025 Gartner MQ

Размер рынка EDR: $5.1 млрд в 2025, прогноз $18.7 млрд к 2031 (CAGR 24%). XDR: $7.9 млрд в 2025, прогноз $30.9 млрд к 2030 (CAGR 31%).

Источники: Mordor Intelligence — EDR Market, MarketsandMarkets — XDR Market


Как EDR передаёт сигналы в архитектуру Zero Trust

В архитектуре NIST SP 800-207, EDR — это один из источников данных для Trust Algorithm (Section 3.3). Поток данных:

Microsoft Defender for Endpoint → Intune → Conditional Access

Самая зрелая интеграция EDR с Zero Trust — цепочка Microsoft: Defender обнаруживает угрозу → Intune оценивает compliance → Entra ID Conditional Access блокирует доступ.

Уровни риска устройства (Defender for Endpoint):

УровеньЗначениеРекомендация
ClearНет активных угрозПолный доступ
LowТолько низкоуровневые угрозыДоступ с предупреждением
MediumСредние угрозыОграниченный доступ, step-up MFA
HighКритические угрозыБлокировка доступа, изоляция

Источник: Microsoft Learn — Conditional Access in Defender for Endpoint

Сценарий:

  1. Пользователь открывает вредоносный файл → Defender for Endpoint помечает устройство как High risk
  2. Оценка передаётся в Intune → политика compliance «Require device risk at or below Medium» → устройство noncompliant
  3. Entra ID Conditional Access → блокирует доступ к Exchange Online, SharePoint
  4. После remediation (автоматическое или ручное) → Defender снимает risk → Intune reassess → доступ восстанавливается

Требования: Microsoft Intune, Entra ID P1/P2, Windows 10/11 Entra ID Joined, лицензия Defender for Endpoint (Plan 2 или Microsoft 365 E5).

Источник: Microsoft Learn — Integrate Defender with Intune

CrowdStrike Falcon Zero Trust Assessment (ZTA)

CrowdStrike реализует непрерывную оценку через ZTA score — числовую оценку от 1 до 100 для каждого устройства (выше = лучше). Score рассчитывается на основе более 120 параметров endpoint, включая:

  • ОС-параметры: настройки безопасности, доступность обновлений прошивки, митигации CVE
  • Параметры сенсора: статус Reduced Functionality Mode (RFM), политики предотвращения, Real Time Response

ZTA score интегрируется с внешними системами контроля доступа:

ИнтеграцияПротоколКак работает
AWS Verified AccessNative Message Host + браузерZTA score как device posture для Cedar-политик
Zscaler Private AccessAPIZPA обновляет политики доступа по ZTA
Beyond IdentityAPIАутентификация только для устройств выше порога ZTA
TailscalePosture checksОграничение доступа к ресурсам по ZTA score

Источники: CrowdStrike — Falcon ZTA, GitHub — CrowdStrike/aws-verified-access, Tailscale — CrowdStrike ZTA

Автоматическая изоляция

Ключевая возможность EDR в контексте Zero Trust — автоматическая изоляция скомпрометированного устройства. Изоляция отключает устройство от сети, оставляя только канал связи с EDR-платформой для расследования и ремедиации.

Это реализация принципа «предполагай взлом» (assume breach): PE не просто блокирует доступ — EDR физически ограничивает сетевую связанность устройства, предотвращая lateral movement.

Источник: Microsoft Learn — Response Actions on Devices


osquery: SQL-based endpoint visibility

Не каждая организация может позволить коммерческий EDR на всех endpoint. osquery — open-source инструмент, который превращает операционную систему в реляционную базу данных с SQL-интерфейсом.

Основы

  • Создан: Facebook, 29 октября 2014 года
  • Текущая версия: 5.21.0 (18 декабря 2025)
  • Governance: osquery Foundation под Linux Foundation (с июня 2019)
  • Платформы: macOS, Linux, Windows, FreeBSD
  • Таблицы: более 270 (варьируется по ОС)
  • Два режима: osqueryi (интерактивная консоль) и osqueryd (демон с расписанием)

Источники: Meta Engineering — Introducing osquery (Oct 29, 2014), osquery GitHub Releases, Linux Foundation — osquery Foundation (June 2019)

Ключевые таблицы для Zero Trust

ТаблицаПлатформаЧто проверяем
os_versionВсеВерсия ОС, патч-уровень
disk_encryptionmacOS, LinuxШифрование диска (FileVault)
bitlocker_infoWindowsСтатус BitLocker, метод, %
processesВсеЗапущенные процессы, PID, путь
listening_portsВсеОткрытые порты, протокол
logged_in_usersВсеТекущие сессии
alfmacOSApplication Layer Firewall
iptablesLinuxПравила фильтрации пакетов
certificatesmacOS, WindowsУстановленные CA-сертификаты
curl_certificateВсеTLS-сертификат удалённого хоста

Источник: osquery Schema, Fleet Table Docs

Примеры запросов для оценки устройства

Проверка шифрования диска:

sql
-- macOS (FileVault)
SELECT name, uuid, encrypted
FROM disk_encryption
WHERE encrypted = 1;

-- Windows (BitLocker) — оба условия обязательны
SELECT
  drive_letter,
  CASE WHEN (conversion_status = 1 AND protection_status = 1)
    THEN 'ENCRYPTED' ELSE 'NOT ENCRYPTED' END AS status,
  encryption_method, percentage_encrypted
FROM bitlocker_info;

Обнаружение работающего EDR-агента:

sql
-- CrowdStrike Falcon (Windows — через сервисы)
SELECT name, display_name, status, start_type
FROM services
WHERE name = 'CSFalconService';

-- Microsoft Defender
SELECT name, pid, path
FROM processes
WHERE name IN ('MsMpEng.exe', 'MsSense.exe');

-- Универсальный запрос для нескольких EDR
SELECT name, pid, path
FROM processes
WHERE name IN (
  'falcon-sensor', 'CSFalconService.exe',        -- CrowdStrike
  'SentinelServiceHost.exe', 'SentinelAgent.exe', -- SentinelOne
  'MsMpEng.exe', 'MsSense.exe',                   -- Microsoft Defender
  'cbagentd', 'CbDefense'                         -- Carbon Black
);

Источники: Fleet — bitlocker_info, Fleet — disk_encryption, 1Password — CrowdStrike Falcon sensor check

Аномальные прослушивающие порты:

sql
SELECT lp.port, lp.protocol, lp.address, p.name, p.path
FROM listening_ports lp
JOIN processes p ON lp.pid = p.pid
WHERE lp.port NOT IN (22, 80, 443, 8080)
  AND lp.address != '127.0.0.1';

Производительность и Watchdog

osquery включает встроенный watchdog для защиты от «тяжёлых» запросов:

ПараметрNormal (Level 0)Restrictive (Level 1)
Лимит памяти200 МБ сверх базовой100 МБ
Лимит CPU10% за 12 секунд5% за 6 секунд
Рестарты до отключения104

Если запрос превышает лимиты, watchdog завершает worker-процесс и блокирует виновный запрос на 24 часа.

Источник: osquery — Performance Safety


Fleet: управление osquery в масштабе

osquery на одном хосте полезен для отладки. Для флота из тысяч устройств нужен центральный сервер. Fleet — open-source платформа управления устройствами, построенная на osquery.

Основы

  • Текущая версия: 4.80.0 (начало 2026)
  • Лицензия: MIT (ядро), premium-функции под отдельной лицензией (ee/ директория)
  • Платформы: macOS, Linux, Windows, iOS, iPadOS, Android, ChromeOS
  • Масштаб: 50 000+ endpoint (серверы, контейнеры, ноутбуки)
  • Сайт: fleetdm.com

Архитектура Fleet:

Три зависимости: MySQL (хранилище), Redis (очереди и кэш), TLS-сертификат. Redis масштабируется до сотен тысяч устройств на одном инстансе. Горизонтальное масштабирование — добавить Fleet-серверы за балансировщиком.

Источник: Fleet — Reference Architectures

Policies: SQL-based compliance

Главная функция Fleet для Zero Trust — политики (policies). Политика — это SQL-запрос с бинарным результатом:

  • Запрос вернул строки → PASS (соответствует)
  • Запрос не вернул строк → FAIL (не соответствует)
yaml
# fleet-policies.yml (GitOps)
policies:
  - name: "Disk encryption enabled"
    query: >
      SELECT 1 FROM disk_encryption WHERE encrypted = 1;
    description: "FileVault or LUKS must be enabled"
    resolution: "Enable FileVault: System Preferences → Security → FileVault"
    platform: darwin,linux

  - name: "OS is up to date"
    query: >
      SELECT 1 FROM os_version
      WHERE version >= '14.0' AND platform = 'darwin';
    description: "macOS must be 14.0 (Sonoma) or newer"
    resolution: "Update macOS: System Settings → General → Software Update"
    platform: darwin

  - name: "CrowdStrike Falcon is running"
    query: >
      SELECT 1 FROM processes WHERE name = 'falcon-sensor';
    description: "CrowdStrike Falcon sensor must be active"
    resolution: "Contact IT: CrowdStrike agent is not running on your device"
    platform: darwin,linux

Fleet предоставляет библиотеку готовых политик (CIS benchmarks, типовые compliance-проверки) и поддерживает GitOps — политики хранятся в Git и применяются через fleetctl apply.

Источник: Fleet — Understanding Policies, Fleet — GitOps YAML

Webhook-автоматизация

Когда устройство переходит из состояния PASS в FAIL, Fleet отправляет webhook с данными о хосте и нарушенной политике. Это ключевой механизм интеграции с архитектурой Zero Trust:

Пример интеграции: Fleet обнаруживает, что шифрование диска отключено → webhook в Tines → Tines вызывает API Okta/Entra ID для обновления device trust signal → следующая аутентификация требует step-up MFA или блокирует доступ.

Fleet 4.71.0 добавил IdP-based labels — устройства автоматически маркируются на основе групп в IdP. Fleet 4.76.0 расширил API маппинга устройств с источником idp.

Источники: Fleet — Automations, Fleet — Zero Trust Attestation, Fleet 4.71.0 Release Notes

Vulnerability management

Fleet автоматически сопоставляет установленное ПО с базами уязвимостей:

  • NVD (National Vulnerability Database) — CVE-записи
  • CISA KEV (Known Exploited Vulnerabilities) — активно эксплуатируемые уязвимости
  • EPSS (Exploit Prediction Scoring System) — вероятность эксплуатации

Это позволяет не просто обнаружить уязвимое ПО, но приоритизировать по реальному риску.

Источник: Fleet — Vulnerability Processing

Fleet vs коммерческий EDR

АспектFleet + osqueryКоммерческий EDR
Детекция угрозSQL-запросы, поведенческий анализ ограниченML/AI, поведенческий анализ, threat intelligence
РеагированиеWebhook → внешняя автоматизацияАвтоматическая изоляция, remediation
ComplianceПолностью настраиваемые SQL-политикиПредустановленные проверки вендора
СтоимостьMIT (бесплатно для core)$5-50/endpoint/месяц
GitOpsНативная поддержка (fleetctl, YAML)Ограниченная
ПозиционированиеEndpoint visibility + complianceThreat detection + response

Fleet не заменяет коммерческий EDR. Это дополнительный инструмент: когда EDR обнаруживает угрозу и изолирует устройство, osquery даёт полную видимость для расследования. Когда EDR стоит слишком дорого для всего флота — Fleet закрывает базовую compliance-проверку.


Уроки инцидентов

SolarWinds / SUNBURST (декабрь 2020)

Атака на цепочку поставок SolarWinds — один из наиболее значимых инцидентов, связанных с ограничениями EDR. Троянизированное обновление SolarWinds Orion было подписано легитимным сертификатом — EDR-системы рассматривали его как доверенное ПО.

Обнаружение произошло не через сигнатуры, а через аномальное поведение — FireEye (ныне Mandiant) обнаружила несанкционированный доступ к своим инструментам red team.

Урок для Zero Trust: доверие к подписанному ПО недостаточно. Нужна непрерывная поведенческая аналитика + верификация цепочки поставок (тема Главы 15).

Источники: Mandiant — SUNBURST Backdoor, US GAO — SolarWinds Cyberattack

CrowdStrike Falcon — сбой 19 июля 2024

Не атака, а операционный урок. 19 июля 2024 в 04:09 UTC CrowdStrike выпустила обновление конфигурации (Channel File 291) с ошибкой — несовпадение IPC Template Type (21 поле) с кодом сенсора (20 полей). Content Validator не обнаружил ошибку.

Результат:

  • 8.5 млн устройств Windows затронуто (оценка Microsoft, <1% всех Windows-устройств)
  • Отмены авиарейсов, блокировка платёжных систем, сбои государственных сервисов
  • Оценка убытков: ~$5.4 млрд для топ-500 компаний США (Parametrix)
  • Delta Air Lines подала иск на $500 млн

Источники: Wikipedia — 2024 CrowdStrike IT Outages, CISA Alert — CrowdStrike Update, CrowdStrike — Channel File 291 RCA

Урок для Zero Trust: EDR-агент с доступом на уровне ядра — единая точка отказа. Архитектура должна предусматривать graceful degradation — что делать с доступом, когда EDR-сигнал недоступен:

  • Снизить уровень доступа (read-only)
  • Потребовать дополнительный фактор (step-up MFA)
  • Ограничить время сессии

Вызовы и ограничения

BYOVD (Bring Your Own Vulnerable Driver)

Техника постэксплуатации: атакующий загружает легитимный, но уязвимый подписанный драйвер ядра для отключения EDR-агента. Исследователи идентифицировали 917 подписанных 64-bit драйверов, пригодных для эксплуатации, и более 5 500 потенциально уязвимых драйверов, импортирующих опасные kernel API.

В 2026 году зафиксирована атака с использованием драйвера EnCase (Guidance Software) через BYOVD для завершения 59 процессов средств защиты с kill-loop каждую секунду.

Источники: Cymulate — How Attackers Bypass EDR, Dark Reading — EnCase Driver Weaponized

False positives и alert fatigue

По данным опроса Bitdefender (2024): ~45% всех EDR-алертов — false positives. До 30% алертов никогда не расследуются. Организации получают ~17 000 алертов о вредоносном ПО в неделю, из которых только 19% — реальные угрозы.

Источник: Bitdefender — Half of EDR Alerts Are False Alarms

Для архитектуры Zero Trust это означает: нельзя блокировать доступ на каждый EDR-алерт. Нужна калибровка порогов — только подтверждённые угрозы (High risk) должны блокировать доступ; подозрения (Medium) — требовать step-up MFA; низкие (Low) — логироваться без блокировки.

Зависимость от одного вендора

Инцидент CrowdStrike показал системный риск. Рекомендации:

  • EDR — один из многих сигналов, а не единственный. PE принимает решение на основе identity + device compliance + EDR + network context
  • Политика graceful degradation при недоступности EDR-сигнала
  • Для критической инфраструктуры — рассмотреть многовендорную стратегию

Lab: osquery + Fleet для endpoint telemetry

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

  • Docker и docker-compose
  • Браузер для Fleet UI

Шаг 1: Развёртывание Fleet

bash
# Создаём рабочую директорию
mkdir -p fleet-lab && cd fleet-lab

# docker-compose.yml для Fleet + MySQL + Redis
cat > docker-compose.yml << 'EOF'
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: fleet_root_pass
      MYSQL_DATABASE: fleet
      MYSQL_USER: fleet
      MYSQL_PASSWORD: fleet_pass
    volumes:
      - mysql-data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      retries: 5

  redis:
    image: redis:7
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      retries: 5

  fleet:
    image: fleetdm/fleet:v4.80.0
    command: fleet serve
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy
    environment:
      FLEET_MYSQL_ADDRESS: mysql:3306
      FLEET_MYSQL_DATABASE: fleet
      FLEET_MYSQL_USERNAME: fleet
      FLEET_MYSQL_PASSWORD: fleet_pass
      FLEET_REDIS_ADDRESS: redis:6379
      FLEET_SERVER_TLS: "false"
      FLEET_LOGGING_JSON: "true"
    ports:
      - "8412:8080"

volumes:
  mysql-data:
EOF

Примечание: FLEET_SERVER_TLS=false — только для лабораторной среды. В продакшене обязателен TLS.

bash
# Запуск
docker-compose up -d

# Инициализация базы
docker-compose exec fleet fleet prepare db

# Создание admin-пользователя
docker-compose exec fleet fleet setup \
  --email admin@lab.local \
  --name Admin \
  --password 'Lab#Pass2026!' \
  --org-name "ZT Lab"

Fleet UI доступен на http://localhost:8412.

Шаг 2: Подключение osquery-агента

bash
# Получаем enroll secret из Fleet
ENROLL_SECRET=$(docker-compose exec fleet \
  fleet get enroll-secret 2>/dev/null | head -1)
FLEET_URL="http://host.docker.internal:8412"

# Запуск osquery в Docker с подключением к Fleet
docker run -d --name osquery-agent \
  --add-host=host.docker.internal:host-gateway \
  osquery/osquery:5.21.0 \
  osqueryd \
    --tls_hostname="host.docker.internal:8412" \
    --tls_server_certs="" \
    --enroll_tls_endpoint="/api/osquery/enroll" \
    --config_tls_endpoint="/api/osquery/config" \
    --logger_tls_endpoint="/api/osquery/log" \
    --distributed_tls_read_endpoint="/api/osquery/distributed/read" \
    --distributed_tls_write_endpoint="/api/osquery/distributed/write" \
    --enroll_secret_env=ENROLL_SECRET \
    --disable_events=false \
    --host_identifier=hostname

В продакшене используйте сгенерированные Fleet-инсталляторы (fleetctl package), которые встраивают osquery и конфигурацию в один пакет.

Шаг 3: Создание политик Zero Trust

Через fleetctl или API:

bash
# fleet-policies.yml
cat > fleet-policies.yml << 'EOF'
apiVersion: v1
kind: policy
spec:
  policies:
    - name: "OS version is current"
      query: >
        SELECT 1 FROM os_version
        WHERE (platform = 'darwin' AND version >= '14.0')
           OR (platform = 'ubuntu' AND version >= '22.04')
           OR (platform = 'windows' AND version >= '10.0.19045');
      description: "OS must be a supported, patched version"
      resolution: "Update your operating system to the latest supported version"
      platform: darwin,linux,windows

    - name: "Disk is encrypted"
      query: >
        SELECT 1 FROM disk_encryption WHERE encrypted = 1
        UNION
        SELECT 1 FROM bitlocker_info
        WHERE conversion_status = 1 AND protection_status = 1;
      description: "Full disk encryption (FileVault/LUKS/BitLocker) must be enabled"
      resolution: "Enable disk encryption in system settings"

    - name: "EDR agent is running"
      query: >
        SELECT 1 FROM processes
        WHERE name IN ('falcon-sensor','CSFalconService.exe',
          'MsMpEng.exe','MsSense.exe',
          'SentinelServiceHost.exe','osqueryd');
      description: "An EDR or osquery agent must be running"
      resolution: "Contact IT: security agent is not running"
EOF

# Применяем политики
docker-compose exec fleet fleetctl apply -f /dev/stdin < fleet-policies.yml

Шаг 4: Проверка через API

bash
FLEET_URL="http://localhost:8412"
API_TOKEN="<token из Fleet UI: Settings → API tokens>"

# Список хостов с результатами политик
curl -s -H "Authorization: Bearer $API_TOKEN" \
  "$FLEET_URL/api/v1/fleet/hosts" | \
  python3 -m json.tool | head -30

# Детали конкретного хоста (policies, software, CVEs)
curl -s -H "Authorization: Bearer $API_TOKEN" \
  "$FLEET_URL/api/v1/fleet/hosts/1" | \
  python3 -c "
import sys, json
host = json.load(sys.stdin)['host']
print(f\"Hostname: {host['hostname']}\")
print(f\"Platform: {host['platform']}\")
print(f\"OS:       {host['os_version']}\")
print(f\"Policies:\")
for p in host.get('policies', []):
    status = 'PASS' if p['response'] == 'pass' else 'FAIL'
    print(f\"  [{status}] {p['name']}\")
"

Шаг 5: Настройка webhook для интеграции с PDP

bash
# Включаем webhook для failing policies
curl -s -X PATCH -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  "$FLEET_URL/api/v1/fleet/config" \
  -d '{
    "webhook_settings": {
      "failing_policies_webhook": {
        "enable_failing_policies_webhook": true,
        "destination_url": "https://hooks.example.com/fleet-policy-fail",
        "policy_ids": [1, 2, 3],
        "host_batch_size": 100
      }
    }
  }'

Fleet отправит POST-запрос на destination_url при каждом переходе хоста из PASS в FAIL. Payload содержит:

json
{
  "timestamp": "2026-02-10T12:00:00Z",
  "policy": {
    "id": 2,
    "name": "Disk is encrypted"
  },
  "hosts": [
    {
      "id": 1,
      "hostname": "workstation-42",
      "platform": "darwin",
      "display_name": "workstation-42"
    }
  ]
}

Обработчик webhook (Tines, n8n, custom Lambda) маршрутизирует сигнал в IdP/PDP для обновления device trust.

Источник: Fleet — Automations

Очистка

bash
docker-compose down -v
rm -rf fleet-lab

Итоги главы

КонцепцияЧто даёт
EDR как сигналНепрерывный risk score → PE принимает динамические решения о доступе
Defender → Intune → CAЗрелая интеграция: угроза → noncompliant → блокировка доступа → remediation → восстановление
CrowdStrike ZTAScore 1-100, интеграции с AWS Verified Access, Zscaler, Tailscale
osqueryOpen-source SQL-интерфейс к ОС, 270+ таблиц, контроль производительности через watchdog
FleetЦентральное управление osquery, SQL-политики compliance, webhook → IdP, GitOps
Graceful degradationЧто делать, когда EDR-сигнал недоступен: снизить доступ, step-up MFA

В следующей главе мы перейдём от endpoint к сети — Глава 10: Микросегментация.

Опубликовано под лицензией CC BY-SA 4.0