Интеграции
В данном разделе описаны инструкции по интеграции KICS и MLAD с различными системами
- Интеграция KICS for Networks
- API KICS for Networks
- Настройка передачи событий из KICS for Networks (версий 4.3 и 4.5) в KUMA
- Интеграция с Zabbix
- Интеграция KICS for Nodes
- Интеграция MLAD
- Инструкция по настройке приема данных от OPC UA сервера в Kaspersky MLAD
- Интеграция Kaspersky MLAD с KICS for Networks
- Интеграция Kaspersky MLAD с KUMA по Syslog
- Интеграция KICS for Networks и SD-WAN: варианты совместного применения
Интеграция 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.
- ОТКРЫТЬ ДОКУМЕНТАЦИЮ С ОПИСАНИЕМ ЗАПРОСОВ К СЕРВЕРУ REST API, версия 3
- ОТКРЫТЬ ДОКУМЕНТАЦИЮ С ОПИСАНИЕМ ЗАПРОСОВ К СЕРВЕРУ REST API, версия 4
Примеры использования
Рассмотрим пример использования API для локального экспорта данных об устройствах из KICS for Networks.
Для начала нужно создать коннектор, с типом Generic и именем, например, GetDeviceAll, указать пароль и адрес сервера, узел размещения коннектора в нашем случае будет такой же, как и адрес сервера (Рисунок 1). После создания коннектора у вас скачается файл свертки, который будет называться как коннектор_GetDeviceAll.zip.
Рисунок 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.
Рисунок 2 – Регистрация коннектора
После этого статус коннектора в KICS for Networks поменяется с “Ожидает регистрации” на “Работает”
Рисунок 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.
Рисунок 4 – Вывод логов скрипта по экспорту данных
Рисунок 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 (версий 4.3 и 4.5) в KUMA
Настройка интеграции выполняется в два этапа: сначала создается и настраивается коллектор в KUMA, затем создается коннектор в KICS for Networks.
Настройка KUMA
- Перейдите в раздел «Ресурсы» и откройте вкладку «Коллекторы».
- Нажмите кнопку «+ Создать».
- В открывшемся окне укажите название коллектора. Рекомендуется использовать наименование продукта, тип подключения и порт (например, KICS_for_Networks_TCP\5160), чтобы в дальнейшем легко идентифицировать коллектор.
- На вкладке «Транспорт» укажите тип соединения (протокол) и порт, который будет использоваться для приема событий от источника.
- На вкладке «Парсинг событий» - «Настройки парсинга» выберите соответствующий нормализатор для обработки входящих событий.
- На вкладке «Маршрутизация» добавьте ранее созданные коррелятор и хранилище. Подробнее о развертывании этих компонентов см. в Справке по KUMA.
- На вкладке «Проверка параметров» нажмите кнопку «Сохранить и создать сервис».
- После создания коллектора скопируйте сгенерированную команду и выполните её в терминале сервера KUMA с правами администратора для развертывания сервиса.
Настройка KICS for Networks
- Перейдите в раздел «Параметры» - «Коннекторы» и нажмите кнопку «+ Добавить коннектор».
- В карточке нового коннектора заполните поля:
- Тип коннектора: SIEM.
- Имя коннектора: Произвольное наименование.
- Адрес сервера: IP-адрес узла, на котором развернут сервер KICS for Networks.
- Узел размещения коннектора: Server.
- Пользователь программы: Учетная запись администратора KICS for Networks.
- Адрес SIEM-сервера: IP-адрес узла, на котором развернут сервер KUMA.
- Номер порта: Порт, указанный при настройке коллектора KUMA (см. п. 4 раздела «Настройка KUMA»).
- Транспортный протокол: Протокол, указанный при настройке коллектора KUMA (см. п. 4 раздела «Настройка KUMA»).
- Нажмите кнопку «Сохранить».
- Убедитесь, что в свойствах созданного коннектора параметры имеют следующие значения:
- Включен: Да.
- Статус: Работает.
Если значения отличаются, проверьте выполненные настройки и перезапустите коннектор (выполните последовательность «Выключить» - «Включить»).
- Перейдите в раздел «Параметры» - «Типы событий». Выберите типы событий, которые необходимо передавать в KUMA, и активируйте для них отправку через созданный коннектор.
Проверка передачи событий
- В интерфейсе KUMA перейдите в раздел «События» и выполните опрос источников.
- Убедитесь в наличии событие об успешной аутентификации коннектора, которое должно появиться в момент его создания в KICS for Networks.
- Воспроизведите событие безопасности, например, запустите тестовый вирус на узле, который интегрирован с KICS for Networks.
- Убедитесь, что сработал модуль постоянной защиты KICS for Nodes (детектирование события на стороне источника).
- В интерфейсе KUMA снова перейдите в раздел «События» и выполните опрос.
- Убедитесь, что воспроизведенное событие безопасности успешно доставлено и отображается в KUMA.
Интеграция с 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 на следующие
- kics4net
- kics4net-apm
- kics4net-asset-config-repo
- kics4net-asset-inventory
- kics4net-blob-storage
- kics4net-config-control-orchestrator
- kics4net-connectors-launcher
- kics4net-email-gateway
- kics4net-epp-proxy
- kics4net-fts
- kics4net-nats-server
- kics4net-oval-facade
- kics4net-postgresql
- kics4net-report-builder
- kics4net-report-data-source
- kics4net-report-renderer
- kics4net-report-templates-catalog
- kics4net-report-templates-catalog-view
- kics4net-responses-manager
- kics4net-risk-oval-detector
- kics4net-scan-oval-manager
- kics4net-scap-manager
- kics4net-scap-manager-view
- kics4net-scheduler
- kics4net-secrets
- kics4net-task-manager
- kics4net-task-manager-view
- kics4net-vault
- 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
Указать параметры для правила обнаружения:
- Name: KICS Services Discovery
- Type: Zabbix agent
- Key: kics.discovery
- Update interval: 1h
3.5.3 Создать Item Prototype
Внутри Discovery Rule:
Item prototypes → Create item prototype
Указать параметры:
- Name: Service {#SERVICE} status
- Type: Zabbix agent
- Key: kics.status[{#SERVICE}]
- Type of information: Numeric (unsigned)
- Update interval: 1m
3.5.4 Создать Trigger Prototype
Внутри того же Discovery Rule открыть:
Trigger prototypes → Create trigger prototype
Указать параметры:
- Имя: Service {#SERVICE} is stopped
- Выражение: last(/KICS for Networks/kics.status[{#SERVICE}])=0
- Severity: High
После выполнения Discovery Zabbix автоматически создаст:
1) Элементы данных:
- Service kics4net status
- Service kics4net-apm status
- ..
- Service kics4net-webserver status
2) Триггеры:
- Service kics4net is stopped
- Service kics4net-apm is stopped
- ...
- Service kics4net-webserver is stopped
Если остановить один из сервисов KICS for Networks:
sudo systemctl stop kics4net-webserver
то в Problems появится новое сообщение: Service kics4net-webserver is stopped
Интеграция 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 предоставляет единую консоль для хранения и просмотра событий в сети и на конечных узлах, поскольку KEA-агент передает телеметрию с узла в сервер KICS for Networks.
- В карточке инцидента в KICS for Networks при возникновении инцидента на конечном узле возникает построение цепочки атаки по телеметрии с этого конечного узла.
- Предоставляется возможность точечного реагирования: отправить файл на карантин, запретить запуск, изолировать узел.
- В KICS for Networks есть возможность отслеживать актуальность лицензий KICS for Nodes из единого окна.
Настройка интеграции KICS for Networks и KICS for Nodes
Интеграция осуществляется через интерфейс KICS for Networks. Для этого необходимо следующие шаги:
Шаг 1. Переходим во вкладку «Параметры» и выбираем раздел «Серверы подключений»;
Шаг 2. Нажимаем кнопку «Добавить сервер интеграции с Kaspersky Endpoint Agent» (см. пример на Рисунке 1).
Примечание: В роли сервера, который будет получать телеметрию с KEA-агента, может выступать как сервер, так и любой сенсор KICS for Networks. Важно, чтобы между конечным узлом, с которого будет передаваться информация и сервером/сенсором KICS for Networks был настроен маршрут и разрешены соответствующие порты и протоколы (TLS, порт 8081).
Рисунок 1 - Добавление сервера интеграции
Шаг 3. Далее нам предоставляется возможность выбрать узел, на который будет приходить телеметрия с KEA-агента. Например, мы можем выбрать узел «Server» или сенсор «sensor_1» (см. на примере Рисунка 2).
Рисунок 2 - Создание сервера интеграции
Шаг 4. Нажимаем кнопку «Создать новый сертификат» (см. Рисунок 3).
Примечание: Если необходимо дополнительно осуществлять проверку сертификата клиента (конечного узла), то, помимо нажатия кнопки «Создать новый сертификат», необходимо активировать переключатель «Проверять сертификаты клиентов» и кнопку «Сохранить».
Рисунок 3 - Создание сервера интеграции
Шаг 5. После нажатия кнопки «Создать новый сертификат» отобразятся сведения о сертификате. Необходимо нажать кнопку «Сохранить».
Шаг 6. В результате в источниках появится выбранный узел (сервер или сенсор) KICS for Networks и будет указан IP-адрес его интерфейса MGMT, куда в последствии будут направляться данные от конечных узлов. Далее необходимо настроить KEA-агент на конечных узлах, для этого необходимо получить свертку сертификата от узла, на котором развернут сервер интеграции KICS for Networks.
Выбираем сервер интеграции. Нажимаем кнопку «Включить» и далее кнопку «Получить файл свертки для клиентов» (см. Рисунок 4).
Рисунок 4 - Создание файла свертки для клиентов
Шаг 7. Сервер интеграции изменит свой статус на «Включен» и осуществит загрузку zip-архива с вложенным файлом server.cer. После чего необходимо доставить загруженный zip-архив на конечные узлы с установленным KEA-агентом. Есть несколько способов настройки интеграции на стороне узла, и мы рассмотрим каждый из них подробнее ниже.
Примечание: Если ранее был активирован переключатель «Проверять сертификаты клиентов», то для обеспечения подлинности клиентского сертификата, нужно указать пароль при формировании файла свертки. Нажать кнопку «Создать файл свертки».
Шаг 8. Переходим к настройке интеграции на стороне конечных узлов с KICS for Nodes и KEA. Есть два способа: через web-консоль KSC и локально из командной строки.
1 способ: настройка интеграции через web-консоль KSC
Важным условием является наличие установленных KEA-агентов на каждом конечном узле, а также на сервере администрирования KSC установлен web-плагин KEA.
В веб-консоли KSC переходим в раздел «Устройства – Политики и профили политик». Выбрать политику для KEA (см. Рисунок 5).
Рисунок 5 - Начало настройки "Политики и профилей политики"
Далее переходим на вкладку «Параметры программы – Серверы сбора телеметрии». Выбираем пункт «Интеграция с KICS for Networks». После чего необходимо активировать переключатель «Принудительно», если он не активирован. Отметить чекбокс «Включить интеграцию с KICS for Networks». В графе «Адрес сервера» указать адрес сервера интеграции. Остальные настройки оставить по умолчанию. Нажать кнопку «Добавить новый TLS-сертификат» (см. Рисунок 6) – для этого нажимаем кнопку «Обзор». Выбрать файл TLS-сертификата server.cer (предварительно извлечь его из архива). После чего отобразятся данные TLS-сертификата и нажимаем кнопку «ОК», после кнопку «Сохранить».
Рисунок 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"
Рисунок 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
Рисунок 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).
Рисунок 9 - Пример интеграции
Интеграция MLAD
Инструкция по настройке приема данных от OPC UA сервера в Kaspersky MLAD
Подготовка на стороне источника данных (SCADA/ПЛК):
1. Убедитесь, что на контроллере или SCADA-сервере запущен и корректно работает сервер OPC UA.
2. Рекомендуется: Проверить доступность и читаемость тегов с помощью стороннего OPC UA-клиента (например, UAExpert). Это позволяет локализовать проблемы на стороне источника данных.
3. Определите и запишите полные Node Id всех переменных (тегов), которые планируется передавать в Kaspersky MLAD.
Настройка в Kaspersky MLAD:
1. Создание ассетов (Assets)
В проекте MLAD в разделе Assets создайте теги, которые будут соответствовать переменным OPC UA сервера. Каждому ассету необходимо присвоить уникальный Идентификатор (ID). Именно этот ID будет использоваться для привязки к входящим данным.
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.
- В поле Точка подключения укажите URL-адрес вашего OPC UA сервера (например, opc.tcp://192.168.88.160:48010).
- В блоке Конфигурационный файл загрузите подготовленный TXT-файл сопоставления.
- Важно: При необходимости настройте параметры безопасности соединения (Security Policy и Mode) и учетные данные (логин и пароль), если сервер OPC UA требует аутентификации.
4. Запуск коннектора
Сохраните конфигурацию и запустите OPC UA Connector. В интерфейсе коннектора должен отобразиться статус «Подключено» (Connected), а в логах — отсутствие ошибок подключения и подписки.
5. Верификация и визуализация данных
- Перейдите в раздел Мониторинг для проверки поступления необходимых данных
Интеграция Kaspersky MLAD с KICS for Networks
1. Описание задачи
Данный документ описывает процесс интеграции MLAD с KICS for Networks для двухстороннего обмена данными.
Цель данной интеграции – обеспечить Kaspersky MLAD необходимыми потоковыми данными без прямого подключения к процессу, а также для обогащения (при необходимости) событийной базы KICS for Networks данными об инцидентах, зарегистрированных в Kaspersky MLAD.
Ниже приведена упрощенная схема подключения, используемая в описываемой в данном документе интеграции.
Клиент 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). Если включить парсер протоколов уже после того, как коммуникация между клиентом и сервером установлена, новые теги не будут добавлены в список.
На скриншоте выше видны теги OPC UA, полученные от ПЛК Regul, а также теги из других протоколов, которые распарсил KICS for Network.
Следующим шагом необходимо перейти в раздел Коннекторы и нажать кнопку Добавить коннектор.
Выберите тип коннектора Generic, задайте название и пароль, а также укажите адрес сервера KICS for Network и узла, на котором будет размещаться коннектор (в нашем примере это один и тот же сервер). Укажите пользователя.
После создания коннектора автоматически начнется скачивание zip-архива с файлом сверки коннектора. Если вы хотите создать новый файл, зайдите в настройки созданного коннектора и нажмите на кнопку Получить новый файл свертки.
Заполните все поля аналогично тому, как вы делали при создании коннектора.
После скачивания нового zip-архива сохраните его, он понадобится нам для настройки коннектора KICS в MLAD.
Откройте веб-интерфейс, перейдите в меню администрирования, далее в раздел Системные параметры, настройки KICS connector. Здесь вам потребуется загрузить zip-файл, который вы получили из KICS ранее, и введите пароль, который вы указали при создании файла свертки.
Если вы хотите передавать в KICS событий об инцидентах о выявленных аномалиях, включите переключатель Отправлять сообщения в Kaspersky Industrial CyberSecurity for Networks.
Обратите внимание, что в разделе Активы нужных нам тегов сейчас нет, и создавать их не нужно, в отличие от обычного процесса загрузки данных в MLAD.
Вернитесь в основное меню, раздел Сервисы, далее Коннекторы и запустите коннектор KICS.
После установления подключения (вы можете проверить это в KICS for Networks в разделе Коннекторы), вернитесь в раздел Активы, обновите страницу и убедитесь, что новые теги появились в списке.
Обратите внимание, что в списке появились все теги, которые присутствовали в KICS for Networks, включая теги из других протоколов. Лишние теги можно удалить.
Обратите внимание, что теги, автоматически созданные в активах, получают свои id в соответствии с идентификаторами, которые эти теги имели в KICS for Network.
Если в активах MLAD уже были теги с такими же id, данные теги будут перезаписаны! Имейте это в виду при планировании активов.
В разделе Мониторинг можно убедиться, что данные по новым тегам поступают в MLAD.
Если вы активировали передачу сообщений из MLAD в KICS for Networks, то после возникновения инцидентов в результате работы моделей, вы сможете увидеть соответствующие событий в KICS for Networks в разделе События.
Интеграция Kaspersky MLAD с KUMA по Syslog
1. Описание задачи
Данный документ описывает процесс настройки Kaspersky MLAD для интеграции с KUMA по протоколу Syslog.
Цель данной интеграции – обеспечить передачу событий безопасности из Kaspersky MLAD в SIEM систему для обеспечения мер информационной безопасности в инфраструктуре клиента.
Ниже приведена упрощенная схема подключения, используемая в описываемой в данном документе интеграции.
2. Реализация задачи
Первым шагом необходимо настроить CEF-коннектор в составе Kaspersky MLAD на передачу событий безопасности в SIEM-систему.
Для этого перейдите в Меню администратора, затем в Системные параметры, затем в настройки CEF-коннектора.
Здесь вам необходимо активировать переключатель Отправлять журналы событий информационной безопасности на Syslog-сервер, указать тип транспорта (TCP или UDP), указать адрес и порт Syslog-сервера. Если вы планируете использовать защищенное TLS-соединение, то вам необходимо также загрузить сертификат/закрытый ключ клиента и CA-сертификат для верификации серверной стороны.
После этого перейдите в основное меню, далее в Службы, затем в раздел Коннекторы. Запустите службу CEF connector, или перезапустите ее, если вы вносили изменения в настройки.
На этом настройка со стороны MLAD закончена.
В KUMA перейдите в раздел Ресурсы, затем Коллекторы.
В состав поставки KUMA входит предварительно настроенный коллектор [OOTB] Syslog CEF. Создайте копию на основе данного коллектора и перейдите в его настройки. Основные настройки подключения задаются на вкладке Транспорт.
Укажите тип протокола, интерфейс и порт, на котором KUMA будет принимать подключение по Syslog. Убедитесь, что настройки подключения в MLAD совпадают с настройками в данной вкладке.
Настройки остальных вкладок не влияют на прием сообщений Syslog. Во вкладке Парсинг событий вы можете настроить, как будут парситься события Syslog, полученные от MLAD. Для этого вам предварительно необходимо создать соответствующий парсер. Процесс создания и настройки парсера описан в документации на KUMA, и в данном документе не затрагивается,
После завершения настройки вам сначала будет необходимо будет создать соответствующий сервис.
Для этого необходимо выполнить предложенную команду (через sudo) на машине с KUMA.
Если сервис уже существует, то после завершения настройки перейдите во вкладку Проверка параметров и нажмите кнопку Сохранить и перезапустить сервисы.
Перейдите в раздел Активные сервисы и убедитесь, что ваш сервис коллектора Syslog запущен.
Вернитесь в MLAD и произведите какое-нибудь системное действие, например, выйдите и снова войдите в систему.
Далее выберите свой активный сервис в KUMA и нажмите кнопку Перейти к событиям.
Cделайте дефолтный SQL-запрос. Вы увидите в списке событие безопасности от MLAD.
Интеграция 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.
Принцип работы:
- Устройства CPE на удаленных площадках получают зеркалированный трафик через сетевые коммутаторы.
- Трафик шифруется и передается на принимающие CPE-устройства, расположенные в одной сети с узлами KICS for Networks.
- Принимающие CPE выполняют роль шлюза SD-WAN (если требуется маршрутизация через шлюз) и передают трафик на сетевые интерфейсы KICS for Networks.
Идентификация трафика
Для корректного определения источника трафика используется VLAN (IEEE 802.1q). Каждому устройству CPE назначается уникальный VLAN-ID, который должен совпадать с настройками на узле KICS for Networks.
Ограничения режима интеграции
- Не более 100 точек мониторинга на один узел.
- Общее количество точек мониторинга в системе — не более 100.
Архитектура с использованием CPE в качестве TAP-устройств
Если на удаленной площадке нет возможности зеркалировать трафик через коммутаторы, CPE SD-WAN могут выступать в роли TAP-устройств, захватывая и передавая трафик в KICS for Networks.
Дополнительные варианты применения SD-WAN
1. Вариант «Транспорт»
Используется для организации защищенных каналов связи между компонентами сети Kaspersky Industrial Cyber Security и охватывает решения:
- KICS for Networks
- KICS for Nodes
- Kaspersky Security Center
- Kaspersky Unified Monitoring and Analysis Platform (KUMA)
- Kaspersky Machine Learning for Anomaly Detection (MLAD)
Такая схема обеспечивает безопасный обмен данными в управляющей сети.
2. Вариант «Растянутый коммутатор»
Позволяет объединить географически распределенные объекты в единую защищенную сеть, обеспечивая безопасное взаимодействие между ними.
Заключение
Все описанные варианты интеграции KICS for Networks и SD-WAN могут комбинироваться в зависимости от задач проекта. Это позволяет гибко настраивать защиту промышленной инфраструктуры, обеспечивая безопасность и контроль трафика на всех уровнях.
Если требуется индивидуальная конфигурация, рекомендуется обратиться к документации или специалистам Kaspersky для оптимального развертывания решений.