Интеграции

В данном разделе описаны инструкции по интеграции KICS и MLAD с различными системами

Интеграция KICS for Networks

Интеграция KICS for Networks

API KICS for Networks

Использование Kaspersky Industrial CyberSecurity for Networks API

В Kaspersky Industrial CyberSecurity for Networks реализован интерфейс прикладного программирования, который обеспечивает доступ к функциям программы для сторонних приложений.

В комплект поставки Kaspersky Industrial CyberSecurity for Networks входит пакет с описаниями спецификаций для представления данных в запросах к серверу REST API. Сервер REST API функционирует на компьютере Сервера Kaspersky Industrial CyberSecurity for Networks и обрабатывает запросы с использованием архитектурного стиля взаимодействия REST. Обращения к серверу REST API выполняются по протоколу HTTPS. Вы можете настроить параметры сервера REST API в разделе Параметры → Серверы подключений (в том числе заменить используемый по умолчанию самоподписанный сертификат на доверенный).

Для представления данных в запросах и ответах используется формат JSON.

Документация с описанием запросов на основе архитектурного стиля REST публикуется в виде онлайн-справки на странице Kaspersky Online Help.

  1. ОТКРЫТЬ ДОКУМЕНТАЦИЮ С ОПИСАНИЕМ ЗАПРОСОВ К СЕРВЕРУ REST API, версия 3
  2. ОТКРЫТЬ ДОКУМЕНТАЦИЮ С ОПИСАНИЕМ ЗАПРОСОВ К СЕРВЕРУ REST API, версия 4

Примеры использования

Рассмотрим пример использования API для локального экспорта данных об устройствах из KICS for Networks.

Для начала нужно создать коннектор, с типом Generic и именем, например, GetDeviceAll, указать пароль и адрес сервера, узел размещения коннектора в нашем случае будет такой же, как и адрес сервера (Рисунок 1). После создания коннектора у вас скачается файл свертки, который будет называться как коннектор_GetDeviceAll.zip.

image.png

Рисунок 1 – Создание коннектора

Далее необходимо создать директории для корректной работы кода. Впишите команды ниже последовательно:

cd

mkdir GetDeviceAll && cd GetDeviceAll

mkdir connector && cd connector && cp /opt/kaspersky/kics4net-connectors/libexec/default_connectors_registrar.py default_connectors_registrar.py

Далее в папку connector необходимо положить файл свертки коннектор_GetDeviceAll.zip, который мы получили при создании коннектора и распаковать его в эту директорию командой:

unzip -d коннектор_GetDeviceAll коннектор_GetDeviceAll.zip

Далее необходимо зарегистрировать коннектор командой:

sudo python3 default_connectors_registrar.py create

Далее необходимо выполнить действия показанные на Рисунке 2: ввести имя коннектора GetDeviceAll, ввести полный путь до файла свертки коннектор_GetDeviceAll.zip (/home/<username>/GetDeviceAll/connector/коннектор_GetDeviceAll.zip), ввести пароль, который вы указывали при создании коннектора в веб-интерфейсе и согласиться с запуском службы коннектора GetDeviceAll.

image.png

Рисунок 2 – Регистрация коннектора

После этого статус коннектора в KICS for Networks поменяется с “Ожидает регистрации” на “Работает”

image.png

Рисунок 3 – Статус работы коннектора в Веб-консоли

Теперь можно перейти к написанию кода, который будет взаимодействовать с KICS for Networks по API.

Код будет писаться на Python, но вы можете использовать любой удобный для вас язык 

Для начала напишем класс подключения к API сервера:

import logging
import json
import requests
from requests.exceptions import RequestException
from time import sleep


class KicsApiClient:
    def __init__(self, metadata_path, cert_path, key_path):
        self.metadata_path = metadata_path
        self.cert_path = cert_path
        self.key_path = key_path
        self.base_url = None
        self.token = None
        self._initialize()

    def _initialize(self):
        with open(self.metadata_path, 'r', encoding='utf-8') as f:
            metadata = json.load(f)
        self.base_url = metadata.get('serverUri', '').rstrip('/')
        if not self.base_url.endswith('/kics/api'):
            self.base_url += '/kics/api'
        logging.info(f"Базовый URL API: {self.base_url}")
        self._authenticate()

    def _authenticate(self):
        url = f"{self.base_url}/auth/token?grant_type=certificate"
        resp = requests.post(
            url,
            cert=(self.cert_path, self.key_path),
            verify=False
        )
        resp.raise_for_status()
        self.token = resp.json().get('access_token')
        if not self.token:
            raise ValueError("Аутентификация не удалась: токен не получен")
        logging.info("Аутентификация успешна")

    def _post_query(self, path, payload, offset=0, limit=1000, delay=1):
        all_items = []
        headers = {
            'Authorization': f'Bearer {self.token}',
            'Content-Type': 'application/json'
        }
        while True:
            body = payload.copy()
            body.update({'offset': offset, 'limit': limit})
            url = f"{self.base_url}{path}"
            try:
                resp = requests.post(url, headers=headers, json=body, verify=False)
                resp.raise_for_status()
            except RequestException as e:
                logging.error(f"Ошибка запроса к {url}: {e}")
                if hasattr(e, 'response') and e.response is not None:
                    try:
                        logging.error(f"Текст ответа: {e.response.text}")
                    except:
                        pass
                raise
            try:
                json_resp = resp.json()
            except ValueError:
                break
            data = json_resp.get('values') or json_resp.get('elements')
            if not data:
                break
            all_items.extend(data)
            logging.info(f"Получено {len(data)} записей из {path}, всего: {len(all_items)}")
            if len(data) < limit:
                break
            offset += limit
            sleep(delay)
        return all_items

Теперь добавим в этот класс функции которые будут вызываться в классе экспорта данных:

    def get_device_applications(self):
        return self._post_query('/v4/device-apps/query', {})

    def get_device_patches(self):
        return self._post_query('/v4/device-patches/query', {})

    def get_device_users(self):
        return self._post_query('/v4/device-users/query', {})

 Перейдем к написанию класса, который будет отвечать за экспорт данных из KICS for Networks по API и будет конвертировать полученные данные в csv файл:

import csv


class CsvExporter:
    @staticmethod
    def export_dicts(items, filename):
        if not items:
            logging.warning(f"Нет данных для файла {filename}")
            return
        fieldnames = set()
        for item in items:
            fieldnames.update(item.keys())
        fieldnames = sorted(fieldnames)
        headers_rus = [RUSSIAN_HEADERS.get(fn, fn) for fn in fieldnames]
        with open(filename, 'w', newline='', encoding='utf-8-sig') as f:
            writer = csv.writer(f, delimiter=';')
            writer.writerow(headers_rus)
            for item in items:
                row = [item.get(fn, '') for fn in fieldnames]
                writer.writerow(row)
        logging.info(f"Экспортировано {len(items)} записей в {filename}")

В этом классе используется глобальная переменная RUSSIAN_HEADERS, которая хранит в себе ключ - значение, для перевода ключей на русский язык: 

RUSSIAN_HEADERS = {
    'Id': 'Идентификатор',
    'id': 'Идентификатор',
    'DeviceId': 'Идентификатор устройства',
    'device': 'Устройство',
    'ApplicationName': 'Название приложения',
    'name': 'Имя',
    'fullName': 'Полное имя',
    'ApplicationVersion': 'Версия приложения',
    'PatchVersion': 'Версия патча',
    'UserName': 'Имя пользователя',
    'description': 'Описание',
    'Domain': 'Домен',
    'groups': 'Группы',
    'isDisabled': 'Отключен',
    'isLockedOut': 'Заблокирован',
    'lastSeen': 'Последний вход',
    'canChangePassword': 'Можно сменить пароль',
    'mustChangePassword': 'Требуется смена пароля',
    'passwordNeverExpires': 'Пароль не истекает',
    'sid': 'SID',
    'source': 'Источник',
    'installedOn': 'Установлено на',
    'version': 'Версия',
    'vendor': 'Производитель',
    'program': 'Программа',
    'size': 'Размер',
}

Почти все готово! Осталось написать main, который объединит в себе весь функционал нашего кода:

import os
import sys


def main():
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    META = os.path.join(BASE_DIR, 'connector', 'коннектор_GetDeviceAll', 'metadata.json')
    CERT = '/var/opt/kaspersky/kics4net-connectors/instances/GetDeviceAll/ssl/connector.crt'
    KEY = '/var/opt/kaspersky/kics4net-connectors/instances/GetDeviceAll/ssl/connector.key'
    for path in (META, CERT, KEY):
        if not os.path.exists(path):
            logging.error(f"Не найден файл: {path}")
            sys.exit(1)
    client = KicsApiClient(META, CERT, KEY)
    apps = client.get_device_applications()
    patches = client.get_device_patches()
    users = client.get_device_users()
    CsvExporter.export_dicts(apps, 'DeviceApplications.csv')
    CsvExporter.export_dicts(patches, 'DevicePatches.csv')
    CsvExporter.export_dicts(users, 'DeviceUsers.csv')

if __name__ == '__main__':
    main()

Отлично! Код готов, теперь необходимо перенести файл GetDeviceAll.py в папку GetDeviceAll любым известным вам способом. В конечном счете директория должна выглядеть вот так:

└─./home/<username>
       ├─ ./GetDeviceAll
       │  ├─ ./connector
       │  │  ├─ . /коннектор_GetDeviceAll.zip
       │  │  ├─ ./default_connectors_registrar.py
       │  │  └─ ./коннектор_GetDeviceAll
       │  │         ├─ ./certificates.pfx
       │  │         ├─ ./metadata.json
       │  │         └─ ./webserver.pem
       └  └─ ./GetDeviceAll.py

Далее в консоли перейдем в директорию GetDeviceAll командой:

cd /home/<username>

 И запустить файл GetDeviceAll.py командой:

sudo python3 GetDeviceAll.py

В итоге мы получили 3 файла DeviceApplications.csv, DevicePatches.csv, DeviceUsers.csv которые находятся в этой же директории GetDeviceAll.

image.png

Рисунок 4 – Вывод логов скрипта по экспорту данных

image.png

Рисунок 5 – Результат работы скрипта

P.S.

Полный код :)

import os
import sys
import json
import logging
import requests
import csv
from requests.exceptions import RequestException
import urllib3
from time import sleep

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

logging.basicConfig(
    format='%(asctime)s %(levelname)s %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
    level=logging.INFO
)

RUSSIAN_HEADERS = {
    'Id': 'Идентификатор',
    'id': 'Идентификатор',
    'DeviceId': 'Идентификатор устройства',
    'device': 'Устройство',
    'ApplicationName': 'Название приложения',
    'name': 'Имя',
    'fullName': 'Полное имя',
    'ApplicationVersion': 'Версия приложения',
    'PatchVersion': 'Версия патча',
    'UserName': 'Имя пользователя',
    'description': 'Описание',
    'Domain': 'Домен',
    'groups': 'Группы',
    'isDisabled': 'Отключен',
    'isLockedOut': 'Заблокирован',
    'lastSeen': 'Последний вход',
    'canChangePassword': 'Можно сменить пароль',
    'mustChangePassword': 'Требуется смена пароля',
    'passwordNeverExpires': 'Пароль не истекает',
    'sid': 'SID',
    'source': 'Источник',
    'installedOn': 'Установлено на',
    'version': 'Версия',
    'vendor': 'Производитель',
    'program': 'Программа',
    'size': 'Размер',
}

class KicsApiClient:
    def __init__(self, metadata_path, cert_path, key_path):
        self.metadata_path = metadata_path
        self.cert_path = cert_path
        self.key_path = key_path
        self.base_url = None
        self.token = None
        self._initialize()

    def _initialize(self):
        with open(self.metadata_path, 'r', encoding='utf-8') as f:
            metadata = json.load(f)
        self.base_url = metadata.get('serverUri', '').rstrip('/')
        if not self.base_url.endswith('/kics/api'):
            self.base_url += '/kics/api'
        logging.info(f"Базовый URL API: {self.base_url}")
        self._authenticate()

    def _authenticate(self):
        url = f"{self.base_url}/auth/token?grant_type=certificate"
        resp = requests.post(
            url,
            cert=(self.cert_path, self.key_path),
            verify=False
        )
        resp.raise_for_status()
        self.token = resp.json().get('access_token')
        if not self.token:
            raise ValueError("Аутентификация не удалась: токен не получен")
        logging.info("Аутентификация успешна")

    def _post_query(self, path, payload, offset=0, limit=1000, delay=1):
        all_items = []
        headers = {
            'Authorization': f'Bearer {self.token}',
            'Content-Type': 'application/json'
        }
        while True:
            body = payload.copy()
            body.update({'offset': offset, 'limit': limit})
            url = f"{self.base_url}{path}"
            try:
                resp = requests.post(url, headers=headers, json=body, verify=False)
                resp.raise_for_status()
            except RequestException as e:
                logging.error(f"Ошибка запроса к {url}: {e}")
                if hasattr(e, 'response') and e.response is not None:
                    try:
                        logging.error(f"Текст ответа: {e.response.text}")
                    except:
                        pass
                raise
            try:
                json_resp = resp.json()
            except ValueError:
                break
            data = json_resp.get('values') or json_resp.get('elements')
            if not data:
                break
            all_items.extend(data)
            logging.info(f"Получено {len(data)} записей из {path}, всего: {len(all_items)}")
            if len(data) < limit:
                break
            offset += limit
            sleep(delay)
        return all_items

    def get_device_applications(self):
        return self._post_query('/v4/device-apps/query', {})

    def get_device_patches(self):
        return self._post_query('/v4/device-patches/query', {})

    def get_device_users(self):
        return self._post_query('/v4/device-users/query', {})

class CsvExporter:
    @staticmethod
    def export_dicts(items, filename):
        if not items:
            logging.warning(f"Нет данных для файла {filename}")
            return
        fieldnames = set()
        for item in items:
            fieldnames.update(item.keys())
        fieldnames = sorted(fieldnames)
        headers_rus = [RUSSIAN_HEADERS.get(fn, fn) for fn in fieldnames]
        with open(filename, 'w', newline='', encoding='utf-8-sig') as f:
            writer = csv.writer(f, delimiter=';')
            writer.writerow(headers_rus)
            for item in items:
                row = [item.get(fn, '') for fn in fieldnames]
                writer.writerow(row)
        logging.info(f"Экспортировано {len(items)} записей в {filename}")


def main():
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    META = os.path.join(BASE_DIR, 'connector', 'коннектор_GetDeviceAll', 'metadata.json')
    CERT = '/var/opt/kaspersky/kics4net-connectors/instances/GetDeviceAll/ssl/connector.crt'
    KEY = '/var/opt/kaspersky/kics4net-connectors/instances/GetDeviceAll/ssl/connector.key'
    for path in (META, CERT, KEY):
        if not os.path.exists(path):
            logging.error(f"Не найден файл: {path}")
            sys.exit(1)
    client = KicsApiClient(META, CERT, KEY)
    apps = client.get_device_applications()
    patches = client.get_device_patches()
    users = client.get_device_users()
    CsvExporter.export_dicts(apps, 'DeviceApplications.csv')
    CsvExporter.export_dicts(patches, 'DevicePatches.csv')
    CsvExporter.export_dicts(users, 'DeviceUsers.csv')

if __name__ == '__main__':
    main()
Интеграция KICS for Networks

Настройка передачи событий из KICS for Networks (версий 4.3 и 4.5) в KUMA

Настройка интеграции выполняется в два этапа: сначала создается и настраивается коллектор в KUMA, затем создается коннектор в KICS for Networks.

Настройка KUMA

    1. Перейдите в раздел «Ресурсы» и откройте вкладку «Коллекторы».

      Название картинки


    1. Нажмите кнопку «+ Создать».

      Название картинки


    1. В открывшемся окне укажите название коллектора. Рекомендуется использовать наименование продукта, тип подключения и порт (например, KICS_for_Networks_TCP\5160), чтобы в дальнейшем легко идентифицировать коллектор.

      Название картинки


    1. На вкладке «Транспорт» укажите тип соединения (протокол) и порт, который будет использоваться для приема событий от источника.

      Название картинки


    1. На вкладке «Парсинг событий» - «Настройки парсинга» выберите соответствующий нормализатор для обработки входящих событий.

      Название картинки


    1. На вкладке «Маршрутизация» добавьте ранее созданные коррелятор и хранилище. Подробнее о развертывании этих компонентов см. в Справке по KUMA.

      Название картинки


    1. На вкладке «Проверка параметров» нажмите кнопку «Сохранить и создать сервис».

      Название картинки


    1. После создания коллектора скопируйте сгенерированную команду и выполните её в терминале сервера KUMA с правами администратора для развертывания сервиса.

      Название картинки


Настройка KICS for Networks

    1. Перейдите в раздел «Параметры» - «Коннекторы» и нажмите кнопку «+ Добавить коннектор».
    2. В карточке нового коннектора заполните поля:
      • Тип коннектора: SIEM.
      • Имя коннектора: Произвольное наименование.
      • Адрес сервера: IP-адрес узла, на котором развернут сервер KICS for Networks.
      • Узел размещения коннектора: Server.
      • Пользователь программы: Учетная запись администратора KICS for Networks.
      • Адрес SIEM-сервера: IP-адрес узла, на котором развернут сервер KUMA.
      • Номер порта: Порт, указанный при настройке коллектора KUMA (см. п. 4 раздела «Настройка KUMA»).
      • Транспортный протокол: Протокол, указанный при настройке коллектора KUMA (см. п. 4 раздела «Настройка KUMA»).

      Название картинки


    1. Нажмите кнопку «Сохранить».
    2. Убедитесь, что в свойствах созданного коннектора параметры имеют следующие значения:
      • Включен: Да.
      • Статус: Работает.

      Название картинкиЕсли значения отличаются, проверьте выполненные настройки и перезапустите коннектор (выполните последовательность «Выключить» - «Включить»).
    3. Перейдите в раздел «Параметры» - «Типы событий». Выберите типы событий, которые необходимо передавать в KUMA, и активируйте для них отправку через созданный коннектор.

      Название картинки

Проверка передачи событий

    1. В интерфейсе KUMA перейдите в раздел «События» и выполните опрос источников.

      Название картинки
    2. Убедитесь в наличии событие об успешной аутентификации коннектора, которое должно появиться в момент его создания в KICS for Networks.

      Название картинки


    1. Воспроизведите событие безопасности, например, запустите тестовый вирус на узле, который интегрирован с KICS for Networks.

      Название картинки


    1. Убедитесь, что сработал модуль постоянной защиты KICS for Nodes (детектирование события на стороне источника).

      Название картинки


    1. В интерфейсе KUMA снова перейдите в раздел «События» и выполните опрос.

      Название картинки


    1. Убедитесь, что воспроизведенное событие безопасности успешно доставлено и отображается в KUMA.

      Название картинки
Интеграция KICS for Networks

Интеграция с Zabbix

Интеграция KICS for Networks 4.3 с Zabbix

В данной статье описан порядок обеспечения мониторинга работоспособности сервисов KICS for Networks 4.3 с помощью Zabbix.

1.                   Настройка сервера Zabbix

         1.1        Подготовка системы

Проверьте наличие локали en_US.UTF-8:

locale -a | grep en_US

Если локаль отсутствует, добавьте её:

sudo sed -i "s/^#\s*\(en_US.UTF-8 UTF-8\)/\1/" /etc/locale.gen
sudo locale-gen en_US.UTF-8
sudo update-locale en_US.UTF-8

1.2               Установка пакетов Zabbix Server

sudo apt update
sudo apt install -y zabbix-server-pgsql zabbix-frontend-php php-pgsql postgresql apache2 libapache2-mod-php

1.3               Настройка часового пояса в PHP

Отредактировать файл /etc/php/*/apache2/php.ini :

sudo nano /etc/php/*/apache2/php.ini

Ctrl+o, Ctrl+x для сохранения и выхода

Найти и раскомментировать строку [Date]:

date.timezone = Europe/Moscow

1.4               Настройка PostgreSQL

Создание базы данных и пользователя

sudo -u postgres psql
CREATE DATABASE zabbix;
CREATE USER zabbix WITH PASSWORD 'Qwerty!@#123';
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
\q

Импорт схемы базы данных

sudo -u postgres psql -d zabbix -c "GRANT ALL ON SCHEMA public TO zabbix;"
sudo -u postgres zcat /usr/share/zabbix-server-pgsql/{schema,images,data}.sql.gz | PGPASSWORD='Qwerty!@#123' psql -U zabbix -d zabbix -h 127.0.0.1

1.5               Настройка мандатного доступа (МРД/МКЦ)

Если на сервере Zabbix включены режимы "Воронеж" или "Смоленск", выполнить дополнительные настройки:

Назначение меток безопасности:

sudo pdpl-user -l 0:0 postgres
sudo pdpl-user -l 0:0 zabbix
Права на чтение базы меток

Права на чтение базы меток:

sudo setfacl -d -m u:postgres:r /etc/parsec/{macdb,capdb}
sudo setfacl -R -m u:postgres:r /etc/parsec/{macdb,capdb}
sudo setfacl -m u:postgres:rx /etc/parsec/{macdb,capdb}

1.6               Настройка Zabbix Server

Отредактировать конфигурационный файл:

sudo nano /etc/zabbix/zabbix_server.conf

Указать параметры подключения к БД (в данном примере будем считать, что БД установлена на самом сервере Zabbix):

DBHost=127.0.0.1
DBName=zabbix  (может быть уже указано в файле)
DBUser=zabbix (может быть уже указано в файле)
DBPassword=Qwerty!@#123 (для примера взят пароль Qwerty!@#123)

Ctrl+o, Ctrl+x для сохранения и выхода

Запуск сервера

sudo systemctl restart zabbix-server
sudo systemctl enable zabbix-server
sudo systemctl status zabbix-server

1.7               Настройка веб-интерфейса

Копирование конфигурационного файла 

sudo cp /usr/share/zabbix/conf/zabbix.conf.php.example /etc/zabbix/zabbix.conf.php
sudo chown www-data:www-data /etc/zabbix/zabbix.conf.php
sudo chmod 644 /etc/zabbix/zabbix.conf.php

Настройка пароля в конфигурации

Отредактировать конфигурационный файл:

sudo nano /etc/zabbix/zabbix.conf.php

Найти строку с типом СУБД и указать:

$DB['TYPE'] = 'POSTGRESQL';

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

$DB['PASSWORD'] = 'Qwerty!@#123';

Ctrl+o, Ctrl+x для сохранения и выхода

Включение конфигурации Zabbix в Apache

sudo a2enconf zabbix-frontend-php
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl reload apache2

1.8               Настройка AstraMode

Для корректной работы веб-интерфейса добавьте в конфигурацию Apache:

sudo nano /etc/apache2/apache2.conf

Добавьте строку (только для тестовой среды):

AstraMode off

Ctrl+o, Ctrl+x для сохранения и выхода

Перезагрузить Apache:

sudo systemctl reload apache2

1.9               Проверка веб-интерфейса

Открыть в браузере: http://<IP_сервера_Zabbix>/zabbix

Учётные данные для входа (по умолчанию):

·  Username: Admin

·  Password: zabbix

Должны отобразиться дашборды сервиса Zabbix

2.                  Настройка сервера KICS for Networtks

2.1               Установка Zabbix Agent

sudo apt update
sudo apt install -y zabbix-agent

2.2              Настройка конфигурации агента

Отредактировать файл /etc/zabbix/zabbix_agentd.conf:

sudo nano /etc/zabbix/zabbix_agentd.conf

Указать параметры:

Server=<IP_сервера_Zabbix>
ServerActive=<IP_ сервера_Zabbix >
Hostname=kics4networks

Ctrl+o, Ctrl+x для сохранения и выхода

2.3             Настройка прав для сбора данных аудита

sudo usermod -aG adm zabbix

2.4              Создание пользовательского параметра для мониторинга сервиса kics4net-webserver

Проверьте каталог, используемый директивой Include в файле /etc/zabbix/zabbix_agentd.conf:

Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf

Создание конфигурационного файла

sudo mkdir -p /etc/zabbix/zabbix_agentd.conf.d/
sudo nano /etc/zabbix/zabbix_agentd.conf.d/kics_services.conf

Вставьте содержимое:

UserParameter=kics.status[*],test "$(systemctl is-active "$1" 2>/dev/null)" = "active" && echo 1 || echo 0

Ctrl+o, Ctrl+x для сохранения и выхода

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

sudo chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/kics_services.conf
sudo chmod 644 /etc/zabbix/zabbix_agentd.d/kics_services.conf

2.5             Проверка директивы Include в основном конфиге

Убедиться, что в файле /etc/zabbix/zabbix_agentd.conf присутствует строка:

Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
sudo nano /etc/zabbix/zabbix_agentd.conf

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

sudo zabbix_agentd -T

Ожидаемый результат:

Validation successful

2.6             Запуск и проверка агента

sudo systemctl restart zabbix-agent
sudo systemctl enable zabbix-agent
sudo systemctl status zabbix-agent

2.7              Проверка пользовательского параметра

На сервере KICS for Networks выполнить проверку:

sudo zabbix_agentd -t 'kics.status[kics4net-webserver]'

Ожидаемый результат: (если сервис запущен)

kics.status[kics4net-webserver] [u|1]

или

kics.status[kics4net-webserver] [t|1]

С сервера Zabbix выполнить проверку:

zabbix_get -s <IP_сервера_KICS for Networks> -p 10050 -k "kics.status[kics4net-webserver]"

Ожидаемый результат: (если сервис запущен): 1

3.                  Настройка мониторинга в веб-интерфейсе Zabbix

3.1               Импорт шаблона Astra Linux (опционально)

Войти в веб-интерфейс Zabbix (Admin / zabbix)

Перейти: Data collection (или Configuration)  Templates

Нажать Import

Выбрать файл: /usr/share/zabbix/conf/zabbix_astra_template.xml

Нажать Import два раза

3.2             Создание узла сети (Host)

Перейти: Data collection (или Configuration)  Hosts

Нажать Create host

Заполнить форму:

Host name

kics4networks (строго совпадает с Hostname в конфиге агента)

Groups

Linux servers

Interfaces

Agent

Agent interface

IP-адрес сервера KICS for Networks, порт 10050

Нажать Add

Спустя примерно 1 минуту в графе Availability на строке kics4networks значок ZBX должен окраситься в зелёный цвет.

3.3             Создание элемента данных (Item) для мониторинга сервиса kics4net-webserver

Перейти: Data collection (или Configuration)  Hosts

На строке узла kics4networks нажать на Items

Нажать Create item

Заполнить форму:

Name

KICS: kics4net-webserver service status

Type

Zabbix agent

Key

kics.status[kics4net-webserver]

Type of information

Numeric (unsigned)

Update interval

30s

History storage period

90d

Нажать Add

Аналогично можно добавить Item для мониторинга других сервисов KICS for Networks, заменив в параметре “Key” значение kics4net-webserver на следующие

3.4             Создание триггера для оповещения

На вкладке Items найти созданный элемент

Перейти на вкладку Triggers  Create trigger

Заполнить форму:

Name

KICS: kics4net-webserver is not running

Severity

High

Expression

last(/kics4networks/kics.status[kics4net-webserver])=0

Нажать Add

3.5             Создание агрегирующего триггера для оповещения об остановке хотя бы одной из служб KICS for Networks

3.5.1       Добавить UserParameter для обнаружения сервисов

Создать файл:

sudo nano /etc/zabbix/zabbix_agentd.conf.d/kics_discovery.conf

Содержимое:

 UserParameter=kics.discovery,echo '{"data":[{"{#SERVICE}":"kics4net"},{"{#SERVICE}":"kics4net-apm"},{"{#SERVICE}":"kics4net-asset-config-repo"},{"{#SERVICE}":"kics4net-asset-inventory"},{"{#SERVICE}":"kics4net-blob-storage"},{"{#SERVICE}":"kics4net-config-control-orchestrator"},{"{#SERVICE}":"kics4net-connectors-launcher"},{"{#SERVICE}":"kics4net-email-gateway"},{"{#SERVICE}":"kics4net-epp-proxy"},{"{#SERVICE}":"kics4net-fts"},{"{#SERVICE}":"kics4net-nats-server"},{"{#SERVICE}":"kics4net-oval-facade"},{"{#SERVICE}":"kics4net-postgresql"},{"{#SERVICE}":"kics4net-report-builder"},{"{#SERVICE}":"kics4net-report-data-source"},{"{#SERVICE}":"kics4net-report-renderer"},{"{#SERVICE}":"kics4net-report-templates-catalog"},{"{#SERVICE}":"kics4net-report-templates-catalog-view"},{"{#SERVICE}":"kics4net-responses-manager"},{"{#SERVICE}":"kics4net-risk-oval-detector"},{"{#SERVICE}":"kics4net-scan-oval-manager"},{"{#SERVICE}":"kics4net-scap-manager"},{"{#SERVICE}":"kics4net-scap-manager-view"},{"{#SERVICE}":"kics4net-scheduler"},{"{#SERVICE}":"kics4net-secrets"},{"{#SERVICE}":"kics4net-task-manager"},{"{#SERVICE}":"kics4net-task-manager-view"},{"{#SERVICE}":"kics4net-vault"},{"{#SERVICE}":"kics4net-webserver"}]}'

Перезапустить агент: 

sudo systemctl restart zabbix-agent

Проверить UserParameter для обнаружения сервисов:

sudo zabbix_agentd -t kics.discovery

Должен вернуться JSON.

 3.5.2      Создать Discovery Rule

На сервере Zabbix перейти на вкладки:

Configuration

Hosts KICS for Networks Discovery Create discovery rule

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

3.5.3      Создать Item Prototype

Внутри Discovery Rule:

Item prototypes Create item prototype

Указать параметры:

3.5.4      Создать Trigger Prototype

Внутри того же Discovery Rule открыть:

Trigger prototypes Create trigger prototype

Указать параметры:

После выполнения Discovery Zabbix автоматически создаст:

1)                   Элементы данных:

2)                 Триггеры:

 Если остановить один из сервисов KICS for Networks:

sudo systemctl stop kics4net-webserver

то в Problems появится новое сообщение: Service kics4net-webserver is stopped

Интеграция KICS for Nodes

Интеграция KICS for Nodes

Интеграция KICS for Nodes и KICS for Networks + EDR основные возможности и руководство по настройке

Kaspersky Industrial CyberSecurity for Networks (KICS for Networks) предоставляет нативную интеграцию с KICS for Nodes, благодаря чему предоставляется возможность получать телеметрию с конечных узлов за счет интеграции с Kaspersky Endpoint Agent и выполнять функции реагирования на конечном узле (изоляция устройство от сети, запрет запуска, поместить на карантин). KEA – это отдельное лицензируемое ПО, которое устанавливается на каждый конечный узел.


Возможности интеграции


Настройка интеграции KICS for Networks и KICS for Nodes

Интеграция осуществляется через интерфейс KICS for Networks. Для этого необходимо следующие шаги:

Шаг 1. Переходим во вкладку «Параметры» и выбираем раздел «Серверы подключений»;

Шаг 2. Нажимаем кнопку «Добавить сервер интеграции с Kaspersky Endpoint Agent» (см. пример на Рисунке 1).

Примечание: В роли сервера, который будет получать телеметрию с KEA-агента, может выступать как сервер, так и любой сенсор KICS for Networks. Важно, чтобы между конечным узлом, с которого будет передаваться информация и сервером/сенсором KICS for Networks был настроен маршрут и разрешены соответствующие порты и протоколы (TLS, порт 8081).

image.png

Рисунок 1 - Добавление сервера интеграции

Шаг 3. Далее нам предоставляется возможность выбрать узел, на который будет приходить телеметрия с KEA-агента. Например, мы можем выбрать узел «Server» или сенсор «sensor_1» (см. на примере Рисунка 2).

image.png

Рисунок 2 - Создание сервера интеграции

Шаг 4. Нажимаем кнопку «Создать новый сертификат» (см. Рисунок 3).

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

image.png

Рисунок 3 - Создание сервера интеграции

Шаг 5. После нажатия кнопки «Создать новый сертификат» отобразятся сведения о сертификате. Необходимо нажать кнопку «Сохранить».

Шаг 6. В результате в источниках появится выбранный узел (сервер или сенсор) KICS for Networks и будет указан IP-адрес его интерфейса MGMT, куда в последствии будут направляться данные от конечных узлов. Далее необходимо настроить KEA-агент на конечных узлах, для этого необходимо получить свертку сертификата от узла, на котором развернут сервер интеграции KICS for Networks.

Выбираем сервер интеграции. Нажимаем кнопку «Включить» и далее кнопку «Получить файл свертки для клиентов» (см. Рисунок 4).

image.png

Рисунок 4 - Создание файла свертки для клиентов

Шаг 7. Сервер интеграции изменит свой статус на «Включен» и осуществит загрузку zip-архива с вложенным файлом server.cer. После чего необходимо доставить загруженный zip-архив на конечные узлы с установленным KEA-агентом. Есть несколько способов настройки интеграции на стороне узла, и мы рассмотрим каждый из них подробнее ниже.

Примечание: Если ранее был активирован переключатель «Проверять сертификаты клиентов», то для обеспечения подлинности клиентского сертификата, нужно указать пароль при формировании файла свертки. Нажать кнопку «Создать файл свертки».

Шаг 8. Переходим к настройке интеграции на стороне конечных узлов с KICS for Nodes и KEA. Есть два способа: через web-консоль KSC и локально из командной строки.


1 способ: настройка интеграции через web-консоль KSC

Важным условием является наличие установленных KEA-агентов на каждом конечном узле, а также на сервере администрирования KSC установлен web-плагин KEA.

В веб-консоли KSC переходим в раздел «Устройства – Политики и профили политик». Выбрать политику для KEA (см. Рисунок 5).

image.png

Рисунок 5 - Начало настройки "Политики и профилей политики"

Далее переходим на вкладку «Параметры программы – Серверы сбора телеметрии». Выбираем пункт «Интеграция с KICS for Networks». После чего необходимо активировать переключатель «Принудительно», если он не активирован. Отметить чекбокс «Включить интеграцию с KICS for Networks». В графе «Адрес сервера» указать адрес сервера интеграции. Остальные настройки оставить по умолчанию. Нажать кнопку «Добавить новый TLS-сертификат» (см. Рисунок 6) – для этого нажимаем кнопку «Обзор». Выбрать файл TLS-сертификата server.cer (предварительно извлечь его из архива). После чего отобразятся данные TLS-сертификата и нажимаем кнопку «ОК», после кнопку «Сохранить».

image.png

Рисунок 6 - Настройка интеграции с KICS for Networks


2 способ: настройка локально из командной строки на конечном узле (для Windows систем)

Если отсутствует сервер администрирования KSC, то настройку можно осуществить локально. Для этого переносим сертификат server.cer из файла свертки сервера интеграции KICS for Networks. Открываем командную строку и вводим (см. пример наи Рисунке 7):

cd C:\Program Files (x86)\Kaspersky Lab\Endpoint Agent\
agent.exe --message-broker=enable --type=kics --tls=yes --servers=ip-адрес сервера, настроенный как сервер интеграции Networks:8081 --pinned-certificate="путь до файла server.cer"

image.png

Рисунок 7 - Пример ввода команды

По умолчанию время синхронизации (sync_priod) составляет 300 секунд. Чтобы сократить его, например, до 60 секунд нужно ввести команду:

agent --message-broker=enable --type=kics –-sync-period=60

где --message-broker=<enable|disable|show> - обязательный параметр. Позволяет включить, выключить и отобразить статус отправки телеметрии в направлении сервера. 

Для того, чтобы проверить корректноcть настроек нужно ввести команду:

agent –-message-broker=show

2 способ: настройка локально из командной строки на конечном узле (для Linux систем)

Если отсутствует сервер администрирования KSC, то настройку можно осуществить локально. Для этого переносим сертификат server.cer из файла свертки сервера интеграции KICS for Networks. Открываем командную строку и вводим (см. пример наи Рисунке 8):

kics-control --add-kics4networks-server-certificate путь до файла server.cer

image.png

Рисунок 8 - Пример ввода команды

Указать адрес сервера KICS for Networks и перезапустить задачу интеграции:

kics-control --set-settings 23 Endpoints.item_0001.Address=1 ip-адрес сервера, настроенный как сервер интеграции Networks

Далее запускаем команды, чтобы перезапустить сервер:

kics-control --stop-task 23
kics-control --start-task 23

Шаг 9. Для того, чтобы проверить интеграцию KEA с KICS for Networks, переходим в веб-интерфейс KICS for Networks и посмотреть свойства актива, на котором установлен KEA, проверить наличие информации о KEA и KICS for Nodes на узле (см. пример на Рисунке 9).

image.png

Рисунок 9 - Пример интеграции

Интеграция MLAD

Интеграция MLAD

Инструкция по настройке приема данных от OPC UA сервера в Kaspersky MLAD

Подготовка на стороне источника данных (SCADA/ПЛК):

1. Убедитесь, что на контроллере или SCADA-сервере запущен и корректно работает сервер OPC UA.

image.png

2. Рекомендуется: Проверить доступность и читаемость тегов с помощью стороннего OPC UA-клиента (например, UAExpert). Это позволяет локализовать проблемы на стороне источника данных.

image.png

3. Определите и запишите полные Node Id всех переменных (тегов), которые планируется передавать в Kaspersky MLAD.

image.png

Настройка в Kaspersky MLAD:

1. Создание ассетов (Assets)
В проекте MLAD в разделе Assets создайте теги, которые будут соответствовать переменным OPC UA сервера. Каждому ассету необходимо присвоить уникальный Идентификатор (ID). Именно этот ID будет использоваться для привязки к входящим данным.

image.png

2. Создание файла конфигурации сопоставления
Создайте текстовый файл в формате 
TXT, который описывает соответствие между узлами OPC UA сервера и ID ассетов в MLAD. Это основной файл конфигурации для коннектора.

Пример содержимого файла 

{

  "opc_variables": [

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.TI001",

      "tag_type": "float",

      "id": 20

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.TI002",

      "tag_type": "float",

      "id": 21

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.TI003",

      "tag_type": "float",

      "id": 22

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.TI004",

      "tag_type": "float",

      "id": 23

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.FI001",

      "tag_type": "float",

      "id": 24

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.PI001",

      "tag_type": "float",

      "id": 25

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.PI002",

      "tag_type": "float",

      "id": 26

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.PI003",

      "tag_type": "float",

      "id": 27

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.LI001",

      "tag_type": "float",

      "id": 28

    },

    {

      "nodeid": "ns=2;s=Application.PLC_PRG.FI002",

      "tag_type": "float",

      "id": 29

    }

  ]

}

3. Настройка OPC UA Connector

В веб-интерфейсе администратора MLAD перейдите в раздел Системные параметры -> OPC UA Connector.

image.png

    4. Запуск коннектора
    Сохраните конфигурацию и запустите OPC UA Connector. В интерфейсе коннектора должен отобразиться статус «Подключено» (Connected), а в логах — отсутствие ошибок подключения и подписки.

    image.png


    5. Верификация и визуализация данных

    image.png

    Интеграция MLAD

    Интеграция Kaspersky MLAD с KICS for Networks

    1.            Описание задачи

    Данный документ описывает процесс интеграции MLAD с KICS for Networks для двухстороннего обмена данными.

    Цель данной интеграции – обеспечить Kaspersky MLAD необходимыми потоковыми данными без прямого подключения к процессу, а также для обогащения (при необходимости) событийной базы KICS for Networks данными об инцидентах, зарегистрированных в Kaspersky MLAD.

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

    image.png

    Клиент OPC UA подключается и получает данные от ПЛК. Span-трафик данной коммуникации передается в KICS for Networks. Kaspersky MLAD подключается KICS for Networks для двухстороннего обмена данными:

    1.    Передача параметров процесса в виде тегов из KICS for Networks в MLAD.

    2.    Передача информацию об инцидентах из MLAD в KICS for Networks.

    Протокол OPC UA выбран для примера. Приведенные ниже инструкции актуальны для любого промышленного протокола, парсинг которого поддерживается в KICS for Networks.

    Процесс настройки клиента OPC UA и ПЛК, а также настройка KICS, не являются частью интеграции и не описаны в данном документе. Для упрощения будем считать, что коммуникация уже установлена. KICS for Networks развернут и настроен и передача SPAN-трафика в KICS обеспечена.

    2.            Реализация задачи

    В KICS for Networks перечень тегов, полученных в результате парсинга промышленных протоколов, можно найти в разделе Контроль процесса.

    Обратите внимание, что для появления новых тегов в списке, необходимо, чтобы KICS производил парсинг протоколов в момент установления соединения между клиентом и сервером (в нашем случае между клиентом и сервером OPC UA). Если включить парсер протоколов уже после того, как коммуникация между клиентом и сервером установлена, новые теги не будут добавлены в список.

    image.png

    На скриншоте выше видны теги OPC UA, полученные от ПЛК Regul, а также теги из других протоколов, которые распарсил KICS for Network.

    Следующим шагом необходимо перейти в раздел Коннекторы и нажать кнопку Добавить коннектор.

    image.png

    Выберите тип коннектора Generic, задайте название и пароль, а также укажите адрес сервера KICS for Network и узла, на котором будет размещаться коннектор (в нашем примере это один и тот же сервер). Укажите пользователя.

    После создания коннектора автоматически начнется скачивание zip-архива с файлом сверки коннектора. Если вы хотите создать новый файл, зайдите в настройки созданного коннектора и нажмите на кнопку Получить новый файл свертки.

    image.png

    Заполните все поля аналогично тому, как вы делали при создании коннектора.

    image.png

    После скачивания нового zip-архива сохраните его, он понадобится нам для настройки коннектора KICS в MLAD.

    Откройте веб-интерфейс, перейдите в меню администрирования, далее в раздел Системные параметры, настройки KICS connector. Здесь вам потребуется загрузить zip-файл, который вы получили из KICS ранее, и введите пароль, который вы указали при создании файла свертки.

    image.png

    Если вы хотите передавать в KICS событий об инцидентах о выявленных аномалиях, включите переключатель Отправлять сообщения в Kaspersky Industrial CyberSecurity for Networks.

    Обратите внимание, что в разделе Активы нужных нам тегов сейчас нет, и создавать их не нужно, в отличие от обычного процесса загрузки данных в MLAD.

    Вернитесь в основное меню, раздел Сервисы, далее Коннекторы и запустите коннектор KICS.

    image.png

    После установления подключения (вы можете проверить это в KICS for Networks в разделе Коннекторы), вернитесь в раздел Активы, обновите страницу и убедитесь, что новые теги появились в списке.

    image.png

    Обратите внимание, что в списке появились все теги, которые присутствовали в KICS for Networks, включая теги из других протоколов. Лишние теги можно удалить.

    Обратите внимание, что теги, автоматически созданные в активах, получают свои id в соответствии с идентификаторами, которые эти теги имели в KICS for Network.

    image.png

    Если в активах MLAD уже были теги с такими же id, данные теги будут перезаписаны! Имейте это в виду при планировании активов.

    В разделе Мониторинг можно убедиться, что данные по новым тегам поступают в MLAD.

    image.png

    Если вы активировали передачу сообщений из MLAD в KICS for Networks, то после возникновения инцидентов в результате работы моделей, вы сможете увидеть соответствующие событий в KICS for Networks в разделе События.

    image.png

    image.png

    Интеграция MLAD

    Интеграция Kaspersky MLAD с KUMA по Syslog

    1.            Описание задачи

    Данный документ описывает процесс настройки Kaspersky MLAD для интеграции с KUMA по протоколу Syslog.

    Цель данной интеграции – обеспечить передачу событий безопасности из Kaspersky MLAD в SIEM систему для обеспечения мер информационной безопасности в инфраструктуре клиента.

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

    image.png

    2.            Реализация задачи

    Первым шагом необходимо настроить CEF-коннектор в составе Kaspersky MLAD на передачу событий безопасности в SIEM-систему.

    Для этого перейдите в Меню администратора, затем в Системные параметры, затем в настройки CEF-коннектора.

    Здесь вам необходимо активировать переключатель Отправлять журналы событий информационной безопасности на Syslog-сервер, указать тип транспорта (TCP или UDP), указать адрес и порт Syslog-сервера. Если вы планируете использовать защищенное TLS-соединение, то вам необходимо также загрузить сертификат/закрытый ключ клиента и CA-сертификат для верификации серверной стороны.

    image.png

    После этого перейдите в основное меню, далее в Службы, затем в раздел Коннекторы. Запустите службу CEF connector, или перезапустите ее, если вы вносили изменения в настройки.

    image.png

    На этом настройка со стороны MLAD закончена.

    В KUMA перейдите в раздел Ресурсы, затем Коллекторы.

    image.png

    В состав поставки KUMA входит предварительно настроенный коллектор [OOTB] Syslog CEF. Создайте копию на основе данного коллектора и перейдите в его настройки. Основные настройки подключения задаются на вкладке Транспорт.

    image.png

    Укажите тип протокола, интерфейс и порт, на котором KUMA будет принимать подключение по Syslog. Убедитесь, что настройки подключения в MLAD совпадают с настройками в данной вкладке.

    Настройки остальных вкладок не влияют на прием сообщений Syslog. Во вкладке Парсинг событий вы можете настроить, как будут парситься события Syslog, полученные от MLAD. Для этого вам предварительно необходимо создать соответствующий парсер. Процесс создания и настройки парсера описан в документации на KUMA, и в данном документе не затрагивается,

    После завершения настройки вам сначала будет необходимо будет создать соответствующий сервис.

    image.png

    Для этого необходимо выполнить предложенную команду (через sudo) на машине с KUMA.

    image.png

    Если сервис уже существует, то после завершения настройки перейдите во вкладку Проверка параметров и нажмите кнопку Сохранить и перезапустить сервисы.

    image.png

    Перейдите в раздел Активные сервисы и убедитесь, что ваш сервис коллектора Syslog запущен.

    image.png

    Вернитесь в MLAD и произведите какое-нибудь системное действие, например, выйдите и снова войдите в систему.

    Далее выберите свой активный сервис в KUMA и нажмите кнопку Перейти к событиям.

    image.png

    Cделайте дефолтный SQL-запрос. Вы увидите в списке событие безопасности от MLAD.

    image.png

    Интеграция KICS for Networks и SD-WAN: варианты совместного применения

    Kaspersky Industrial CyberSecurity for Networks (KICS for Networks) поддерживает интеграцию с Kaspersky SD-WAN, что позволяет расширить возможности мониторинга и защиты промышленных сетей. В таком режиме KICS for Networks получает зеркалированный трафик с удаленных площадок через устройства Customer Premise Equipment (CPE) SD-WAN.


    Архитектура «Транспорт SPAN»

    Данная схема предполагает передачу трафика промышленных сетей с географически распределенных объектов в KICS for Networks через защищенные каналы SD-WAN.

    Принцип работы:

    1. Устройства CPE на удаленных площадках получают зеркалированный трафик через сетевые коммутаторы.
    2. Трафик шифруется и передается на принимающие CPE-устройства, расположенные в одной сети с узлами KICS for Networks.
    3. Принимающие CPE выполняют роль шлюза SD-WAN (если требуется маршрутизация через шлюз) и передают трафик на сетевые интерфейсы KICS for Networks.

    Идентификация трафика

    Для корректного определения источника трафика используется VLAN (IEEE 802.1q). Каждому устройству CPE назначается уникальный VLAN-ID, который должен совпадать с настройками на узле KICS for Networks.

    Ограничения режима интеграции


    Архитектура с использованием CPE в качестве TAP-устройств

    Если на удаленной площадке нет возможности зеркалировать трафик через коммутаторы, CPE SD-WAN могут выступать в роли TAP-устройств, захватывая и передавая трафик в KICS for Networks.


    Дополнительные варианты применения SD-WAN

    1. Вариант «Транспорт»

    Используется для организации защищенных каналов связи между компонентами сети Kaspersky Industrial Cyber Security и охватывает решения:

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

    2. Вариант «Растянутый коммутатор»

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


    Заключение

    Все описанные варианты интеграции KICS for Networks и SD-WAN могут комбинироваться в зависимости от задач проекта. Это позволяет гибко настраивать защиту промышленной инфраструктуры, обеспечивая безопасность и контроль трафика на всех уровнях.

    Если требуется индивидуальная конфигурация, рекомендуется обратиться к документации или специалистам Kaspersky для оптимального развертывания решений.