Skip to main content

Автоматическое добавление активов

ОписаниеРазвёртывание скрипта импорта активов 

ДанныйИнструкция описывает установку скрипта реагирования на хост коррелятора и последующую настройку в веб-интерфейсе KUMA.

Что делает скрипт

Скрипт принимает два аргумента — тенант и связку IP|FQDN — формирует запрос к API KUMA и импортирует актив (POST /assets/import) в указанный тенант.


Часть 1. Подготовка скрипта на хосте коррелятора

kuma_import_asset.sh
#!/usr/bin/env bash
#
# Импорт актива в KUMA через POST /api/v3/assets/import
#
# Использование:
#   ./kuma_import_asset.sh <tenantID> "<ip>|<fqdn>"
#
# Второй аргумент — IP и/или FQDN через разделитель '|'. Допустимо:
#   "1.2.3.4|host.example.com"   -> и IP, и FQDN
#   "1.2.3.4"  или  "1.2.3.4|"   -> только IP
#   "|host.example.com"          -> только FQDN
#
set -euo pipefail

# ============================ КОНСТАНТЫ ============================
KUMA_HOST=""          # адрес системы (KUMA Core)
KUMA_PORT="7223"      # порт REST API
KUMA_TOKEN=""         # токен доступа (Bearer)

#   1 = не проверять сертификат (curl -k)
#   0 = проверять (нужен доверенный CA)
INSECURE=1
# ==================================================================

usage() {
    echo "Использование: $0 <tenantID> \"<ip>|<fqdn>\"" >&2
    exit 1
}

# ----------------------------- Аргументы -----------------------------
tenant="${1:-}"
device="${2:-}"

[[ -z "$tenant" ]] && { echo "Ошибка: не указан тенант (аргумент 1)." >&2; usage; }

IFS='|' read -r ip fqdn <<< "$device"

trim() { local s="$1"; s="${s#"${s%%[![:space:]]*}"}"; s="${s%"${s##*[![:space:]]}"}"; printf '%s' "$s"; }
ip="$(trim "$ip")"
fqdn="$(trim "$fqdn")"

if [[ -z "$ip" && -z "$fqdn" ]]; then
    echo "Ошибка: нужно указать хотя бы IP или FQDN." >&2
    usage
fi

json_escape() {
    local s="$1"
    s="${s//\\/\\\\}"
    s="${s//\"/\\\"}"
    printf '%s' "$s"
}

parts=()
[[ -n "$ip"   ]] && parts+=("\"ipAddresses\":[\"$(json_escape "$ip")\"]")
[[ -n "$fqdn" ]] && parts+=("\"fqdn\":[\"$(json_escape "$fqdn")\"]")

asset="{$(IFS=,; printf '%s' "${parts[*]}")}"
body="$(printf '{"tenantID":"%s","assets":[%s]}' "$(json_escape "$tenant")" "$asset")"

url="https://${KUMA_HOST}:${KUMA_PORT}/api/v3/assets/import"

curl_opts=(
    -sS
    -w $'\n%{http_code}'
    -X POST "$url"
    -H "Authorization: Bearer ${KUMA_TOKEN}"
    -H "Content-Type: application/json"
    --data "$body"
)
[[ "$INSECURE" == "1" ]] && curl_opts+=(-k)

echo "Отправка в тенант '$tenant' (ip='${ip:-—}', fqdn='${fqdn:-—}')..."

response="$(curl "${curl_opts[@]}")"
http_code="${response##*$'\n'}"     
payload="${response%$'\n'*}"        

echo "HTTP ${http_code}"
echo "${payload}"

if [[ "$http_code" == "200" ]]; then
    echo "Готово: актив импортирован."
else
    echo "Импорт не выполнен." >&2
    exit 1
fi
1.1. Заполнить константы в скрипте

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

- KUMA_HOST — адрес системы (KUMA Core);
- KUMA_TOKEN — токен доступа к API.

Порт (KUMA_PORT=7223) уже задан по умолчанию и в стандартной конфигурации менять его не нужно.

Требования к токену. Токен должен принадлежать пользователю, у которого есть права на основанииимпорт информацииактивов из событийоперацию POST /assets/import. Такими правами обладают роли:
«Главный администратор», «Администратор тенанта», «Аналитик 2 линии», «Аналитик 1 линии».
Без соответствующих прав API вернёт ошибку доступа (ip-адреса,403) доменныеи имена)актив создаватьне активыимпортируется.

1.2. Определить ID коррелятора

ID коррелятора можно посмотреть в KUMAвеб-интерфейсе системы в разделе активных сервисов (Ресурсы→ Активные сервисы). Он потребуется для пути размещения скрипта.

1.3. Разместить скрипт

ДанныйСкопируйте скрипт рекомендуется использовать только в тестовойкаталог илиscripts демонстрационнойнужного инсталляциикоррелятора, подставив его ID:


Требования

python 3.6+

    urllib

    argparse

    json

    requests

    os

    KUMA 3.0.2


    Подготовка скрипта

    1. Поместите файлы 

    asset-import.py
    , kumaPublicApiV1.py, params.json на сервер коррелятора в папку scripts: /opt/kaspersky/kuma/correlator/id<id_коррелятора>/scripts//scripts
    1.4. Назначить владельца

    idВладельцем коррелятораскрипта можнодолжен получитьбыть из веб-интерфейса KUMA: Ресурсы -> Активные сервисы -> Выбрать галочкой корреляторпользователь и вгруппа верхнем меню Копировать идентификатор сервисаkuma. Идентификатор будет скопирован в буфер обмена.

    2. Внесите изменения в файл params.json:

      kumaAddress - укажите ip-адрес сервера ядра KUMA

      kumaAPIPort - укажите API-порт ядра KUMA (значение по умолчанию 7223, если сомневаетесь - оставьте без изменений)

      kumaToken - токен для работы с API с правами POST /assets/import

      3. Измените владельца файлов на kuma:

      chown kuma:kuma asset-import.py kumaPublicApiV1.py params.json/opt/kaspersky/kuma/correlator/<id_коррелятора>/scripts/kuma_import_asset.sh

      4.

      1.5. РазрешитеВыдать запускправа файлана
      asset-import.py:выполнение
      chmod +x asset-import.py/opt/kaspersky/kuma/correlator/<id_коррелятора>/scripts/kuma_import_asset.sh

      После этого скрипт готов к запуску коррелятором.


      Подготовка

      Часть KUMA

      2.

        Импортируйте все ресурсы из файла auto_asset_add (Пароль импорта: Qwerty123!)

        Если нужно, внесите измененияНастройка в фильтрывеб-интерфейсе orgKUMA address

        2.1. filter
        Проверить ипривязку orgправил hostname filter, указав домены и подсети вашей организации, по ним отбираются активы из событий для импорта. корреляции

        ПривяжитеУбедитесь, все правила корреляции Auto import asset info (src/dst/dvc)что к коррелятору привязаны следующие правила:

        -

        [OOTB][Net] Detection unknown assets in destination fields
        - [OOTB][Net] Detection unknown assets in source fields
        - [OOTB][Net] Detection unknown assets in device fields

        ПривяжитеЕсли правила привязаны — переходите к шагу 2.2.

        Если правила есть в системе, но не привязаны — привяжите их к коррелятору и обновите параметры коррелятора.

        Если правил нет в системе — скачайте их из репозитория ресурсов. Нужный пакет: [OOTB] KUMA 4.x resources. После загрузки привяжите правила к коррелятору и обновите его параметры.

        2.2. Импортировать правило реагирования

        Импортируйте правило реагирования Auto asset import

        Обновите параметры сервиса коррелятора


        Результат

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


        -

        Файлы

        Все ресурсы доступны по ссылке:Ссылка: https://box.kaspersky.com/d/1eb25f174a3e44e2a1be/seafhttp/f/c98c50e678794f248be5/?op=view 
        - Пароль для импорта: Kaspersky@KUMA4.2!

        После импорта привяжите правило реагирования к коррелятору.

        2.3. Обновить параметры коррелятора

        Обновите параметры коррелятора. После этого связка «правила корреляции + правило реагирования + скрипт» начнёт работать.


        Примечание: активный лист

        Если правила [OOTB][Net] Detection unknown assets ... уже присутствовали в системе и работали ранее, срабатываний может не быть, потому что известные активы уже накоплены в активном листе.

        Чтобы срабатывания снова появились, очистите активный лист на корреляторе:

        - Активный лист: [OOTB][Net] Detection unknown assets

        После очистки листа коррелятор снова начнёт фиксировать неизвестные активы и запускать скрипт импорта.