Обновление/Установка KUMA

Обновление/Установка KUMA версии до 2.0.Х (инсталляция «все в одном»)

  1. Создайте резервную копию ресурсов и сертификатов, см. советующий раздел в этой инструкции.

  2. Распакуйте архив: 
    tar -xvf kuma-ansible-installer-(ВЕРСИЯ).tar.gz

  3. Перейдите в распакованную папку: 
    cd kuma-ansible-installer
  4. Выполните команду копирования шаблона: 
    cp single.inventory.yml.template single.inventory.yml
  5. Для автоподстановки имени хоста в конфигурацию, используйте команду ниже: 
    sed -i "s/kuma.example.com/$(hostname -f)/g" single.inventory.yml
    Либо подставьте ранее использованный файл при обновлении. В случае ручной правки файла старайтесь не добавлять лишних пробелов. Если деморесурсы НЕ нужно разворачивать укажите в файле single.inventory.yml в строке (значение false) deploy_example_services: false

  6. Добавить файл лицензии в папку kuma-ansible-installer/roles/kuma/files и переименовать на license.key

  7. Входим в ОС из-под суперпользователя (root): 
    sudo -i
  8. Запустить установку: 
    ./install.sh single.inventory.yml
  9. Должно все завершиться скриншотом ниже, ошибки отсутствуют (failed=0):image.png

  10. Зайдите на веб интерфейс ядра KUMA по адресу ядра - https://<FQDN_CORE or IP_CORE>:7220 Учетные данные для входа по умолчанию: admin / mustB3Ch@ng3d!
  11. Зайдите на веб интерфейс, проверьте статус Storage. Для этого перейдите во вкладку: Ресурсы - Активные сервисы. Если статус Storage отличается от зеленого (получить актуальный статус можно нажав кнопу обновить), то выполните нижеследующие команды.

После проделанных выше инструкций все демо-сервисы должны быть в статусе зеленый. Корректность работы можно проверить, перейдя во вкладку События и нажав на значок увеличительного стекла (Поиск), должны появиться события, поступающие KUMA или Сообщение «События не найдены». Если при поиске возникает ошибка, то необходимо проверить статусы сервисов в веб интерфейсе KUMA. Провести первичный траблшутинг по этому документу и сообщить ответственному инженеру Лаборатории Касперского в случае неуспеха.

Обновление/Установка KUMA версии до 2.0.Х (распределенная инсталляция)

  1. Создайте резервную копию ресурсов и сертификатов, см. советующий раздел в этой книге.

  2. Распакуйте архив (операции выполняются на ядре системы KUMA): 
    tar -xvf kuma-ansible-installer-(ВЕРСИЯ).tar.gz
  3. Перейдите в распакованную папку: 
    cd kuma-ansible-installer
  4. Добавить файл лицензии в папку kuma-ansible-installer/roles/kuma/files и переименовать на license.key
    cp ПУТЬ_ДО_КЛЮЧА*.key roles/kuma/files/license.key
  5. Выполните команду копирования шаблона (либо подставьте ранее использованный файл при обновлении): 
    cp distributed.inventory.yml.template distributed.inventory.yml
  6. Добавьте публичный ключ SSH на все удаленные хосты в том числе и для хоста с которого происходит развертывание:

    1. На ВСЕХ хостах в конфигурации сервиса SSH должна быть включена опция удаленного входа от суперпользователя!

    2. На хосте с которого происходит развертывание сгенерируйте ключ командой (без указания пароля и доп. параметров): 
      ssh-keygen -t rsa
    3. Добавьте ключ по ssh на удаленные хосты и на сам хост развертывания: 
      ssh-copy-id login@remote_host_fqdn

  7. Отредактируйте файл инвентаря с командой: 
    nano distributed.inventory.yml

В случае ручной правки файла старайтесь не добавлять лишних пробелов.

Количество keeper (ZooKeeper) должно быть нечетным (минимум 3). Если, например, хранилища два, то в файле инвентаря укажите в storage: hosts: <полное_доменное_имя_машины>: (этом может быть core, collector) с его IP адресом и значением keeper, по аналогии с другими записями. Например, если используется два хранилища, то конфигурация storage будет выглядеть следующим образом:

image.png

Для развертывания отдельного одного хранилища без кластера используйте следующие настройки в distributed.inventory.yml:

image.png

Демонстрационные сервисы
Если Вы хотите, чтобы инсталлятор развернул демонстрационные сервисы, присвойте параметру deploy_example_services значение true (Только для новых инсталляций).

Генерация содержимого файла /etc/hosts
Если целевые машины НЕ зарегистрированы в DNS-зоне вашей организации, то присвойте параметру generate_etc_hosts значение true и для каждой машины в инвентаре, замените значения параметра ip 0.0.0.0 на актуальные IP-адреса.

Список целевых машин
В файле определены 4 группы, именованные аналогично ключевым компонентам KUMA: core, collector, correlator, storage. Помещая целевую машину в одну из групп, вы инструктируете инсталлятор установить на нее соответствующий компонент KUMA. В каждой группе замените строки с суффиксом *.example.com на актуальные имена хостов целевых машин.

Про устройство кластера хранилища можно почитать тут.

Если хранилище одно, то оставьте параметры shard + replica + keeper, как у kuma-storage-1.example.com

Перед началом установки инсталлятор KUMA выполнит валидацию инвентаря и укажет на ошибки, если таковые были допущены.

8. Входим в ОС из-под суперпользователя (root): 

sudo -i

9. Запустите процесс инсталляции: 

./install.sh distributed.inventory.yml

10. Выполните настройку storage на использование двух хранилищ. В точках назначения нужно добавить URL второго хранилища, (если используются отдельные keeper, то их не нужно указывать в точках назначения) пример ниже:

image.png

Корректность работы можно проверить, перейдя во вкладку События и нажав на значок увеличительного стекла (Поиск), должны появиться события, поступающие KUMA или Сообщение «События не найдены». Если при поиске возникает ошибка, то необходимо проверить статусы сервисов в веб интерфейсе KUMA. Провести первичный траблшутинг по этому документу и сообщить ответственному инженеру Лаборатории Касперского в случае неуспеха.

Обновление/Установка KUMA версии от 2.1.Х

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

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

Убедитесь, что все пункты из статьи подготовки в системе соблюдены

При установке / обновлении на версию 3.2.х если имя хоста НЕ должно начинаться с цифры

1. Создайте резервную копию ресурсов и сертификатов, см. советующий раздел в этой книге.

2. Распакуйте архив (операции выполняются на ядре системы KUMA): 

tar -xvf kuma-ansible-installer-(ВЕРСИЯ).tar.gz

3. Перейдите в распакованную папку: 

cd kuma-ansible-installer

4. Добавить файл лицензии в папку kuma-ansible-installer/roles/kuma/files и переименовать на license.key: 

cp ПУТЬ_ДО_КЛЮЧА*.key roles/kuma/files/license.key

5. ВАЖНО! Регистр написания хостнеймов в inventory должен совпадать с выводом значения на хостах команды 

hostname -f

6. ВАЖНО! Хостнейм при команде hostname -f должен содержать хотя бы одну точку, пример: kuma.local

7. Выполните команду копирования шаблона (либо подставьте ранее использованный файл single или distributed при обновлении, в случае первичной установки смотрите пример заполенения тут): 

В случае ручной правки файла старайтесь не добавлять лишних пробелов.

Значения переменных инвентаря (*inventory.yml)
Установка все в одном (single) (AiO)

Выполните команду копирования шаблона: 

cp single.inventory.yml.template single.inventory.yml

Для автоподстановки имени хоста в конфигурацию, используйте команду ниже: 

sed -i "s/kuma.example.com/$(hostname -f)/g" single.inventory.yml
Распределенная установка (distributed)
cp distributed.inventory.yml.template distributed.inventory.yml

Про устройство кластера хранилища можно почитать тут.

8. На серверах хранилищ, где используется роль Keeper, включите использование ipv6. ВАЖНО! С сервера хранилища до ядра должен быть доступен 7220 порт.

Пункты ТОЛЬКО при обновлении с версии 2.0 на версию 2.1.0

Измените конфигурацию сервиса хранилища /usr/lib/systemd/system/kuma-storage-<ID хранилища>.service пропишите: 

TimeoutSec=57600
systemctl daemon-reload

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

/opt/kaspersky/kuma/mongodb/bin/mongo localhost/kuma 
db.users.updateMany({"accessMatrix":null},{$set: {"accessMatrix":{ "GET /resources" : false, "POST /resources/export" : false, "GET /services" : false, "POST /dictionaries/update" : false, "GET /assets" : false, "GET /dictionaries" : false, "POST /assets/import" : false, "POST /resources/upload" : false, "GET /users/whoami" : false, "GET /alerts" : false, "POST /events" : false, "GET /resources/download/:id" : false, "POST /alerts/close" : false, "GET /events/clusters" : false, "POST /resources/import" : false, "GET /activeLists" : false, "GET /tenants" : false, "POST /assets/delete" : false, "POST /resources/toc" : false, "POST /activeLists/import" : false}}}) 
systemctl restart kuma-core  

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

./install.sh ./inventory.yml -e "accept_eula=yes default_admin_password=yes"

Если в KUMA была настроена интеграция с Active Directory и были заданы группы ролей пользователя, сразу после обновления программы необходимо выполнить на машине с Ядром KUMA запрос в монго. В противном случае параметры групп ролей пользователей могут быть потеряны:

/opt/kaspersky/kuma/mongodb/bin/mongo localhost/kuma
var tenantID = db.tenants.findOne({ main: true })._id;
db.settings.insert({_id: "f371fa1b-948e-45d2-a47c-86ddd67029ee", tenantID: tenantID, disabled: true, roleGroups: [], kind: 'adfs'}); 

9. Входим в ОС из-под суперпользователя (root), если это не было сделано ранее: 

sudo -i

10. Запустите установку (при установке все в одном используйте single.inventory.yml): 

./install.sh distributed.inventory.yml

11. При наличии ошибки в конце установки TASK [Start not orphaned KUMA storage services] считаем установку успешной. Эта ошибка связана с таймаутом запуска ClickHouse, время старта процесса занимает ~10 минут. Убедитесь, что служба clickhouse потребляет ресурсы командой top.

12. Зайдите на веб интерфейс ядра KUMA по адресу ядра - https://<FQDN_CORE or IP_CORE>:7220 Учетные данные для входа по умолчанию: admin / mustB3Ch@ng3d!

В случае, если при установке произошел сбой (НЕ обновлении), перед последующей установкой рекомендуется выполнить ./uninstall.sh <ваш_инвентарь.yml>

Установка KUMA с отказоустойчивым ядром

Отказоустойчивость KUMA обеспечивается путем внедрения ядра KUMA в кластер Kubernetes, развернутый установщиком KUMA. В качестве распределённого блочного хранилища для кластера используется Longhorn. Схема:

image.png

Схема работы в случае отказа оного из воркеров ядра

image.png

Через ~ 5 минут

image.png

Через ~ 1-2 минуты

image.png

Для установки KUMA в отказоустойчивом исполнении используется установщик kuma-ansible-installer-ha-2.1. X.tar.gz. Конфигурация кластера Kubernetes задается в файле инвентаря k0s.inventory.yml. Требования к устройствам для установки KUMA в Kubernetes - https://support.kaspersky.com/help/KUMA/3.0.2/ru-RU/217889.htm 

Порты доступа для кластера ядра
Трафик KUMA core в отказоустойчивой конфигурации (трафик, в котором и источником и получателем выступают внешние сервисы KUMA здесь не рассматривается)
В таблице указаны инициатор соединения (источник) и назначение. Номер порта на инициаторе может быть динамическим. Обратный трафик в рамках установленного соединения не должен блокироваться
       
Источник Назначение Порт назначения Тип
Внешние сервисы KUMA Балансировщик нагрузки 7209 tcp
Внешние сервисы KUMA Балансировщик нагрузки 7210 tcp
Внешние сервисы KUMA Балансировщик нагрузки 7220 tcp
Внешние сервисы KUMA Балансировщик нагрузки 7222 tcp
Внешние сервисы KUMA Балансировщик нагрузки 7223 tcp
       
Рабочий узел Балансировщик нагрузки 6443 tcp
Рабочий узел Балансировщик нагрузки 8132 tcp
Управляющий узел Балансировщик нагрузки 6443 tcp
Управляющий узел Балансировщик нагрузки 8132 tcp
Управляющий узел Балансировщик нагрузки 9443 tcp
Рабочий узел Внешние сервисы KUMA в зависимости от настроек при создании сервиса tcp
Балансировщик нагрузки Рабочий узел 7209 tcp
Балансировщик нагрузки Рабочий узел 7210 tcp
Балансировщик нагрузки Рабочий узел 7220 tcp
Балансировщик нагрузки Рабочий узел 7222 tcp
Балансировщик нагрузки Рабочий узел 7223 tcp
Внешние сервисы KUMA Рабочий узел 7209 tcp
Внешние сервисы KUMA Рабочий узел 7210 tcp
Внешние сервисы KUMA Рабочий узел 7220 tcp
Внешние сервисы KUMA Рабочий узел 7222 tcp
Внешние сервисы KUMA Рабочий узел 7223 tcp
Рабочий узел Рабочий узел 179 tcp
Рабочий узел Рабочий узел 9500 tcp
Рабочий узел Рабочий узел 10250 tcp
Рабочий узел Рабочий узел 51820 udp
Рабочий узел Рабочий узел 51821 udp
Управляющий узел Рабочий узел 10250 tcp
Балансировщик нагрузки Управляющий узел 6443 tcp
Балансировщик нагрузки Управляющий узел 8132 tcp
Балансировщик нагрузки Управляющий узел 9443 tcp
Рабочий узел Управляющий узел 6443 tcp
Рабочий узел Управляющий узел 8132 tcp
Рабочий узел Управляющий узел 10250 tcp
Управляющий узел Управляющий узел 2380 tcp
Управляющий узел Управляющий узел 6443 tcp
Управляющий узел Управляющий узел 9443 tcp
Управляющий узел Управляющий узел 10250 tcp
Консоль управления кластером (CLI) Балансировщик нагрузки 6443 tcp
Консоль управления кластером (CLI) Управляющий узел 6443 tcp

Минимально кластер должен включать:

Минимальная конфигурация, на которую можно произвести установку - один контроллер, совмещенный с рабочим узлом. Данная конфигурация не обеспечивает отказоустойчивости core и служит для демонстрации возможностей/проверки программной среды.

Для реализации отказоустойчивости необходим выделенный контроллер кластера  и минимум 2 рабочих узла. Если контроллер кластера содержит рабочую нагрузку и под (pod) с Core размещается на нем, то его отключение приведет к полной потере доступа к Core.

На всех компонентах ядра должно быть единое время, настройте на всех машинах NTP

На контроллерах кластера должен быть уникальный machine-id, это значит, что не рекомендуется клонирование машин с этой ролью, либо необходимо изменить ID на машинах до установки. Внимание! Допустимость данной операции должен определять администратор хоста с учётом возможного использования machine-id другими сервисами! rm /etc/machine-id /var/lib/dbus/machine-id && dbus-uuidgen --ensure=/etc/machine-id && dbus-uuidgen --ensure && reboot

  1. В нашем случае мы будем использовать установку All-In-One хост kuma-1.local, один узел контроллера (хост kuma-2.local) и два рабочих узла (хост kuma-3.local и kuma-4.local), пример файла инвентаря: https://box.kaspersky.com/f/bf06497b5b004dc3b1e5/  Другие примеры инвентарей: https://box.kaspersky.com/d/b397490dc08048acb671/  
  2. При установке с нуля kuma_core игнорируется, его заполнение нужно только для переноса ранее установленной коры без HA в кластер Kubernetes
    Т.е. kuma_core должен быть равен одному из kuma_worker, если у нас уже есть кума и мы тащим ее в кубер. 

  3. В распределенной установке kuma в секции инвентаря kuma_core нужно указать хост, который есть в роли worker (один из двух)
  4. ВАЖНО! Для успешной установки должны быть соблюдены следующие требования:
    • все машины кластера должны быть добавлены в /etc/hosts;
    • установлены пакеты в соответствии с: https://support.kaspersky.com/help/KUMA/2.1/ru-RU/244399.htm;
    • На Astra Linux  на машине балансировщика нужно установить в дополнение пакету nginx еще один пакет libnginx-mod-stream
    • в /var/lib/ должно быть не менее 32GB свободного места;
  5. Значение переменных в инвентаре ansible:
    • low_resources – использовать минимальные ресурсы для разворачивания? Отсутсвует по умолчанию. (Достаточно ресурсов: 2 CPU 4 RAM, НО при этом создается том хранения 4 Гб, без этого параметра том создается 512 Гб)
    • для части инвентаря kuma_k0s и переменных ansible_host важно указывать IP адреса
    • kuma_managed_lb: false - если используется собственный (балансировщик организации, не KUMA) балансировщик, при этом указать FQDN этого балансировщика (для корректного формирования сертификата коры)
    • no_firewall_actions: false - инсталлятор будет пытаться открыть необходимые порты на МЭ данного хоста
    • Остальные значения переменных: https://support.kaspersky.ru/help/KUMA/3.4/ru-RU/244406.htm 
  6. Создайте резервную копию ресурсов и сертификатов, см. советующий раздел в этой инструкции.
  7. Распакуйте архив (операции выполняются на ядре системы KUMA): tar -xvf kuma-ansible-installer-(ВЕРСИЯ).tar.gz
  8. Перейдите в распакованную папку: cd kuma-ansible-installer
  9. Добавить файл лицензии в папку kuma-ansible-installer/roles/kuma/files и переименовать на license.key: cp ПУТЬ_ДО_КЛЮЧА*.key roles/kuma/files/license.key
  10. Выполните команду копирования шаблона (пример заполненного файла в п. 0): cp k0s.inventory.yml.template k0s.inventory.yml
  11. ВАЖНО! Регистр написания хостнеймов в inventory должен совпадать с выводом значения на хостах команды hostname -f
  12. ВАЖНО! Хостнейм при команде hostname -f должен содержать хотя бы одну точку, пример: kuma.local
  13. Входим в ОС из-под суперпользователя (root), если это не было сделано ранее: sudo -i
  14. Запустите установку: ./install.sh k0s.inventory.yml
  15. Зайдите на веб интерфейс ядра KUMA по одному из адресов рабочих узлов или балансировщика, например, в нашем случае это - https://192.168.0.153:7220 Учетные данные для входа по умолчанию: admin / mustB3Ch@ng3d!
  16. Для начального администрирования кластера воспользуйтесь командами этого раздела.

В случае, если при установке произошел сбой (НЕ обновлении), перед последующей установкой рекомендуется выполнить uninstall.sh и перезагрузить все узлы кластера. Если uninstall выполнить нельзя (идет миграция существующей установки в кластер), то перед повторной попыткой установки нужно вручную выполнить команду sudo k0s reset (если долгий reset, то rm -rf /var/lib/k0s/containerd, затем k0s reset -d) на всех узлах кластера и перезагрузить их

Перестроение между воркерами в кластере Kubernetes происходит с таймаутом ~ 5 мин

Отказоустойчивость балансировщиков, см. тут

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

Видео установки в конфигурации AiO-1LB-1CP-2W тут

Установка KUMA на ОС с установленным антивирусом

В случае установки KUMA на ОС с установленным антивирусом необходимо в политике антивирусной защиты выставить исключение проверок средства защиты для папки:

/opt/kaspersky/kuma/*

Более гранулярный доступ описан в этой статье - https://support.kaspersky.ru/kuma/3.2/230384 

Подготовка Astra Linux 1.7.х (с картинками)

Пак автомной установки KUMA (офлайн пакеты для Astra) — ссылка на mail.ru тк объем большой

Начало установки. 

Выбор языка и режим «Графическая установка». 

На скриншотах ниже показан пошаговый процесс установки с комментариями.

image.png

image.png

image.png

Установщик Astra Linux позволяет ввести только короткое имя компьютера (short host name). Задать FQDN имя компьютера (long host name) возможно после установки ОС. Подробнее см. Примечание 1.

image.png

image.png

image.png

image.png

Разметка дисков выполняется на усмотрение администратора ОС. Учитывайте пожалуйста пункты из подготовки ОС.
Для целей демонстрационной установки выбран метод «Авто – использовать весь диск».

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Минимальная установка для сервера без графического интерфейса.

image.png

image.png

Выбор уровня защищенности согласно документации для используемого приложения. Для целей демонстрационной установки выбран уровень “Орел”.

image.png

image.png

image.png

image.png

image.png

image.png

image.png

Примечание 1

Сразу после установки ОС в минимальной конфигурации нет сети. И имя компьютера установлено в short host name.

Для конфигурации сетевых параметров ОС можно применить один из способов:

Пакет NetworkManager:

Пакет ifupdown с настройками конфигурационного файла /etc/network/interfaces

https://wiki.astralinux.ru/pages/viewpage.action?pageId=3277370 
Во избежание конфликтов со службой networking служба NetworkManager  НЕ РАБОТАЕТ с сетевыми интерфейсами, перечисленными в файле /etc/network/interfaces или в файлах в каталоге /etc/networking/interfaces.d/. По умолчанию в файле /etc/network/interfaces присутствует только интерфейс локальной петли (loopback).

Использование NetworkManager

Сразу после установки ОС вы можете установить соответствующий пакет командой:

sudo apt install network-manager

По умолчанию используется репозиторий установочного диска Astra Linux, который является активным в конфигурационном файле /etc/apt/sources.list. Публичные репозитории закомментированы.

image.png

Чтобы приступить к настройке сетевых параметров в псевдографике выполните команду: nmtui

image.png

Здесь вы можете изменить имя узла на FQDN, настроить сетевой интерфейс, проверить параметры ipv4 и ipv6.

Использование конфигурационного файла interfaces. (сложнее)

Если не требуется специальная настройка и параметры сети будут получены по DHCP. Открыть на редактирование:

sudo nano /etc/network/interfaces

Добавить в файл комментарий, начинающийся с # (по желанию) и параметры 

# The eth0 network interface
auto eth0
iface eth0 inet dhcp

Перезапустите службу сети: sudo /etc/init.d/networking restart
Проверьте параметры сетевого интерфейса: sudo ifconfig

Задайте имя компьютера в FQDN:

hostname -f
hostnamectl
hostnamectl set-hostname app-server-01.example.com

image.png

Пропишите IP адрес и FQDN в файле /etc/hosts

nano /etc/hosts

Текстовый файл hosts:

127.0.0.1       localhost
192.168.1.1     app-server-01.example.com
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

статья будет в скором времени дополнена ...