Как настроить интеграцию Kaspersky Managed Detection and Response с Kaspersky Unified Monitoring and Analysis Platform
Показать приложения и версии, к которым применима статья
- Kaspersky Managed Detection and Response (все версии);
- Kaspersky Unified Monitoring and Analysis Platform 4.6;
- Kaspersky Unified Monitoring and Analysis Platform 4.2;
- Kaspersky Unified Monitoring and Analysis Platform 4.0;
- Kaspersky Unified Monitoring and Analysis Platform 3.4;
- Kaspersky Unified Monitoring and Analysis Platform 3.2.
Kaspersky Managed Detection and Response (далее MDR) представляет собой решение для автоматического обнаружения и анализа инцидентов безопасности в вашей инфраструктуре с помощью телеметрии и передовых технологий машинного обучения. Чтобы автоматически импортировать инциденты из веб-интерфейса MDR в Kaspersky Unified Monitoring and Analysis Platform (далее KUMA) для последующей обработки и анализа, настройте интеграцию решений.
Программные требования и сетевые доступы
Перед началом настройки интеграции убедитесь, что выполнены следующие условия:
| Актив | Требование |
|---|---|
| KUMA | Версия 3.2 или выше. |
| Python | Версия 3.8 или выше. |
| Библиотеки Python |
|
| Сервер с интеграцией |
|
Состав утилиты интеграции
Утилита интеграции представляет собой набор независимых модулей. В файле конфигурации config.yml вы можете настроить модули, которые будут использоваться в вашем сценарии интеграции KUMA и MDR.
Состав утилиты:
| Файл или каталог | Содержимое |
|---|---|
main.py |
Основной скрипт, который запускает модули и проверяет их работоспособность. |
/src |
Программный код модулей интеграции. |
/conf |
|
/data |
|
/log |
Журнал работы app.log. |
Как подготовить MDR и KUMA к интеграции
Шаг 1. Подготовьте MDR
- Сгенерируйте API-токен MDR. Для этого:
- Откройте веб-интерфейс MDR и перейдите в раздел Параметры.
- Нажмите Добавить.
- Укажите Имя соединения.
Имя соединения будет отображаться как имя пользователя при создании инцидентов, комментариев и вложений.
- Выберите роль Администратор MDR в раскрывающемся списке Роль пользователя.
- Выберите один или несколько тенантов, из которых необходимо импортировать инциденты в KUMA, раскрывающемся списке Тенант.
Если в раскрывающемся списке Тенант отсутствуют варианты, выберите Корневой тенант, чтобы при соединении утилита обнаружила инциденты.
- Нажмите Создать.
- Сохраните значения следующих параметров:
- Токен JWT: первичный токен, используется для получения токена доступа (access token) и токена обновления (refresh token).
- Client ID: идентификатор клиента, передается при запросах к API MDR.
- Укажите путь к сертификату сервера MDR (опционально).
По умолчанию проверка подлинности сертификата сервера MDR отключена. Если проверка требуется, загрузите цепочку сертификатов в формате.pem. Для этого:- Откройте веб-интерфейс MDR.
- Нажмите на значок настроек страницы в адресной строке слева от адреса веб-сайта.
- Перейдите в раздел Подключение защищено и нажмите Действительный сертификат.
- Выберите вкладку Подробнее.
- Нажмите Экспорт для сертификатов в блоке Иерархия сертифкатов:
DigiCert Global G2 TLS RSA SHA256 2020 CA1.crt;DigiCert Global Root G2.crt;_.mdr.kaspersky.crt;
- Создайте файл в формате
.pemс сертификатами, экспортированными из браузера на предыдущем шаге:cat "DigiCert Global G2 TLS RSA SHA256 2020 CA1.crt" "DigiCert Global Root G2.crt" "_.mdr.kaspersky.crt" > mdr.pem - Разместите файл
mdr.pemв каталоге/conf.
По истечении срока действия сертификата или при его замене повторите шаги из пункта 2 и обновите файл mdr.pem.
Шаг 2. Подготовьте KUMA
- Сгенерируйте API-токен KUMA. Для этого:
- Откройте веб-интерфейс KUMA и перейдите в раздел Параметры → Доступ → Пользователи.
- Создайте новую учетную запись пользователя с ролью Младший аналитик по инструкции.
- Нажмите Сгенерировать токен.
- Укажите срок действия API-токена и установите флажки прав доступа:
Право доступа Как используется утилитой POST /incidents/createСоздание инцидентов. POST /incidents/commentДобавление комментариев, вложений и действий из MDR. POST /incidents/closeЗакрытие инцидентов. GET /incidentsПоиск инцидента в KUMA по номеру при добавлении комментариев и вложений. - Нажмите Сгенерировать и сохраните значение токена.
Он будет использоваться в файле конфигурации далее.
- Сохраните идентификатор тенанта (в формате UUID), в который будут импортироваться инциденты. Для этого:
- Откройте веб-интерфейс KUMA и перейдите в раздел Параметры → Доступ → Тенанты.
- Нажмите Экспортировать → Для словаря.
- Откройте файл
tenants.csv. - Сохраните идентификатор выбранного тенанта.
Утилита интеграции будет создавать инциденты только в указанном тенанте. При создании инцидента утилита передает идентификатор тенанта в поле TenantID.
Как установить утилиту интеграции
Шаг 1. Установите утилиту интеграции
- Скачайте и распакуйте архив с утилитой интеграции.
- Разместите папку MDR-integrations в любой каталог на сервере с KUMA.
Проверьте, что после размещения утилиты на сервере был создан каталог /<path>/MDR-integrations с вложенными файлами и подкаталогами.
Шаг 2. Установите зависимости Python
Выполните установку библиотек для Python:
Где <path> — каталог на сервере, в котором размещена папка MDR-integrations.
Как настроить файл конфигурации config.yml
- Создайте новый файл конфигурации из файла примера с помощью команды:
Гдеcp /<path>/MDR-integrations/conf/sample_config.yml /<path>/MDR-integrations/conf/config.yml
<path>— каталог на сервере, в котором размещена папка MDR-integrations. - Откройте файл конфигурации
config.ymlв текстовом редакторе и заполните параметры.
Пример заполнения файла конфигурации config.yml по ссылке.
Файл конфигурации состоит из общих настроек и индивидуальных настроек для модулей.
Общие настройки
Параметры подключения к API MDR и пути к служебным файлам.
| Параметр | Описание |
|---|---|
api_url |
Адрес API MDR. Укажите https://mdr.kaspersky.com/api/v1. |
client_id |
Идентификатор клиента MDR (Client ID), полученный ранее. |
ssl_cert |
Путь к сертификату в формате .pem для проверки подлинности сервера MDR (параметр по умолчанию не используется). Для включения проверки укажите путь к файлу сертификата /conf/mdr.pem. |
token_dir |
Каталог для хранения токенов .refresh_token и .access_token. Укажите conf. |
data_dir |
Каталог для хранения промежуточных данных. Укажите data. |
Настройки модулей
Чтобы выбрать несколько значений параметров фильтрации используйте формат:
<параметр фильтрации>:
- <значение 1>
- <значение 2>
- <значение 3>
Раздел token_updater
Параметры обновления токена доступа к API MDR.
| Параметр | Описание |
|---|---|
timeout |
Интервал обновления токена в секундах. По умолчанию: 600. |
Раздел mdr_sync
Параметры фильтрации и импорта данных из MDR. Раздел содержит два модуля: incident и asset.
Модуль incident
Вложен в раздел modules.
| Параметр | Описание |
|---|---|
enable |
Включает или отключает импорт инцидентов. Укажите true, чтобы импортировать инциденты. |
timeout |
Интервал опроса API MDR в секундах. По умолчанию: 60. |
max_incidents_at_time |
Максимальное количество инцидентов, обрабатываемых за один цикл (защита от «завала»). По умолчанию: 10.
Если вы хотите получить больше данных за один цикл, временно увеличьте лимит или скорректируйте фильтры. |
download_attachments_size_limit |
Максимальный размер вложений в байтах. По умолчанию: 1000000 (1 МБ). |
exclude_author |
Имя пользователя MDR для исключения ваших собственных комментариев и вложений из импорта.
Обратите внимание, что значение параметра обрабатывается как регулярное выражение. Символы ., +, * и другие в имени пользователя могут привести к ложным срабатываниям — при необходимости экранируйте их (пример: ivan\.petrov). |
Параметры фильтрации инцидентов задаются в параметре filter внутри модуля incident.
| Параметр | Описание |
|---|---|
statuses |
Cтатусы инцидентов для импорта. Возможные варианты:
|
priorities |
Приоритеты для импорта. Возможные варианты:
|
min_creation_time |
Время, начиная с которого импортируются инциденты. Указывается в миллисекундах Unix Time Stamp, например: 1655096127000 (13.06.2022 04:55:27 UTC). |
Полный список параметров фильтрации инцидентов приведен в документации REST API MDR.
Модуль asset
Вложен в раздел modules.
| Параметр | Описание |
|---|---|
enable |
Включает или отключает импорт активов. Установите значение true, чтобы импортировать активы. |
timeout |
Интервал опроса API MDR в секундах. По умолчанию: 60. |
output_format |
Формат выходных данных. По умолчанию: json. |
Параметры фильтрации активов задаются в параметре filter внутри модуля asset.
| Параметр | Описание |
|---|---|
statuses |
Cтатусы активов по текущему состоянию. Возможные варианты:
|
Полный список параметров фильтрации активов приведен в документации REST API MDR.
Модуль mdr_sync сохраняет данные об активах в каталоге /data. Функционал доставки активов в KUMA находится в разработке и в текущей версии утилиты не выполняется.
Раздел kuma
Параметры подключения к KUMA и настройки импорта данных.
| Параметр | Описание |
|---|---|
api_url |
Адрес API KUMA, например https://192.168.1.1:7223. |
api_token |
API-токен KUMA, сгенерированный ранее. |
api_version |
Версия API KUMA. Возможные варианты:
|
tenant_id |
Идентификатор тенанта в KUMA, в который будут импортироваться инциденты. |
ssl_cert |
Использование SSL-сертификата (параметр по умолчанию не используется). Укажите true, если в общих настройках в параметре ssl_cert вы указали путь к SSL-сертификату. |
В раздел modules включены модули incident и asset — по аналогии с mdr_sync.
| Параметр | Описание |
|---|---|
modules.incident.enable |
Включает доставку инцидентов в KUMA. Для сценария MDR → KUMA установите true. |
modules.incident.timeout |
Интервал обработки файлов в секундах. По умолчанию: 60. |
modules.asset.enable |
Включает доставку активов в KUMA. Возможные варианты:
modules.asset.enable: false. |
modules.asset.timeout |
Интервал обработки в секундах. По умолчанию: 10800. |
Раздел event_sender (опциональный)
Параметры отправки событий во внешние системы по протоколам syslog. Если отправка событий не требуется, укажите enable: false для обоих модулей.
| Параметр | Описание |
|---|---|
destination_host |
IP-адрес или имя хоста получателя событий. |
destination_port |
Порт получателя событий. |
protocol |
Протокол передачи. Возможные варианты:
|
format |
Формат событий. Возможные варианты:
|
syslog_header |
Добавление заголовка syslog. Возможные варианты:
|
modules.incident.enable |
Включает отправку событий об инцидентах. Возможные варианты:
|
modules.incident.timeout |
Интервал обработки в секундах. По умолчанию: 60. |
modules.asset.enable |
Включает отправку событий об активах. Возможные варианты:
modules.asset.enable: false. |
Раздел logging
| Параметр | Описание |
|---|---|
log_dir |
Файл для хранения журналов. По умолчанию: /log/app.log. Ротация данных — ежедневная, сохраняются 7 последних журналов. |
log_level |
Уровень детализации журнала. Возможные варианты:
DEBUG, для штатной работы — INFO. |
Как запустить и проверить интеграцию
Шаг 1. Добавьте токен и сертификат MDR
- Перейдите в каталог
/conf. - Откройте в текстовом редакторе файл
.refresh_token. - Укажите токен JWT для доступа к API MDR, сгенерированный ранее.
- Сохраните файл.
- Если в файле конфигурации включена проверка сертификата MDR (параметр
ssl_cert: conf/mdr.pem), замените файлmdr.pemна актуальный сертификат, созданный ранее.
Ограничьте доступ к файлам с токенами:
Где <path> — каталог на сервере, в котором размещена папка MDR-integrations.
Шаг 2. Запустите утилиту интеграции
Для диагностики работы утилиты, перед первым запуском в файле конфигурации config.yml укажите значение параметра логирования log_level: DEBUG. После завершения диагностики укажите значение log_level: INFO для логирования в штатном режиме.
- Запустите утилиту с помощью команды:
cd /<path> && python3 ./main.py
Где
<path>— каталог на сервере, в котором размещена папка MDR-integrations. - Проверьте работу утилиты:
- Если при первом запуске отображаются сообщения об отсутствии необходимых пакетов для Python — установите их по инструкции.
- Если возникло предупреждение о недействительном сертификате MDR (при включенной проверке сертификата) — обновите файл
mdr.pemпо инструкции. - Если сообщения об ошибках отсутствуют — интеграция настроена правильно.
Журнал работы утилиты находится в файле app.log.
Проверьте импорт инцидентов в KUMA
- Убедитесь, что в KUMA были импортированы инциденты, созданные в MDR, начиная с момента времени, которое вы указали в файле конфигурации в параметре
min_creation_timeи значения в файле.last_check. - Проверьте, что имя импортированного инцидента в KUMA соответствует формату
<номер> - <описание>, а в описании содержится ссылка на инцидент в веб-интерфейсе MDR. - В журнале
app.logимеются записи вида:new incident found. incident_id = <идентификатор инцидента>(модуль mdr_sync);KUMA incident has been created successfully: <содержание инцидента KUMA>(модуль kuma);New MDR comment: <содержание комментария MDR>(при поступлении комментариев MDR).
Как настроить автозапуск интеграции
Автозапуск интеграции как службы systemd (рекомендуемый способ)
- Остановите текущий сеанс утилиты.
- Создайте новую учетную запись для службы systemd и назначьте ее владельцем каталога утилиты с помощью команды:
sudo useradd -r -s /sbin/nologin mdr_user sudo chown -R mdr_user:mdr_user /<path>/MDR-integrations
Где<path>— каталог на сервере, в котором размещена папка MDR-integrations. - Создайте файл
mdr_integration.serviceв каталоге/etc/systemd/system/. - Укажите параметры запуска в файле:
[Unit] Description=Kaspersky MDR Integration Service Wants=network-online.target After=network-online.target [Service] WorkingDirectory=/<path>/MDR-integrations/mdr_integration User=mdr_user Group=mdr_user ExecStart=/usr/bin/python3 /<path>/MDR-integrations/mdr_integration/main.py StandardOutput=null StandardError=null # Выключение без таймаута: дождаться остановки процесса TimeoutStopSec=0 # Restart=on-failure # RestartSec=30 # StartLimitIntervalSec=600 # StartLimitBurst=3 [Install] WantedBy=multi-user.target
Где<path>— каталог на сервере, в котором размещена папка MDR-integrations.
По умолчанию после трех сбоев модуля в течение 10 минут утилита автоматически останавливает работу. Если вы хотите, чтобы утилита автоматически перезапускалась после сбоя, сделайте активными параметры:Restart=on-failure;RestartSec=30;StartLimitIntervalSec=600;StartLimitBurst=3.
Мы рекомендуем включать автоматический перезапуск интеграции (параметр
Restart=on-failure) только после проверки и отладки конфигурации. - Зарегистрируйте и запустите службу с помощью команды:
sudo systemctl daemon-reload sudo systemctl enable mdr_integration.service sudo systemctl start mdr_integration.service sudo systemctl status mdr_integration.service
Для получения журналов работы systemd, используйте команду:
Автозапуск интеграции через Cron (альтернативный способ)
Если systemd не используется, настройте автозапуск с помощью планировщика задач Cron.
- Откройте crontab в режиме редактирования с помощью команды:
sudo crontab -e
- Добавьте новое задание с помощью команды:
Где@reboot sleep 300 && python3 /<path>/MDR-integrations/mdr_integration/main.py
<path>— каталог на сервере, в котором размещена папка MDR-integrations.
Задержка перед запуском длительностью 300 секунд (параметр sleep 300) необходима для запуска всех служб до запуска утилиты.
Проверка автозапуска интеграции
- Перезагрузите сервер.
- После перезагрузки убедитесь, что служба запущена и в KUMA продолжают импортироваться новые инциденты:
sudo systemctl status mdr_integration.service
Работа с промежуточными данными
Модуль mdr_sync записывает файлы вида <время>_<тип>.json в каталоге /data.
| Тип файла | Содержимое |
|---|---|
*_new_incident.json |
Новый инцидент. |
*_update_incident.json |
Снимок инцидента при обновлении (не используется модулем kuma — обновления применяются по истории). |
*_incident_updates_<номер>.json |
История изменений инцидента (комментарии, вложения, действия, детали). |
*_asset_export.json |
Экспорт активов при включенном модуле mdr_sync.asset. |
Каждый модуль обработки (например .processed_kuma или .processed_event_sender) записывает обработанные файлы в каталоге /conf.
Рекомендации по работе с промежуточными данными:
- Периодически очищайте каталог
/data. Предварительно убедитесь, что файлы доставлены (в журнале соответствующих модулей). - Удаление только файлов из каталога
/dataне приведет к повторной доставке файлов, так как имена файлов сохраняются в.processed*. - Для повторной доставки файла (например, после сбоя) удалите файл и его имя в
.processed*.
Диагностика типовых проблем интеграции
| Проблема | Возможная причина | Решение |
|---|---|---|
| Ошибка или предупреждение о недействительном сертификате при запросах к MDR | Истек срок действия сертификата mdr.pem. |
Создайте новый сертификат и обновите файл mdr.pem. |
| Ошибка HTTP 401 в запросах к API MDR | Неверный или истекший токен обновления. | Сгенерируйте новый токен обновления по инструкции и укажите его в файле .refresh_token. |
| Ошибка HTTP 403 в запросах к API KUMA | У токена KUMA недостаточно прав. | Проверьте, что для токена учетной записи KUMA выданы права:
|
| Инциденты есть в MDR, но нет в KUMA |
|
|
| Ошибки «Too many incidents are going to be received» в журнале | Установлен лимит max_incidents_at_time меньше числа обновленных инцидентов. |
Увеличьте лимит или измените параметры фильтрации. |
| Модуль перезапускается, затем служба останавливается | Устойчивый сбой модуля (3 сбоя за 10 минут) — утилита останавливается намеренно. |
|
| Служба не работает после перезагрузки | Не сработал автозапуск. | Для systemd:
|
| Обновления (комментарии) не доходят до KUMA |
|
Убедитесь, что в KUMA есть инцидент с уникальным именем в формате <номер> - <описание> и он уникален (запись KUMA get incidents в журнале). |