Установка SMP

Установка Single Management Platform / XDR

Развертывание XDR на двух узлах (Ubuntu)

Развертывание Kaspersky XDR на двух узлах (Ubuntu Server 26.04 LTS): OSMP и сервисы KUMA

Раздел описывает развертывание экземпляра Kaspersky XDR Expert на двух машинах Ubuntu Server 26.04 LTS: узле OSMP и отдельном узле для сервисов KUMA. Установка выполняется с узла OSMP и разворачивает компоненты на оба узла.

Топология и легенда

Развертывание состоит из двух узлов:

В инструкции используются следующие обозначения:

Порядок важен. Установка (kdt apply) запускается с узла OSMP и разворачивает компоненты, в том числе на узел сервисов KUMA. Узел сервисов KUMA должен быть полностью подготовлен (пакеты, отключение SELinux и swap, заданный FQDN, доступ по SSH-ключу с узла OSMP), а необходимые записи DNS — созданы, до запуска установки.

Узел OSMP — все команды этой части выполняются на узле OSMP

Аппаратные требования

Итоговые требования к оборудованию рассчитайте в соответствии с руководством по масштабированию.

Проверка свободного места в каталогах /var, /opt и /tmp

Проверьте свободное место следующими командами:

Отключение SELinux и swap

Отключите swap (обязательное требование для узлов кластера Kubernetes):

sudo swapoff -a

Чтобы swap оставался отключённым после перезагрузки, закомментируйте строки со swap в файле /etc/fstab.

Проверьте статус SELinux:

sudo sestatus

Если SELinux включён, отключите его: задайте в файле /etc/selinux/config значение SELINUX=disabled и перезагрузите систему.

sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

Настройка учетной записи пользователя для развертывания

1. Откройте файл /etc/sudoers:

sudo visudo

2. Добавьте в конец файла строку (где {user} — учетная запись, используемая для развертывания):

{user} ALL=(ALL) NOPASSWD: ALL

Важно! Строку добавлять нужно именно в конец файла!

Если появляется ошибка user is not in sudoers file, переключитесь на пользователя с правами root и выполните команду:

echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

3. Сохраните и закройте файл:

:wq

4. Создайте SSH-ключ:

ssh-keygen -t rsa -b 4096 -N ""

5. Скопируйте открытый ключ на целевой хост (для узла OSMP это тот же хост, с которого выполняется команда):

ssh-copy-id <host_ip>

Установка и настройка Docker

Установка Docker

Поддерживаются версии Docker 25 и выше. Используйте один из вариантов.

Вариант 1 — из репозитория Ubuntu:

sudo apt update && sudo apt install docker.io

Вариант 2 — из официального репозитория Docker. Установите необходимые пакеты:

sudo apt update && sudo apt install ca-certificates curl

Загрузите keyring Docker:

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && sudo chmod 0755 /etc/apt/keyrings/docker.asc

Добавьте apt-репозиторий Docker:

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Обновите кеш репозитория и установите пакеты Docker:

sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Настройка Docker

1. Добавьте текущего пользователя в группу docker:

sudo usermod -aG docker $USER

2. Примените членство в группе docker в текущей сессии:

newgrp docker

Установка и настройка PostgreSQL

Поддерживается PostgreSQL 18.4.

1. Установите PostgreSQL:

sudo apt install -y postgresql-18

Если PostgreSQL 18 отсутствует в подключённом репозитории, добавьте репозиторий PostgreSQL (PGDG). Инструкции см. на сайте PostgreSQL.

2. Создайте отдельного суперпользователя PostgreSQL:

sudo -u postgres createuser --superuser xdr

3. Задайте пароль пользователя:

sudo -u postgres psql -c "ALTER USER xdr WITH PASSWORD 'ваш пароль';"

4. Создайте базу данных с тем же именем:

sudo -u postgres psql -c "CREATE DATABASE xdr OWNER xdr;"

5. Разрешите доступ к PostgreSQL с любого IP-адреса:

echo "host all all 0.0.0.0/0 scram-sha-256" | sudo tee -a /etc/postgresql/18/main/pg_hba.conf

6. Задайте параметры в конфигурационном файле /etc/postgresql/18/main/postgresql.conf. Закомментированные (#) строки раскомментируйте:

listen_addresses = '*'
shared_buffers = 8192MB
max_stack_depth = 7MB
temp_buffers = 24MB
work_mem = 16MB
max_connections = 512
max_parallel_workers_per_gather = 0
maintenance_work_mem = 128MB
standard_conforming_strings = on

7. Перезапустите PostgreSQL:

sudo systemctl restart postgresql

Распаковка утилиты KDT

Создайте директорию и распакуйте в неё утилиту KDT:

mkdir ./kdt && tar -xvf bin.tar.gz -C ./kdt

Синхронизация системного времени (NTP)

Настройте синхронизацию времени с NTP-сервером:

sudo apt update
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-local-rtc 0
timedatectl status

В выводе должна присутствовать строка System clock synchronized: yes. Текущие дату и время можно проверить командой date.

Узел сервисов KUMA — все команды этой части выполняются на узле сервисов KUMA

Аппаратные требования

Аппаратные требования к узлу сервисов KUMA совпадают с требованиями к узлу OSMP:

Разметка диска

Основной объём диска выделите под каталог /opt — в него устанавливаются компоненты KUMA. Под системный раздел оставьте не менее 16 ГБ. Если установщик Ubuntu рекомендует для системных разделов больший размер, используйте рекомендованное значение.

Установка пакетов

Установите необходимые пакеты:

apt install python3-apt curl libcurl4 acl
apt install python3-netaddr python3-cffi-backend

Отключение SELinux и swap

Отключите swap (обязательное требование для узлов кластера Kubernetes):

sudo swapoff -a

Чтобы swap оставался отключённым после перезагрузки, закомментируйте строки со swap в файле /etc/fstab.

Проверьте статус SELinux:

sudo sestatus

Если SELinux включён, отключите его: задайте в файле /etc/selinux/config значение SELINUX=disabled и перезагрузите систему.

sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

Доменное имя (FQDN)

Задайте узлу сервисов KUMA полное доменное имя (FQDN) — обязательно с точкой, например kuma-services.<домен>. FQDN должен быть установлен как имя хоста системы.

Не используйте для этого узла имя kuma — оно занято служебными адресами OSMP. Используйте отдельное имя, например kuma-services.

Запись A для этого имени создаётся на DNS-сервере — см. раздел «Настройка DNS».

Синхронизация системного времени (NTP)

Настройте синхронизацию времени с NTP-сервером:

sudo apt update
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-local-rtc 0
timedatectl status

Доступ по SSH с узла OSMP

Установка подключается к узлу сервисов KUMA по SSH с узла OSMP. Скопируйте открытый SSH-ключ с узла OSMP на узел сервисов KUMA — команда выполняется на узле OSMP:

ssh-copy-id <kuma_ip>

Настройка DNS

Настройка DNS выполняется на DNS-сервере (общем для обоих узлов)

Зарегистрируйте на DNS-сервере доменные имена служб OSMP и узла сервисов KUMA. DNS-сервер общий для обоих узлов, поэтому все записи задаются в одном месте.

Для служб OSMP добавьте запись A с подстановкой (wildcard), указывающую на свободный IP-адрес (<ingress_ip>) в той же подсети, что и кластер. Шлюз кластера Kubernetes прослушивает этот адрес и направляет трафик к соответствующим службам. По умолчанию службы OSMP доступны по следующим адресам:

<ingress_ip> - admsrv.<ingress_domain>
<ingress_ip> - api.<ingress_domain>
<ingress_ip> - console.<ingress_domain>
<ingress_ip> - kuma.<ingress_domain>
<ingress_ip> - *.kuma.<ingress_domain>
<ingress_ip> - monitoring.<ingress_domain>
<ingress_ip> - agentserver.<ingress_domain>
<ingress_ip> - updater.<ingress_domain>

Для узла сервисов KUMA добавьте отдельную запись A:

<kuma_ip> - kuma-services.<домен>

Если DNS-сервер отсутствует или его нельзя использовать, разверните собственный DNS-сервер на BIND — см. статью Создание собственного DNS-сервера на BIND.

Далее все команды выполняются на узле OSMP

Создание конфигурации для запуска установки

Обратите внимание, что узлы, указанные в файле инвентаря будут подготовлены для установки сервисов KUMA. Однако, сами сервисы KUMA (коллектор, коррелятор, хранилище) на узле установлены не будут. Для развертывания непосредственно сервисов KUMA воспользуйтесь инструкцией в конце данной статьи.

Файл инвентаря KUMA

Создайте на узле OSMP файл инвентаря KUMA (например, kuma-inventory.yml, шаблон файла инвентаря находится в директории с распакованной утилитой kdt с названием single.inventory.yml.template) и разместите его рядом с остальными файлами установки. Во всех блоках hosts укажите FQDN и IP-адрес узла сервисов KUMA. Путь к этому файлу задаётся в параметре установки inventory.

all:
  vars:
    deploy_example_services: false
    ansible_connection: local # не изменять
    ansible_user: nonroot # не изменять
kuma:
  vars:
    ansible_connection: ssh
    ansible_user: root # укажите имя пользователя, от имени которого будет производиться установка
# Если пользователь не root, раскомментируйте строки ниже
#    ansible_become: true
#    ansible_become_method: sudo
  children:
    kuma_utils:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
    kuma_collector:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
    kuma_correlator:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
    kuma_storage:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
          shard: 1
          replica: 1
          keeper: 1

Ниже представлены инструкции по заполнению файла с параметрами установки. Файл с параметрами установки можно заполнить либо с помощью мастера, либо вручную.

Обратите внимание! В инструкции далее для параметра license необходимо указать путь к файлу лицензии KUMA license.key (это лицензия KUMA, а не лицензия OSMP/XDR). Разместите license.key рядом с остальными файлами, необходимыми для установки.

Вариант 1 - Указание параметров установки с помощью мастера настройки

1. Запустите мастер настройки:

./bin/kdt wizard -k xdr-<версия_приложения>.tar -o params.yaml

Ответьте на вопросы мастера:

  1. Введите количество primary_nodes (не менее 1): 1
  2. Введите IPv4-адрес первого управляющего узла: 10.0.0.100
  3. Введите имя пользователя для подключения к первому управляющему узлу: user
  4. Введите путь к SSH-ключу для подключения к первому управляющему узлу: /home/user/.ssh/id_rsa
  5. Введите количество worker_nodes (0 — развертывание OSMP на одном узле): 0
  6. Введите 1, если требуется балансировщик нагрузки; иначе нажмите Enter: Enter
  7. Введите строку подключения к СУБД (postgres://<dbms_username>:<password>@<fqdn>:<port>): postgres://xdr:<your_password>@10.0.0.100:5432

    Обратите внимание! Если пароль для подключения к PostgreSQL содержит специальные символы, необходимо закодировать такие символы в URL. Например, тут: https://www.urlencoder.org/ 

  8. Введите IP-адрес шлюза кластера Kubernetes. Шлюз обеспечивает подключение компонентов Kaspersky XDR Expert внутри кластера: 10.0.0.200
  9. Введите пароль учетной записи пользователя Kaspersky XDR Expert (8–256 символов; прописные и строчные буквы, цифры и специальные символы): ваш_пароль
  10. Введите путь к файлу инвентаря KUMA: ./kuma-inventory.yaml
  11. Введите путь к SSH-ключу для подключения к узлам со службами KUMA: /home/user/.ssh/id_rsa
  12. Введите путь к файлу лицензионного ключа KUMA (это лицензия именно KUMA): ./license.key
  13. Введите доменное имя для публичных служб Kaspersky XDR Expert (например, console.<domain name>): mydomain.local
  14. Введите путь к файлу пользовательского сертификата и закрытому ключу для публичных сервисов (для самоподписанного сертификата нажмите Enter): Enter
  15. Введите «Y», если в вашем регионе требуется расширенный жизненный цикл инцидентов: N
  16. Введите имя учетной записи для просмотра метрик OSMP в Grafana (1–30 символов; начинается с буквы; строчные буквы a–z, цифры 0–9, символы _ -.): xdr
  17. Введите пароль учетной записи для просмотра метрик OSMP в Grafana (8–256 символов; прописные и строчные буквы, цифры и специальные символы): ваш_пароль
Вариант 2 - Указание параметров установки с помощью конфигурационного файла

Шаблон конфигурационного файла (singlenode.smp_param.yaml.template) находится в дистрибутиве в архиве с утилитой KDT. Обратите внимание на параметры inventory (путь к файлу инвентаря KUMA) и license (путь к файлу лицензии KUMA license.key).

Обратите внимание! Если пароль для подключения к PostgreSQL (<ваш_пароль> в параметре psql_dsn) содержит специальные символы, необходимо закодировать такие символы в URL. Например, тут: https://www.urlencoder.org/ 

schemaType: ParameterSet
schemaVersion: 1.0.1
namespace: ""
name: bootstrap
project: xdr
nodes:
  - desc: cdt-primary0
    type: primary-worker
    host: <host_ip> # адрес хоста для установки OSMP
    access:
      ssh:
        user: <user_name> # имя пользователя, под которым выполняется установка
        key: <ssh_key_path> # путь к файлу ключа пользователя
parameters:
  - name: psql_dsn
    source:
      value: postgres://xdr:<ваш_пароль>@<host_ip>:5432 # строка подключения к PostgreSQL
  - name: ingress_ip
    source:
      value: <ingress_ip> # адрес шлюза k8s
  - name: ssh_pk
    source:
      path: <ssh_key_path> # путь к файлу ключа пользователя
  - name: admin_password
    source:
      value: "ваш_пароль" # пароль для доступа к консоли, 8-256 символов, должен содержать буквы в обоих регистрах, цифры и спец. символы
  - name: low_resources
    source:
      value: "true"
  - name: openbao_ha_mode
    source:
      value: "false"
  - name: default_class_replica_count
    source:
      value: "1"
  - name: inventory
    source:
      value: ./kuma-inventory.yml # путь к файлу инвентаря KUMA
  - name: license
    source:
      value: ./license.key # путь к файлу лицензии KUMA
  - name: домен_smp
    source:
      value: "<ingress_domain>" # домен для OSMP
  - name: pki_host_list
    source:
      value: "admsrv api console kuma monitoring updater"
  - name: grafana_admin_user
    source:
      value: xdr # имя пользователя для доступа к разделу метрик
  - name: grafana_admin_password
    source:
      value: "ваш_пароль" # пароль для доступа к разделу метрик

Если установка сервисов KUMA в кластере не требуется, добавьте строки ниже в конец файла конфигурации. В таком случае в кластере будут развернуты только сервисы Ядра и Метрик.

  - name: autodeploy_plan
    source:
      value: "none"

Установка Kaspersky XDR

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

./bin/kdt apply --accept-eula -k xdr-<версия_приложения>.tar -i params.yaml

При успешной установке в терминале отображается информация следующего вида:

INFO[0038] apply inventory ./conf.yaml
INFO[0039] preparing bootstrap_<версия>.tgz
INFO[0092] installing: bootstrap
INFO[0404] time: prepare 53.113895029s install 5m12.442326155s
INFO[0404] current installation is valid
INFO[0404] bundles will be published: 40
INFO[0536] bundles published 40
INFO[0536] bundles will be applied: 39
INFO[2450] apply done: 31m53.851140069s
INFO[2450] apply command completed successfully
INFO[2450] time: publish 2m11.679771805s install 31m53.930470045s

Чтобы проверить установку, откройте страницу авторизации в браузере:

https://console.<ingress_domain>

где <ingress_domain> — доменное имя для публичных служб, заданное в мастере настройки или файле конфигурации.

Включение отчетности KUMA (cnab)

После завершения установки включите отчетность KUMA (возможность сохранения отчетов в форматах PDF, HTML и др.). Архив chrome_full.tar.gz входит в поставку. Разместите его рядом с утилитой KDT и выполните команду:

./kdt invoke kuma --action=enableReporting --if reporting_archive=chrome_full.tar.gz

Действия после установки

Для базовой настройки системы после установки воспользуйтесь соответствующими инструкциями

1. Установка плагинов

2. Первый вход и 2FA

3. Добавление лицензии на функционал XDR

4. Установка сервисов KUMA

5. Настройка интеграций

6. Установка кастомного сертификата для доступа к веб-консоли

Развертывание XDR на двух узлах (Astra Linux)

Развертывание Kaspersky XDR на двух узлах (Astra Linux 1.8.4): OSMP и сервисы KUMA

Раздел описывает развертывание экземпляра Kaspersky XDR Expert на двух машинах Astra Linux 1.8.4: узле OSMP и отдельном узле для сервисов KUMA. Установка выполняется с узла OSMP и разворачивает компоненты на оба узла.

Топология и легенда

Развертывание состоит из двух узлов:

В инструкции используются следующие обозначения:

Порядок важен. Установка (kdt apply) запускается с узла OSMP и разворачивает компоненты, в том числе на узел сервисов KUMA. Узел сервисов KUMA должен быть полностью подготовлен (пакеты, отключение SELinux и swap, заданный FQDN, доступ по SSH-ключу с узла OSMP), а необходимые записи DNS — созданы, до запуска установки.

Узел OSMP — все команды этой части выполняются на узле OSMP

Аппаратные требования

Итоговые требования к оборудованию рассчитайте в соответствии с руководством по масштабированию.

Проверка свободного места в каталогах /var, /opt и /tmp

Проверьте свободное место следующими командами:

Отключение SELinux и swap

Отключите swap (обязательное требование для узлов кластера Kubernetes):

sudo swapoff -a

Чтобы swap оставался отключённым после перезагрузки, закомментируйте строки со swap в файле /etc/fstab.

Настройка учетной записи пользователя для развертывания

1. Откройте файл /etc/sudoers:

sudo visudo

2. Добавьте в конец файла строку (где {user} — учетная запись, используемая для развертывания):

{user} ALL=(ALL) NOPASSWD: ALL

Важно! Строку добавлять нужно именно в конец файла!

Если появляется ошибка user is not in sudoers file, переключитесь на пользователя с правами root и выполните команду:

echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

3. Сохраните и закройте файл:

:wq

4. Создайте SSH-ключ:

ssh-keygen -t rsa -b 4096 -N ""

5. Скопируйте открытый ключ на целевой хост (для узла OSMP это тот же хост, с которого выполняется команда):

ssh-copy-id <host_ip>

Установка и настройка Docker

Установка Docker

Поддерживаются версии Docker 25 и выше. 

sudo apt update && sudo apt install docker.io
Настройка Docker

1. Добавьте текущего пользователя в группу docker:

sudo usermod -aG docker $USER

2. Примените членство в группе docker в текущей сессии:

newgrp docker

Установка и настройка PostgreSQL

Поддерживается PostgreSQL 18.4.

В репозитории Astra 1.8 отсутствует PostgreSQL поддерживаемой версии. Для развертывания PostgreSQL можно воспользоваться репозиторием PostgreSQL, либо использовать для установки СУБД отдельный хост вне кластера Kubernetes с другой ОС.

Установка PostgreSQL

Ниже приведена инструкция по установке PostgreSQL поддерживаемой версии из репозитория PostgreSQL

1. Создайте файл /etc/apt/sources.list.d/pgdg.list

sudo nano /etc/apt/sources.list.d/pgdg.list

2. Запишите в файл строку

deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main

3. Сохраните и закройте файл

4. Добавьте GPG-ключ репозитория, создав каталог для ключа и загрузив сам ключ

sudo install -d /usr/share/postgresql-common/pgdg

sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc

5. Обновите индекс пакетов

sudo apt update

6. Установите необходимые пакеты зависимостей из репозитория

sudo apt install -t bookworm-pgdg libpq5 postgresql-common

7. Установите необходимую версию PostgreSQL из репозитория

sudo apt install -t bookworm-pgdg postgresql-18

8. Если используется Усиленный или Максимальный уровень защищенности , то также необходимо повысить уровень целостности системного пользователя postgres

sudo pdpl-user -i 63 postgres
Настройка PostgreSQL

1. Создайте отдельного суперпользователя PostgreSQL:

sudo -u postgres createuser --superuser xdr

2. Задайте пароль пользователя:

sudo -u postgres psql -c "ALTER USER xdr WITH PASSWORD 'ваш пароль';"

3. Создайте базу данных с тем же именем:

sudo -u postgres psql -c "CREATE DATABASE xdr OWNER xdr;"

4. Разрешите доступ к PostgreSQL с любого IP-адреса:

echo "host all all 0.0.0.0/0 scram-sha-256" | sudo tee -a /etc/postgresql/18/main/pg_hba.conf

5. Задайте параметры в конфигурационном файле /etc/postgresql/18/main/postgresql.conf. Закомментированные (#) строки раскомментируйте:

listen_addresses = '*'
shared_buffers = 8192MB
max_stack_depth = 7MB
temp_buffers = 24MB
work_mem = 16MB
max_connections = 512
max_parallel_workers_per_gather = 0
maintenance_work_mem = 128MB
standard_conforming_strings = on

6. Перезапустите PostgreSQL:

sudo systemctl restart postgresql

Распаковка утилиты KDT

Создайте директорию и распакуйте в неё утилиту KDT:

mkdir ./kdt && tar -xvf bin.tar.gz -C ./kdt

Отключение МКЦ, ЗПС и запрета трассировка ptrace

1. Отключени запрета блокировки ptrace: Документация Astra Linux

sudo astra-ptrace-lock disable

2. Отключение режима мандантного контроля целостности (МКЦ): Документация Astra Linux

sudo astra-mic-control status # проверка состояния
sudo astra-mic-control disable # отключение

3. Отключение режима замкнутой программной среды в исполняемых файлах (ЗПС): Документация Astra Linunx

sudo astra-digsig-control status # проверка состояния
sudo astra-digsig-control disable # отключение

Синхронизация системного времени (NTP)

Настройте синхронизацию времени с NTP-сервером:

sudo apt update
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-local-rtc 0
timedatectl status

В выводе должна присутствовать строка System clock synchronized: yes. Текущие дату и время можно проверить командой date.

Узел сервисов KUMA — все команды этой части выполняются на узле сервисов KUMA

Аппаратные требования

Аппаратные требования к узлу сервисов KUMA совпадают с требованиями к узлу OSMP:

Разметка диска

Основной объём диска выделите под каталог /opt — в него устанавливаются компоненты KUMA. Под системный раздел оставьте не менее 16 ГБ. Если установщик Ubuntu рекомендует для системных разделов больший размер, используйте рекомендованное значение.

Установка пакетов

Установите необходимые пакеты:

apt install python3-apt curl libcurl4 acl
apt install python3-netaddr python3-cffi-backend

Отключение SELinux и swap

Отключите swap (обязательное требование для узлов кластера Kubernetes):

sudo swapoff -a

Чтобы swap оставался отключённым после перезагрузки, закомментируйте строки со swap в файле /etc/fstab.

Проверьте статус SELinux:

sudo sestatus

Если SELinux включён, отключите его: задайте в файле /etc/selinux/config значение SELINUX=disabled и перезагрузите систему.

sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

Доменное имя (FQDN)

Задайте узлу сервисов KUMA полное доменное имя (FQDN) — обязательно с точкой, например kuma-services.<домен>. FQDN должен быть установлен как имя хоста системы.

Не используйте для этого узла имя kuma — оно занято служебными адресами OSMP. Используйте отдельное имя, например kuma-services.

Запись A для этого имени создаётся на DNS-сервере — см. раздел «Настройка DNS».

Синхронизация системного времени (NTP)

Настройте синхронизацию времени с NTP-сервером:

sudo apt update
sudo apt install -y systemd-timesyncd
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-local-rtc 0
timedatectl status

Доступ по SSH с узла OSMP

Установка подключается к узлу сервисов KUMA по SSH с узла OSMP. Скопируйте открытый SSH-ключ с узла OSMP на узел сервисов KUMA — команда выполняется на узле OSMP:

ssh-copy-id <kuma_ip>

Настройка DNS

Настройка DNS выполняется на DNS-сервере (общем для обоих узлов)

Зарегистрируйте на DNS-сервере доменные имена служб OSMP и узла сервисов KUMA. DNS-сервер общий для обоих узлов, поэтому все записи задаются в одном месте.

Для служб OSMP добавьте запись A с подстановкой (wildcard), указывающую на свободный IP-адрес (<ingress_ip>) в той же подсети, что и кластер. Шлюз кластера Kubernetes прослушивает этот адрес и направляет трафик к соответствующим службам. По умолчанию службы OSMP доступны по следующим адресам:

<ingress_ip> - admsrv.<ingress_domain>
<ingress_ip> - api.<ingress_domain>
<ingress_ip> - console.<ingress_domain>
<ingress_ip> - kuma.<ingress_domain>
<ingress_ip> - *.kuma.<ingress_domain>
<ingress_ip> - monitoring.<ingress_domain>
<ingress_ip> - agentserver.<ingress_domain>
<ingress_ip> - updater.<ingress_domain>

Для узла сервисов KUMA добавьте отдельную запись A:

<kuma_ip> - kuma-services.<домен>

Если DNS-сервер отсутствует или его нельзя использовать, разверните собственный DNS-сервер на BIND — см. статью Создание собственного DNS-сервера на BIND.

Далее все команды выполняются на узле OSMP

Создание конфигурации для запуска установки

Обратите внимание, что узлы, указанные в файле инвентаря будут подготовлены для установки сервисов KUMA. Однако, сами сервисы KUMA (коллектор, коррелятор, хранилище) на узле установлены не будут. Для развертывания непосредственно сервисов KUMA воспользуйтесь инструкцией в конце данной статьи.

Файл инвентаря KUMA

Создайте на узле OSMP файл инвентаря KUMA (например, kuma-inventory.yml, шаблон файла инвентаря находится в директории с распакованной утилитой kdt с названием single.inventory.yml.template) и разместите его рядом с остальными файлами установки. Во всех блоках hosts укажите FQDN и IP-адрес узла сервисов KUMA. Путь к этому файлу задаётся в параметре установки inventory.

all:
  vars:
    deploy_example_services: false
    ansible_connection: local # не изменять
    ansible_user: nonroot # не изменять
kuma:
  vars:
    ansible_connection: ssh
    ansible_user: root # укажите имя пользователя, от имени которого будет производиться установка
# Если пользователь не root, раскомментируйте строки ниже
#    ansible_become: true
#    ansible_become_method: sudo
  children:
    kuma_utils:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
    kuma_collector:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
    kuma_correlator:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
    kuma_storage:
      hosts:
        kuma-services.example.com: # FQDN узла сервисов KUMA
          ansible_host: 10.0.0.101 # IP-адрес узла сервисов KUMA
          shard: 1
          replica: 1
          keeper: 1

Ниже представлены инструкции по заполнению файла с параметрами установки. Файл с параметрами установки можно заполнить либо с помощью мастера, либо вручную.

Обратите внимание! В инструкции далее для параметра license необходимо указать путь к файлу лицензии KUMA license.key (это лицензия KUMA, а не лицензия OSMP/XDR). Разместите license.key рядом с остальными файлами, необходимыми для установки.

Вариант 1 - Указание параметров установки с помощью мастера настройки

1. Запустите мастер настройки:

./bin/kdt wizard -k xdr-<версия_приложения>.tar -o params.yaml

Ответьте на вопросы мастера:

  1. Введите количество primary_nodes (не менее 1): 1
  2. Введите IPv4-адрес первого управляющего узла: 10.0.0.100
  3. Введите имя пользователя для подключения к первому управляющему узлу: user
  4. Введите путь к SSH-ключу для подключения к первому управляющему узлу: /home/user/.ssh/id_rsa
  5. Введите количество worker_nodes (0 — развертывание OSMP на одном узле): 0
  6. Введите 1, если требуется балансировщик нагрузки; иначе нажмите Enter: Enter
  7. Введите строку подключения к СУБД (postgres://<dbms_username>:<password>@<fqdn>:<port>): postgres://xdr:<your_password>@10.0.0.100:5432

    Обратите внимание! Если пароль для подключения к PostgreSQL содержит специальные символы, необходимо закодировать такие символы в URL. Например, тут: https://www.urlencoder.org/ 

  8. Введите IP-адрес шлюза кластера Kubernetes. Шлюз обеспечивает подключение компонентов Kaspersky XDR Expert внутри кластера: 10.0.0.200
  9. Введите пароль учетной записи пользователя Kaspersky XDR Expert (8–256 символов; прописные и строчные буквы, цифры и специальные символы): ваш_пароль
  10. Введите путь к файлу инвентаря KUMA: ./kuma-inventory.yaml
  11. Введите путь к SSH-ключу для подключения к узлам со службами KUMA: /home/user/.ssh/id_rsa
  12. Введите путь к файлу лицензионного ключа KUMA (это лицензия именно KUMA): ./license.key
  13. Введите доменное имя для публичных служб Kaspersky XDR Expert (например, console.<domain name>): mydomain.local
  14. Введите путь к файлу пользовательского сертификата и закрытому ключу для публичных сервисов (для самоподписанного сертификата нажмите Enter): Enter
  15. Введите «Y», если в вашем регионе требуется расширенный жизненный цикл инцидентов: N
  16. Введите имя учетной записи для просмотра метрик OSMP в Grafana (1–30 символов; начинается с буквы; строчные буквы a–z, цифры 0–9, символы _ -.): xdr
  17. Введите пароль учетной записи для просмотра метрик OSMP в Grafana (8–256 символов; прописные и строчные буквы, цифры и специальные символы): ваш_пароль
Вариант 2 - Указание параметров установки с помощью конфигурационного файла

Шаблон конфигурационного файла (singlenode.smp_param.yaml.template) находится в дистрибутиве в архиве с утилитой KDT. Обратите внимание на параметры inventory (путь к файлу инвентаря KUMA) и license (путь к файлу лицензии KUMA license.key).

Обратите внимание! Если пароль для подключения к PostgreSQL (<ваш_пароль> в параметре psql_dsn) содержит специальные символы, необходимо закодировать такие символы в URL. Например, тут: https://www.urlencoder.org/ 

schemaType: ParameterSet
schemaVersion: 1.0.1
namespace: ""
name: bootstrap
project: xdr
nodes:
  - desc: cdt-primary0
    type: primary-worker
    host: <host_ip> # адрес хоста для установки OSMP
    access:
      ssh:
        user: <user_name> # имя пользователя, под которым выполняется установка
        key: <ssh_key_path> # путь к файлу ключа пользователя
parameters:
  - name: psql_dsn
    source:
      value: postgres://xdr:<ваш_пароль>@<host_ip>:5432 # строка подключения к PostgreSQL
  - name: ingress_ip
    source:
      value: <ingress_ip> # адрес шлюза k8s
  - name: ssh_pk
    source:
      path: <ssh_key_path> # путь к файлу ключа пользователя
  - name: admin_password
    source:
      value: "ваш_пароль" # пароль для доступа к консоли, 8-256 символов, должен содержать буквы в обоих регистрах, цифры и спец. символы
  - name: low_resources
    source:
      value: "true"
  - name: openbao_ha_mode
    source:
      value: "false"
  - name: default_class_replica_count
    source:
      value: "1"
  - name: inventory
    source:
      value: ./kuma-inventory.yml # путь к файлу инвентаря KUMA
  - name: license
    source:
      value: ./license.key # путь к файлу лицензии KUMA
  - name: домен_smp
    source:
      value: "<ingress_domain>" # домен для OSMP
  - name: pki_host_list
    source:
      value: "admsrv api console kuma monitoring updater"
  - name: grafana_admin_user
    source:
      value: xdr # имя пользователя для доступа к разделу метрик
  - name: grafana_admin_password
    source:
      value: "ваш_пароль" # пароль для доступа к разделу метрик

Если установка сервисов KUMA в кластере не требуется, добавьте строки ниже в конец файла конфигурации. В таком случае в кластере будут развернуты только сервисы Ядра и Метрик.

  - name: autodeploy_plan
    source:
      value: "none"

Установка Kaspersky XDR

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

./bin/kdt apply --accept-eula -k xdr-<версия_приложения>.tar -i params.yaml

При успешной установке в терминале отображается информация следующего вида:

INFO[0038] apply inventory ./conf.yaml
INFO[0039] preparing bootstrap_<версия>.tgz
INFO[0092] installing: bootstrap
INFO[0404] time: prepare 53.113895029s install 5m12.442326155s
INFO[0404] current installation is valid
INFO[0404] bundles will be published: 40
INFO[0536] bundles published 40
INFO[0536] bundles will be applied: 39
INFO[2450] apply done: 31m53.851140069s
INFO[2450] apply command completed successfully
INFO[2450] time: publish 2m11.679771805s install 31m53.930470045s

Чтобы проверить установку, откройте страницу авторизации в браузере:

https://console.<ingress_domain>

где <ingress_domain> — доменное имя для публичных служб, заданное в мастере настройки или файле конфигурации.

Включение отчетности KUMA (cnab)

После завершения установки включите отчетность KUMA (возможность сохранения отчетов в форматах PDF, HTML и др.). Архив chrome_full.tar.gz входит в поставку. Разместите его рядом с утилитой KDT и выполните команду:

./kdt invoke kuma --action=enableReporting --if reporting_archive=chrome_full.tar.gz

Действия после установки

Для базовой настройки системы после установки воспользуйтесь соответствующими инструкциями

1. Установка плагинов

2. Первый вход и 2FA

3. Добавление лицензии на функционал XDR

4. Установка сервисов KUMA

5. Настройка интеграций

6. Установка кастомного сертификата для доступа к веб-консоли

Установка DNS-сервиса

Установка BIND DNS

Примечание. Если в окружении нет DNS-резолвера, можно установить локальную службу BIND DNS.

Шаги ниже необходимо выполнить на сервере SMP, участвующем в установке XDR.

1. Обновите индекс пакетов:

sudo apt-get update

2. Установите BIND9 и DNS-инструменты:

sudo apt-get install -y bind9 bind9utils dnsutils

3. Включите и запустите службу BIND9:

sudo systemctl enable --now bind9

4. Создайте каталог для файлов зон:

sudo mkdir -p /etc/bind/zones

5. Получите короткое имя хоста этого сервера:

HOST=$(hostname -s)

6. Убедитесь, что файл конфигурации локальных зон существует:

sudo touch /etc/bind/named.conf.local

7. Задайте путь к файлу зоны и добавьте определение зоны (только если оно ещё не добавлено). Вместо example.local используйте свой домен для SMP.

ZFILE="/etc/bind/zones/db.example.local"
grep -q "zone \"example.local\"" /etc/bind/named.conf.local || sudo tee -a /etc/bind/named.conf.local >/dev/null <<EOF

zone "example.local" {
 type master;
 file "example.local";
};
EOF

8. Создайте файл зоны с A-записями для вашего домена:

Здесь example.local - домен OSMP, xdr.example.local - имя физического сервера OSMP, 10.10.20.96 - адрес шлюза k8s, 10.10.20.208 - адрес физического сервера OSMP. Замените эти данные на ваши значения.

SERIAL=$(date +%Y%m%d01)
sudo tee "/etc/bind/zones/db.example.local" >/dev/null <<EOF
\$TTL 604800
@ IN SOA ns.example.local. admin.example.local. (
 $SERIAL
 604800
 86400
 2419200
 604800 )
@ IN NS ns.example.local.
ns IN A 10.10.20.208
api IN A 10.10.20.96
kuma IN A 10.10.20.96

*.kuma IN A 10.10.20.96
monitoring IN A 10.10.20.96
admsrv IN A 10.10.20.96
console IN A 10.10.20.96

agentserver IN A 10.10.20.96

updater IN A 10.10.20.96
xdr.example.local IN A 10.10.20.208
EOF

9. Проверьте синтаксис конфигурации BIND:

sudo named-checkconf

10. Проверьте файл зоны (замените example.local на имя вашего домена):

sudo named-checkzone "example.local" "/etc/bind/zones/db.example.local"

11. Перезапустите BIND9:

sudo systemctl restart bind9

12. Проверьте разрешение имён на DNS-сервере (замените example.local на имя вашего домена):

nslookup console.example.local
nslookup kuma.example.local
nslookup api.example.local
nslookup admsrv.example.local
nslookup monitoring.example.local
nslookup updater.example.local

13. Запросите DNS-сервер напрямую с помощью dig (замените example.local на имя вашего домена):

dig @10.10.20.208 api.example.local +short
dig @10.10.20.96 console.example.local +short
dig @10.10.20.96 kuma.example.local +short

14. Не забудьте настроить все остальные машины на использование этого DNS (замените example.local и 10.10.20.208 на ваши значения):

IFACE=$(ip route | awk '/default/ {print $5; exit}')
sudo resolvectl dns "$IFACE" 10.10.20.208
sudo resolvectl domain "$IFACE" example.local

Полезные команды

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

Изменение директории /tmp

1. Определение переменной окружения

export TMPDIR=<new_directory>/tmp

где, <new_directory>/tmp - новый путь к директории /tmp


Добавление пользователя в группу суперпользователей и разрешение повышения привилегий без ввода пароля

1. Добавление в группу суперпользователей

sudo usermod -aG sudo user

2. Редактирование файла суперпользователей

sudo vi /etc/sudoers

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

user ALL=(ALL) NOPASSWD:ALL

где, user - имя пользователя для которого выполняются операции


Создание и распространение ssh-ключей

Ниже приведена последовательность действий для создания пользователя, генерация ключа ssh и распространение его на сторонний хост. Предварительно на удаленном хосте должен быть создан пользователь с таким же именем.

useradd user
passwd user
mkdir /home/user/.ssh/
ssh-keygen -t rsa
ssh-copy-id -i /home/<user>/.ssh/id_rsa user@<host>

где, <host> - имя или IP-адрес удаленного хоста, куда необходимо доставить ключ


Создание и распространение ssh-ключей под root

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa root@<host>

где, <host> - имя или IP-адрес удаленного хоста, куда необходимо доставить ключ


Настройка синхронизации времени с помощью chrony

1. Установка chrony

sudo apt install chrony

2. (опционально) Редактирование файла конфигурации для указания собственного сервера синхронизации времени

vi /etv/chrony.conf

3. Запуск службы

sudo systemctl enable --now chronyd

4. Проверка синхронизации

sudo timedatectl | grep 'System clock synchronized'

Подробный лог установки или обновления в консоли

1. Перед установкой/обновлением выполнить:

export KDT_NO_QUIET=1

 

Заполнение файла параметров и инвентаря

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

Официальная документация по данному разделу приведена в Онлайн-справке на продукт:
https://support.kaspersky.com/help/XDR/2.0/ru-RU/271992.htm 
https://support.kaspersky.com/help/XDR/2.0/ru-RU/249240.htm 

Введение

В SMP для установки необходимо заполнить 2 файла с конфигурацией: param.yaml и inventory.yaml. Первый файл отвечает за настройку и развертывание SMP, а второй - за развертывание KUMA.

Ниже приведем примеры конфигурационных файлов для установки, а также наиболее популярные сценарии переопределения стандартных параметров установки.


Примеры файлов параметров

Single node

Ниже приведен пример файла param.yaml для однонодовой инсталляции SMP с комментариями и советами по заполнению.

schemaType: ParameterSet
schemaVersion: 1.0.1
namespace: ""
name: bootstrap
project: xdr

nodes:
  - desc: cdt-1
    type: primary-worker
    host: 10.80.23.42 # Необходимо указать IP адрес целевого устройства
    access:
      ssh:
        user: root # Пользователь, от имени которого будет производиться установка
        key: /root/.ssh/id_rsa # Путь к ssh-ключу пользователя

parameters:
  - name: psql_dsn
    source:
# Необходимо заполнить строку подключения к БД: user_db - имя пользователя, password_db - пароль,
# (если пароль содержит спецсимволы их необходимо привести к URI кодировке)
# host_db - адрес узла с БД (для Single node это адерс указанный в параметре выше, port_db - порт БД 
# (по умолчанию 5432)
      value: "postgres://<user_db>:<password_db>@<host_db>:<port_db>"
  - name: ingress_ip
    source:
      value: 10.80.23.182 # Зарезервированный IP адрес
  - name: ssh_pk
    source:
      path: /root/.ssh/id_rsa # Значение должно совпадать с указанным выше значением key
  - name: admin_password
    source:
      value: "AdminKit2015!" # Пароль для доступа к интерфейсу, от 8 до 256 символов
                             # должен содержать буквы, цифры и спец. символы
  - name: inventory
    source:
      value: "/home/user/inventory.yml" # Путь к файлу инвентаря для установки компонентов KUMA, для установки только KEDR
                                        # укажите /dev/null
  - name: license
    source:
      value: "/home/user/license.key" # Путь к файлу ключа лицензии KUMA
  - name: smp_domain
    source:
      value: "smp.local" # Укажите домен для компонентов SMP
  - name: pki_host_list
    source:
      value: "admsrv api console kuma monitoring updater agentserver"
      
# По умолчанию размер тома для ядра - 4 Гб при low_resources = true
# Если хотите изменить это значение раскомментируйте блок параметров ниже
# И укажите требуемое значение

#  - name: core_request_low_resources
#    source:
#      value: "100Gi"

# Начало блока, который не нужно изменять
  - name: low_resources
    source:
      value: "true"
  - name: default_class_replica_count 
    source:
      value: "1"
  - name: openbao_ha_mode
    source:
      value: "false" 
  - name: openbao_standalone
    source:
      value: "true"

Multi node

Ниже приведен пример файла param.yaml для многонодовой инсталляции SMP с комментариями и советами по заполнению.

schemaType: ParameterSet
schemaVersion: 1.0.1
namespace: ""
name: bootstrap
project: xdr

nodes:
 # одна нода контроллера
  - desc: cdt-primary1
    type: primary
    host: 10.80.23.42 # IP-адрес ноды контроллера. Данный адрес, 
                      # а также все адрес приведенные ниже, должны быть из одной подсети
    access:
      ssh:
        user: root # Пользователь, от имени которого будет производиться установка
        key: /root/.ssh/id_rsa # Путь к ssh-ключу пользователя
# три рабочие ноды       
  - desc: cdt-w1
    type: worker
    host: 10.80.23.141 # IP-адрес 1-ой рабочей ноды
    access:
      ssh:
        user: root # Пользователь, от имени которого будет производиться установка
        key: /root/.ssh/id_rsa # Путь к ssh-ключу пользователя
  - desc: cdt-w2
    type: worker
    host: 10.80.23.45 # IP-адрес 2-ой рабочей ноды
    access:
      ssh:
        user: root # Пользователь, от имени которого будет производиться установка
        key: /root/.ssh/id_rsa # Путь к ssh-ключу пользователя
  - desc: cdt-w3
    type: worker
    host: 10.80.23.30 # IP-адрес 3-ей рабочей ноды
    access:
      ssh:
        user: root # Пользователь, от имени которого будет производиться установка
        key: /root/.ssh/id_rsa # Путь к ssh-ключу пользователя
    kind: admsrv # Данный параметр необходимо указать для одной любой рабочей ноды

parameters:
# Необходимо заполнить строку подключения к БД: user_db - имя пользователя, password_db - пароль,
# (если пароль содержит спецсимволы их необходимо привести к URI кодировке)
# host_db - адрес узла с БД (для Single node это адерс указанный в параметре выше, port_db - порт БД 
# (по умолчанию 5432)
  - name: psql_dsn
    source:
      value: "postgres://<user_db>:<password_db>@<host_db>:<port_db>"
  - name: ingress_ip
    source:
      value: 10.80.23.182 # Зарезервированный IP адрес
  - name: ssh_pk
    source:
      path: /root/.ssh/id_rsa # Значение должно совпадать с указанным выше значением key
  - name: admin_password
    source:
      value: "AdminKit2015!" # Пароль для доступа к интерфейсу, от 8 до 256 символов
                             # должен содержать буквы, цифры и спец. символы
  - name: core_disk_request
    source:
        value: 512Gi # Укажите размер тома ядра
  - name: inventory
    source:
      value: "/home/user/inventory.yml" # Путь к файлу инвентаря для установки компонентов KUMA
  - name: license
    source:
      value: "/home/user/license.key" # Путь к файлу ключа лицензии KUMA
  - name: smp_domain
    source:
      value: "smp.local" # Укажите домен для компонентов SMP
  - name: pki_host_list
    source:
      value: "admsrv api console kuma monitoring updater agentserver"

Примеры файлов инвентаря

All in one

Ниже приведен пример файла inventory.yaml для all in one инсталляции KUMA в рамках SMP с комментариями и советами по заполнению.

all:
  vars:
    deploy_example_services: false
    ansible_connection: local # не изменять
    ansible_user: nonroot # не изменять
kuma:
  vars:
    ansible_connection: ssh
    ansible_user: root # укажите имя пользователя, от имени которого будет производиться установка   
# В случае, если пользователь не root, раскомментируйте строки ниже
#    ansible_become: true
#    ansible_become_method: sudo
  children:
    kuma_utils:
      hosts:
        kuma.example.com: # укажите FQDN сервера для компонентов KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для компонентов KUMA
    kuma_collector:
      hosts:
        kuma.example.com: # укажите FQDN сервера для компонентов KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для компонентов KUMA
    kuma_correlator:
      hosts:
        kuma.example.com: # укажите FQDN сервера для компонентов KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для компонентов KUMA
    kuma_storage:
      hosts:
        kuma.example.com: # укажите FQDN сервера для компонентов KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для компонентов KUMA
          shard: 1
          replica: 1
          keeper: 1

Distributed

Ниже приведен пример файла inventory.yaml для distributed инсталляции KUMA в рамках SMP с комментариями и советами по заполнению.

all:
  vars:
    deploy_example_services: false
    ansible_connection: local # не изменять
    ansible_user: nonroot # не изменять
kuma:
  vars:
    ansible_connection: ssh
    ansible_user: root # укажите имя пользователя, от имени которого будет производиться установка   
# В случае, если пользователь не root, раскомментируйте строки ниже
#    ansible_become: true
#    ansible_become_method: sudo
  children:
    kuma_utils:
      hosts:
        kuma-utils.example.com: # укажите FQDN сервера для компонентов KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для компонентов KUMA
    kuma_collector:
      hosts:
        kuma-collector.example.com: # укажите FQDN сервера для коллектора KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для коллектора KUMA
    kuma_correlator:
      hosts:
        kuma-correlator.example.com: # укажите FQDN сервера для коррелятора KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для коррелятора KUMA
    kuma_storage:
      hosts:
        kuma-storage-1.example.com: # укажите FQDN сервера для хранилища KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для хранилища KUMA
          shard: 1
          replica: 1
          keeper: 1
        kuma-storage-2.example.com: # укажите FQDN сервера для хранилища KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для хранилища KUMA
          shard: 1
          replica: 2
          keeper: 2
        kuma-storage-3.example.com: # укажите FQDN сервера для хранилища KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для хранилища KUMA
          shard: 2
          replica: 1
          keeper: 3
        kuma-storage-4.example.com: # укажите FQDN сервера для хранилища KUMA
          ansible_host: 0.0.0.0 # укажите IP сервера для хранилища KUMA
          shard: 2
          replica: 2

Указывайте в файле инвентаря только необходимое количество нод коллекторов, корреляторов и хранилищ.


Сценарии изменения параметров

Изменение доменных имен по умолчанию

По умолчанию используются следующие имена: kuma, admsrv, api, monitoring, console. Если по какой-либо причине вы хотите их изменить, следуйте инструкции ниже.

kuma

Добавьте в файл param.yaml следующий блок, где kuma-new - новое доменное имя для kuma. Пример:

  - name: kuma_host
    source:
      value: "kuma-new"

А также в блоке pki_host_list измените kuma на новое доменное имя. Пример:

  - name: pki_host_list
    source:
      value: "admsrv api console kuma-new monitoring"
api

Добавьте в файл param.yaml следующий блок, где api-new - новое доменное имя для api. Пример:

  - name: api_host
    source:
      value: "api-new"

А также в блоке pki_host_list измените api на новое доменное имя. Пример:

  - name: pki_host_list
    source:
      value: "admsrv api-new console kuma monitoring"
monitoring

Добавьте в файл param.yaml следующий блок, где monitoring-new - новое доменное имя для monitoring. Пример:

  - name: monitoring_host
    source:
      value: "monitoring-new"

А также в блоке pki_host_list измените monitoring на новое доменное имя. Пример:

  - name: pki_host_list
    source:
      value: "admsrv api console kuma monitoring-new"
admsrv

Добавьте в файл param.yaml следующий блок, где ksc-new - новое доменное имя для ksc. Пример:

  - name: ksc_host
    source:
      value: "ksc-new"

А также в блоке pki_host_list измените ksc на новое доменное имя. Пример:

  - name: pki_host_list
    source:
      value: "ksc-new api console kuma monitoring"
console

Добавьте в файл param.yaml следующие блоки, где console-new - новое доменное имя для console. Пример:

  - name: nwc_host
    source:
      value: "console-new"
  - name: flow_host
    source:
      value: "console-new"
  - name: hydra_host
    source:
      value: "console-new"
  - name: login_host
    source:
      value: "console-new"
  - name: console_host
    source:
      value: "console-new"
  - name: gateway_host
    source:
      value: "console-new"

А также в блоке pki_host_list измените console на новое доменное имя. Пример:

  - name: pki_host_list
    source:
      value: "admsrv api console-new kuma monitoring"

Ниже расположен пример файла инвентаря со всеми измененными доменными именами

Пример файла инвентаря с переопределенными именами
schemaType: ParameterSet
schemaVersion: 1.0.1
namespace: ""
name: bootstrap
project: xdr

nodes:
  - desc: cdt-1
    type: primary-worker
    host: 10.80.23.42
    access:
      ssh:
        user: user
        key: /home/user/.ssh/id_rsa 
parameters:
  - name: psql_dsn
    source:
      value: "postgres://postgres:postgres@10.80.23.40:5432"
  - name: ingress_ip
    source:
      value: 10.80.23.182
  - name: ssh_pk
    source:
      path: /root/.ssh/id_rsa
  - name: admin_password
    source:
      value: "AdminKit2015!"
  - name: inventory
    source:
      value: "/home/user/inventory.yml"
  - name: license
    source:
      value: "/home/user/license.key"
  - name: smp_domain
    source:
      value: "smp.local"
  - name: core_request_low_resources
    source:
      value: "100Gi"
# Начало блока с изменение доменных имен
  - name: pki_host_list
    source:
      value: "admsrv-new api-new console-new kuma-new monitoring-new"
  - name: kuma_host
    source:
      value: "kuma-new"
  - name: admsrv_host
    source:
      value: "admsrv-new"
  - name: api_host
    source:
      value: "api-new"
  - name: monitoring_host
    source:
      value: "monitoring-new" 
  - name: nwc_host
    source:
      value: "console-new"
  - name: flow_host
    source:
      value: "console-new"
  - name: hydra_host
    source:
      value: "console-new"
  - name: login_host
    source:
      value: "console-new"
  - name: console_host
    source:
      value: "console-new"
  - name: gateway_host
    source:
      value: "console-new"
# Конец блока с изменение доменных имен
      
# Начало блока, который не нужно изменять
  - name: low_resources
    source:
      value: "true"
  - name: default_class_replica_count 
    source:
      value: "1"
  - name: openbao_ha_mode
    source:
      value: "false"  
  - name: openbao_standalone
    source:
      value: "true"

Изменение сертификата web-консоли

Для изменения сертификатов публичных служб существует 2 способа: указание конечных сертификатов, либо промежуточных для генерации сертификатов самой консолью. В обоих случаях в параметр необходимо предоставить сертификат в формате PEM и незашифрованный закрытый ключ.

Важно! Указать пользовательский сертификат для внешних служб возможно только до первоначальной установки!

Использование промежуточного сертификата

Добавьте следующие параметры в файл установки, где /path/cert.pem - полный путь к промежуточному сертификату с незашифрованным закрытым ключом в формате PEM. На основе данного сертификата консолью будут сгенерированы сертификаты для публичных служб.

  - name: intermediate_enabled
    source:
      value: "true"
  - name: intermediate_bundle
    source:
      value: "/path/cert.pem"
Использование конечного сертификата

Добавьте следующие параметры в файл установки, где /console/cert.pem, /admsrv/cert.pem, /api/cert.pem - пути к сетификатам с незашифрованными закрытыми ключами в формате PEM для консоли SMP, KSC и API соответственно.

  - name: intermediate_enabled
    source:
      value: "false"
  - name: console_bundle
    source:
      value: "/console/cert.pem"
  - name: admsrv_bundle
    source:
      value: "/admsrv/cert.pem"
  - name: api_bundle
    source:
      value: "/api/cert.pem"

Изменение параметров после установки

Изменение некоторых параметров возможно и после установки системы, например, доменных имен или IP-адресов. Ниже рассмотрим данный процесс.

1. Перейти в директорию, где располагается kdt

2. Выполняем экспорт текущих параметров:

./kdt ec -e new_param.yaml

3. Вносим необходимые изменения в файл и применяем параметры, где /path/new_param.yaml - полный путь к ранее экспортированному и измененному файлу конфигурации

./kdt apply -i /path/new_param.yaml

Внимание! Применение параметров может занимать более 10-20 минут!

Создание сервисов KUMA для SMP

Создание сервисов KUMA

В разделе описано создание хранилища (Storage), коррелятора (Correlator) и коллектора (Collector) KUMA.

Убедитесь, что хост, на который выполняется установка сервиса резолвит FQDN Ядра KUMA, заданный при установке SMP.

Убедитесь, что кластер SMP резолвит FQDN хоста, на который планируется установка сервиса (FQDN хоста должен разрешаться через DNS-сервер, который использует SMP).

В случае наличия локального МЭ на хосте с сервисами KUMA не забудьте добавить разрешающие правила для портов сервисов: API-порты, указанные в таблицы Активных сервисов и порты приема событий Коллекторами, заданные в настройках Транспорта соответствующих коллекторов. Примеры команд доступны здесь.

Подготовка целевого устройства для установки сервисов

Если устройства уже подготовлены к установке сервисов KUMA (при установке SMP был указан файл инвентаря KUMA в разделе inventory) пропустите этот раздел и переходите к следующему.

Если в процессе установки SMP не был указан файл инвентаря KUMA в разделе inventory и устройства не были подготовлены для установки сервисов - их можно подготовить после установки SMP по инструкции ниже.

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

Шаги после создания инвентаря для сервисов KUMA выполнять не нужно!

2. Перейдите на хост администратора, с которого ранее выполнялась установка SMP в директорию с утилитой KDT.

3. Выполните команду:

./kdt invoke kuma --action addHosts --param host_inventory='<путь_к_файлу_инвентаря>'

4. Дождитесь окончания установки, после чего переходите к следующим разделам для установки сервисов.

Создание хранилища (Storage)

Перейдите в Мониторинг → Ресурсы и сервисы → Хранилища → Создать и используйте пошаговый мастер настройки:

Перейдите в Мониторинг → Ресурсы и сервисы → Хранилища, нажмите ПКМ по только что добавленному хранилищу и выберите опцию Копировать идентификатор - этот параметр потребуется для установки сервиса.

Затем установите сервис Storage из SSH-консоли следующей командой

/opt/kaspersky/kuma/kuma storage --core https://<kuma_core_FQDN>:7210 --id <service_id> --api.port 7230 --install

Здесь <kuma_core_FQDN> - доменное имя Ядра KUMA, заданное при установке SMP. По-умолчанию - kuma.<smp_domain>.

А <service_id> - идентификатор сервиса, скопированный ранее.

Создание точки назначения типа Хранилище

После установки хранилища, необходимо создать точку назначения, которая будет использоваться остальными сервисами для передачи событий в Хранилище. Для создания точки назначения выполните следующее:

Перейдите в Мониторинг → Ресурсы и сервисы → Точки назначения → Создать.

Выберите Тип точки назначения storage.

Нажмите на поле URL - в выпадающем списке появятся доступные адреса Хранилища, выберите адрес только что созданного хранилища.

Название точки назначения заполнится автоматически.

Создание коррелятора (Correlator)

Перейдите в Мониторинг → Ресурсы и сервисы → Корреляторы → Создать и используйте пошаговый мастер настройки:

В результате KUMA отобразит команду для установки коррелятора в ОС. Скопируйте её, нажмите кнопку Сохранить и вставьте команду в SSH-консоль.

Создание точки назначения типа Коррелятор

После установки коррелятора, необходимо создать точку назначения, которая будет использоваться коллекторами для передачи событий в Коррелятор для сопоставления с правилами корреляции на потоке и последующим созданием Алертов и Инцидентов. Для создания точки назначения выполните следующее:

Перейдите в Мониторинг → Ресурсы и сервисы → Точки назначения → Создать.

Выберите Тип точки назначения correlator.

Нажмите на поле URL - в выпадающем списке появятся доступные адреса Корреляторов, выберите адрес только что созданного коррелятора.

Название точки назначения заполнится автоматически.

Создание коллектора (Collector)

Более подробные инструкции по созданию Коллектора и подключению различных источников можно найти в соответствующем разделе.

Перейдите в Мониторинг → Ресурсы и сервисы → Коллекторы → Создать и используйте пошаговый мастер настройки:

В результате KUMA отобразит команду для установки коллектора в ОС. Скопируйте её, нажмите кнопку Сохранить и вставьте команду в SSH-консоль.

Проверка поступления событий

Перейдите в Мониторинг → Ресурсы и сервисы → Активные сервисы и выберите ранее созданный коллектор галочкой.

В верхнем меню выберите Перейти к событиям.

Дождитесь загрузки окна Поиск угроз и нажмите кнопку Выполнить запрос

В таблице ниже должны отобразиться события.

Дополнительные материалы

Создание и установка сервисов KUMA (подробно)