Приём обнаружений уязвимостей, событий сканирования и логов аудита Tenable
Приём обнаружений уязвимостей, событий сканирования и логов аудита Tenable
Расширение
Приоритизируйте уязвимости Tenable с учётом контекста продуктивной среды.
Начало работы
Обзор
Tenable предлагает надёжные решения для выявления, приоритизации и устранения уязвимостей, что критически важно для снижения киберрисков и защиты цифровой инфраструктуры. Интеграция обнаружений Tenable в Ключ-АСТРОМ позволяет повысить общий уровень безопасности за счёт всесторонней видимости и оптимизированного управления уязвимостями.
Сценарии использования
С загруженными данными можно реализовать различные сценарии, например:
- Визуализировать и анализировать обнаружения безопасности
- Выявлять пробелы в покрытии обнаружений безопасности
- Автоматизировать и оркестрировать обнаружения безопасности
Требования
Поддерживаемые продукты Tenable
- Tenable Vulnerability Management (для уязвимостей и событий сканирования)
- Tenable Web App Scanning (для уязвимостей и событий сканирования)
- Tenable One (для логов аудита)
- (больше — скоро)
Требования Tenable
Создайте ключ доступа API и секретный ключ со следующими ролями:
- Basic — для управления уязвимостями и сканирования веб-приложений.
- Чтобы получить полные сведения о сканированиях, убедитесь, что настроенный ключ API также имеет доступ на чтение сканирований и истории сканирований. Подробности о необходимых API см. в разделе «API, используемые для получения данных».
- Administrator или Custom — для логов аудита.
Подробности см. в разделе «Роли и привилегии, предоставляемые Tenable».
Требования Ключ-АСТРОМ
- Версия АктивныйШлюз 1.299+
Разрешения:
- Для запуска Расширений: перейдите в Расширения, откройте Расширения и просмотрите техническую информацию.
- Для запроса принятых данных:
storage:security.events:read.
Токены:
- Создайте токен доступа с областью действия
openpipeline.events_securityи сохраните его. Подробности см. в разделе «Токены и аутентификация API Ключ-АСТРОМ».
Активация и настройка
- В Ключ-АСТРОМ найдите Tenable и выберите Установить.
- Следуйте инструкциям на экране для настройки расширения.
Проверьте конфигурацию, выполнив следующие запросы в Блокнотах:
Для уязвимостей и сканирований ресурсов:
fetch security.events | filter dt.system.bucket=="default_securityevents" | filter event.provider == "Tenable"
Для логов аудита:
fetch logs | filter log.source == "Tenable"
После установки и запуска расширения вы можете получить к нему доступ и управлять им в Ключ-АСТРОМ через Расширения. Подробности см. в разделе «О расширениях».
Теперь вы можете визуализировать обнаружения, анализировать логи аудита и автоматизировать уведомления.
Подробности
Как это работает
Интеграция Ключ-АСТРОМ с Tenable — это расширение, работающее на АктивныйШлюз Ключ-АСТРОМ. После включения и настройки расширения Tenable для Ключ-АСТРОМ:
- Оно периодически обращается к продуктам Tenable и получает новые обнаружения, сканирования и логи аудита через API Tenable.
- Полученные данные загружаются в Ключ-АСТРОМ и сопоставляются с Семантическим словарём Ключ-АСТРОМ.
- Данные сохраняются в бакете
default_securityevents(подробности см. в разделе «Встроенные бакеты»).
Визуализация
- Откройте Расширения и перейдите в Tenable.
- В разделе Содержимое расширения выберите нужный готовый дашборд.
- В фильтре Продукт выберите Tenable, чтобы просмотреть данные, сообщённые Tenable, например критические уязвимости и затронутые объекты.
Анализ
Откройте Блокноты или Расследования, чтобы запрашивать принятые данные, используя формат данных из Семантического словаря.
Примеры построения запросов см. ниже.
Запрос логов во времени по действию
fetch logs
| filter log.source == "Tenable"
| makeTimeseries logs=countDistinctExact(id), by:{audit.action}, time:{toTimestamp(received)}, interval:{3h}
Запрос распределения уязвимостей по уровню риска
fetch security.events | filter dt.system.bucket=="default_securityevents" | filter event.type == "VULNERABILITY_FINDING" | filter event.provider == "Tenable" | dedup {object.id, vulnerability.id}, sort:{timestamp} | summarize Vulnerabilities=countDistinctExact(vulnerability.id), by:{dt.security.risk.level} | fieldsAdd order=if(dt.security.risk.level=="CRITICAL", 1, else:
if(dt.security.risk.level=="HIGH", 2, else: if(dt.security.risk.level=="MEDIUM", 3, else: if(dt.security.risk.level=="LOW", 4, else:5))))| sort order asc
Запрос топ-10 сканирований с наибольшим покрытием хостов
fetch security.events | filter dt.system.bucket=="default_securityevents" | filter event.type == "VULNERABILITY_SCAN" | filter event.provider == "Tenable" | dedup {object.id, scan.id} | summarize Hosts=countDistinctExact(object.id), by:{scan.name} | sort Hosts desc | limit 10
Автоматизация уведомлений
- Скачайте наш пример рабочего процесса для Jira или пример рабочего процесса для Slack.
- Откройте Рабочие процессы, выберите Загрузить, затем выберите скачанный файл.
- Настройте рабочий процесс под свои задачи, чтобы создавать уведомления о критических обнаружениях Tenable.
Лицензирование и затраты
Информацию о выставлении счетов см. в разделе о событиях.
Наборы функций
При активации расширения с помощью конфигурации мониторинга вы можете ограничить мониторинг одним из наборов функций. Для корректной работы расширение должно собрать хотя бы одну метрику после активации.
В сильно сегментированных сетях наборы функций могут отражать сегменты вашей среды. Тогда при создании конфигурации мониторинга вы можете выбрать набор функций и соответствующую группу АктивныйШлюз, которая может подключиться к этому конкретному сегменту.
Все метрики, не отнесённые ни к одному набору функций, считаются набором по умолчанию и передаются всегда.
Метрика наследует набор функций подгруппы, которая, в свою очередь, наследует набор функций группы. Кроме того, набор функций, определённый на уровне метрики, переопределяет набор функций, определённый на уровне подгруппы, который, в свою очередь, переопределяет набор функций, определённый на уровне группы.
FAQ
Почему в моей конфигурации отображается ошибка?
Сообщение об ошибке: Failed to assign monitoring configuration to ActiveGate. Reason: Extension com.astromkey.extension.tenable(<version-number>) not available in cache yet (queued for download).
Если в вашей конфигурации отображается указанное выше сообщение об ошибке, это означает, что АктивныйШлюз всё ещё загружает расширение для кластера. Статус должен измениться через несколько минут.
Почему я вижу дублирующиеся события?
Дублирующиеся события в расширении Tenable, вероятно, связаны с тем, что первый приём запускается несколько раз. Когда конфигурация мониторинга назначается АктивныйШлюз, при первом запуске выполняется экспорт за более длительный период (настраивается в параметрах конфигурации мониторинга). При каждом перезапуске расширения (из-за обновления, сброса АктивныйШлюз, отработки отказа и т.д.) первый приём запускается снова.
Вы можете выполнить запрос DQL и удалить дубликаты событий с помощью полей object.id, scan.id и finding.id.
- Для
VULNERABILITY_FINDINGуникальный идентификатор —{object.id, finding.id}. - Для
VULNERABILITY_SCANуникальный идентификатор —{object.id, scan.id}.
Пример:
fetch security.events
| filter dt.system.bucket=="default_securityevents"
| filter event.type == "VULNERABILITY_FINDING"
| filter event.provider == "Tenable"
| dedup {object.id, finding.id}, sort:{timestamp}
Почему у некоторых событий сканирования совпадают время начала и окончания?
При получении уязвимостей расширение Tenable пытается сопоставить данные с недавними запусками сканирований. Если сканирование, упомянутое в уязвимости Tenable, не найдено (например, из-за отсутствия разрешений), расширение создаёт событие сканирования на основе этого обнаружения. У таких событий сканирования время начала и окончания совпадает со временем обнаружения уязвимости.
Почему мои данные не загружаются?
Если вы установили и настроили расширение, но данные не загружаются, выполните следующие шаги.
- Откройте расширение и перейдите в Состояние, чтобы проверить статус конфигурации мониторинга.
- Если статус не OK, прокрутите вниз до раздела Логи и выберите Запустить запрос, чтобы увидеть информацию об ошибке.
- Если информации об ошибке недостаточно или статус показывает OK, но данные всё равно не поступают, извлеките архив поддержки из АктивныйШлюз для дальнейшей диагностики.
Как извлечь архив поддержки
- Найдите идентификатор АктивныйШлюз для экземпляра, на котором выполняется конфигурация, и извлеките архив поддержки. Подробности см. в разделе «Диагностика АктивныйШлюз: сбор и локальный просмотр».
- Распакуйте архив поддержки и найдите файл лога расширения по пути
COLLECTOR/<id>/remotepluginmodule/log/extensions/datasources/com.astromkey.extension.tenable/python3.log. - Если информации там всё ещё недостаточно для диагностики, включите флаг Логи отладки в конфигурации мониторинга и обратитесь в службу поддержки Ключ-АСТРОМ.
Распространённые причины пропуска приёма данных:
- Нет соединения между АктивныйШлюз и облаком Tenable.
- Рекомендация: попробуйте выполнить
curlк URL облака Tenable с АктивныйШлюз, чтобы убедиться, что соединение работает.
- Рекомендация: попробуйте выполнить
- Неверный ключ доступа и/или секретный ключ.
- Рекомендация: перепроверьте учётные данные, настроенные в конфигурации мониторинга.
- Отсутствуют разрешения у пользователя API.
- Рекомендация: убедитесь, что пользователь API может вызывать API, используемые для получения данных.
Какие поля расширения добавляются к основным полям событий, принятых из Tenable?
Добавляется пространство имён tenable для извлечения ряда специфичных для Tenable атрибутов, что удобно для пользователя, поверх исходного JSON проблемы, который хранится в поле event.original_content.
Примеры:
tenable.vprtenable.last_foundtenable.first_foundtenable.last_fixed
Какие типы ресурсов Tenable поддерживаются Ключ-АСТРОМ для контекстуализации среды выполнения?
HOST — все обнаружения из Tenable Vulnerability Management, полученные при сканировании хостов, сопоставляются со значением HOST в поле object.type, и добавляется пространство имён host с соответствующими полями:
host.nameпредставляет имя хоста, обнаруженное Tenable.host.ipпредставляет IP-адрес хоста, просканированный Tenable.host.fqdnпредставляет FQDN хоста, разрешённый Tenable.
Контекстуализацию среды выполнения можно выполнять по полю host.ip.
Как нормализуется оценка риска для обнаружений Tenable?
Ключ-АСТРОМ нормализует оценки серьёзности и риска для всех обнаружений, принятых через текущую интеграцию. Это помогает согласованно приоритизировать обнаружения независимо от их источника.
Подробности о том, как работает нормализация, см. в разделе «Нормализация серьёзности и оценок».
Уровни и оценки риска Ключ-АСТРОМ сопоставляются из исходного уровня серьёзности Tenable.
Tenable использует оценку VPR. Однако уровни серьёзности устанавливаются на основе оценок CVSS (v2 или v3, в зависимости от конфигурации). Поэтому Ключ-АСТРОМ сопоставляет уровень серьёзности с уровнем риска и затем присваивает соответствующую оценку риска на его основе.
dt.security.risk.levelберётся из уровня серьёзности Tenable и сопоставляется из исходных значений вfinding.severity.dt.security.risk.scoreсопоставляется из сопоставленного уровня риска с набором статических оценок.
| dt.security.risk.level (сопоставлено с finding.severity) | dt.security.risk.score (сопоставлено с dt.security.risk.level) |
|---|---|
| critical -> CRITICAL | 10.0 |
| high -> HIGH | 8.9 |
| medium -> MEDIUM | 6.9 |
| low -> LOW | 3.9 |