Skip to main content

Интеграция с Kaspersky MDR

Информация, приведённая на данной странице, является разработкой команды pre-sales и/или community KUMA и **НЕ** является официальной рекомендацией вендора.

Интеграция с Kaspersky MDR

Описание интеграции

Интеграция с Kaspersky Managed Detection and Response позволяет автоматически импортировать инциденты из консоли MDR в KUMA. Скрипт периодически опрашивает API MDR, получает новые инциденты и создаёт соответствующие инциденты в KUMA через API.


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

1. Сетевой доступ

На пограничном межсетевом экране создайте правило, разрешающее доступ к mdr.kaspersky.com по порту TCP/443.

2. Настройка пользователя и токена в KUMA

В KUMA добавьте пользователя с ролью Младший аналитик, сгенерируйте токен для взаимодействия по API и разрешите доступ к следующим методам API:

  • POST /events
  • POST /incidents/create
  • POST /incidents/comment
  • POST /incidents/close

3. Генерация токена в консоли MDR

  1. Перейдите в Параметры → API.
  2. Нажмите Добавить и укажите Имя соединения.

Это имя будет отображаться как имя пользователя при создании инцидентов, комментариев и вложений, поскольку токен доступа не привязан к конкретному пользователю.

  1. В поле Роль пользователя выберите роль Администратор MDR.
  2. В поле Тенант выберите тенант, инциденты которого необходимо импортировать в KUMA.

Если для инцидентов, создаваемых в консоли MDR, в поле Тенант отсутствует значение — укажите в поле Тенант значение «Корневой тенант», иначе скрипт не обнаружит эти инциденты.

  1. Нажмите Создать.

В результате вы получите:

  • JWT Token (он же refresh_token) — это первичный токен со сроком действия 24 часа. Данный токен требуется активировать, чтобы получить новую пару refresh_token / access_token.
  • ClientID — идентификатор клиента, который необходимо указывать при каждом запросе к API MDR.

Сохраните оба значения — они потребуются на этапе настройки.

image-1774361228938.png

4. Загрузка репозитория

Скачайте содержимое репозитория MDR-integrations. В качестве альтернативы можно:

git clone https://github.com/KUMA-Community/MDR-integrations.git

5. Получение цепочки сертификатов

Загрузите актуальную цепочку сертификатов для mdr.kaspersky.com в формате PEM. Для этого:

  1. Откройте https://mdr.kaspersky.com в браузере.
  2. Просмотрите информацию о сертификате и экспортируйте все сертификаты цепочки (как правило, 2–3 файла).

image-1774361549088.png

4. Объедините их в один файл командой:
cat "DigiCert Global G2 TLS RSA SHA256 2020 CA1.crt" "DigiCert Global Root G2.crt" "_.mdr.kaspersky.crt" > mdr.pem

Полученный файл mdr.pem потребуется на этапе настройки.


Настройка

Шаг 1. Размещение файлов на сервере

Скопируйте архив MDR-integrations-main.zip на сервер (при распределённой инсталляции — на сервер Core) и распакуйте его в папку /opt:

unzip MDR-integrations-main.zip -d /opt/

Уберите лишний уровень вложенности:

mv /opt/MDR-integrations-main/mdr_integration /opt/
rm -rf /opt/MDR-integrations-main

Шаг 2. Создание файла конфигурации

Перейдите в папку с конфигурацией и создайте файл config.yml из шаблона:

cd /opt/mdr_integration/conf
cp sample_config.yml config.yml

Отредактируйте файл config.yml:

  • В секции General settings укажите client_id (значение ClientID из консоли MDR).
  • В секции mdr_sync:
    • в ветке modules - incident для параметра enable введите true вместо false
    в этой же ветке для параметра min_creation_time укажите время, начиная с которого требуется выполнить импорт инцидентов В секции Modules settings → kuma укажите:
    • api_url — FQDN или IP-адрес с портом API KUMA (по умолчанию порт 7223).
    • api_token — токен, сгенерированный при создании учётной записи пользователя KUMA.
    • tenant_id — идентификатор тенанта KUMA, в котором будут создаваться инциденты.

    **tenant_id можно получить из события аудита KUMA.

    image-1774362388243.png

    Закомментируйте всю секцию thehive

    -

    image-1787158149593.png

    Шаг 3. Настройка токенов

    Скрипт использует два файла токенов:

    • .refresh_token — заполняется вручную один раз. Это JWT Token, полученный в консоли MDR на этапе предварительных требований.
    • .access_token — заполнять вручную не нужно. При запуске скрипт автоматически обменивает refresh_token на пару access_token + обновлённый refresh_token через MDR API и записывает их в файлы. В дальнейшем фоновый процесс TokenUpdater проверяет и обновляет токены каждые 10 минут.

    Создайте оба файла (.access_token должен быть пустым):

    touch /opt/mdr_integration/conf/.refresh_token
    touch /opt/mdr_integration/conf/.access_token
    

    Запишите JWT Token из консоли MDR в файл .refresh_token:

    echo -n 'ВСТАВЬТЕ_ТОКЕН_ЗДЕСЬ' > /opt/mdr_integration/conf/.refresh_token
    

    Важно: В конце файла не должно быть символа новой строки (\n) — иначе аутентификация завершится ошибкой. Флаг -n в команде echo предотвращает его добавление. Если вы вставили токен вручную, проверьте и при необходимости удалите символ новой строки:

    # Проверяем наличие символа новой строки (результат "1" означает, что он есть)
    wc -l /opt/mdr_integration/conf/.refresh_token
    
    # Если вывод "1 .refresh_token" — удаляем символ
    perl -p -i -e 'chomp if eof' /opt/mdr_integration/conf/.refresh_token
    
    # Проверяем повторно (должен быть вывод "0 .refresh_token")
    wc -l /opt/mdr_integration/conf/.refresh_token
    

    Шаг 4. Указание начальной точки сбора инцидентов

    В файле .last_check укажите момент времени, начиная с которого нужно собирать инциденты. Значение задаётся в миллисекундах (Unix timestamp × 1000, 13 цифр).

    Для получения нужного значения используйте команду:

    # Пример: получить timestamp для 1 января 2024 00:00:00
    date -d "2024-01-01 00:00:00" +%s000
    

    Запишите полученное значение в файл:

    echo -n '1704060000000' > /opt/mdr_integration/conf/.last_check
    

    Для тестирования укажите время, незадолго до появления последнего инцидента в MDR.

    Шаг 5. Обновление сертификата

    Замените файл сертификата по умолчанию на актуальный, подготовленный в разделе Предварительные требования:

    cp /path/to/mdr.pem /opt/mdr_integration/conf/mdr.pem
    

    Шаг 6. СозданиеРедактирование папкискрипта datamain.py

    СоздайтеЗакомментируйте папкуследующие data:строки в скрипте main.py:

    mkdir#from /opt/mdr_integration/datasrc.integration_thehive import TheHive
    

    В

    #the_hive папку= dataTheHive(config)
    в
    отдельный
    #process_the_hive JSON-файл= записываетсяmultiprocessing.Process(target каждое= обновлениеthe_hive.run, args=(новыйlogging_queue, инцидент,process_logging_configurer))
    комментарий,
    вложение)
    #process_the_hive.start()
    на MDR-портале.

    Шаг 7. Проверка работоспособности

    Перейдите в папку со скриптом и запустите его:

    cd /opt/mdr_integration
    python3 ./main.py
    

    Если при запуске скрипта в консоли отсутствую ошибки (кроме предупреждений о невалидном сертификате), значит интеграция работает корректно. Лог работы скрипта записывается в:

    /opt/mdr_integration/log/app.log
    

    Убедитесь, что инциденты из консоли MDR, созданные начиная с момента, указанного в .last_check, появились в KUMA.

    После проверки остановите скрипт (Ctrl+C).

    Шаг 7. Запуск в фоновом режиме

    Запустите скрипт в фоне:

    nohup python3 /opt/mdr_integration/main.py &
    

    В качестве альтернативы Вы можете запустить скрипт для интеграции с MDR, как сервис. В таком случае шаг 8 можно пропустить.

    Шаг 8. Автозапуск после перезагрузки

    Настройте автоматический запуск скрипта через cron:

    sudo crontab -e
    

    Добавьте строку:

    @reboot sleep 300 && python3 /opt/mdr_integration/main.py &
    

    Задержка sleep 300 (5 минут) необходима, чтобы сервис kuma-core успел запуститься до начала работы скрипта.