Интеграция с Kaspersky MDR
⚠️ Информация,
приведеннаяприведённая на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.
Предварительные
Интеграция с ролью Администратор, сгенерируйте токен для взаимодействия по API и разрешите доступ к следующим методам API:
Если для создаваемых в консоли MDR инцидентов в поле "Тенант" отсутствует значение, добавьте значение "Корень без тенанта", чтобы скрипт при подключении обнаружил данные инциденты
git clone https://github.com/KUMA-Community/MDR-integrations.gitОписание интеграции
Описанная в данной статье интеграцияИнтеграция с Kaspersky Managed Detection and Response позволяет автоматически импортировать инциденты из консоли MDR в KUMA. Скрипт периодически опрашивает API MDR, получает новые инциденты и создаёт соответствующие записи в KUMA через её API.
Предварительные требования
1. Сетевой доступ
На пограничном межсетевом экране создайте правило, разрешающее доступ к mdr.kaspersky.com по порту TCP/443.
2. Настройка пользователя и токена в KUMA
В KUMA добавьте пользователя с ролью Администратор, сгенерируйте токен для взаимодействия по API и разрешите доступ к следующим методам API:
POST/eventsPOST /incidents/create
POST /incidents/comment
POST /incidents/close
3. Генерация токена в консоли MDR
Перейдите в Settings → API.
Нажмите Add и укажите Connection Name.
Это имя будет отображаться как имя пользователя при создании инцидентов, комментариев и вложений, поскольку токен доступа не привязан к конкретному пользователю.
В поле Role выберите необходимые права доступа для токена.
При необходимости укажите Tenant.
Если для инцидентов, создаваемых в консоли MDR, в поле «Тенант» отсутствует значение — добавьте значение «Корень без тенанта», иначе скрипт не обнаружит эти инциденты.
Нажмите Generate.
После генерации вы получите:
refresh_token) — требуется активировать, чтобы получить новую пару refresh_token / access_token.
ClientID — идентификатор клиента, который необходимо указывать при каждом запросе к API MDR.
Сохраните оба значения — они потребуются на этапе настройки.
4. Загрузка репозитория
Скачайте содержимое репозитория MDR-integrations. В качестве альтернативы можно:
git clone https://github.com/KUMA-Community/MDR-integrations.git
5. Получение цепочки сертификатов
Загрузите актуальную цепочку сертификатов для mdr.kaspersky.com в формате PEM. Для этого:
cat cert1.pem cert2.pem cert3.pem > mdr.pem
Полученный файл mdr.pem потребуется на этапе настройки.
Настройка
Шаг 1. Размещение файлов на сервере
Скопируйте архив MDR-integrations-main.zip на сервер (впри случаераспределённой распределеннойинсталляции инсталяции— на сервер Core) и распакуйте его в папку /opt с помощью следующей команды:
unzip MDR-integrations-main.zip -d /opt/
Уберите лишнююлишний вложенность (уровень MDR-integrations-main):
mv /opt/MDR-integrations-main/mdr_integration /opt/
rm -rf /opt/MDR-integrations-main
Шаг
2. Создание файла конфигурацииПерейдите в папку /opt/mdr_integration/confс конфигурацией и создайте файл config.yml из шаблона sample_config.yaml:
cd /opt/mdr_integration/conf
cp sample_config.yml config.yml
Отредактируйте файл config.yml:
- В секции General settings укажите
client_id(значениеclient_idClientID из консоли MDR). - В секции Modules settings →
->kuma укажите:api_url— FQDN или IP-адрес с портом API KUMA (FQDN/IP:по умолчанию портAPI-интерфейса KUMA, по умолчанию, 7223)7223).api_token(гененируется—втокен,процессесгенерированныйсозданияприучетнойсоздании учётной записи пользователяKUMA)
KUMA.tenant_id(тенант,— идентификатор тенанта KUMA, в котором будут создаватьсяинциденты)инциденты.
Как получить
tenant_id: Откройте в KUMA раздел Аудит, найдите любое событие, связанное с нужным тенантом, и скопируйте значение поляTenantID.
Шаг 3. Настройка токенов
Скрипт использует два файла токенов:
.refresh_token — заполняется вручную один раз. Это JWT Token, полученный в консоли MDR на этапе предварительных требований.
.access_token — заполнять вручную не нужно. При запуске скрипт автоматически обменивает refresh_token на пару access_token + обновлённый refresh_token через MDR API и записывает их в файлы. В дальнейшем фоновый процесс TokenUpdater проверяет и обновляет токены каждые 10 минут.
TenantIDСоздайте можнооба получитьфайла из события аудита KUMA.
.access_token должен существовать, но может быть пустым):
touch /opt/mdr_integration/conf/.refresh_token
touch /opt/mdr_integration/conf/.access_token
Запишите
.refresh_token:
echo -n 'ВСТАВЬТЕ_ТОКЕН_ЗДЕСЬ' > /opt/mdr_integration/conf/.refresh_token
Важно:
ранее сгенерированный токен для доступа к API MDR.
После добавления токена в файл .refresh_token проверьте, что вВ конце файла отсутствуетне должно быть символа новой строки (\n) — иначе аутентификация завершится ошибкой. Флаг -n в команде echo предотвращает его добавление. Если вы вставили токен вручную, проверьте и при необходимости удалите символ новой строки \n , из-за которого попытка аутентификации будет неуспешной. См. команды ниже:
строки:
# проверяемПроверяем наличие символа новой строки (результат "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
# должен быть вывод "0 .refresh_token"
ПерейдитеШаг
в4.папкуУказание/opt/mdr_integration/confначальнойиточкивсбора инцидентовВ файле
.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.бытьОбновление13сертификатацифр (пример, 1672520400000)
Замените существующий файл сертификата по умолчанию на актуальный, подготовленный в разделе «Предварительные требования»:
cp /path/to/mdr.pem /opt/mdr_integration/conf/mdr.pem
на
Шаг (см.6. этапПроверка "Предварительныеработоспособности
Перейдите
cd /opt/mdr_integration
python3 ./main.py
Если при запуске скрипта появляютсяпоявятся сообщения об отсутствииотсутствующих необходимыхпакетах, пакетовустановите их:
pip3 install -r выполнитеrequirements.txt
их
Если после запуска скрипта в консоли отсутствуюнет ошибкиошибок (кроме предупрежденийпредупреждения о невалидном сертификате),сертификате значитдопустимы) — интеграция работает корректно.
Лог работы скрипта пишетсязаписывается вв:
/opt/mdr_integration/log/app.log
Убедитесь, что выполненинциденты импорт инцидентов, созданных виз консоли MDR, созданные начиная с момента времени,момента, указанного в файле .last_check, появились в KUMA.
Ctrl+C).
Шаг 7. Запуск в фоновом режиме
Запустите помощьюскрипт команды:
nohup python3 /opt/mdr_integration/main.py &
Шаг
8. Автозапуск после перезагрузкиНастройте автоматический запуск скрипта послечерез перезагрузки сервера:
sudo crontab -e
Добавьте строку:
@reboot sleep 300 && python3 /opt/mdr_integration/main.py &
#
Задержка
sleep(5в300минутминут)добавлен,необходима, чтобы сервисkuma-coreуспелстартоватьзапуститьсядо начала работы скрипта.




