Skip to main content

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

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

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

требования
    На пограничном МСЭ создайте правило доступа к mdr.kaspersky.com по порту TCP/443 (https://mdr.kaspersky.com) В KUMA добавьте пользователя

    Интеграция с ролью Администратор, сгенерируйте токен для взаимодействия по API и разрешите доступ к следующим методам API:

      POST /events POST /incidents/create POST /incidents/comment POST /incidents/close В консолиKaspersky MDR сгенерируйте токен для доступа к API:
        Перейдите в Settings -> API Нажмите Add и укажите Connection Name (данное имя будет использоваться, как имя пользователя при создании инцидентов/комментариев/вложений и т.д., так как токен доступа не привязан к конкретному пользователю) Укажите Role, чтобы определить права доступа для токена Укажите Tenant при необходимости
             

            Если для создаваемых в консоли MDR инцидентов в поле "Тенант" отсутствует значение, добавьте значение "Корень без тенанта", чтобы скрипт при подключении обнаружил данные инциденты

             

            image.png

              Нажмите Generate После завершения процесса генерации будут получены:
                JWT Token - он же refresh_token, который требуется активировать, чтобы получить новую пару refresh_token и access_token ClientID - ID-клиента для подключения к API (требуется указывать при каждом запросе к API MDR)

                image.png

                  Скачайте содержимое репозитория MDR-integrations. В качестве альтернативы можно:
                    Загрузить только папку mdr_integration с помощью сервиса https://download-directory.github.io/ Загрузить содержимое репозитория MDR-integrations напрямую на сервер KUMA с помощью git clone:
                    git clone https://github.com/KUMA-Community/MDR-integrations.git
                      Загрузите актуальную цепочку сертификатов для консоли mdr.kaspersky.com в формате pem. После загрузки файлов выполните объединение сертификатов в один файл mdr.pem (см. скриншот ниже). 

                        image.png

                        image.png

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

                        Описанная в данной статье интеграцияИнтеграция с 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

                          Перейдите в Settings → API.

                          Нажмите Add и укажите Connection Name.

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

                          В поле Role выберите необходимые права доступа для токена.

                          При необходимости укажите Tenant.

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

                          Нажмите Generate.

                          После генерации вы получите:

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

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

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

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

                              Загрузить только папку mdr_integration через сервис https://download-directory.github.io/ Клонировать репозиторий напрямую на сервер KUMA:
                              git clone https://github.com/KUMA-Community/MDR-integrations.git
                              

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

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

                                Откройте https://mdr.kaspersky.com в браузере. Просмотрите информацию о сертификате и экспортируйте все сертификаты цепочки (как правило, 2–3 файла). Объедините их в один файл командой:
                                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.

                                          Перейдите в папку /opt/mdr_integration/conf и создайте файлы .refresh_token и (.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
                                            

                                            Важно: ранее сгенерированный токен для доступа к 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. этапПроверка "Предварительныеработоспособности

                                            требования")

                                            Перейдите

                                            Запуститев скриптпапку main.pyсо сскриптом помощьюи команды:запустите
                                              его:
                                              cd /opt/mdr_integration
                                              python3 ./main.py
                                              

                                              Если при запуске скрипта появляютсяпоявятся сообщения об отсутствииотсутствующих необходимыхпакетах, пакетовустановите их:

                                              pip3 install -r выполнитеrequirements.txt
                                              их
                                              установку.

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

                                                Лог работы скрипта пишетсязаписывается вв:

                                                /opt/mdr_integration/log/app.log
                                                

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

                                                  image.png

                                                  После проверки Остановите выполнение скритпа main.py Запуститеостановите скрипт main.py(Ctrl+C).

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

                                                  с

                                                  Запустите помощьюскрипт команды:

                                                  в фоне:
                                                  nohup python3 /opt/mdr_integration/main.py &
                                                  

                                                    Шаг

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

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

                                                    cron:
                                                    sudo crontab -e
                                                    

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

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

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

                                                    до начала работы скрипта.